#!/usr/bin/env python3 """Baseline harness: how findable, reproducible and answered are the design findings this project has already produced? The comparator is US, today. The external candidates (rulings databases, model-checker traces, W3C provisional marks) are practices rather than runnable software, so per InnerLoop Step 1 their rows are DIRECTIONAL and cap at `parity`. This is the row that can be measured. """ # # ── SUPERSEDED 2026-08-05 by tools/design.py (ADR-0012 D8) ────────────── # # Kept as CB-RES-0007's dated snapshot, NOT as a live instrument. Deleting # it would erase the evidence for how a wrong number got into a survey. # # The adversarial review (C2) dismantled it and every point is true: # * FINDINGS below is a hand-maintained dict; `n = len(FINDINGS)` counts # the rows someone typed, not findings that exist. # * `has_reproduction` is `startswith("scenarios/")` and never stats the # file, so the self-test's YES-control is GREEN against a path that # 2da19a4 deleted. A positive control that controls nothing. # * It rejects a named test, which the admissibility rule admits, so its # 33% is biased downward. # * The 4-day figure is two date literals subtracted. Mutated to # 2020-01-01 it reports 2406 days with every check still green. # # **Its 33% is withdrawn as a measured rate.** What survived: 11 files, # no index, 0 of 10 ruled — all checkable without this tool. # import os, re, subprocess, sys, datetime ROOT = "/home/worsch/clay-borg" os.chdir(ROOT) # The findings this project has actually produced, and where each lives. FINDINGS = { "U1..U10 underdetermined points": ["specs/GroundRules.md"], "SOLVE on a face-down Problem": ["workplans/CB-WP-0018-the-browser-is-a-client.md", "evidence/CB-EV-0016-the-browser-is-a-client.md"], "GR-A13 wasted SOLVE": ["evidence/CB-EV-0007-stage-0.md"], # RESOLVED 2026-08-04: ground-game ruled GR-S01's deal, the engine # imports the edition, and the scenario was renamed from # `-unreachable-` to `-reachable-`. Kept in the baseline because the # baseline is a snapshot of what the survey measured, and a register # that drops findings when they close cannot report a close rate. "GR-E01 unreachable below 5 seats [RESOLVED]": [ "evidence/CB-EV-0007-stage-0.md", "scenarios/ground/gr-e01-threshold-reachable-2p.yaml", "workplans/CB-WP-0021-import-the-edition.md"], # FROZEN 2026-08-05. This globbed `provisional: true` live, so it was # never a snapshot -- it drifted with the repo. CB-WP-0026 lifted the # last five flags (ground-game ruled them 2026-08-03) and the glob went # empty, turning this file's own pinned self-test red at 1/6. A dated # snapshot that recomputes is a contradiction; the literal list it # measured on 2026-08-03 is what belongs here. "six provisional defaults": [ "scenarios/ground/gr-a04-bond-support.yaml", "scenarios/ground/gr-d01-darvo-trigger.yaml", "scenarios/ground/gr-d05-darvo-reverse.yaml", "scenarios/ground/gr-e02-shared-ground.yaml", "scenarios/ground/gr-e04-coalitions.yaml", ], "GR-E03/GR-E04 never played": ["evidence/CB-EV-0007-stage-0.md"], } def has_reproduction(paths): """A runnable thing: a scenario file, or a named test/command.""" for p in paths: if p.startswith("scenarios/"): return True return False def self_test(): """The control that matters: a harness that read nothing must not report a clean baseline. Every path this survey cites must exist, and the reproduction test must be able to say NO — one that answered yes for everything would report 100% and look excellent.""" results = [] def check(name, ok, detail=""): results.append((name, ok, detail)) missing = [p for paths in FINDINGS.values() for p in paths if not os.path.exists(p)] check("every cited location exists", not missing, ", ".join(missing[:3])) check("the finding set is not empty", len(FINDINGS) >= 6, f"{len(FINDINGS)}") check("reproduction detection can say NO", not has_reproduction(["evidence/CB-EV-0007-stage-0.md"]), "a detector that always says yes would report 100%") check("reproduction detection can say YES", has_reproduction(["scenarios/ground/gr-e01-threshold-unreachable-2p.yaml"])) # The number this survey turns on, pinned so a later edit cannot move # it silently: 2 of 6 today. repro_now = sum(has_reproduction(v) for v in FINDINGS.values()) check("the measured baseline is 2 of 6", repro_now == 2, f"{repro_now}/6") print("design-baseline self-test (positive control)") ok = True for name, passed, det in results: print(f" [{'ok ' if passed else 'FAIL'}] {name}" + (f" — {det}" if det else "")) ok &= passed return 0 if ok else 1 if "--self-test" in sys.argv: raise SystemExit(self_test()) print("BASELINE — design findings as they stand, 2026-08-03\n") places = set() repro = 0 for name, paths in FINDINGS.items(): places.update(paths) r = has_reproduction(paths) repro += r print(f" {'repro' if r else ' - '} {len(paths)} location(s) {name}") n = len(FINDINGS) print(f"\n findings {n}") print(f" with a runnable reproduction {repro}/{n} = {100*repro//n}%") print(f" distinct files holding them {len(places)}") print(f" single register? NO — {len(places)} files, no index") # Time from raised to READ, for the one finding with a timestamp trail. raised = datetime.date(2026, 7, 30) # hub message from clay-borg-custodian read = datetime.date(2026, 8, 3) # marked read this session print(f"\n U1..U10: raised {raised}, first READ {read} — {(read-raised).days} days") print(f" U1..U10: answered? NO — {(read-raised).days}+ days open, 0 of 10 ruled")