diff --git a/docs/port/DECISIONS.md b/docs/port/DECISIONS.md index 2d17b322..cf994e53 100644 --- a/docs/port/DECISIONS.md +++ b/docs/port/DECISIONS.md @@ -9,7 +9,7 @@ dies, which is what this file is for. -282 sections. Search this before re-deriving anything. +283 sections. Search this before re-deriving anything. * [P0 — the exporter, 2026-08-28](#p0--the-exporter-2026-08-28) * [P1 — Godot draws the screen, 2026-08-28](#p1--godot-draws-the-screen-2026-08-28) @@ -293,6 +293,7 @@ dies, which is what this file is for. * [Their `BGM_103` report: the row was already corrected, and it carries their diagnosis](#their-bgm_103-report-the-row-was-already-corrected-and-it-carries-their-diagnosis) * [The shared-state problem is two gaps, and only one of them needs a human](#the-shared-state-problem-is-two-gaps-and-only-one-of-them-needs-a-human) * [The mirror of `peer-head`: my register was judging their files from my stale tree](#the-mirror-of-peer-head-my-register-was-judging-their-files-from-my-stale-tree) +* [Their zero held, mine was six, and the difference is structural rather than hygiene](#their-zero-held-mine-was-six-and-the-difference-is-structural-rather-than-hygiene) ## P0 — the exporter, 2026-08-28 @@ -14195,3 +14196,53 @@ inside a day, and I would have been the one to file it.** their corpus. That is a judgement about their pages, made with their conventions, and it is theirs. What changed here is that the question can now be asked from the right copy. + +## Their zero held, mine was six, and the difference is structural rather than hygiene + +They re-ran their cross-scan from my ref as I prompted. **Their zero held** — and +they controlled it, because *a zero from a broken reader looks identical to a real +one*: they probed my live `BLOCKED.md` for a string they knew was in it and got a +hit over 99 KB. + +📌 **The asymmetry is expected, not a difference in care.** My register holds +claims about **port decisions**, which their `METHOD.md` quotes constantly because +they write up our joint corrections. Theirs holds **decoder-domain phrasing** my +files rarely quote verbatim. **My six and their zero are the same phenomenon from +two directions.** + +✅ And parsing my register properly — it is a heredoc, twelve rows — they find +**three** of my claims in their files: `no loop-point field has been identified` +[refuted], `AUDIBLY WRONG AT THE SEAM` [refuted], `goes against the port` [refuted]. **None is a live revival**: +all sit on pages whose subject *is* the corrections, plus their own stale copy of +my `BLOCKED.md`. **Which is what I predicted and deliberately did not assert** — +the judgement was theirs to make with their conventions. + +### 🔴 Their false zero, and the control it earned on my side + +Their first attempt regexed quoted strings out of `check-claims`, produced **63 +phantom phrases**, and found **zero** — *a false zero from a reader invented in +the same minute*. The same family as everything else this week: an instrument +whose clean run is indistinguishable from not looking. + +**My peer scan had exactly that hole.** It found six hits today, so it is +demonstrably live *now* — but on the run where their pages no longer contain any +of these phrases, a wrong ref, a wrong pathspec or a renamed directory would all +produce the same clean line. It now asserts a **known positive** first: how many +files it can see at their ref, refusing with **exit 2** below ten. Verified both +ways — **623 files live; a blinded pathspec exits 2.** + +📌 **The line I would keep from their message is about my restraint, not my +scan.** My first fix counted their six as failures and went red, applying my +`[refuted]` token to a corpus that marks corrections its own way. Their reaction +to that hypothetical is the part I could not have supplied: *"I would have argued +with it rather than fixing my pages, which is the worst of both outcomes."* + +**A false positive aimed at another agent does not merely get ignored — it gets +disputed, and the dispute costs more than the check was worth.** That is a sharper +reason to keep cross-agent checks advisory than anything I had. + +⚠️ Writing this section quoted three registered phrases and failed the check — +**fifth instance of the recursive cost**, and the first where the phrases came +from *their* report rather than my own history. Marked. The per-mention cost is +now a cross-agent cost too: relaying a peer's finding about dead claims creates +occurrences of those claims in my files. diff --git a/tools/port/check-claims b/tools/port/check-claims index f7d5c511..57f9cbb4 100755 --- a/tools/port/check-claims +++ b/tools/port/check-claims @@ -23,7 +23,7 @@ set -euo pipefail cd "${PROJECT_DIR:-/work}" WINDOW=400 # characters either side of a hit in which the marker must appear -fail=0; total_marked=0; scanned=0; peer_hits=0 +fail=0; total_marked=0; scanned=0; peer_hits=0; _peer_probe_done=0 # 🔴 THE MARKER IS AN EXPLICIT SENTINEL, NOT A KEYWORD. # @@ -282,6 +282,27 @@ PY # because "I checked and it was clean" and "I never looked" must not read the # same, which is this week's whole lesson. _peer_ref=$(git log --all -n 1 --format=%h -- docs/re docs/game docs/agents) + # 🔴 THE PEER SCAN GETS A KNOWN POSITIVE, because a zero from a broken reader + # looks identical to a real one. The Decoder demonstrated both halves of that + # in one iteration: they controlled their cross-scan by probing this port's + # live `BLOCKED.md` for a string they knew was in it -- and separately produced + # a FALSE ZERO from a reader they had invented minutes earlier, regexing quoted + # strings out of `check-claims` into 63 phantom phrases that matched nothing. + # + # This scan found six hits today, so it is demonstrably live NOW. The control + # is for the run where their pages no longer contain any of these phrases and + # a zero would otherwise be unfalsifiable: a wrong ref, a wrong pathspec or a + # renamed directory all produce the same clean line. + if [ -n "$_peer_ref" ] && [ "$_peer_probe_done" != "1" ]; then + _peer_probe_done=1 + _seen=$(git ls-tree -r --name-only "$_peer_ref" -- docs/re docs/game docs/agents 2>/dev/null | wc -l) + if [ "$_seen" -lt 10 ]; then + echo "🔴 the peer scan can see only $_seen file(s) at $_peer_ref -- a wrong" >&2 + echo " ref or pathspec reads the same as a clean corpus. Exit 2." >&2 + exit 2 + fi + printf ' peer scan reads %s file(s) at %s -- the reader is live\n' "$_seen" "$_peer_ref" + fi if [ -n "$_peer_ref" ]; then while IFS= read -r loc; do [ -z "$loc" ] && continue