Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 356991@bnt-lap001 Assistant-Session: 5d99ea69-ed55-4a1e-8d97-f4f312db247f
3.2 KiB
| id | type | title | domain | repo | status | owner | topic_slug | created | updated | flavor | related | state_hub_workstream_id | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| STATE-WP-0097 | workplan | Flag resolved decisions that a later decision supersedes without a link | infotech | state-hub | finished | claude-code | infotech | 2026-10-13 | 2026-10-13 | implementation |
|
69eb5013-c103-5d2a-8d58-9da1e2c2042f |
Owner response to activity-core suggestion ff7d2152-75dd-4a49-8dac-e0ebe7343039 (contest path for resolved decisions).
Disposition: State Hub does not add a first-class contested decision state or
a /decisions/{id}/contest route. State Hub is in retirement
(prj-state-hub-retirement). Decisions are file-first work records whose
writer convention is repo-manager (RMGR-WP-0008). The worked example was
settled the same day by a superseding decision. The defect was that the hub
never linked the two decisions. 1c9817ee (Activity Core owns the publisher)
remained resolved with superseded_by: null after c6f23433 superseded it.
The link was set by hand on 2026-10-13 with founder approval.
The existing model already expresses re-assignment (status: superseded,
superseded_by). This plan makes a missing link visible. It does not add a new
authoring surface.
Add a consistency check for unlinked supersession
id: STATE-WP-0097-T01
status: done
priority: medium
state_hub_task_id: "dd2d184a-9bfd-5578-b7ce-cc487f1a8a0a"
Add C-43 (WARN, not auto-fixable) to scripts/consistency_check.py. It fires
when a resolved decision's title or rationale cites another decision id with
"supersedes"/"superseding" while that cited decision is still resolved, or
has superseded_by unset or pointing elsewhere. Report both ids. The fix stays
a deliberate founder/decider action: PATCH status: superseded and
superseded_by. Add tests for the linked, unlinked and mismatched cases.
Document C-43 in the checker header table.
2026-10-13 done: find_unlinked_supersessions and _check_unlinked_supersession
in scripts/consistency_check.py, scoped to decisions on the repo's own
workplans (one GET /decisions/ per run). The check matches "supersedes
[decision] <8-hex|uuid>" and ignores "superseded by". It skips ambiguous
prefixes. Five new tests pass, and the full module passes (168 tests).
Live scan across all decisions: zero findings now that 1c9817ee is linked.
Document the interim contest convention
id: STATE-WP-0097-T02
status: done
priority: low
state_hub_task_id: "04d384e0-7bd8-5157-9c36-648372f8fb39"
Document the convention in docs/. An owner whose checked-in charter
(INTENT.md, SCOPE.md, ADRs) excludes an assigned decision replies on the
relaying thread with CONTEST <decision_id> and charter refs. Only the founder
or the original decider re-resolves. Re-assignment is a new decision that
supersedes the old one, followed by the link that C-43 checks. A first-class
contest state is routed to the-custodian canon and repo-manager as the
long-term owners. It is not built here.
2026-10-13 done: docs/decision-contest-convention.md covers who may contest
and on what grounds, the CONTEST reply format, re-resolution by supersession,
the link step and C-43 detection, with the 1c9817ee → c6f23433 worked example.