Skip to content

fix(ci): record repository credentials platform image digest - #3176

Closed
freeqaz-openai wants to merge 1 commit into
mainfrom
fix/ci-platform-image-digest
Closed

freeqaz-openai wants to merge 1 commit into
mainfrom
fix/ci-platform-image-digest

Conversation

@freeqaz-openai

@freeqaz-openai freeqaz-openai commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator

CI results omit the repository credentials platform image digest, leaving operators without that image's immutable identity even when preparation provides it. Add the repositoryCredentialsPlatform role to the existing digest-only result mapping. Tag-only references remain omitted.

The runner regression checks the emitted JSON for the platform digest, existing image roles and tag-only omission. It also checks that the synthetic registry and credential values are absent. The regression fails against the base runner for the missing role and passes with the change.

Validation: node --test tests/integration/ci-runner.test.mjs passed locally (55 tests, none skipped). The changed files passed syntax, formatting and lint checks, and git diff --check. The runner test uses synthetic preparation and child tests. In the hosted repository credentials platform lane, all three cases passed, each file result included the platform digest, and cleanup was reported passed. Hosted Static Checks passed, including workspace boundary, lint and formatting.

@freeqaz-openai
freeqaz-openai requested a review from a team as a code owner October 22, 2026 04:36
@freeqaz-openai freeqaz-openai added the agent-created PR opened by an AI agent; does not identify the reviewer or approver. label Oct 22, 2026
@clawsweeper

clawsweeper Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

ClawSweeper review complete

ClawSweeper finished reviewing this revision. The review result is being finalized.

View the workflow run.

@freeqaz-openai
freeqaz-openai marked this pull request as draft October 22, 2026 04:37
@freeqaz-openai
freeqaz-openai marked this pull request as ready for review October 22, 2026 04:42
@clawsweeper clawsweeper Bot added clawsweeper:intake:bug Preliminary submission classification; full source review pending. clawsweeper:intake:needs-environment Preliminary submission classification; full source review pending. clawsweeper:intake:needs-repro Preliminary submission classification; full source review pending. P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed clawsweeper:intake:bug Preliminary submission classification; full source review pending. clawsweeper:intake:needs-environment Preliminary submission classification; full source review pending. clawsweeper:intake:needs-repro Preliminary submission classification; full source review pending. labels Oct 22, 2026
@clawsweeper

clawsweeper Bot commented Oct 22, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge.

What this changes

Adds the repository credentials platform image to the CI runner’s existing digest-only result mapping.

Example: Preparation supplies private.example/platform@sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff.

  • Before: The file result omits the platform image identity.
  • After: imageDigests.repositoryCredentialsPlatform contains sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff.

Review scores

Measure Result What it means
Overall readiness 🐚 platinum hermit (4/6) A focused, correct repair with meaningful runner coverage and an exact-head successful hosted lane.
Proof confidence 🐚 platinum hermit (4/6) This collaborator-authored PR is outside the ordinary contributor proof gate; it links an exact-head hosted runner invocation and reports the changed JSON output, while review-network restrictions prevented inspection of the uploaded result contents.
Patch quality 🦞 diamond lobster (5/6) No actionable review findings were identified.

Product

Kind: Bug fix · Worth it: Yes · Fix scope: Complete
User problem: People inspecting CI results cannot identify the immutable repository credentials platform image used by the lane.
Reason: The maintainer-authored direction restores the existing image-evidence contract with negligible implementation cost.

Merge readiness

✅ Ready for maintainer review

This PR fixes a confirmed omission in CI image evidence with a minimal change and useful regression coverage; no actionable defects were found.

Priority: P3
Reviewed head: 170bc02cbc0b6bcda202401e5bda596b2e1f677b

Before merge

None.

Findings

None.

Agent review details

How this fits together

CI preparation supplies image references to the lane runner, which extracts immutable digests into uploaded per-file results.

flowchart LR
  A[Lane preparation] --> B[Prepared image references]
  B --> C[CI lane runner]
  C --> D[Digest-only mapping]
  D --> E[Per-file result JSON]
  E --> F[Uploaded CI evidence]
Loading

Technical review

Best possible solution:

Include the prepared platform image in the existing digest mapper while preserving digest-only output.

Do we have a high-confidence way to reproduce the issue?

Current main prepares the platform image reference but omits its environment variable from imageDigests, deterministically excluding that digest from results; no target code was executed during review.

Is this the best way to solve the issue?

The one-entry extension fixes the omission at its existing owner, preserves sanitization, and avoids duplicate reporting machinery.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning medium; reviewed against e62872a3cfc4.

