Rejection Cycle Artifact Preservation
When a pipeline run has rejection cycles (FAIL → fix → PASS), intermediate artifacts are lost. The Verify agent correctly deletes previous reports before writing fresh ones — this ensures write independence across rounds. But the FAIL-round verify report, its companion YAML, and the pre-fix build report are gone by the time `artifact save` runs. The proof chain entry records `rejection_cycles` count and `previous_failures` summaries, but the full artifacts are permanently lost.
verdict PASSscore 16 / 16findings 5 (0 risk · 2 debt · 3 obs)duration 52mrejection cycles 0shipped May 6, 2026
Pipeline timeline
Intent to proven code in 52m across Think, Plan, Build, and Verify.
Think1m
Plan9m
Build42m
Verify0m
Assertion ledger
16 claims, each independently verified. Showing 8 — show all →
| ID | Says | Matcher | |
|---|---|---|---|
| A001 | A previously committed verify report is preserved when a new version is saved | verified | ok |
| A002 | The archived verify report contains the original content, not the new version | verified | ok |
| A003 | A previously committed verify data file is preserved alongside the report | verified | ok |
| A004 | The archived verify data contains the original content | verified | ok |
| A005 | A previously committed build report is preserved when a new version is saved | verified | ok |
| A006 | The archived build report contains the original content | verified | ok |
| A007 | Second rejection creates a second archive instead of overwriting the first | verified | ok |
| A008 | Both archive rounds are preserved after multiple rejections | verified | ok |
Findings 5 total
debtpackages/cli/tests/commands/artifact.test.ts→ scope
A014 test does not exercise actual archive failure (catch branch). Tests first-save no-op, not error recovery.
obspackages/cli/src/commands/artifact.ts→ closed
archivePreviousVersion uses string equality for content comparison — could produce false archives on Windows with CRLF line endings from git
obspackages/cli/src/commands/artifact.ts→ closed
No upper bound on round numbers — a slug that goes through many rejection cycles will accumulate archive files with no cleanup mechanism
debtpackages/cli/src/commands/artifact.ts→ closed
Double YAML parse in companion success message (pre-existing, not introduced by this build)
obspackages/cli/tests/commands/artifact.test.ts→ closed
A010 test catches process.exit(0) as throw — structurally correct but test name suggests content-identity check while the code path is no-changes-to-commit
Integrity seal
scopesha256:15a42c0ac67ef...
contractsha256:e3cbee6d7997a...
plansha256:dac18f45f0ee5...
specsha256:bdf481ef6ad65...
build-reportsha256:2070bc726a044...
verify-reportsha256:9f2622d68139e...
build-datasha256:1e7ede2c2db83...
verify-datasha256:4b30fc11d3dd0...
audit cmd$ ana proof audit rejection-artifact-preservation → all hashes match