2026-08-01 15:34:27 +02:00
---
id: CB-WP-0009
kind: meta
title: "Make control gates experimental: window them, review them, cash them out"
CB-WP-0009-T04: CB-EV-0008 — the gate changes, measured
The windowed budget is confirmed for the failure it was written against
and not for the general claim: a single-pass window reads 0% for
CB-WP-0008 against 50% lifetime, but the trailing-3 window reads 45%
against 50%, inside the refutation band. The prediction was written
before the window size was chosen and did not say which comparison it
meant. Both readings are on record and whether 3 is the right window is
carried as open.
gate-review's first run: 9 gates, 0 due, 2 silent. The silent two are the
chaos roll and gate-review itself, both with dates. A registry where
everything looked productive would have been one written to look good.
D4 holds per pass, not per task: three of four tasks shipped a command,
and the two that did not are the spec change that makes the commands
normative and the evidence file that checks them.
Cost is the honest part. This pass cashed out three commands and ran at
$0.177/response — cheaper than every previous meta pass (0.228, 0.298,
0.362) and still 1.4x the product pass at 0.123. Partial support for D4,
not vindication. Context breached both shape targets because the pass ran
on an already-long session; reported, not gated.
Meta reads 45% of the trailing three against a soft 25%. Nothing was
displaced, but the number is over the line and the next pass should be
product.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 15:45:08 +02:00
status: done
2026-08-01 15:34:27 +02:00
authorized_above_budget: "maintainer, 2026-08-01 — 'improve our policies where it seems promising; we will experiment our way to sensible task- and context-specific control and review gates'. Meta read 59% at the time."
2026-08-01 15:35:10 +02:00
state_hub_workstream_id: "98c0af4a-415c-4cf5-92d0-a722eb70cb90"
2026-08-01 15:34:27 +02:00
---
# Purpose
[ADR-0006 ](../decisions/ADR-0006-adaptive-control-gates.md ) (tier M,
survey merged into the ADR from [CB-EV-0007 ](../evidence/CB-EV-0007-stage-0.md )
§3 and §5; chaos d4=3, no override, declaration 4 of 12).
Six passes produced five control mechanisms and no way to retire any of
them. CB-EV-0007 found three defects in how gates are *designed* :
1. the meta budget cannot see the pass it governs — the same cumulative
defect CB-WP-0007 T01 had just fixed for session shape, reintroduced
two tasks later by the same hand;
2. it blocks its own repair, which is the trap CB-RES-0005 §4 named and
rejected for session shape and then got built anyway;
3. nothing retires a gate.
This pass is ** `kind: meta` and above the budget line**, on explicit
maintainer authorization recorded in the frontmatter — the first use of
ADR-0006 D2, and a deliberate exercise of it.
Per **D4** , every task here ships something runnable. A task that ends in
prose has not delivered.
## Task: the meta budget measures the pass it governs
```task
id: CB-WP-0009-T01
2026-08-01 15:38:35 +02:00
status: done
2026-08-01 15:34:27 +02:00
priority: high
2026-08-01 15:35:10 +02:00
state_hub_task_id: "c6eefacd-5bb9-4640-8356-12e8112bcf11"
2026-08-01 15:34:27 +02:00
```
ADR-0006 **D1** . `make status` reports the meta share **for the current
pass** — the window since the active workplan's first commit — and keeps
the cumulative figure labelled *history* , exactly as `cb-cost` 's session
shape block does since CB-WP-0007 T01.
The instrument-repair exemption (**D2**) is what makes this task legal to
open at 59%, so the task must also *state* the exemption where the budget
prints, or the next reader will re-derive the same standoff.
**Predicted:** the windowed share for CB-WP-0008 reads at or near 0% —
it was a pure product pass — against 61% cumulative.
**Refuted if** the two land within 20% of each other, in which case D1 is
wrong and the machinery should be deleted rather than kept.
2026-08-01 15:38:35 +02:00
**Done 2026-08-01.** `cb-cost.pass_costs` buckets by pass window in one
read of the transcripts; `make status` reports a trailing 3-pass share
with the per-pass breakdown and the exemption. First reading **36% over
the last 3 passes** against **49% lifetime** — CB-WP-0008 alone reads 0%.
2026-08-01 15:34:27 +02:00
## Task: `gates.toml` and `make gate-review`
```task
id: CB-WP-0009-T02
CB-WP-0009-T02: gates.toml and make gate-review
ADR-0006 D3. Nine standing control gates now say what they check, what
they have caught with pointers, when their keep-or-kill argument is due,
and what would retire them. make gate-review reports what is overdue and
what has caught nothing; it never fails the build, for CB-RES-0005 §4's
reason.
Drift is checked in both directions and both are pinned by self-tests: a
dependency of `make all` that is neither a registered control gate nor
listed in not_control_gates is a loop-lint finding, so a new gate cannot
acquire permanence without a review date, and an entry naming a target
the Makefile lacks is a finding too.
First run: 0 due, 2 silent. The silent two are the chaos roll, whose
12-declaration window exists precisely to find out, and gate-review
itself, which is not exempt from its own rule — if it has retired,
tightened or forced the re-justification of nothing by 2026-12-31 it is
a ritual and goes.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 15:42:13 +02:00
status: done
2026-08-01 15:34:27 +02:00
priority: high
2026-08-01 15:35:10 +02:00
state_hub_task_id: "0fb6cfaf-9304-481a-a96f-1f0150f4d81d"
2026-08-01 15:34:27 +02:00
```
ADR-0006 **D3** . A registry of every standing control gate: what it
checks, what it has caught (with pointers), `review_by` , and **what would
retire it**. `make gate-review` reports what is overdue and what has
caught nothing.
Seed it with the mechanisms that exist today — the cost budget, the
shape budget, mutation coverage, the DFD fact gate, the meta budget, the
chaos roll, the kernel spec→code gate, and `gate-review` itself, which is
not exempt from its own rule.
**The positive control this needs:** a registry that silently drifts
behind the Makefile is worse than none, so `loop-lint` gains a check that
every gate target has an entry and every entry names a real target. Its
own self-test must fail when an entry is removed.
CB-WP-0009-T02: gates.toml and make gate-review
ADR-0006 D3. Nine standing control gates now say what they check, what
they have caught with pointers, when their keep-or-kill argument is due,
and what would retire them. make gate-review reports what is overdue and
what has caught nothing; it never fails the build, for CB-RES-0005 §4's
reason.
Drift is checked in both directions and both are pinned by self-tests: a
dependency of `make all` that is neither a registered control gate nor
listed in not_control_gates is a loop-lint finding, so a new gate cannot
acquire permanence without a review date, and an entry naming a target
the Makefile lacks is a finding too.
First run: 0 due, 2 silent. The silent two are the chaos roll, whose
12-declaration window exists precisely to find out, and gate-review
itself, which is not exempt from its own rule — if it has retired,
tightened or forced the re-justification of nothing by 2026-12-31 it is
a ritual and goes.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 15:42:13 +02:00
**Done 2026-08-01.** `gates.toml` (9 gates), `make gate-review` , and a
`loop-lint` check in both directions — an unclassified `make all`
dependency and an entry naming a target the Makefile lacks each produce
a finding, both pinned by self-tests. First run: **0 due, 2 silent**
(the chaos roll and `gate-review` itself).
2026-08-01 15:34:27 +02:00
## Task: InnerLoop v1.6
```task
id: CB-WP-0009-T03
2026-08-01 15:43:34 +02:00
status: done
2026-08-01 15:34:27 +02:00
priority: medium
2026-08-01 15:35:10 +02:00
state_hub_task_id: "0b1b33ac-8046-4b34-b287-7b32755d964a"
2026-08-01 15:34:27 +02:00
```
Fold **D2** , **D4** and **D5** into `specs/InnerLoop.md` :
- the breach-is-a-signal wording and the two exemptions (instrument
repair; recorded maintainer authorization);
- the cash-out rule, with its refutation condition;
- the tier trigger for changes to the loop's own operation, closing the
gap CB-RES-0005 §6 opened and this ADR's own tier declaration used.
`InnerLoop.md` is at its 400-line loadability limit, so this task
**displaces** as much as it adds: the chaos-roll rationale and the v1.1
→ v1.4 change log move to `InnerLoopReference.md` , leaving the rule and a
pointer. Loadability is itself a gate; growing the file to fit a rule
about gates would be the joke writing itself.
2026-08-01 15:43:34 +02:00
**Done 2026-08-01.** v1.6 in `specs/InnerLoop.md` , **386 lines** — the
chaos-roll calibration rationale and the v1.0– v1.3 change log moved to
`specs/InnerLoopReference.md` , so the file came in *smaller* than it
started at 399.
2026-08-01 15:34:27 +02:00
## Task: control loop — did the changes fire?
```task
id: CB-WP-0009-T04
CB-WP-0009-T04: CB-EV-0008 — the gate changes, measured
The windowed budget is confirmed for the failure it was written against
and not for the general claim: a single-pass window reads 0% for
CB-WP-0008 against 50% lifetime, but the trailing-3 window reads 45%
against 50%, inside the refutation band. The prediction was written
before the window size was chosen and did not say which comparison it
meant. Both readings are on record and whether 3 is the right window is
carried as open.
gate-review's first run: 9 gates, 0 due, 2 silent. The silent two are the
chaos roll and gate-review itself, both with dates. A registry where
everything looked productive would have been one written to look good.
D4 holds per pass, not per task: three of four tasks shipped a command,
and the two that did not are the spec change that makes the commands
normative and the evidence file that checks them.
Cost is the honest part. This pass cashed out three commands and ran at
$0.177/response — cheaper than every previous meta pass (0.228, 0.298,
0.362) and still 1.4x the product pass at 0.123. Partial support for D4,
not vindication. Context breached both shape targets because the pass ran
on an already-long session; reported, not gated.
Meta reads 45% of the trailing three against a soft 25%. Nothing was
displaced, but the number is over the line and the next pass should be
product.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 15:45:08 +02:00
status: done
2026-08-01 15:34:27 +02:00
priority: high
2026-08-01 15:35:10 +02:00
state_hub_task_id: "e06f57fc-147f-4cba-b398-0db6b060381f"
2026-08-01 15:34:27 +02:00
```
Commit `evidence/CB-EV-0008-adaptive-gates.md` . Four questions, all
answered from output, not argument:
1. **Does the windowed meta share differ from cumulative?** Against
T01's prediction; refuted within 20%.
2. **What does `gate-review` say on its first run?** A registry where
every gate is current and every gate has caught something is a
registry that was written to look good — say which entries are
uncomfortable.
3. **Did D4 hold for this pass?** Three of four tasks here ship a
command; T03 is prose. State whether the rule survives its own first
pass or needs the exception written down.
4. **Cost** , against the 0.123– 0.362 per-response range, and the meta
share this pass itself consumed — reported under the rule it wrote.
CB-WP-0009-T04: CB-EV-0008 — the gate changes, measured
The windowed budget is confirmed for the failure it was written against
and not for the general claim: a single-pass window reads 0% for
CB-WP-0008 against 50% lifetime, but the trailing-3 window reads 45%
against 50%, inside the refutation band. The prediction was written
before the window size was chosen and did not say which comparison it
meant. Both readings are on record and whether 3 is the right window is
carried as open.
gate-review's first run: 9 gates, 0 due, 2 silent. The silent two are the
chaos roll and gate-review itself, both with dates. A registry where
everything looked productive would have been one written to look good.
D4 holds per pass, not per task: three of four tasks shipped a command,
and the two that did not are the spec change that makes the commands
normative and the evidence file that checks them.
Cost is the honest part. This pass cashed out three commands and ran at
$0.177/response — cheaper than every previous meta pass (0.228, 0.298,
0.362) and still 1.4x the product pass at 0.123. Partial support for D4,
not vindication. Context breached both shape targets because the pass ran
on an already-long session; reported, not gated.
Meta reads 45% of the trailing three against a soft 25%. Nothing was
displaced, but the number is over the line and the next pass should be
product.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 15:45:08 +02:00
**Done 2026-08-01.** [CB-EV-0008 ](../evidence/CB-EV-0008-adaptive-gates.md ).
The pass ran at ** $0.177/response** — cheaper than every previous meta
pass and still 1.4× the product pass, which is partial support for D4 and
is reported as such. Meta share reads **45% over the trailing three** ,
over the line; the next pass should be product.