Skip to content

Adopt core v0.18.1's callertoken, image lock, image evidence and publish workflow; delete this repo's copies; release #89

Closed

Description

@antoinetoussaint-byte

What to do

Adopt core v0.18.1's shared plumbing and delete this repo's copies. Then release the agent.

core#759, released in v0.18.0/v0.18.1, exports one implementation of what this repo and service-warehouse each carry a copy of:

  • callertoken (new package): UnaryServerInterceptor, StreamServerInterceptor, IsHealthMethod, PerRPCCredentials, DialOption, Generate, CheckListener.
  • resources: ParseImageLock, ImageLock, ErrImageUnpublished, IsSHA256Digest.
  • agents/services/sbom: ImageSubjects, CollectImageEvidence, WriteImageEvidenceIndex, ImageEvidenceDocument, LocalImageID.
  • .github/workflows/publish-service-image.yml: a workflow_call workflow (inputs image-name, version, lock-file, platforms; secret registry-token; output digest).

#759's author has already done the adoption in a scratch copy of this repo: +70/−468 lines, including a 77-to-27-line workflow caller, with go build, go vet and go test passing. One unrelated rename had to be bridged: resources.VisibilityExternal → VisibilityPublic.

Behaviour that changes for this repo (state each in the PR)

  • Health exemption is exact: only /grpc.health.v1.Health/Check and /Watch are exempt. Health/List now needs a token. This repo's copy exempted the whole Health/ prefix.
  • Empty server token fails closed. This repo never installed interceptors with an empty token, so nothing changes in practice. Confirm it.
  • Generated tokens are 64 hex characters, up from 48.
  • Image lock parsing is strict: registry/name is enforced, sha256: must be lowercase hex, unknown keys (e.g. tag) are refused.
  • Evidence subjects go through ExpectedFromImageReference, which refuses a bare tag. Multi-platform declarations get one subject per platform.
  • The publish workflow checks out with persist-credentials: false and refuses a commit not reachable from the default branch.

