CB-WP-0019 T01/T02: AM-4b asks what a contributor acquires
Some checks failed
ci / check (push) Failing after 4s
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:
parent
8793749654
commit
0b6f7c5bc8
7 changed files with 171 additions and 20 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue