CB-WP-0006 T04: withdraw AM-4c; and fix where AM-6 is measured

AM-4c is withdrawn from the acceptance table and retained as a reported
diagnostic. GameKernel §5a carries the argument.

The ratio has no monotone better direction. INTENT's rule is "own the
semantics, assimilate the implementation": rising can mean owning
semantics properly or reimplementing what should have been assimilated;
falling can mean leverage or dependency bloat. A target requires knowing
which way is better. It is also redundant — AM-4a/AM-4b bound the
denominator and AM-2 bounds own-source density, so AM-4c is a ratio of two
already-targeted quantities.

Measured at withdrawal: 1,426 own lines per 100k third-party (shipped),
1,107 (dev). make dep-weight now prints both, labelled diagnostic — the
row was never actually reported before.

M-D1-MUT keeps AM-4c in its denominator on purpose and says so in the
output. Dropping it would move the score 7/14 -> 7/13 without enforcing
anything: a score improved by deleting the question.

Decided before Phase B deliberately, since ADR-0005 predicts own-source
growth that will move this ratio; deciding after would be the retarget
§Step 4 forbids.

A T01 correction found here. The AM-6 gate failed inside `make all` at
38,753 ev/s against 341,280 in isolation — a 9x drop, because cargo test
runs binaries and threads concurrently. A throughput assertion inside a
parallel harness measures contention, not throughput. T01's measurement
was valid; its gate placement was not.

Fixed by running it only where valid — #[ignore] plus `make am6` in
release with --test-threads=1, now 2.0M ev/s at 20.2x headroom — and not
by lowering the target, which T01 forbade. My first attempt did drift that
way, adding a debug "sanity floor" of 50,000, and was backed out: a second
threshold is still a second chance to tune.

The mutation then went SURVIVED on the first run after the move. 4,000
black_box iterations were calibrated against debug's 3.4x headroom and are
invisible against release's 20x. Raised to 100,000; back to red. A weak
mutation is not a fixed property of a row — it can become weak when the
row's measurement conditions change.

Tier S (amends one row, creates no capability), chaos d4=2, no override.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
tegwick 2026-08-01 10:06:00 +02:00
parent 83db14f2e2
commit db6445ae37
10 changed files with 145 additions and 17 deletions

View file

@ -2244,7 +2244,18 @@ mod replay_probe {
/// spec target. A test, not a bench — Criterion reports throughput and
/// asserts nothing, which is why this row measured nothing for six
/// passes.
///
/// **`#[ignore]` on purpose, and this is the T04 correction.** The
/// assertion first ran inside `make all` and failed at 38,753 ev/s
/// against 341,280 measured in isolation — a 9x drop, because
/// `cargo test` runs test binaries and threads **concurrently**. A
/// throughput assertion inside a parallel harness measures contention,
/// not throughput. The fix is not a lower target (T01 forbade that,
/// and it would reproduce the defect being fixed) but a measurement
/// that only runs where it is valid: `make am6`, release,
/// `--test-threads=1`.
#[test]
#[ignore = "throughput measurement — invalid under a parallel harness; run `make am6`"]
fn am6_throughput_clears_the_spec_target() {
let mut best = 0.0f64;
let mut sampled = 0usize;
@ -2279,11 +2290,12 @@ mod replay_probe {
);
assert!(
best >= AM6_EVENTS_PER_SEC,
"AM-6 UNMET: {best:.0} events/s < {AM6_EVENTS_PER_SEC:.0} target \
({headroom:.2}x). debug_assertions={}. Reference: ~182k debug, \
~2.4M release on bnt-lap001. Do NOT lower the target to pass \
GameKernel §5 AM-6 is a spec value and lowering it needs an ADR.",
cfg!(debug_assertions)
"AM-6 UNMET: {best:.0} events/s < {AM6_EVENTS_PER_SEC:.0} \
({headroom:.2}x). Reference: ~1.7M via `make am6` on \
bnt-lap001. Do NOT lower the target to pass GameKernel §5 \
AM-6 is a spec value and lowering it needs an ADR. If this \
fired under a parallel harness, the measurement is invalid \
rather than the target: run `make am6`.",
);
}