Steps

  1. codefly agent deps --pin v0.18.1 (the CLI verb, not a hand go.mod edit; it updates root, base/* and factory template locks). Bridge every API change from this repo's current core pin to v0.18.1.
  2. Replace the copies with the core exports and delete the copies. Switch the image workflow to call publish-service-image.yml.
  3. go build ./... && go vet ./... && go test -race ./..., the repo's CI, and the agent's own release CI (codefly ci run).
  4. One PR. Once it's merged, the coordinator runs codefly publish patch. Never hand-tag.

Docs updated in the same PR (README / AGENTS.md wherever the token, lock or evidence behaviour is described).

Activity

  1. antoinetoussaint-byte commented on Oct 11, 2026

    @antoinetoussaint-byte
    ContributorAuthor

    lazybox has finished working on this. claude (Opus 5) held it from 2026-10-11 20:53 UTC until 2026-10-11 21:22 UTC. The working label has been removed; this comment is the record.

    claim detail
    Lazybox-Claim-Device: effacd542b611010656e
    Lazybox-Claim-Session: 77051e6837
    Lazybox-Claim-Workspace: github-codefly-dev-service-object-storage-89
    Lazybox-Claim-Agent: claude
    Lazybox-Claim-Model: Opus 5
    Lazybox-Claim-Started: 2026-10-11T20:53:42Z
    Lazybox-Claim-Heartbeat: 2026-10-11T21:22:56Z
    Lazybox-Claim-Expires: 2026-10-11T22:14:56Z
    Lazybox-Claim-Released: 2026-10-11T21:22:56Z
    
  2. antoinetoussaint-byte commented on Oct 11, 2026

    @antoinetoussaint-byte
    ContributorAuthor

    Adoption is ready for review in #90 at 5e3bc8bf8efece3a363773df5f3666b4c1dfd985.

    • Ran codefly agent deps --pin v0.18.1; removed the copied token/auth, gateway lock and image evidence implementations, and switched gateway image publication to core's immutable v0.18.1 workflow commit. README.md and AGENTS.md are updated. The PR lists every requested behavior change and classifies each change as a fix; no hacks.
    • go build ./..., go vet ./..., go mod tidy -diff, go test -race ./...: pass.
    • All six repo CI jobs pass: https://github.com/codefly-dev/service-object-storage/actions/runs/38140921014 — including runtime e2e, MinIO/GCS integration, and evidence for the locally built image plus both published platforms. Local integration separately produced six PASS and zero SKIP.
    • codefly agent ci with CLI 0.1.181 passes all six stages, with zero failed/skipped stages: native and Linux/amd64 release binaries, audit, generated-service conformance and source drift included. It ran the requested codefly ci run --all in the generated workspace: six tasks passed; only sync-drift was skipped because this agent advertises no Sync capability. Running codefly ci run at the agent repo root correctly reports no workspace. Reports are retained in .codefly/agent-ci/{report.json,workspace/report.json} in this workspace.

    The first clean-tree release build hit a Go-toolchain download TLS timeout; the unchanged full gate passed on retry. The audit records unpatched Moby advisories GO-2026-4883 and GO-2026-4887 under the CLI's existing policy. Live S3, Azure and GCS IAM/Workload Identity, and a live dispatch of the new publisher, were not verified.

    No publication, tag or merge was performed. Coordinator: review/merge #90, prepare the next gateway image and adopt its gateway-image.json-<version> artifact through the reviewed lock flow, then run the CLI release. The existing gateway lock and agent version were left for that release preparation.

  3. antoinetoussaint-byte commented on Oct 11, 2026

    @antoinetoussaint-byte
    ContributorAuthor

    Correction to step 4 of this issue: do not run codefly publish patch immediately after merging #90. The current gateway lock is built for 0.0.14; publishing first pushes v0.0.15 before release.yml refuses that stale lock.

    Coordinator release sequence:

    1. Merge fix: adopt core v0.18.1 shared service plumbing #90.
    2. Run codefly publish --dry-run (expected next version: 0.0.15).
    3. Dispatch publish-gateway-image.yml on main with version=0.0.15. Watch this first live reusable-publisher run, including registry push and the image version label.
    4. Download gateway-image.json-0.0.15, commit its contents as gateway-image.json in a reviewed PR, and merge that PR.
    5. Only then run codefly publish patch. Never hand-tag.

    If the dry run reports another version, use it consistently throughout. Keep gateway code stable between image preparation and publication. If the shared publisher's credential handoff fails, fix it in core and re-pin; do not work around it here.

    PR #90 review fixes are pushed at 65315e9: release-workflow pin aligned, reference docs made timeless, stale parser diagnostics corrected. Focused local tests pass and all six CI jobs are green. The PR body's release notes contain the same corrected sequence. No publication, tag or merge was performed.

  4. antoinetoussaint-byte commented on Oct 11, 2026

    @antoinetoussaint-byte
    ContributorAuthor

    PR #92 restores the repository-owned publisher as the owner-approved hack / STOPGAP pending core#770: #92

    Head: aa0b5a8f37fd96d8577e69146216566f3f9790e7. CI run 38157329762 is green: all six jobs passed, including MinIO/GCS-emulator integration, runtime e2e and image evidence. Local build, vet, tidy, race tests, workflow regression tests and actionlint passed.

    The job comes from fcd9d9e4~1 with all five proven action pins retained. Checkout keeps persist-credentials: false; core v0.18.1's default-branch refusal shell is copied verbatim and runs before login/build. The artifact remains gateway-image.json-<version>. README.md and AGENTS.md document the stopgap and its replacement by core's planned 0.18.2 composite action. All other #90 adoption stays intact.

    No merge, dispatch, publish or release tag was performed; a live push remains for the coordinator to verify. The dispatch-only agent conformance suite and generated-workspace codefly ci run were not rerun for this workflow-only change. Real S3, GCS/IAM and Azure were not exercised.

    Coordinator: review and merge #92, run codefly publish --dry-run (expect 0.0.15), dispatch publish-gateway-image.yml on main with version=0.0.15, adopt its gateway-image.json-0.0.15 artifact as gateway-image.json in a reviewed PR, then run codefly publish patch. The new lock must be merged before publishing the agent.

  5. antoinetoussaint-byte commented on Oct 11, 2026

    @antoinetoussaint-byte
    ContributorAuthor

    Released v0.0.15: tag → 8d7076b6 (release PR #94), release workflow green, 9 assets (4 platform archives, one SBOM each, checksums). It carries #90 (core v0.18.1's callertoken, image lock and evidence; copies deleted) and #92 (the in-repo publish job, a labelled stopgap pending core#770). Gateway image: ghcr.io/codefly-dev/service-object-storage@sha256:847afa19dc94a3c1f7389efcba31554afc9517f096d282b6c01b51fce324ebbe, locked by #93. Agent CI at publish: 6 passed, 0 failed. Still open: adopting core's composite publish action once core#771 ships in v0.18.2. That will be a separate PR, so this issue can close.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions