CB-WP-0018 T03/T04: explanations, and window 1's verdict
Some checks failed
ci / check (push) Failing after 3s

T03: input::describe writes a sentence per legal command; data-descs
carries them in step with data-targets; the ghost already following the
pointer shows the one for whatever legal target is under it, so the
explanation lands beside the target with no overlay layer to keep
aligned. ADR-0010 D1 binds -- the page renders it, never composes it.

Both mutations INITIALLY SURVIVED because the fixture's Attack card had
exactly one target, where an off-by-one shift and a truncation are both
no-ops. CB-EV-0014's lesson one level in: a fixture too thin to express
a failure is how the failure survives. Two attack targets now, both red.

T04: chaos rate d4 -> d8, window 2 open at 12 declarations, retiring if
an override changes nothing twice running. Window 1's condition was NOT
met -- both overrides changed the outcome -- so the mechanism is kept.
The weakest part of the decision is that it is a rate change argued from
n=2, so window 2 carries a falsifier: no override at all is evidence the
rate went too far, not that the mechanism is healthy.

InnerLoop.md hit 401 lines and the loadability gate fired; the rationale
moved to InnerLoopReference.md, structurally, per the standing precedent
that limits are not raised.

CB-WP-0017 settled at $9.48/40 against $5.19/23 reported mid-flight,
83% higher. Six for six, always low -- read by re-running the instrument
at the moment of quoting, which is CB-EV-0015's correction applied for
the first time.

make all exits 0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
tegwick 2026-08-03 02:24:13 +02:00
parent 7a78c58404
commit a733826d95
9 changed files with 424 additions and 30 deletions

View file

@ -120,17 +120,22 @@ are never skipped for code-producing work.
| **M** | Survey and ADR merged into one document; review optional | Touches a canonical interface, adds/updates an external dependency, **or changes whether or how the loop constrains its own operation** — budgets, gates, review requirements, or these tier rules (v1.6, ADR-0006 D5) |
| **S** | One provenance paragraph in the commit message | Everything else (utilities, fixes, refactors inside a boundary) |
**The chaos roll.** After deriving the structural tier, roll **d4**
(`shuf -i 1-4 -n 1`). On a **4**, the tier is instead picked uniformly at
**The chaos roll.** After deriving the structural tier, roll **d8**
(`shuf -i 1-8 -n 1`). On an **8**, the tier is instead picked uniformly at
random (`shuf -e S M L -n 1`), overriding the structural derivation — up or
down.
> **Calibration window, opened 2026-07-31, running to 12 tier
> declarations** (declaration 4 of 12 as of 2026-08-01). The rate was
> raised from d10 to d4 because at d10 the mechanism never fired and
> so prevented its own evaluation. Record the roll every time,
> including when it changes nothing (`tier: L (structural L, chaos 4)`).
> Rationale, cost estimate and the two dead rolls:
> **Window 1 closed 2026-08-02** at 12 declarations, 2 overrides, one each
> way, and **both changed the outcome** — so the mechanism was kept and
> the rate dropped d4 → d8 (CB-EV-0015 §5, CB-EV-0016 §4).
>
> **Window 2, opened 2026-08-03 at d8**, running to 12 declarations.
> Retirement condition: **retire if an override changes nothing twice
> running.**
>
> Record the roll every time, including when it changes nothing
> (`tier: L (structural L, chaos 8)`). Why the rate fell, why n=2 makes
> that the weakest part of the decision, and the dead rolls:
> `specs/InnerLoopReference.md` §Chaos roll — calibration.
Chaos limits: a rolled-down tier relaxes *process* weight only. Invariants

View file

@ -195,3 +195,35 @@ four implementation rules the pass earned, and the requirement that
evidence state what it does not support. Rationale and the failures behind
each: `history/260731-inner-loop-retrospective.md`.
## Chaos roll — window 1's verdict and the d4 → d8 change
*(CB-WP-0018 T04, 2026-08-03. Full argument in `evidence/CB-EV-0015.md` §5
and `evidence/CB-EV-0016.md` §4.)*
Window 1 ran 2026-07-31 → 2026-08-02, twelve declarations, at d4 after an
earlier d10 that never fired and so prevented its own evaluation.
**Two overrides, one in each direction, and both changed the outcome**, so
window 1's retirement condition — *"the window closes with no overridden
tier producing a different outcome than the argued one"* — was not met:
| pass | roll | what the override bought |
|---|---|---|
| CB-WP-0011 | structural L → **S** | the deleted survey would have opened on 2D toolkits; the pass instead found the existing text renderer showing 24 of 41 view fields. Priced on the same subject: 0.099 $/response at S against 0.123 at L |
| CB-WP-0017 | structural S → **M** | ADR-0010. At tier S the page's script would have grown from *"it does one thing"* to holding a drag, following the pointer and marking other elements under a one-paragraph commit note, silently outgrowing ADR-0007 D5 |
**Why the rate fell.** Both were informative *because they were rare*. At
d4 the mechanism overrides a quarter of all declarations, at which point it
stops being a calibration on the tier table and becomes a second tier
table. d8 keeps the mechanism and restores its rarity.
**The weakest part of this decision, stated plainly:** it is a rate change
argued from **n=2**. The alternative — keep d4 for a second window and
decide with four data points — was live and was rejected only because a
quarter of declarations is a large standing tax to pay for evidence.
So window 2 carries a falsifier: **if it produces no override at all, that
is evidence the rate went too far**, not evidence the mechanism is
healthy. A window that cannot fire cannot be evaluated, which is the exact
failure d10 had.