port: full regression passes; the phase term moved two published rows
Ran the suite after a session of edits to boot.gd, screen_view.gd, four tools and two authored files. Every asserting check passes, and verify-screen's two DIFFERS are the named pair with per-screen reasons. Two oracle rows moved: title_plate 12.83/0.00% to 13.04/0.09%, title_band 15.31/0.35% to 12.86/0.00%. Opposite directions, which is a phase change rather than a regression, and the cause is mine -- adding --leaf-time=0 to verify-capture's render sites pinned the sweeps while the captures froze them wherever the shutter caught them. That makes the capture-phase term concrete: I documented +/-5.56 for title from a sweep, and here it moved two published rows from a one-line harness change. It also touches a number I published -- the boot-end-frame 0.00% was measured before the pin, and the equivalent row now reads 0.09%. Both inside the term, and the right reading is that neither is 'the' number. Also narrowed the withdrawal-time hook. Its regex matched headings ABOUT corrections rather than headings making them, so 33 was a measurement of the regex; narrowed to a leading WITHDRAWN/CORRECTION/Refuted, it gives 10, all genuine retractions. Residual limit named: several of the ten are flagged because the registered phrase does not appear in that section -- the corrected JP heading reads 'does NOT go against the port', which does not contain 'goes against the port'. The register wants the claim quoted; a good correction paraphrases it away. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
This commit is contained in:
@@ -9,7 +9,7 @@ dies, which is what this file is for.
|
||||
|
||||
<!-- INDEX: generated by tools/port/index-decisions -- do not hand-edit -->
|
||||
|
||||
230 sections. Search this before re-deriving anything.
|
||||
232 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)
|
||||
@@ -241,6 +241,8 @@ dies, which is what this file is for.
|
||||
* [Their sufficiency gap, run on `authored/` — clean, after I nearly reported 35 false positives](#their-sufficiency-gap-run-on-authored--clean-after-i-nearly-reported-35-false-positives)
|
||||
* [Their absence shape on my own citations — and the wording gap in my P0 closure](#their-absence-shape-on-my-own-citations--and-the-wording-gap-in-my-p0-closure)
|
||||
* [The off-edge splash residual, localised — three mechanisms ruled out, one honest description](#the-off-edge-splash-residual-localised--three-mechanisms-ruled-out-one-honest-description)
|
||||
* [Full regression after a session of edits — and the phase term moving two published rows](#full-regression-after-a-session-of-edits--and-the-phase-term-moving-two-published-rows)
|
||||
* [Narrowing my own hook — 33 was a measurement of the regex](#narrowing-my-own-hook--33-was-a-measurement-of-the-regex)
|
||||
|
||||
<!-- /INDEX -->
|
||||
## P0 — the exporter, 2026-08-28
|
||||
@@ -12095,3 +12097,58 @@ levels inside the lit logo, with no consistent direction.**
|
||||
⚠️ Still no mechanism. That is now a much smaller and better-posed question than
|
||||
it was — but naming what it is *not* four times over is not the same as finding
|
||||
what it is, and I am not going to invent a fifth candidate to close it.
|
||||
|
||||
## Full regression after a session of edits — and the phase term moving two published rows
|
||||
|
||||
I had changed `boot.gd`, `screen_view.gd`, four tools and two authored files
|
||||
without a full suite run. Ran it.
|
||||
|
||||
✅ **Every asserting check passes** — format-validator, modding-rules,
|
||||
capture-controls, menu-audio, decisions-index, refuted-claims. `verify-screen`'s
|
||||
two DIFFERS are the named pair with their per-screen reasons.
|
||||
|
||||
### 🟡 Two oracle rows moved, and not as a regression
|
||||
|
||||
| row | before | now |
|
||||
|---|---|---|
|
||||
| `title_plate` | 12.83 / **0.00 %** | 13.04 / **0.09 %** |
|
||||
| `title_band` | 15.31 / **0.35 %** | 12.86 / **0.00 %** |
|
||||
|
||||
**They moved in opposite directions**, which is the signature of a *phase change*
|
||||
rather than a regression — and the cause is mine: adding `--leaf-time=0` to
|
||||
`verify-capture`'s render sites pinned the sweeps to one pose, and the captures
|
||||
froze them at whatever pose the shutter caught.
|
||||
|
||||
📌 **This makes the capture-phase term concrete rather than theoretical.** I
|
||||
documented ±5.56 RMSE for `title` from a sweep; here it moved two *published* rows
|
||||
by 0.09 and 0.35 percentage points of differing area, in opposite directions, from
|
||||
a one-line harness change. The annotation was not decoration.
|
||||
|
||||
⚠️ **And it touches a number I published.** My boot-end-frame verification quoted
|
||||
**0.00 % differing**, measured before the pin, with the boot's leaf free-running.
|
||||
The equivalent row now reads 0.09 %. Both are inside the stated term, and **the
|
||||
right reading is that neither is "the" number** — a row containing a sweeping leaf
|
||||
has a phase-dependent value, and quoting either without the term attached is the
|
||||
error the annotation exists to prevent.
|
||||
|
||||
## Narrowing my own hook — 33 was a measurement of the regex
|
||||
|
||||
The withdrawal-time hook reported **33** correction sections registering nothing.
|
||||
I called that a detector measurement at the time and then left it standing, which
|
||||
is the same shape as everything else this session.
|
||||
|
||||
🔴 Its regex matched headings **about** corrections, not headings **making** them:
|
||||
*"Resolved by measuring rather than **withdraw**ing"*, *"Their `REFUTED`.md gap"*,
|
||||
*"Building the **withdrawal**-time hook"*. Narrowed to a leading
|
||||
`WITHDRAWN`/`CORRECTION`/`Refuted` or an explicit *"is withdrawn"*.
|
||||
|
||||
✅ **33 → 10, and every one of the ten is a genuine retraction.** The list is now
|
||||
actionable where it was noise.
|
||||
|
||||
⚠️ **A residual limit worth naming:** several of the ten are flagged because the
|
||||
registered phrase does not appear *in that section* — the corrected JP heading
|
||||
reads *"does **NOT go** against the port"*, which does not contain the registered
|
||||
*"goes against the port"*. **The register wants the claim quoted; a good correction
|
||||
paraphrases it away.** Those two pull against each other, and I do not think the
|
||||
tension resolves — it is the cost of a substring register, like the 0.32 collision
|
||||
that made that claim unregistrable.
|
||||
|
||||
@@ -84,7 +84,13 @@ doc = open("docs/port/DECISIONS.md").read()
|
||||
heads = [(m.start(), m.group(0)) for m in re.finditer(r"(?m)^##+ .*$", doc)]
|
||||
flagged = 0
|
||||
for i, (pos, head) in enumerate(heads):
|
||||
if not re.search(r"WITHDRAWN|CORRECTION|refuted|withdraw", head, re.I):
|
||||
# 🔴 THE FIRST REGEX MATCHED HEADINGS *ABOUT* CORRECTIONS, NOT HEADINGS
|
||||
# MAKING THEM -- "withdraw" caught "rather than withdrawing", "refuted"
|
||||
# caught a section discussing the register itself. 33 candidates was a
|
||||
# measurement of the regex. Narrowed to headings that RETIRE something:
|
||||
# a leading WITHDRAWN/CORRECTION/Refuted, or an explicit "is withdrawn".
|
||||
if not re.search(r"^#+\s*(?:[^A-Za-z]*\s*)?(WITHDRAWN|CORRECTION|Refuted)\b"
|
||||
r"|\bis withdrawn\b|\bnow refuted\b", head):
|
||||
continue
|
||||
end = heads[i + 1][0] if i + 1 < len(heads) else len(doc)
|
||||
if not any(c in doc[pos:end] for c in reg):
|
||||
|
||||
Reference in New Issue
Block a user