K11 is implemented: crates/cb-events/src/store.rs, magic + version header, 4-byte little-endian length prefix, append-only. Reimplemented not assimilated per ADR-0005 §2 — no new dependency, and AM-4a/AM-4b are unchanged at 246,250 / 317,021 because nothing entered the graph. The operative clause is "detected", so corruption is tested rather than assumed: a tail short by one byte, a half-written length prefix, a length prefix corrupted to claim more than the file holds, foreign magic, and a future format version are each rejected with a distinct error. A reader that accepts a truncated tail is worse than no format, because it silently returns a short history that looks complete. AM-11 is earned. LogStore has two impls — MemLogStore and FileLogStore — driven through ONE conformance(). The trait carries raw/set_raw precisely so the corruption controls live in the shared suite: a format contract that only one impl enforces is not a contract. The same shape is retro-fitted to KernelRng, which is what AM-11 actually names: ChaChaRng and NullRng now pass one suite asserting bounds, draw(1) == 0, determinism across fresh instances, and shuffle preserving the multiset. They were previously exercised by two separate tests, which is why "met, narrow" was never earned and ADR-0005 §4 downgraded it. K9 gets the assertion it did not have: snapshot at seq N + events N+1..M must equal the from-genesis fold, hash-compared, on GroundState, single-seed on purpose — AM-7's probe folds a multi-seed log, which is not a replay of anything, and that defect is not repeated. Two positive controls: the log must exceed 50 events, and the mid-log snapshot must differ from the end state or "apply the remainder" is vacuous. Proof it works: the exact mutation that SURVIVED in CB-WP-0005 — making Snapshot::take discard its EventSeq — now fails on the K9 assertion. AM-11's mutation breaks NullRng::draw to return its bound and the shared suite fails. That is what M-D4-SWAP claims — either impl substitutable — and exactly what two separate per-impl tests could never demonstrate. M-D1-MUT: 7 -> 8 of 14. CB-EV-0001's scoreboard is refreshed: AM-2, AM-5 and AM-9 added, AM-6 moved to enforced, and the headline total corrected from 4 to 8 — it had gone stale inside the same workplan that produced it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
130 lines
2.2 KiB
TOML
130 lines
2.2 KiB
TOML
# GENERATED — do not edit. `make facts-gen` rewrites this file.
|
|
#
|
|
# The single source of fact for numbers that appear in more than
|
|
# one artifact (InnerLoop v1.2). Every value here is produced by
|
|
# the instrument named in its `by` field, on the current tree.
|
|
# `make facts-check` fails if this file disagrees with the
|
|
# instruments, or if a tagged artifact disagrees with this file.
|
|
|
|
generated = "2026-08-01"
|
|
pin = "fc76445"
|
|
|
|
[am4a_loc]
|
|
value = 246250
|
|
text = "246,250"
|
|
fmt = "{:,}"
|
|
by = "tools/dep-weight.py"
|
|
|
|
[am4a_target]
|
|
value = 250000
|
|
text = "250,000"
|
|
fmt = "{:,}"
|
|
by = "tools/dep-weight.py TARGETS"
|
|
|
|
[am4b_loc]
|
|
value = 317021
|
|
text = "317,021"
|
|
fmt = "{:,}"
|
|
by = "tools/dep-weight.py"
|
|
|
|
[am4b_target]
|
|
value = 350000
|
|
text = "350,000"
|
|
fmt = "{:,}"
|
|
by = "tools/dep-weight.py TARGETS"
|
|
|
|
[am_rows]
|
|
value = 14
|
|
text = "14"
|
|
fmt = "{:,}"
|
|
by = "tools/mutation-check.py"
|
|
|
|
[am_unmutatable]
|
|
value = 4
|
|
text = "4"
|
|
fmt = "{:,}"
|
|
by = "tools/mutation-check.py"
|
|
|
|
[gr_covered]
|
|
value = 58
|
|
text = "58"
|
|
fmt = "{:,}"
|
|
by = "tools/rule-coverage.py"
|
|
|
|
[gr_linked]
|
|
value = 49
|
|
text = "49"
|
|
fmt = "{:,}"
|
|
by = "tools/rule-coverage.py"
|
|
|
|
[gr_rules]
|
|
value = 58
|
|
text = "58"
|
|
fmt = "{:,}"
|
|
by = "tools/rule-coverage.py"
|
|
|
|
[gr_scenarios]
|
|
value = 21
|
|
text = "21"
|
|
fmt = "{:,}"
|
|
by = "tools/rule-coverage.py"
|
|
|
|
[k_linked]
|
|
value = 15
|
|
text = "15"
|
|
fmt = "{:,}"
|
|
by = "tools/rule-coverage.py"
|
|
|
|
[k_rules]
|
|
value = 18
|
|
text = "18"
|
|
fmt = "{:,}"
|
|
by = "tools/rule-coverage.py"
|
|
|
|
[k_unlinked]
|
|
value = 'K10 K14 K18'
|
|
text = "K10 K14 K18"
|
|
fmt = "{}"
|
|
by = "tools/rule-coverage.py"
|
|
|
|
[pinned_main]
|
|
value = 92.03371920000004
|
|
text = "$92.03"
|
|
fmt = "${:,.2f}"
|
|
by = "tools/cb-cost.py --pin fc76445"
|
|
|
|
[pinned_mechanical_cost]
|
|
value = 33.3506319
|
|
text = "$33.35"
|
|
fmt = "${:,.2f}"
|
|
by = "tools/cb-cost.py --pin fc76445"
|
|
|
|
[pinned_mechanical_share]
|
|
value = 36
|
|
text = "36%"
|
|
fmt = "{:d}%"
|
|
by = "tools/cb-cost.py --pin fc76445"
|
|
|
|
[pinned_mechanical_turns]
|
|
value = 167
|
|
text = "167"
|
|
fmt = "{:,}"
|
|
by = "tools/cb-cost.py --pin fc76445"
|
|
|
|
[pinned_responses]
|
|
value = 346
|
|
text = "346"
|
|
fmt = "{:,}"
|
|
by = "tools/cb-cost.py --pin fc76445"
|
|
|
|
[pinned_subagent]
|
|
value = 1.1137235
|
|
text = "$1.11"
|
|
fmt = "${:,.2f}"
|
|
by = "tools/cb-cost.py --pin fc76445"
|
|
|
|
[pinned_total]
|
|
value = 93.14744270000004
|
|
text = "$93.15"
|
|
fmt = "${:,.2f}"
|
|
by = "tools/cb-cost.py --pin fc76445"
|