Skip to content

fix: record verification retention and signed historical custody - #1781

Draft
ViperJuice wants to merge 2 commits into
mainfrom
fix/1772-artifact-provenance
Draft

ViperJuice wants to merge 2 commits into
mainfrom
fix/1772-artifact-provenance

Conversation

@ViperJuice

@ViperJuice ViperJuice commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

Verification outputs under .dev-skills/runs currently remain unattributed even when the runtime itself just wrote them. This change records their production and adds an explicit, operator-signed custody route for historical artifacts. Both are retention only: failed runs and reviews retain their outcome, and phase acceptance is unchanged.

Related: #1772. This draft addresses prospective verification production and historical adoption; it does not automatically instrument every review writer or claim the issue's affected phases are complete.

The audit checks exact artifact bytes, checkout/repository identity, source ancestry, run identity and explicit consuming phases. Historical custody uses SSH signatures against an operator-managed allowed-signers file outside the repository; the command does not enroll keys. Migration instructions are in docs/phase-loop/closeout-generated-outputs.md.

Validation:

  • Focused regression suite: 333 passed (retention, existing classifier/generated outputs and verification evidence).
  • Final new-test rerun: 43 passed, including real producer and CLI paths, signed adoption, changed/missing artifacts, phase/repository boundaries, failed/empty output retention, partial writes and signer removal.
  • Ruff, whitespace and entry-doc checks pass. Docs freshness reports no findings (no classified release surface).
  • make check: 680 passed, 7 skipped, 42 setup errors from existing fixtures targeting an unwritable /mnt/workspace/worktrees, plus one existing closeout redaction failure. The latter reproduces against a pristine export of upstream main with the same interpreter. These limitations are not reported as a green full suite.
  • Read-only candidate audit of the original EZBidPro staging evidence retains exactly the two unknown files; both historical SHA-256 values remain unchanged.

Draft boundaries: independent review, hosted checks and Gate A remain pending before merge. No runtime installation, operator trust provisioning, historical adoption or phase acceptance has been performed.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

@ViperJuice ViperJuice left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Merge decision: HOLD at a4d7d24. I independently ran the 43 artifact-retention tests: all passed. Two additional real-producer cases need correction before merge:

  1. Pinned verification still blocks closeout. In a fresh committed fixture repository ignoring /.dev-skills/ and /.phase-loop/, call run_verification with phase_alias='TEST', python_pin=sys.executable, a run directory .dev-skills/runs/test-run, and one successful Python command. audit_ignored_outputs(repo, 'TEST') retains verification.json/log but reports _interp_shim/_selected_python, _interp_shim/python and _interp_shim/python3 as unknown, blocks=true. These are outputs of the same supported producer, not legacy artifacts. Define their bounded lifecycle/ownership and test pinned and requires-python paths; do not broadly exempt the run directory or adopt arbitrary symlinks.

  2. Supported phase override now raises after verification executes. With PHASE_LOOP_PHASE_ALIAS=OVERRIDE and phase_alias='TEST', run_verification raises RetentionError('verification run or phase mismatch'). The artifact uses _phase_alias's documented environment precedence while retention_start/finished use the raw argument. Resolve and bind one effective phase consistently before effects, preserving supported precedence, and add regression coverage for both override variables.

These are functional closeout/compatibility findings, not claims of unauthorized acceptance. Original evidence must remain unchanged. Required suite gate is still pending; no Gate A clean-room success or cross-vendor source acceptance was established by this review. PRODALIGN/adoption and installation remain separate.

Copy link
Copy Markdown
Collaborator Author

CI diagnosis and repair: run 40619482070 had one underlying failure, test_runtime_launch_references_match_the_classified_inventory; the hosted fallback and suite gate failures were downstream aggregates. Hosted result: 1 failed, 14541 passed, 651 skipped, 1 xfailed. The missing entries were the five new artifact_retention file/process references.

Pushed ordinary fast-forward 9314e9b adding exactly those five classified inventory entries (file access: host-io; Git metadata and SSH signature verification: operator-out-of-scope). No product source or evidence changed. The exact inventory test now passes locally (1 passed); git diff --check passed. Fresh hosted checks must validate the new head.

Merge remains held for the two functional review findings already recorded: interpreter-shim retention and effective phase consistency. This inventory repair does not close either finding or authorize legacy adoption/installation.

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant