From 0cf51f8fb16e23c67234b16a6d7803bee2a13298 Mon Sep 17 00:00:00 2001 From: tegwick Date: Tue, 13 Oct 2026 22:35:11 +0200 Subject: [PATCH] Document interim decision contest convention (STATE-WP-0097-T02) Co-Authored-By: Claude Opus 5.5 Assistant: claude-code Assistant-Model: opus Assistant-Process: 356991@bnt-lap001 Assistant-Session: 5d99ea69-ed55-4a1e-8d97-f4f312db247f --- .custodian-brief.md | 8 ++- WORK-RECORDS.md | 4 +- docs/decision-contest-convention.md | 65 +++++++++++++++++++ ...-WP-0097-unlinked-decision-supersession.md | 8 ++- 4 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 docs/decision-contest-convention.md diff --git a/.custodian-brief.md b/.custodian-brief.md index ea91d3b..e411b68 100644 --- a/.custodian-brief.md +++ b/.custodian-brief.md @@ -2,11 +2,17 @@ # Custodian Brief — state-hub **Domain:** infotech -**Last synced:** 2026-10-13 19:57 UTC +**Last synced:** 2026-10-13 20:31 UTC **State Hub:** http://127.0.0.1:8000 *(adjust if running on a remote machine)* ## Active Workstreams +### Flag resolved decisions that a later decision supersedes without a link +Progress: 1/2 done | workplan_id: `69eb5013-c103-5d2a-8d58-9da1e2c2042f` + +**Open tasks:** +- · Document the interim contest convention `04d384e0` + ### Route human gates and expose actionable owner returns Progress: 3/5 done | workplan_id: `2c4e96a3-ca0d-5003-b759-880976600ecc` diff --git a/WORK-RECORDS.md b/WORK-RECORDS.md index 2c10b54..71a55a2 100644 --- a/WORK-RECORDS.md +++ b/WORK-RECORDS.md @@ -72,7 +72,7 @@ | workplan | STATE-WP-0094 | blocked | — | workplans/STATE-WP-0094-routed-gates-and-owner-returns.md | | workplan | STATE-WP-0095 | finished | — | workplans/STATE-WP-0095-historical-source-receiving.md | | workplan | STATE-WP-0096 | finished | — | workplans/STATE-WP-0096-private-decision-dispatch.md | -| workplan | STATE-WP-0097 | proposed | — | workplans/STATE-WP-0097-unlinked-decision-supersession.md | +| workplan | STATE-WP-0097 | active | — | workplans/STATE-WP-0097-unlinked-decision-supersession.md | | task | STATE-WP-ADHOC-2026-06-04-T01 | done | — | workplans/ADHOC-2026-06-04.md | | task | STATE-WP-ADHOC-2026-07-01-T01 | done | — | workplans/ADHOC-2026-07-01.md | | task | STATE-WP-ADHOC-2026-07-01-T02 | done | — | workplans/ADHOC-2026-07-01.md | @@ -396,5 +396,5 @@ | task | STATE-WP-0096-T01 | done | — | workplans/STATE-WP-0096-private-decision-dispatch.md | | task | STATE-WP-0096-T02 | done | — | workplans/STATE-WP-0096-private-decision-dispatch.md | | task | STATE-WP-0096-T03 | done | — | workplans/STATE-WP-0096-private-decision-dispatch.md | -| task | STATE-WP-0097-T01 | todo | — | workplans/STATE-WP-0097-unlinked-decision-supersession.md | +| task | STATE-WP-0097-T01 | done | — | workplans/STATE-WP-0097-unlinked-decision-supersession.md | | task | STATE-WP-0097-T02 | todo | — | workplans/STATE-WP-0097-unlinked-decision-supersession.md | diff --git a/docs/decision-contest-convention.md b/docs/decision-contest-convention.md new file mode 100644 index 0000000..21f0f19 --- /dev/null +++ b/docs/decision-contest-convention.md @@ -0,0 +1,65 @@ +# Contesting a resolved decision (interim convention) + +STATE-WP-0097-T02. This is the response to activity-core's suggestion +ff7d2152-75dd-4a49-8dac-e0ebe7343039. State Hub has no `contested` decision +status and no `/decisions/{id}/contest` route, and it will not add them. State +Hub is in retirement. Decisions are file-first work records with repo-manager +as writer (RMGR-WP-0008). Who may contest a decision is a governance rule. +A first-class contest state belongs with the-custodian canon and repo-manager. +Until they adopt one, contests use the existing decision fields. + +## When an owner may contest + +Only an agent that a resolved decision names as owner or as affected may +contest it. The only grounds are its own checked-in charter: `INTENT.md`, +`SCOPE.md` or an ADR that excludes the assigned work. Preference and workload +are not grounds. + +## Steps + +1. **Contest.** The owner replies on the thread that relayed the decision: + + ```text + CONTEST + Charter: /#
[, ...] + Conflict: + Suggested owner: (optional) + ``` + + The owner does not start the assigned work while the contest is open. +2. **Re-resolve.** Only the founder or the original decider answers the + contest. There are two outcomes: + - *Confirm:* the decision stands. The owner amends its charter through an + ADR in its own repo, then takes up the work. + - *Re-assign:* the decider resolves a **new** decision. Its title or + rationale says `supersedes `. +3. **Link.** The decider sets the old decision to `status: superseded` with + `superseded_by: ` (`PATCH /decisions/{old_id}`). Without + this link the hub keeps showing the old decision as settled. Agents that + relay it would then pass on the overturned assignment. +4. **Update work records.** Repos whose task blocks cite the old `decision_id` + update the reference in their files. Fix-consistency propagates the + change (C-41). + +## Detection + +C-43 (`decision-supersession-unlinked`, WARN) flags a resolved decision that +says `supersedes ` when the cited decision is not `superseded` with +`superseded_by` pointing back to it. The check reports to the repo that owns +the superseding decision's workplan. It does not fix anything: setting the link +stays a deliberate act of the decider. + +There is no automatic detection of an open contest that nobody has answered. +A reply containing `CONTEST ` is an ordinary message until the decider acts +on it. + +## Worked example (2026-10-13) + +- 1c9817ee assigned the publish-grant publisher and its push credentials to + activity-core. +- activity-core declined on thread 25824c97 (reply 5961c59d). Its INTENT + excludes repository edits, execution and secret custody. +- The founder resolved c6f23433, "supersedes 1c9817ee", which assigns the + publisher to rein-aharness. +- The link from 1c9817ee to c6f23433 was missing until set by hand. C-43 now + catches this case. diff --git a/workplans/STATE-WP-0097-unlinked-decision-supersession.md b/workplans/STATE-WP-0097-unlinked-decision-supersession.md index f66d12e..f65f150 100644 --- a/workplans/STATE-WP-0097-unlinked-decision-supersession.md +++ b/workplans/STATE-WP-0097-unlinked-decision-supersession.md @@ -4,7 +4,7 @@ type: workplan title: "Flag resolved decisions that a later decision supersedes without a link" domain: infotech repo: state-hub -status: active +status: finished owner: claude-code topic_slug: infotech created: "2026-10-13" @@ -58,7 +58,7 @@ Live scan across all decisions: zero findings now that 1c9817ee is linked. ```task id: STATE-WP-0097-T02 -status: todo +status: done priority: low state_hub_task_id: "04d384e0-7bd8-5157-9c36-648372f8fb39" ``` @@ -70,3 +70,7 @@ 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.