Found by the workstream-B adversary pass (MEDIUM-2) on sprint/portable-release-and-protected-state, independently reproduced.
The conflict
/ca:standup step 6 (the per-item archival sweep, T-61..T-67) removes a done entry from open-tasks.md. classify_board_diff has no archive class and returns False on any line removal:
archive (removal) -> False
done-flip control -> True
commit-gate/SKILL.md:97 (ADR-0008) then applies:
Any other open-tasks.md change — a reworded or deleted entry, or an arbitrary content edit — does not classify as a transition and still flags as scope creep.
So every archive the sanctioned sweep performs produces a diff the sanctioned commit path unstages. The feature is reachable but not committable without /ca:override.
Why this is filed rather than fixed
Making the sweep work means adding a fourth clean-transition class (archive-removal) to classify_board_diff. ADR-0008 explicitly rules that a deleted entry is scope creep, so that is an amendment to an accepted decision, not a bug fix — and ADRs are user-attributed, authored only via /ca:adr. It needs a ruling before code.
The shape a fix would take
An archive-removal class would need to be narrow enough not to re-admit the deletion ADR-0008 is protecting against: the removed block must be [x], must carry a (done YYYY-MM-DD) stamp, must appear verbatim in done-tasks.md in the same commit, and nothing else may change. That last clause is what distinguishes it from an agent quietly dropping an inconvenient task.
Note test_done_flip_retained exists to prove the done-flip stays RETAINED; nothing equivalent exists for archive.
Refs #564, ADR-0008.
Found by the workstream-B adversary pass (MEDIUM-2) on
sprint/portable-release-and-protected-state, independently reproduced.The conflict
/ca:standupstep 6 (the per-item archival sweep, T-61..T-67) removes a done entry fromopen-tasks.md.classify_board_diffhas no archive class and returnsFalseon any line removal:commit-gate/SKILL.md:97(ADR-0008) then applies:So every archive the sanctioned sweep performs produces a diff the sanctioned commit path unstages. The feature is reachable but not committable without
/ca:override.Why this is filed rather than fixed
Making the sweep work means adding a fourth clean-transition class (archive-removal) to
classify_board_diff. ADR-0008 explicitly rules that a deleted entry is scope creep, so that is an amendment to an accepted decision, not a bug fix — and ADRs are user-attributed, authored only via/ca:adr. It needs a ruling before code.The shape a fix would take
An archive-removal class would need to be narrow enough not to re-admit the deletion ADR-0008 is protecting against: the removed block must be
[x], must carry a(done YYYY-MM-DD)stamp, must appear verbatim indone-tasks.mdin the same commit, and nothing else may change. That last clause is what distinguishes it from an agent quietly dropping an inconvenient task.Note
test_done_flip_retainedexists to prove the done-flip stays RETAINED; nothing equivalent exists for archive.Refs #564, ADR-0008.