clay-borg/history
tegwick 98c6cd24c3 CB-WP-0006 T05: K9's assertion, K11's format, and the AM-11 suites
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>
2026-08-01 10:50:52 +02:00
..
260730-InitialExploration.md Add INTENT.md and archive initial exploration notes 2026-07-30 23:55:43 +02:00
260731-assertion-coverage-retrospective.md CB-WP-0005 T07/T08: control loop, retrospective, InnerLoop v1.4 2026-07-31 18:05:31 +02:00
260731-cost-accounting-challenge.md T02 review round: survey approved after 15 of 16 findings conceded 2026-07-31 08:43:32 +02:00
260731-cost-accounting-research.md T01: cost-accounting survey — and a 2.7x correction to our own numbers 2026-07-31 04:27:52 +02:00
260731-cost-accounting-response.md T02 review round: survey approved after 15 of 16 findings conceded 2026-07-31 08:43:32 +02:00
260731-cost-accounting-retrospective.md T07: InnerLoop v1.1 — the instrument must emit its own target 2026-07-31 08:53:52 +02:00
260731-game-kernel-challenge.md T04: adversarial review round + survey corrections + ADR-0002 (reimplement, assimilate patterns) 2026-07-31 01:25:02 +02:00
260731-game-kernel-research.md T03: game-kernel SOTA survey with measured boardgame.io baseline harness 2026-07-31 01:11:04 +02:00
260731-game-kernel-response.md T04: adversarial review round + survey corrections + ADR-0002 (reimplement, assimilate patterns) 2026-07-31 01:25:02 +02:00
260731-inner-loop-retrospective.md T09: InnerLoop v1.0 — corrected from the first full pass 2026-07-31 03:11:19 +02:00
260731-inner-loop-rule-audit.md ADR-0004: ratify AM-4a and AM-4b (maintainer decision) 2026-07-31 09:45:35 +02:00
260731-loop-hardening-retrospective.md T10: InnerLoop v1.2 — hardening does not converge, so optimize correction 2026-07-31 09:31:19 +02:00
260731-mechanical-work-retrospective.md CB-WP-0004 T06: retrospective — what actually predicted the outcome 2026-07-31 10:28:35 +02:00
260731-replay-kernel-coverage-challenge.md CB-RES-0004: the instruments count names, not assertions 2026-07-31 14:19:30 +02:00
260731-replay-kernel-coverage-research.md CB-RES-0004: the instruments count names, not assertions 2026-07-31 14:19:30 +02:00
260731-replay-kernel-coverage-response.md CB-RES-0004: the instruments count names, not assertions 2026-07-31 14:19:30 +02:00
260801-cb-wp-0006-log.md CB-WP-0006 T05: K9's assertion, K11's format, and the AM-11 suites 2026-08-01 10:50:52 +02:00