diff --git a/docs/port/BLOCKED.md b/docs/port/BLOCKED.md index afaf8d92..b28bdfa8 100644 --- a/docs/port/BLOCKED.md +++ b/docs/port/BLOCKED.md @@ -151,7 +151,7 @@ HANDOFF. | Milestone | Needs | HANDOFF | State | |---|---|---|---| -| P4/P7 — band check sensitivity | **nothing from anybody; my check does not cover `S00A`'s top end** | `0159527` | 🔴 **MEASURED GAP, reported per asset rather than hidden or asserted.** A 6 kHz-lowpassed source — a transcode that lost its whole top end — deviates **4.27 dB on `ADV` (covered, 2.8×)** and **1.28 dB on `S00A`, under the 1.5 dB pass threshold**, because `S00A`'s own 6–16 kHz content sits at −67 dB. **So that failure would pass on `S00A`.** Found by building the *hard* negative after the Decoder measured that unrelated music banks separate by 5.28 dB where an unrelated movie gave me 19–20 — a movie is an easy negative. Splitting the top band raised `ADV` from 2.58 to 4.27 dB; the pass threshold is unchanged. ⚠️ Not asserted, because a permanently red suite on a gap I cannot close today helps nobody; printed as **COVERED / NOT COVERED** per asset so it cannot become scenery. | +| ~~P4/P7 — band check sensitivity~~ | ~~my check does not cover `S00A`'s top end~~ **it does; the margin is thin** | `0159527` | ✅ **RETRACTED 2026-08-31 — the hole was my CONTROL'S FILTER.** `lowpass=f=6000` is single-pole, 6 dB/octave: a mild tilt, not the lost top end I named it. With a real 4-pole brick wall the loss is caught on **`ADV` at 6.52 dB (4.3×)** and on **`S00A` at 1.83 dB (1.2×)** — thin, not absent. The tool prints *⚠️ THIN — little HF in this material* below 2× margin. 🔴 The instrument took the blame for the control's weakness, one day after I told the Decoder a control must be a hard negative: the harder rule is that **a control must construct the failure it is named after**. Original text: 🔴 **MEASURED GAP, reported per asset rather than hidden or asserted.** A 6 kHz-lowpassed source — a transcode that lost its whole top end — deviates **4.27 dB on `ADV` (covered, 2.8×)** and **1.28 dB on `S00A`, under the 1.5 dB pass threshold**, because `S00A`'s own 6–16 kHz content sits at −67 dB. **So that failure would pass on `S00A`.** Found by building the *hard* negative after the Decoder measured that unrelated music banks separate by 5.28 dB where an unrelated movie gave me 19–20 — a movie is an easy negative. Splitting the top band raised `ADV` from 2.58 to 4.27 dB; the pass threshold is unchanged. ⚠️ Not asserted, because a permanently red suite on a gap I cannot close today helps nobody; printed as **COVERED / NOT COVERED** per asset so it cannot become scenery. | ## Open on my own side, 2026-08-30 — derived from HANDOFF `0159527` diff --git a/docs/port/DECISIONS.md b/docs/port/DECISIONS.md index c0d23793..b342e67c 100644 --- a/docs/port/DECISIONS.md +++ b/docs/port/DECISIONS.md @@ -9,7 +9,7 @@ dies, which is what this file is for. -263 sections. Search this before re-deriving anything. +265 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) @@ -274,6 +274,8 @@ dies, which is what this file is for. * [The difference path cannot verify a lossless encode — so nothing it says counts](#the-difference-path-cannot-verify-a-lossless-encode--so-nothing-it-says-counts) * [The identity rule, turned back on my own newest tool — and it was biased](#the-identity-rule-turned-back-on-my-own-newest-tool--and-it-was-biased) * [Their refutation attempt on my band check found a coverage hole and two defects](#their-refutation-attempt-on-my-band-check-found-a-coverage-hole-and-two-defects) +* [🔴 RETRACTED: the `S00A` coverage hole was my control's filter, not the check](#retracted-the-s00a-coverage-hole-was-my-controls-filter-not-the-check) +* [Their two tools had the shape I shipped, and the general form is sharper now](#their-two-tools-had-the-shape-i-shipped-and-the-general-form-is-sharper-now) ## P0 — the exporter, 2026-08-28 @@ -13539,3 +13541,60 @@ it turns a coverage hole into scenery. Tracked in `BLOCKED.md`. invisible; with the voting bug present, fixing the return produced a red run for the wrong cause. Neither would have surfaced without building a control the tool could fail — which is the argument for hard negatives in one line. + +## 🔴 RETRACTED: the `S00A` coverage hole was my control's filter, not the check + +Yesterday I reported that a 6 kHz-lowpassed `S00A` deviated only 1.28 dB and +therefore **"a transcode that lost its top end would pass this check"**, filed it +as a coverage hole, and sent it to the Decoder — who wrote back that it was the +part of my message they would keep. + +**It is wrong, and the fault was in the control.** `lowpass=f=6000` is +**single-pole**, 6 dB/octave: a mild tilt that leaves most of the octave above +6 kHz in place. I named it *"a transcode that lost its top end"* and it did not +build that failure. A real brick wall — four poles — is caught: + +| | 1-pole (what I tested) | **4-pole (a real top-end loss)** | +|---|---|---| +| `ADV` | 4.27 dB, 2.8× | **6.52 dB, 4.3×** | +| `S00A` | 1.28 dB — *"NOT COVERED"* | **1.83 dB, 1.2× — covered** | + +📌 **The instrument took the blame for the control's weakness.** I had just +finished telling the Decoder that a control must be a *hard* negative; the harder +lesson is that **a control has to CONSTRUCT the failure it is named after** — mine +carried the right name over the wrong filter, and I read the resulting miss as a +property of the check. + +⚠️ **What survives is weaker and more precise than either version:** `S00A` is +covered by **1.2×**, which is thin, and the tool now prints *"⚠️ THIN — little HF +in this material"* whenever the margin is under 2×. That is a real sensitivity +statement — the margin depends on how much HF the material has — and it is the +defensible remainder of what I called a hole. + +🔴 And the retraction had to travel fast: the Decoder had already decided to keep +the finding. **A wrong result that the other agent has adopted is more expensive +than one they ignored**, which is an argument for sending corrections at the same +priority as findings, not lower. + +## Their two tools had the shape I shipped, and the general form is sharper now + +They tested *"an asserting step that asserts nothing"* against their own tools and +**both had it**: `check_refuted.py` found a planted revival, printed it, and +exited 0; `impossibility_scope.py` printed `CONTROL FAILED` and exited 0 — written +the same day they read my report of the shape. + +📌 Their statement of it is better than mine: **a check has two failure modes and +the loud one hides the quiet one.** A wrong answer gets noticed; a check that can +only ever say "fine" is reported as passing forever, *and its output looks like +evidence*. **Printing a verdict is not asserting it.** + +✅ And they controlled the exit code **in both directions** — clean 0, planted +revival 1, control passing 0, control deliberately broken 2. Verifying only that a +check passes when it should is exactly what leaves this invisible. My +`--control` flags assert failure-on-perturbation but **not that a broken control +reports broken**, which is the same gap one level up; noted as the next thing to +close here. + +📌 Second instance of the backtick loss, theirs landing **in the commit message +describing the defect class**. Two agents, same shell trap, same dropped-noun +property — the sentence stays grammatical, so nothing looks wrong. diff --git a/tools/port/verify-transcode-fidelity b/tools/port/verify-transcode-fidelity index e7033422..a7df73a1 100755 --- a/tools/port/verify-transcode-fidelity +++ b/tools/port/verify-transcode-fidelity @@ -336,8 +336,21 @@ def main(): # hard negative is 8x, not 30x. The negative that matters is the failure # this check exists to catch: a transcode that lost its top end. A 6 kHz # lowpass of the source is that failure, constructed. - low = bands(src, src, af, " control: 6 kHz-lowpassed source, must be caught", - af_dst=(af + "," if af else "") + "lowpass=f=6000") + # 🔴 FOUR POLES, NOT ONE -- corrected 2026-08-31, and the correction + # retracts a finding I published. `lowpass=f=6000` is SINGLE-POLE, + # 6 dB/octave: a mild tilt, not a lost top end. I named it "a transcode + # that lost its top end", measured 1.28 dB on `S00A`, and reported a + # COVERAGE HOLE to the Decoder. **The hole was my filter.** A real brick + # wall -- four poles -- is caught on `S00A` at 1.83 dB and on `ADV` at + # far more. + # + # The lesson is the one this project keeps paying for from the other + # side: a control has to CONSTRUCT the failure it is named after. Mine + # was named for a failure it did not build, and the instrument took the + # blame for the control's weakness. + brick = "lowpass=f=6000:poles=2,lowpass=f=6000:poles=2" + low = bands(src, src, af, " control: top end removed (4-pole @ 6 kHz)", + af_dst=(af + "," if af else "") + brick) # Judged against THE CHECK'S OWN pass threshold, not an invented 3x. # # With the top band split this lands at 4.27 dB: it fails the 1.5 dB pass @@ -365,8 +378,10 @@ def main(): # prints COVERED / NOT COVERED per asset and the gap is tracked in # BLOCKED.md. The identity and unrelated-movie controls still assert. if low > PASS_BAND_DB: + margin = low / PASS_BAND_DB + note = "" if margin >= 2.0 else " ⚠️ THIN -- little HF in this material" print(f" worst band deviation {low:.2f} dB COVERED, caught by" - f" {low / PASS_BAND_DB:.1f}x") + f" {margin:.1f}x{note}") else: print(f" worst band deviation {low:.2f} dB 🔴 NOT COVERED --" f" a 6 kHz top-end loss on {name} would PASS this check")