Document interim decision contest convention (STATE-WP-0097-T02)
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
This commit is contained in:
parent
81dea1f356
commit
0cf51f8fb1
4 changed files with 80 additions and 5 deletions
|
|
@ -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`
|
||||
|
||||
|
|
|
|||
|
|
@ -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 |
|
||||
|
|
|
|||
65
docs/decision-contest-convention.md
Normal file
65
docs/decision-contest-convention.md
Normal file
|
|
@ -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 <decision_id>
|
||||
Charter: <repo>/<file>#<section>[, ...]
|
||||
Conflict: <one sentence>
|
||||
Suggested owner: <agent> (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 <old decision id>`.
|
||||
3. **Link.** The decider sets the old decision to `status: superseded` with
|
||||
`superseded_by: <new decision id>` (`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 <id>` 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 <id>` 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.
|
||||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue