From 35bf46917286eaca14bde90bc95b3ac8398ba4df Mon Sep 17 00:00:00 2001 From: Sylpheed port agent Date: Mon, 31 Aug 2026 00:08:18 +0000 Subject: [PATCH] port: the difference path is disqualified, and the identity test is what showed it Audited my own docs for the Decoder's method-versus-subject error -- a negative about the instrument written as a negative about the subject. Clean: every impossibility claim in DECISIONS is already method-scoped ('undecodable WITH REACH', 'cannot be answered BY LISTENING'), and both live open rows in BLOCKED read 'not observed' and 'deliberately not inferred'. Nothing to fix, recorded as a negative. Then three cheap measurements located the fidelity fault exactly. Identity -- source against a second decode of itself at lag 0 -- subtracts to -inf, so decode-and-subtract is exact and the pipeline was never the problem. A LOSSLESS flac of the identical fold reaches only 14.2 dB down, searched exhaustively at stride 1 over 300 lags, where it must reach about 90. The shipped transcode's 8.73 dB is therefore meaningless. So the difference path is disqualified rather than inconclusive, and every number it produced in this thread -- including the 'difference louder than source' readings I reported twice -- was an artefact of the lag search, not evidence about a transcode. The tool now refuses on that path and carries its acceptance test in the code: make lossless-vs-source return >= 60 dB down before believing anything it says. The identity test costs one decode and no encoder, and it should have been the first thing run three iterations ago. Before asking whether an instrument can measure a difference, ask whether it returns zero for no difference. Hypotheses ruled out and recorded so nobody re-runs them: drift (offset stable at about -2465 samples across t=2, 10 and 20 s), container start time (start_time is exactly 0), the codec being perceptual (the lossless control fails the same way), and level or content mismatch (bands agree to 0.66 dB). P4's waveform question is now open with a disqualified instrument -- worse than it looked yesterday, and better than believing 8.73 dB meant something. The band check is unaffected and still asserts. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF --- docs/port/BLOCKED.md | 2 +- docs/port/DECISIONS.md | 45 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/docs/port/BLOCKED.md b/docs/port/BLOCKED.md index a3e76941..c2809ef1 100644 --- a/docs/port/BLOCKED.md +++ b/docs/port/BLOCKED.md @@ -151,7 +151,7 @@ HANDOFF. | Milestone | Needs | HANDOFF | State | |---|---|---|---| -| P4/P7 β€” transcode fidelity | ~~nothing from anybody~~ **the WAVEFORM half is still open** | `0159527` | 🟑 **PARTLY ANSWERED, by changing the kind of quantity.** Band energies need no alignment, and both transcodes match their sources to **0.66 dB worst-case across four bands** while an unrelated movie lands at **19–20 dB** β€” two populations an order of magnitude apart, so the 1.5 dB tolerance sits between measured values. Asserting in `check-all`, with the known negative on every run. ⚠️ **This is weaker than P4 wanted**: band agreement cannot distinguish a faithful transcode from one that kept the spectrum and mangled the waveform. The difference-signal half stays report-only and asserts nothing β€” and the band result now **proves** its failure is my alignment, since matching spectra mean same content at same level. Earlier text: πŸ”΄ **THE GATE HAS NEVER CARRIED A FIDELITY CLAIM, and now it says so.** `AUDIO-VERIFICATION.md` Β§1 calls this the question P4 actually raised; nothing implemented it, and `verify-video-audio` explicitly declines it. `tools/port/verify-transcode-fidelity` exists and is **report-only**: best alignment is corr 0.763 on `S00A` and 0.075 on `ADV`, and both still report the difference *louder* than the source, which is impossible for two aligned signals at equal level β€” so the fault is on my side of the instrument, not necessarily in the transcodes. Four traps reproduced on the way, three of which Β§1 names and one (**`-ss` before `-i` returning 4.6 s for a 4.0 s request**) it does not. ⚠️ A tool printing "not faithful" in this state would put a **false defect on the exporter**. | +| P4/P7 β€” transcode fidelity | ~~nothing from anybody~~ **the WAVEFORM half is open WITH A DISQUALIFIED INSTRUMENT** | `0159527` | 🟑 **PARTLY ANSWERED β€” and the other half got worse, 2026-08-31.** The difference path is **disqualified, not inconclusive**: identity (source vs a second decode of itself) subtracts to **βˆ’inf** so the pipeline is exact, but a **lossless flac of the identical fold reaches only 14.2 dB down** searched exhaustively at stride 1, where it must reach ~90. An instrument that cannot verify an encode known to preserve every sample says nothing about a lossy one, so every difference number in this thread was an artefact of the lag search. Ruled out and recorded so nobody re-runs them: **drift** (offset stable at β‰ˆβˆ’2465 across t=2/10/20 s), **container start time** (`start_time` is 0), **the codec being perceptual** (the lossless control fails identically), **level or content** (bands agree to 0.66 dB). Acceptance test now in the code: **lossless-vs-source β‰₯ 60 dB down before believing this path**. Earlier text: 🟑 **PARTLY ANSWERED, by changing the kind of quantity.** Band energies need no alignment, and both transcodes match their sources to **0.66 dB worst-case across four bands** while an unrelated movie lands at **19–20 dB** β€” two populations an order of magnitude apart, so the 1.5 dB tolerance sits between measured values. Asserting in `check-all`, with the known negative on every run. ⚠️ **This is weaker than P4 wanted**: band agreement cannot distinguish a faithful transcode from one that kept the spectrum and mangled the waveform. The difference-signal half stays report-only and asserts nothing β€” and the band result now **proves** its failure is my alignment, since matching spectra mean same content at same level. Earlier text: πŸ”΄ **THE GATE HAS NEVER CARRIED A FIDELITY CLAIM, and now it says so.** `AUDIO-VERIFICATION.md` Β§1 calls this the question P4 actually raised; nothing implemented it, and `verify-video-audio` explicitly declines it. `tools/port/verify-transcode-fidelity` exists and is **report-only**: best alignment is corr 0.763 on `S00A` and 0.075 on `ADV`, and both still report the difference *louder* than the source, which is impossible for two aligned signals at equal level β€” so the fault is on my side of the instrument, not necessarily in the transcodes. Four traps reproduced on the way, three of which Β§1 names and one (**`-ss` before `-i` returning 4.6 s for a 4.0 s request**) it does not. ⚠️ A tool printing "not faithful" in this state would put a **false defect on the exporter**. | | P4/P7 β€” a `Β§1` addition for the HUMAN | **add the imprecise-seek trap to `AUDIO-VERIFICATION.md` Β§1?** | `0159527` | 🟑 **proposed, not done β€” and NARROWED 2026-08-30 before it was written up.** The Decoder reproduced it independently (4.597 s on `ADV`, 4.256 s on `S00A` for a 4.0 s request, correlations βˆ’0.03 and βˆ’0.34 at zero shift: different content, not a shift) and established that the **VIDEO** container-seek on this disc is **exact** β€” byte-identical frames at 20 s. So the trap belongs to the **audio stream**, not to `-ss` placement, and the phrasing matters in the direction that bites: a check looking only at video would clear a path still unsafe for audio. Original: 🟑 **proposed, not done.** Β§1 lists three ways the measurement lies; a fourth is now reproduced β€” a container-level seek returns a different span than requested, so the two windows cover different audio and no shift can align them (best corr 0.172). It is **indistinguishable from the alignment trap Β§1 already names**. Β§1 is the human's document, so this is a proposal rather than an edit. | ## Not blocking, recorded so nobody re-investigates β€” 2026-08-30, HANDOFF `91ada14` diff --git a/docs/port/DECISIONS.md b/docs/port/DECISIONS.md index 9b40f2fa..455c3bc9 100644 --- a/docs/port/DECISIONS.md +++ b/docs/port/DECISIONS.md @@ -9,7 +9,7 @@ dies, which is what this file is for. -260 sections. Search this before re-deriving anything. +261 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) @@ -271,6 +271,7 @@ dies, which is what this file is for. * [Changing the KIND of quantity answered it on the first attempt](#changing-the-kind-of-quantity-answered-it-on-the-first-attempt) * [πŸ”΄ My seek trap was over-general β€” the Decoder narrowed it](#my-seek-trap-was-over-general--the-decoder-narrowed-it) * [A capital letter hid a refuted claim in the file whose job is to say what is open](#a-capital-letter-hid-a-refuted-claim-in-the-file-whose-job-is-to-say-what-is-open) +* [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) ## P0 β€” the exporter, 2026-08-28 @@ -13397,3 +13398,45 @@ negative about the METHOD written as a negative about the SUBJECT.** *"`Static.s resists static scanning"* became *"SE audio is not extractable"* β€” and the wrong one was the heading. Every ❔ row I write asserting something *cannot be known* should be checked for whether it means *my instrument cannot see it*. + +## The difference path cannot verify a lossless encode β€” so nothing it says counts + +Three measurements, each cheap, and together they locate the fault exactly: + +| test | result | what it proves | +|---|---|---| +| **identity** β€” source vs a second decode of itself, lag 0 | **βˆ’inf dB difference** | decode-and-subtract is **exact**; the pipeline is not the problem | +| **lossless** β€” flac of the *identical* fold, exhaustive stride-1 search over 300 lags | **14.2 dB down** at lag βˆ’2596 | it **cannot verify an encode known to preserve every sample** | +| the shipped `S00A.ogv` | 8.73 dB down | meaningless, given the row above | + +πŸ“Œ **A lossless encode must return β‰ˆ90 dB down. It returns 14.2.** So the whole +difference path is disqualified β€” not "inconclusive", *disqualified* β€” and every +number it has produced in this thread, including the ones I reported as +"difference louder than source", was an artefact of the lag search rather than +evidence about a transcode. + +βœ… **The identity test is what made this diagnosable**, and it costs one decode and +no encoder. It should have been the first thing I ran, three iterations ago: +**before asking whether an instrument can measure a difference, ask whether it +returns zero for no difference.** + +### Hypotheses ruled out along the way, so nobody re-runs them + +* **Drift** β€” the offset is stable at β‰ˆβˆ’2465 samples across t=2, 10 and 20 s. + Not a clock mismatch. +* **The container start time** β€” `start_time` is exactly 0 on `S00A.wmv`, so the + ~51 ms offset is not a container timeline shift. +* **The codec being perceptual** β€” I suspected Vorbis q5 simply cannot reach Β§1's + 40 dB. Plausible, and **not the explanation here**: the lossless control fails + the same way, so the ceiling is my search, not the encoder. +* **Level or content mismatch** β€” already excluded by the band check (0.66 dB + across four bands). + +⚠️ **The tool now refuses on this path**, and carries the acceptance test in the +code rather than leaving it to be rediscovered: **make lossless-vs-source return +β‰₯ 60 dB down before believing anything the difference path says.** The band check +is unaffected and still asserts. + +πŸ“Œ What this changes about the milestone: **P4's waveform question is not merely +open, it is open with a disqualified instrument.** That is worse than it looked +yesterday and better than believing 8.73 dB meant something.