fix: archive the five stranded accepted SDD records (unblocks spec-check) - #506
fix: archive the five stranded accepted SDD records (unblocks spec-check)#5060xGaspar wants to merge 1 commit into
Conversation
All five accepted change records were stuck mid-lifecycle: accepted, merged and shipped, but unable to reach `archived` because the archive staleness preflight is precisely what the upstream bug breaks. That left `specsync check` exiting 1 on a clean tree, so `fledge spec check` and the pre-commit/ci lanes were unpassable. Completes the transition the way `archive_change` does, minus the preflight it can no longer satisfy: - snapshot `state.json` to `accepted-state.json` - move the record to `.specsync/archive/changes/<date>-<id>` - flip `state: accepted` -> `archived` and bump `updated_at` No cryptographic evidence was altered. Every `approvals.json` and `verification.json` is byte-identical to its committed content (verified by SHA-256 against `git show HEAD:`); the approvals recorded by 0xLeif are untouched and preserved in the archive rather than deleted. This treats the symptom. The upstream causes -- `.specsync/change-sequence.json` sitting in every acceptance manifest as an exact-match delivery input, and squash merges orphaning the recorded commit -- are tracked in CorvidLabs/spec-sync#481 and will re-stale future records until fixed. Verified: `fledge lanes run pre-commit` green (fmt + lint + test + spec-check), 33 specs checked, 0 errors, 0 warnings. Refs CorvidLabs/spec-sync#481 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KuhwrJF2XFDVHhX7qzDuyy
|
Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits. |
There was a problem hiding this comment.
✅ Corvin says...
_
<(^\ .oO(Caw! ^v^)
|/(\
\(\\
" "\\
"Caw! Found a shiny new spec!"
CI Summary
| Check | Status |
|---|---|
| Dependency Audit | ✅ Passed |
| Integration (3 OS) | ✅ Passed |
| Lint (fmt + clippy) | ✅ Passed |
| Spec Validation | ✅ Passed |
| Tests (3 OS) | ✅ Passed |
Powered by corvid-pet
SpecSync 6 note (product side)This fledge PR is the right consumer workaround for SpecSync 5.x stranded accepted records (cannot reopen / cannot archive). Upstream diagnosis: CorvidLabs/spec-sync#481 (closed). On SpecSync 6.0 (product main after #485 + follow-ups):
Recommendation: keep this manual archive for fledge while pinned to SpecSync 5. After fledge can pin SpecSync 6.0.0, prefer legitimate Local dogfood + CI gates for #486 re-run after covering CHG-0073. |
Unblocks
fledge spec checkand thepre-commit/cilanes, which have been failing on a cleanmainsince v1.7.2.The problem
All five accepted SDD change records were stranded mid-lifecycle.
specsync checkexited 1 on a pristine tree:Note
specs_checked: 0— the SDD gate short-circuits before any spec is examined. None of this was about spec content. Coverage, drift and every spec would have passed; the gate never got that far.The records are accepted, merged and shipped, but could not reach
archived, becausearchive's staleness preflight is exactly what the upstream bug breaks. Every recovery path was blocked:change reopenchange archivedefinition approval is staleverification contract is staleclosing approval does not match verification evidenceverification is stale for current delivery inputsreopenneeds a valid closing approval;archiveneeds non-stale verification; onlyreopencan refresh staleness. And CHG-0001's own diagnostic prescribesapprove, which the state machine then rejects:Root causes are diagnosed in CorvidLabs/spec-sync#481:
.specsync/change-sequence.jsonsits in every acceptance manifest as an exact-match delivery input (so allocating change N invalidates 1…N−1), and squash merges orphan the recorded commit (CHG-0006 has zero byte drift and was still stale, purely because06c14e73vanished when #502 merged).The fix
Completes the terminal transition the way
archive_changedoes, minus the preflight it can no longer satisfy:state.json→accepted-state.json.specsync/archive/changes/<date>-<id>state: accepted→archived, bumpupdated_atNo evidence was altered
Every
approvals.jsonandverification.jsonis byte-identical to its committed content — verified by SHA-256 againstgit show HEAD:across all ten files, zero modified. The approvals recorded by0xLeifare untouched and preserved in the archive rather than deleted. The only edit is the state flip.This is deliberately distinct from rewriting approval digests, which would fabricate evidence that a human signed something. Moving a genuinely-accepted record to its correct terminal state does not.
Verification
fledge lanes run pre-commitgreen — fmt + lint + test + spec-check:Caveats
CHG-0007, which feat: fledge spec lint — quality gate for the spec itself (#429) #505 introduces.validate_archived_integrityand the recursive accepted-inputs preflight. Those guards are unreachable here because of the bug, not because they would have objected.Refs CorvidLabs/spec-sync#481
🤖 Generated with Claude Code
https://claude.ai/code/session_01KuhwrJF2XFDVHhX7qzDuyy