From 02ab62e28de0527bbe07922b5ed2f78e62eea9c5 Mon Sep 17 00:00:00 2001 From: Sylpheed port agent Date: Sun, 30 Aug 2026 17:52:03 +0000 Subject: [PATCH] port: sweep my own tool headers after theirs -- two hits, both in verify-dwell Their audit found one defect in sixteen commands and their point that doing one and stopping is the failure applies to me: I had fixed verify-screen and verify-capture and gone no further. Hit 1: verify-dwell built its target as oracle span + the GAME's black gap and scored the port against it, correct only while the port inserted that gap. It does not -- black_hold_units went to 0. On publisher_logo the port runs 0.131 s below the unslacked target, absorbed into an 'agrees' by 0.15 s of slack that is larger than the omission it hides. Hold now read from authored/timing.json; the game's gap printed as its own term. Hit 2: the tool carried '4 presented frames at 2.284 units/frame'. The number is right but it is the disc used as its own clock on ONE capture that ran at 13.1 fps against ~28 elsewhere. Stated bare it reads as a general rate and would contradict Q1's 2 units per rendered frame, a different quantity at normal speed. The derivation was in DECISIONS.md; the tool inherited the value alone -- exactly their defect, and their 'print the population beside the number' fix applies unmodified. Not found elsewhere: check-capture's percentages all name their population; check-claims, check-modding, index-decisions and strip-padding assert no measured quantities. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF --- docs/port/DECISIONS.md | 50 ++++++++++++++++++++++++++++++++++++++++- tools/port/verify-dwell | 7 ++++++ 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/docs/port/DECISIONS.md b/docs/port/DECISIONS.md index 2645f592..f2f9f91d 100644 --- a/docs/port/DECISIONS.md +++ b/docs/port/DECISIONS.md @@ -9,7 +9,7 @@ dies, which is what this file is for. -194 sections. Search this before re-deriving anything. +195 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) @@ -205,6 +205,7 @@ dies, which is what this file is for. * [The fifth member of the family is mine: "drawn" is not "visible"](#the-fifth-member-of-the-family-is-mine-drawn-is-not-visible) * [Auditing `--black`, and a rule that falls out of it](#auditing---black-and-a-rule-that-falls-out-of-it) * [🔴 CORRECTION: my backdrop predicate is exact in `GP_TITLE` and its reading was wrong](#correction-my-backdrop-predicate-is-exact-in-gp_title-and-its-reading-was-wrong) +* [Sweeping my own `--help` and headers, after theirs](#sweeping-my-own---help-and-headers-after-theirs) ## P0 — the exporter, 2026-08-28 @@ -10949,3 +10950,50 @@ after fixing it once. ✅ Within `GP_TITLE` the rule is exact, and `--black` for those twelve screens is now justified **from the file** rather than assumed — which was the original point and is unaffected. + +## Sweeping my own `--help` and headers, after theirs + +Their audit found one defect in sixteen commands in about ten minutes, and their +framing of why doing one and stopping is the wrong move — *"a rule written down is +not a rule applied"* — applies to me: I had fixed `verify-screen` and +`verify-capture` and gone no further. Swept the rest. + +### Hit 1 — `verify-dwell` compared the port against the *game's* gap + +The tool built its target as **oracle span + the game's black gap** (0.114–0.190 s) +and scored the port against it. That was right while the port inserted that gap. +🔴 **It does not**: `black_hold_units` went to 0 three iterations ago. + +So the port should run short by the gap, and on `publisher_logo` it does — +**0.131 s below the unslacked target**, absorbed into an "agrees" by the 0.15 s +wall-clock slack, which is *larger than the omission it was hiding*. **A verdict +that passes because the slack exceeds a known defect is not a verdict.** The hold +is now read from `authored/timing.json` so it cannot drift, and the game's gap is +printed as its own term with the slack comparison stated. + +### Hit 2 — a rate that is right, with its population missing + +`verify-dwell` carried *"4 presented frames at **2.284 units/frame** = 9.1 units"*. +✅ The number is correct. ⚠️ It is the disc used as its own clock **on one +capture**, which ran at **13.1 fps** against ~28 elsewhere. Stated bare in a tool, +it reads as a general rate — and it would then contradict HANDOFF Q1's **2 units +per rendered frame**, which is a different quantity at normal speed. The +derivation was in `DECISIONS.md`; the tool inherited the number without it. + +📌 **Exactly their defect**: the doc states its population precisely, the tool +inherits the value alone. Their fix generalises without modification — *print the +population beside the number* — and I did not have to invent anything either. + +### What the sweep did not find + +The percentages in `check-capture` all name what they are percentages of (frames +in a named capture, with the control rows beside them). `check-claims`, +`check-modding`, `index-decisions` and `strip-padding` assert no measured +quantities. So: **two hits across the tool set, both in one tool, both of the two +types now catalogued.** + +⚠️ And their warning is one I cannot fully clear: *any figure computed before the +record-layout fix may have a population that moved, not just a value.* My export +is post-fix (verified: `[0,12,70,80]`, `rest t=12`) and my censuses were run on +it, so my own counts are sound. **Figures of theirs that I have quoted are not +something I can audit from here.** diff --git a/tools/port/verify-dwell b/tools/port/verify-dwell index e48eb0aa..fe63bbb6 100755 --- a/tools/port/verify-dwell +++ b/tools/port/verify-dwell @@ -47,6 +47,13 @@ out = sys.argv[1] INTERVAL = float(os.environ.get("INTERVAL", "0.25")) # The boot's black gap, measured in the DRAW STREAM (4 presented frames at # 2.284 units/frame = 9.1 units), not from luminance -- luminance cannot separate +# +# ⚠️ 2.284 IS NOT A GENERAL RATE AND THIS LINE USED TO READ AS IF IT WERE. +# It is the disc used as its own clock ON ONE CAPTURE, which ran at 13.1 fps +# against ~28 elsewhere: `palogo_sqex` declares alpha >= 1 for 239.8 units and +# was drawn in 105 frames of that run. Correct for converting THAT run's frame +# count; not a constant, and not HANDOFF Q1's 2 units per rendered frame, which +# is a different quantity measured at normal speed. See DECISIONS.md. # the outgoing fade's tail from true black. The +/-1 frame range is 6.9-11.4 # units = 0.114-0.190 s. HANDOFF Q7's luminance figure of 0.17-0.23 s overlaps # only at the top, and the draw-stream number is the one to use.