CB-WP-0019 T01/T02: AM-4b asks what a contributor acquires
Some checks failed
ci / check (push) Failing after 4s

The two AM-4 budgets had the SAME scope -- one package, no dev edges --
while claiming to bound different things. AM-4b now measures the
workspace with dev edges: 57 crates / 725,258 lines where it read 29 /
317,021, having been blind to 28 crates and 408,237 lines, more source
than its own target.

Target 745,000, ~2.7% of room -- the same margin ADR-0008 D3 gave AM-4a,
applied to a number that grew because the instrument was repaired, not
because anything was added. The target moved to fit the measurement.

T02: proc-macros are COUNTED here and excluded from AM-4a, on purpose.
AM-4a asks what ships and a proc-macro never ships. AM-4b asks what is
acquired, and ADR-0007 D3's acquisition rule counts what the build
fetches -- 'it does not ship' is no answer to 'we downloaded it'. When
the rules disagree, the question each budget asks decides. Measured
share 109,585 lines / 15.1% against AM-4a's 36.2%, so ADR-0008 D2's
refusal to borrow the ratio was right by more than a factor of two.

Caught by this project's own earlier work twice: the mutation
find-string went stale and --self-test reported it BUILD-FREE (the check
CB-WP-0015 added after AM-4a's rotted for two passes), then the DFD gate
caught facts.toml carrying the old numbers.

CB-EV-0001 and ADR-0004 carried live fact: tags on historical readings.
A dated record asserting a CURRENT value is a category error, so those
occurrences are marked as-measured instead of retro-edited, and ADR-0004
gains a supersession note.

make all exits 0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
tegwick 2026-08-03 19:04:54 +02:00
parent 8793749654
commit 0b6f7c5bc8
7 changed files with 171 additions and 20 deletions

View file

@ -52,7 +52,7 @@ a factor of more than two.
```task
id: CB-WP-0019-T01
status: todo
status: done
priority: high
state_hub_task_id: "b6b209c5-ecd7-4685-aa96-d0bc4d9c0df1"
```
@ -81,11 +81,36 @@ would not be a budget at all.
dev edges, a dev-only dependency must move the number. `quick-js` is the
case to use, because it is dev-only and it is what exposed this.
**Done 2026-08-03.** **Widened.** AM-4b now asks *what a contributor
acquires* — `--workspace --edges normal,dev` — and reads **57 crates /
725,258** where it read 29 / 317,021.
The two budgets had the **same scope** while claiming to bound different
things, which is the whole defect. They now differ by construction:
AM-4a is `-p games-ground --no-default-features`, AM-4b is the workspace
with dev edges. `GameKernel.md` §5c states which question each asks.
**Target 745,000**, ~2.7% of room — the same margin ADR-0008 D3 gave
AM-4a, applied to a number that grew because the instrument was repaired
rather than because anything was added. **The target moved to fit the
measurement.**
Controls: `quick-js` must be visible to AM-4b and invisible to AM-4a, both
asserted — it is the dev-only crate that exposed the blindness in
CB-WP-0014, when it landed and the number did not move.
**And the pass was caught by its own earlier work, twice.** Changing the
target invalidated AM-4b's mutation find-string; `mutation-check
--self-test` reported it **build-free**, which is the check CB-WP-0015
added after AM-4a's mutation rotted unnoticed for two passes. Second
catch, first that cost nothing. Then the DFD gate caught `facts.toml`
carrying the stale 317,021/350,000.
## Task: the proc-macro share, decided not just measured
```task
id: CB-WP-0019-T02
status: todo
status: done
priority: high
state_hub_task_id: "6a90d069-d300-42ff-9bf6-e793f60bcf5a"
```
@ -105,6 +130,23 @@ Decide it, and say which of the two rules governs when they disagree.
**Whatever is decided, ADR-0008 D2's note that AM-4b's share is unmeasured
must stop being true in the source.**
**Done 2026-08-03. Counted, not excluded — the opposite of AM-4a, on
purpose.**
AM-4a excludes proc-macros because they run in the compiler and never
reach a shipped binary; counting them in *"what a game ships"* was simply
false. AM-4b **counts** them, because ADR-0007 D3's acquisition rule
counts what the build causes to be **fetched**, and a proc-macro is
fetched, compiled and unaudited on a contributor's machine like anything
else. *"It does not ship"* is no answer to *"we downloaded it"*.
**The rule for when they disagree: the question each budget asks decides.**
That is what ADR-0008 D2 left open.
Measured share: **109,585 lines, 15.1%**, against AM-4a's 36.2% — so
ADR-0008 D2's refusal to borrow the ratio was right by more than a factor
of two. The `unmeasured` note is gone from `dep-weight.py` and the spec.
## Task: write the self-quoting rule down
```task