Doctrine

USER-VALUE-CLOSURE on every DONE (fleet-wide)

productuser-valuedone-disciplinefleet-wide

USER-VALUE-CLOSURE on every DONE (fleet-wide)

The rule

Every DONE post from ANY seat MUST include a USER-VALUE-CLOSURE: block:

USER-VALUE-CLOSURE:
  user: <Zack | Grace | Aleah | Chad-as-operator | none>
  surface: <BT app | Redline Mac | Redline iOS | Monday email | Dollhouse | Operator Console | Slack | none>
  change: <one sentence — what this user will see differently>
  closure_date: <date | infra-only>

If the answer is user: none and closure_date: infra-only, that MUST be stated explicitly. Infra-only is not shameful — but it must be named, because unnamed infra-only compounds into 260 DONEs with zero user-visible change.

Scope change from ORA-2026-0053

ORA-2026-0053 applied to "every STRAT output (decision render, dispatch, shepherd tick close, summary to Chad)." This doctrine extends the same obligation to ALL seats — Codex lane seats, Gemini verification seats, CLI sessions, every seat that posts a DONE.

The rationale: STRAT doesn't do the work — lane seats do. If only STRAT has a user-value obligation, the 18 Codex seats producing code can be fully compliant while producing zero user-visible change. The 260-DONE-zero-BT-change event on 2026-04-25 proved this: every STRAT decision had a USER-VALUE-CLOSURE block, but the Codex seats executing those decisions had no obligation to connect their DONEs to user-visible output.

Shepherd protocol

Probe Z from ORA-2026-0053 is retained and extended:

  • Per shepherd tick, count DONEs since last tick where closure_date: infra-only
  • T9-zero trigger: after 4 consecutive infra-only DONEs from the same lane, escalate. Green-without-user-change is yellow.
  • Fleet-wide T9-zero: after 10 consecutive fleet-wide DONEs where zero name a user, escalate to Chad as CRITICAL.

What this kills

  • Infra velocity as proxy for progress: "We shipped 35 BT-tagged tickets" means nothing if Zack sees zero change. Now every seat must name the gap explicitly.
  • Lane seats hiding behind STRAT closure: STRAT can render a decision with perfect USER-VALUE-CLOSURE, but if the Codex seat executing it DONEs with infra-only 8 times in a row, the shepherd catches it.
  • Process-work masquerading as product-work: "Doc hygiene," "backlog sync," "feed cleanup" — if these have user: none, closure_date: infra-only, the shepherd counts them against the T9-zero threshold.

Evidence

  • 2026-04-25: ~260 overnight DONEs, ~35 BT-tagged. Zero change visible in BT. Chad: "does BT look any different than 12 hours ago?"
  • 2026-04-26: Gemini CAMBER-04 produced 21-second DONEs with zero user-value while fully compliant with STRAT-scoped ORA-2026-0053.
  • Root cause: user-value was a STRAT obligation. Lane seats had no user-value gate. Now they do.