CB-REV-0001: the adversarial review, and it was not approvable
Some checks failed
ci / check (push) Failing after 4s
Some checks failed
ci / check (push) Failing after 4s
Thirteen challenges, five FATAL, all five conceded. Nothing had reached ground-game, which is the only reason this is a correction and not a retraction. The worst: `Reactive` was not "greedy with one preference changed". It differed in five, including SpendFreedom — ranked 95 unconditionally against greedy's `95 if gated else 0` — so the seat burned its Freedom token in round one of every game. A second change to the exact mechanism under study, and every number in CB-EV-0031 was measuring it. The pass claimed ADR-0018's one-varying-parameter discipline in its own workplan while violating it. GreedyPolicy::rank is now public and the policy delegates, overriding one match arm, so the control is structurally true. Withdrawn entirely: "H1-B suppresses DARVO in the attacker". Disabling H1-B under the corrected policy changes the arm count by exactly zero. The pass hedged the wrong variable — it disclaimed "the number 2" and defended "the direction", and the direction is what failed. The supporting inference was invalid anyway: final Stress cannot show who armed, because DarvoEnded resets the stage and REVERSE gives its owner -2. Corrected: criterion 1 was failed on the greedy column while the pass's own printed table showed 31-1000 arms in the other columns — the selective-column move, in the file that names it. "Peak Stress was 1" was a maximum over StressSet payloads, not held state (true: 2); the baseline game count was 1,600 not 3,200; and "a reckless policy plays identically to a careful one" is refuted by this repo's own rank-95 policy. Inert controls replaced, each verified red against the reviewer's own mutation: the baseline hash test compared two identically-constructed states (serde(skip) on variant left 57/57 green); the `unchanged:` test checked 3 of 7 entries and passed with SOLVE made illegal; H1-A's ordering and H1-B's OU-cancel path had no test at all. edition-check now covers catalog.yaml and rules_delta.yaml, whose digests CB-WP-0038 claimed and never recorded — the review found it and reported it unverified rather than absent, which was the right call. Still open: H1-B on the DARVO extra-Attack path is untested, regulation.rs still skips setup failures silently, and round-5 arms are counted though they can never act. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
38106791a6
commit
041c0e7c3e
9 changed files with 489 additions and 101 deletions
|
|
@ -50,13 +50,29 @@ def vendored_files():
|
|||
return sorted(f for f in os.listdir(d) if f.endswith(".csv"))
|
||||
|
||||
|
||||
# CB-WP-0038 vendored two things that are NOT inside the edition
|
||||
# directory: `editions/catalog.yaml`, which selects between packages and
|
||||
# so belongs above them, and the `h1-problem-stress` experiment package.
|
||||
#
|
||||
# Their digests were CLAIMED by that pass and never recorded. The
|
||||
# adversarial review (CB-REV-0001) could not find them and reported the
|
||||
# control unverified — correctly. Recorded relative to `editions/`.
|
||||
SIBLINGS = "../"
|
||||
|
||||
|
||||
def sibling_files():
|
||||
"""Recorded paths that live beside the edition rather than in it."""
|
||||
return sorted(f for f in recorded() if f.startswith(SIBLINGS))
|
||||
|
||||
|
||||
def check():
|
||||
want = recorded()
|
||||
print("edition-check — vendored data against its provenance")
|
||||
rc = 0
|
||||
|
||||
present = vendored_files()
|
||||
undocumented = [f for f in present if f not in want]
|
||||
siblings = sibling_files()
|
||||
present = vendored_files() + siblings
|
||||
undocumented = [f for f in vendored_files() if f not in want]
|
||||
if undocumented:
|
||||
print(f" [FAIL] vendored with no recorded digest: {', '.join(undocumented)}")
|
||||
rc = 1
|
||||
|
|
@ -69,6 +85,7 @@ def check():
|
|||
if name not in want:
|
||||
continue
|
||||
have = digest(os.path.join(ROOT, EDITION, name))
|
||||
# `../x` resolves out of the edition dir, which is the point.
|
||||
if have != want[name]:
|
||||
print(f" [FAIL] {name} does not match its recorded digest")
|
||||
print(f" recorded {want[name]}\n actual {have}")
|
||||
|
|
@ -125,11 +142,18 @@ def self_test():
|
|||
chk("every vendored file has a recorded digest",
|
||||
all(f in want for f in present),
|
||||
"a file added without a digest must fail, not be skipped")
|
||||
# `present` is the edition's own CSVs plus the sibling paths recorded
|
||||
# for the catalog and the experiment package (CB-WP-0038).
|
||||
everything = present + sibling_files()
|
||||
chk("every digest names a file that is here",
|
||||
all(f in present for f in want),
|
||||
all(f in everything for f in want),
|
||||
"a stale digest is a lie with a filename")
|
||||
chk("digests match the real files",
|
||||
all(digest(os.path.join(ROOT, EDITION, f)) == want[f] for f in present))
|
||||
all(digest(os.path.join(ROOT, EDITION, f)) == want[f] for f in everything))
|
||||
chk("the sibling packages are covered",
|
||||
len(sibling_files()) >= 3,
|
||||
"catalog.yaml and rules_delta.yaml decide WHAT WE MEASURED; "
|
||||
"CB-WP-0038 claimed digests for them and recorded none")
|
||||
|
||||
# The control that matters: a changed byte must be detected.
|
||||
import tempfile
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue