fix(#123): pin harness images to immutable sha256 digests - #658
Conversation
All 7 harness configs referenced sandbox images with mutable :latest tags. A bad build promoted to :latest previously broke agent runs org-wide (fullsend#3408). Replace :latest with @sha256: digest references so a pinned agents commit resolves the same execution environment until intentionally bumped. Changed images: - fullsend-code (code, fix, review): @sha256:de3ecbd7719a1927c983142ada96475f3314d2505d0f258bcf 19c31411856eb6 - fullsend-sandbox (prioritize, retro, scribe, triage): @sha256:eaf365ad038d762954d8fd5f41618cd6766a8a6a6f76d944aa f160819666734d Note: pre-commit could not run (sandbox network restrictions prevented hook environment initialization). The post-script runs an authoritative pre-commit on the runner. Note: post-triage-test prerequisites-creates-allowed-issue is a pre-existing failure on main, unrelated to this change. Closes #123
|
🤖 Finished Review · ✅ Success · Started 8:22 PM UTC · Completed 8:34 PM UTC |
ReviewFindingsMedium
Low
Labels: PR pins container images from mutable :latest tags to immutable sha256 digests, a supply chain security improvement affecting all agent harnesses |
|
🤖 Finished Retro · ✅ Success · Started 10:23 AM UTC · Completed 10:43 AM UTC |
Retro: PR #658 — Pin harness images to immutable sha256 digestsOverall assessment: This was a clean, well-executed workflow. The code agent succeeded on its first attempt with a surgical 7-line change, the review agent appropriately flagged protected-path changes for human judgment, and the human reviewer approved without finding additional issues. No rework was needed — zero fix-agent iterations. Timeline
Key findings1. 25-day gap root cause (new proposal filed). Issue #123 was triaged and labeled 2. Review cost for mechanical changes (existing coverage). The review agent spent $2.25 and 11 minutes reviewing a 7-line mechanical digest bump. It dispatched 5 sub-agents (correctness, security, intent-coherence, style-conventions, docs-currency) plus a challenger. Three sub-agents produced zero findings. The scope constraint mechanism correctly classified this as "trivial" (≤5 tool calls per sub-agent), but the sub-agent count was not reduced. This provides additional evidence for existing issues: #301 (lightweight path for mechanical changes), #513 (short-circuit for mechanical dependency bumps), and #497 (downgrade sub-agent models based on scope classification). 3. Duplicate review dispatch (existing coverage). Two 4. Retro on trivial PR (existing coverage). This retro is itself running on a trivially-handled mechanical PR with zero rework. Additional evidence for #649 (skip retro on trivially-handled mechanical PRs). What went well
Autonomy assessmentNo autonomy gap to close. The review agent correctly identified protected-path changes as requiring human approval, and the human approved without finding additional issues. For this class of change (mechanical updates to harness execution environment configs), the human gate is appropriate — harness configs are security-sensitive infrastructure that defines the agent execution environment. Proposals filed
|
Summary
image:references from mutable:latesttags to immutable@sha256:digest referencesfullsend-code(code, fix, review) →@sha256:de3ecbd7719a1927c983142ada96475f3314d2505d0f258bcf19c31411856eb6fullsend-sandbox(prioritize, retro, scribe, triage) →@sha256:eaf365ad038d762954d8fd5f41618cd6766a8a6a6f76d944aaf160819666734dMotivation
Mutable
:latesttags mean a pinned agents commit does not guarantee a stable execution environment — retagging:latestto a bad build previously caused an org-wide outage (fullsend#3408). Digest-pinned references make the image immutable so the runtime matches what was tested at pin time.Testing
make testpasses (one pre-existing failure inpost-triage-test.shunrelated to this change)Closes #123
Post-script verification
agent/123-pin-image-digests)5e98b13bc52cefb7b95cbcfe6070ef9da315574d..HEAD)