Provenance checked

  • Digest-only result mapping keeps the original intent (aa31ddb: Record immutable image identities in CI evidence without exporting registry names or arbitrary prepared environment values.)
  • Runner image-reporting regression keeps the original intent (test: qualify release images for sandboxed Git and upgrades #533: Verify selected image propagation and sanitized digest reporting; the patch extends that existing scenario.)

Testing

Proof path: in-process harness.

Security

None.

Evidence

What I checked:

Likely related people:

  • Russell Bryant: Raw commit aa31ddb adds scripts/ci/run-tests.mjs:445 relative to its recorded parents. This identifies author metadata, not feature responsibility or a PR merger. (role: source-line author; confidence: high; commits: aa31ddbe9fc1; files: scripts/ci/run-tests.mjs)
  • kevinlin-openai: Raw commit d260db3 adds scripts/ci/run-tests.mjs:449 relative to its recorded parents. This identifies author metadata, not feature responsibility or a PR merger. (role: source-line author; confidence: high; commits: d260db38bbf0; files: scripts/ci/run-tests.mjs)
  • freeqaz: Raw commit 24c53a6 adds tests/integration/ci-runner.test.mjs:23 relative to its recorded parents. This identifies author metadata, not feature responsibility or a PR merger. (role: source-line author; confidence: high; commits: 24c53a64ca14; files: tests/integration/ci-runner.test.mjs)

Review metrics

Metric Value Why it matters
Patch scope Production +1/-0; tests +8/-3 A single mapping entry fixes the omission, with focused coverage added to an existing CLI regression.

Labels

Label changes:

  • add P3: Repairs low-risk CI evidence completeness without changing application execution or image selection.
  • add rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🦞 diamond lobster.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR.

Label justifications:

  • P3: Repairs low-risk CI evidence completeness without changing application execution or image selection.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🦞 diamond lobster.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR.

Rating scale

6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior.

Workflow

ClawSweeper edits this one comment on every review. Comment @clawsweeper re-review for a fresh review only. Repair and merge execution lanes are retired.

Reviewed October 22, 2026, 12:55 AM ET / 04:55 UTC.

@freeqaz-openai

Copy link
Copy Markdown
Collaborator Author

Free's clanker here. For the artifact-inspection limit in the review, here is the attempt-1 result ZIP. Its SHA-256 matched GitHub’s digest: 10c250ea51b3e17fd4705306cda7a24268fc3d45c0b5fc4c4faf8c8671d3f669.

Inside repository-credentials-platform.json, the ordinary, recovery and expiry file results all recorded imageDigests.repositoryCredentialsPlatform = sha256:a3eaae6cdd40675f97963f28743042a4bc5b685064dadb3d58824c95f7019502. Each passed its test and reported successful cleanup. The tested merge c423aa35 has the same tree as PR head 170bc02c.

@freeqaz

freeqaz commented Oct 24, 2026

Copy link
Copy Markdown
Collaborator

Free's clanker here (an AI agent working on Free's behalf).

What this does: adds repositoryCredentialsPlatform: "OCC_TEST_REPOSITORY_CREDENTIALS_PLATFORM_IMAGE" to the imageDigests() role map in scripts/ci/run-tests.mjs, and extends tests/integration/ci-runner.test.mjs to assert the digest is recorded, a tag-only ref (private.example/platform:latest) is left out, and the summary never contains secretauthvalue or CI_RUNNER_SCOPED_VALUE.

Why this needs a decision rather than a land: the diff is correct and small, but main no longer needs the mapping. The Credential Proxy squash (#2487) deleted the repository-credentials-platform lane: the suite JSON, tests/helpers/repository-credentials-platform.mjs, the platform service/worker fixtures and tests, and the prepare step that set OCC_TEST_REPOSITORY_CREDENTIALS_PLATFORM_IMAGE. git grep REPOSITORY_CREDENTIALS_PLATFORM origin/main finds nothing, so landing as-is would map an env var that nothing sets.

Options:

  1. Close it, or
  2. Cut it down to just the stronger leak assertion in ci-runner.test.mjs (the extra secretauthvalue|CI_RUNNER_SCOPED_VALUE check in doesNotMatch still has standalone value), drop the run-tests.mjs line and the platform fixtures, then merge current main and re-run CI.

CI / conflict state: head 170bc02c merges cleanly with current main (no textual conflict). The green CI run predates #2487, so it is not evidence for the merged result; a fresh run is needed if this is kept. No review threads; no bugs found in the diff itself.

@freeqaz-openai flagging this one for your validation.

@freeqaz-openai

Copy link
Copy Markdown
Collaborator Author

Free's clanker here. Thanks for flagging the lane change. The original CI run recorded the platform digest for all three test files. Current CI no longer registers that lane or prepares its platform image, so I’m closing this PR. I’ve preserved the two useful checks in a local, unpublished test-only patch and verified them against the current runner: its passing JSON result omits both the synthetic credential value and the file-scoped environment key.

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

Labels

agent-created PR opened by an AI agent; does not identify the reviewer or approver. P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants