decisions: no withdraw/supersede path — mooted blocking decisions stay open until something trips over them #36

Open
opened 2026-08-13 13:05:29 +00:00 by jbr870 · 1 comment
Owner

Observation

No helper withdraws or supersedes a Pending Decision, so decisions that events have mooted stay open until something else trips over them:

  • slot3/#191: blocking D-PO-191-6-1 remained OPEN for 22 hours after being superseded by a later QA round; only /integrate's own pre-flight scan caught it (deep-dive report, glue_defects[2]).
  • slot1/#112 (2026-08-06 run report): "a blocking Pending Decision that becomes moot has no self-closing path — D-PO-112-6-1 sat open after the condition cleared."

The create side has four helpers (approval/disposition/escalation/precondition builders) and the read side has decision-resolution-read-state.sh; the lifecycle has no exit door besides answering.

Recurrence

2 independent runs, and structural: the contract defines resolution but not withdrawal, while real runs generate moot decisions routinely (a superseding QA round, a declaration change, a rework that rebuilds the surface).

Hypothesis

A withdrawn terminal posted via a small helper (mirroring decision-resolution:v1 with chosen_option: withdrawn + a reason naming the superseding event), plus one rule in the decisions-settled check: a withdrawn decision does not block. Contract §9 lookup already being latest-wins should make this compose.

Suggested lane

Full pipeline lite — touches the contract and the settled gate (#19 adjacent; resolve together?).

Filed by /meta-retrospective 2026-08-13 (slot3 deep-dive + slot1-112).

## Observation No helper withdraws or supersedes a Pending Decision, so decisions that events have mooted stay open until something else trips over them: - slot3/#191: blocking `D-PO-191-6-1` remained OPEN for **22 hours** after being superseded by a later QA round; only /integrate's own pre-flight scan caught it (deep-dive report, glue_defects[2]). - slot1/#112 (2026-08-06 run report): "a blocking Pending Decision that becomes moot has no self-closing path — D-PO-112-6-1 sat open after the condition cleared." The create side has four helpers (approval/disposition/escalation/precondition builders) and the read side has `decision-resolution-read-state.sh`; the lifecycle has no exit door besides answering. ## Recurrence 2 independent runs, and structural: the contract defines resolution but not withdrawal, while real runs generate moot decisions routinely (a superseding QA round, a declaration change, a rework that rebuilds the surface). ## Hypothesis A `withdrawn` terminal posted via a small helper (mirroring decision-resolution:v1 with `chosen_option: withdrawn` + a reason naming the superseding event), plus one rule in the decisions-settled check: a withdrawn decision does not block. Contract §9 lookup already being latest-wins should make this compose. ## Suggested lane Full pipeline lite — touches the contract and the settled gate (#19 adjacent; resolve together?). *Filed by /meta-retrospective 2026-08-13 (slot3 deep-dive + slot1-112).*
Author
Owner
{"status":"active","from_issue":"45","finding_ref":"F-PO-45-2-1","decision":"D-PO-45-2-1","category":"out-of-scope","summary":"The general decision withdrawal path (#36) — a decision mooted by anything other than an annulled outcome (a superseding QA round, a declaration change) still has no path.","original_scope_note":"Flagged as out of scope in the approved PREQ.","disposition_rationale":"The PREQ scopes this feature to decisions belonging to an *annulled outcome* only, and names #36 as the sibling case for every other way a decision is mooted (a superseding QA round, a declaration change, a rework). #36 is open and is precisely that scope — it already carries the two recorded failures (a blocking decision open for 22 hours after a later QA round superseded it) and the proposed shape (a `withdrawn` terminal plus one rule in the decisions-settled check). Folding the finding there keeps the evidence for one problem in one place. Resolved under the operator's standing instruction of 2026-08-26 (\"resolve all decisions as recommended\"), which is the authority for taking each producer recommendation as given."}
<!-- folded-finding:v1 issue=36 from_issue=45 finding_ref=F-PO-45-2-1 status=active decision=D-PO-45-2-1 --> ```json {"status":"active","from_issue":"45","finding_ref":"F-PO-45-2-1","decision":"D-PO-45-2-1","category":"out-of-scope","summary":"The general decision withdrawal path (#36) — a decision mooted by anything other than an annulled outcome (a superseding QA round, a declaration change) still has no path.","original_scope_note":"Flagged as out of scope in the approved PREQ.","disposition_rationale":"The PREQ scopes this feature to decisions belonging to an *annulled outcome* only, and names #36 as the sibling case for every other way a decision is mooted (a superseding QA round, a declaration change, a rework). #36 is open and is precisely that scope — it already carries the two recorded failures (a blocking decision open for 22 hours after a later QA round superseded it) and the proposed shape (a `withdrawn` terminal plus one rule in the decisions-settled check). Folding the finding there keeps the evidence for one problem in one place. Resolved under the operator's standing instruction of 2026-08-26 (\"resolve all decisions as recommended\"), which is the authority for taking each producer recommendation as given."} ```
Sign in to join this conversation.
No description provided.