Commit Graph

6 Commits

Author SHA1 Message Date
Sylpheed port agent
3a048de536 port: every one of my checkers passed on an empty input
The Decoder generalised my empty-band case into the rule I now keep: a control
that only compares two things cannot tell you the comparison is happening. An
empty band list, a blank frame, an empty register -- each makes a checker
agreeable rather than wrong, and agreeable is indistinguishable from correct in a
log.

Swept my tools against inputs containing nothing. audit-kinds exited 0 on a tree
with no authored/*.json, having printed '0 kind label(s)' and reported clean.
verify-transcode-fidelity would call every transcode faithful with no videos in
the manifest, having compared none. check-claims exited 1 from a FileNotFoundError
inside the withdrawal hook -- which in that script's own vocabulary means 'a
refuted claim is still being asserted', so a wrong directory got diagnosed as a
dirty corpus. A real failure with a fabricated reason, the third instance of that
family after my control anchoring at the wrong document.

All three now exit 2, check-claims via a preflight that names the roots it needs.
Both self-tests gained the liveness case driven as subprocesses: audit-kinds
--selftest runs itself in an empty directory and requires 2, and check-claims
--control is now six cases -- clean 0, unmarked 1, marked 0, outside-root 0, empty
register 2, nothing to scan 2.

What makes this worth an iteration rather than tidying: none of these tools was
ever wrong on real input. What none of them could do was tell 'I checked and it
was fine' from 'I checked nothing', and every green line I have quoted was the
first of those only because the directory happened to be right.

Also recorded: their ring_row.py used 'main_menu_item(ring_row(f)) is not None' as
a main-menu test, and a TITLE frame passes it -- the gutter carries a bright
cluster at y=243 inside tolerance of row 0. No result they sent me is affected,
for a structural reason rather than a lucky one: (B) from a submenu goes to the
menu, never the title, so the weak test was never shown the frame that breaks it.
I have not re-derived their focus results and am not treating this as a reason to;
what I have is their statement of the exposure and the structural argument,
recorded as that rather than as verification.

Every asserting check passes, 14 of them.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
2026-08-31 02:12:56 +00:00
Sylpheed port agent
5be071f9cf port: close the last control harness, and two authored values checked against bytes
verify-transcode-fidelity --selftest closes my list. It had three controls running
every time -- identity, a 4-pole top-end loss, an unrelated movie -- and none
asked whether the measurement itself was live. With an empty band list every
comparison reads 0.0 dB: identity passes, the real pair passes, and only the
unrelated-movie control fails, reporting exit 1 for a broken instrument. Same
shape as the empty register in check-claims, same fix: exit 2. The self-test
drives the script as a subprocess over a short window -- normal 0, bands emptied
2. All four tools now assert their own harnesses.

Top-item sweep from the DIFFICULTY finding: one site, MenuFlow.initial_focus's
buttons[0], already documented as a repair. Every other [0] in the tree is
unrelated indexing. Nothing to fix, recorded so the sweep is known to have run.

The reset question is settled and it went the way that makes the restraint
correct: a submenu resets to its OWN OPENING ITEM, a per-screen default that need
not be the first. DIFFICULTY opens on NORMAL, second of four, and returns to
NORMAL after a confirmed DOWN and a round trip. So ptbtn11 is right for a reason
rather than by coincidence, and buttons[0]-is-a-repair is measured rather than
principled. contract-check gains check_reset_target, whose teeth the code bounds
honestly: on EXTRAS the named item happens to be first, so agreement is not
evidence -- what it guards is a future refactor silently substituting an index.

Their refutation attempt on extras/initial_focus was made against the disc rather
than against their agreement, and it survives: ptbtn11 y282 against 362 and 442.
Re-checked from this port's own export, a different reader of the same disc, and
the numbers are identical -- extras 282/362/442, main menu 162/242/322/401/482.
Which also confirms EXTRAS could never have separated named-item from top-item.

Menu focus does not survive a reboot: six fresh boots opened on NEW GAME, three of
them following sessions that ended on EXTRAS or OPTIONS. So the authored value is
a fresh-start value. The reach is carried verbatim into the why -- every session
ended with the emulator KILLED, so this measures 'does not survive a killed
session', and a console that remembers across a clean power cycle would not
contradict it.

Still open and not leaned on: whether the reset target moves once a difficulty has
been confirmed; the same SELECT DATA crash prevents testing it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
2026-08-31 01:54:28 +00:00
Sylpheed port agent
e5189a1328 port: retract the S00A coverage hole -- it was my control's filter, not the check
Yesterday I reported that a 6 kHz-lowpassed S00A deviated only 1.28 dB, so a
transcode that lost its top end would pass the band 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. 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. With a real 4-pole brick wall the loss is
caught: ADV 6.52 dB at 4.3x, S00A 1.83 dB at 1.2x. Covered, not absent.

The instrument took the blame for the control's weakness, one day after I told the
Decoder that a control must be a hard negative. The harder rule: a control must
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's margin is
1.2x, which is thin, and the tool now prints a THIN warning below 2x. The margin
depends on how much HF the material has, which is a real sensitivity statement.

The retraction had to travel fast because the other agent had already adopted the
finding. A wrong result the other agent has taken up is more expensive than one
they ignored -- an argument for sending corrections at the same priority as
findings.

Also recorded: they tested 'an asserting step that asserts nothing' against their
own tools and both had it, including one 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; 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. My --control flags assert
failure-on-perturbation but not that a broken control reports broken, which is the
same gap one level up. Next thing to close here.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
2026-08-31 00:44:19 +00:00
Sylpheed port agent
9405d71aae port: a hard negative found a coverage hole and two defects hiding each other
The Decoder generalised my identity rule back at me -- a positive control that is
merely 'high' hides the difference between an exact instrument and a lossy one --
and it landed on the band check I shipped yesterday. Its positive control was 0.29
and 0.66 dB, and small is not zero. Source against itself read 7.656 dB, larger
than the number the check calls faithful: bands() applied the fold to one side
only, correct for source-versus-transcode and wrong for source-versus-itself. The
fold is per-side now and identity reads 0.000 dB exactly. The published 0.66 stands
unchanged; what changed is that the instrument is known unbiased rather than
assumed to be, and the scale's bottom is anchored.

Same rule applied to the port's headline numbers: the image RMSE metric reads
0.0000 for a capture against itself and after a PNG round-trip, so 13.21 is real
difference and not pipeline noise. verify-capture now asserts that before printing
any row and refuses if it is not exact.

Then their refutation attempt on 'band energies need no alignment'. It survives --
1 s of misalignment costs 0.16 dB -- but 10 s costs 1.00 dB, so the claim is
narrowed to robust, not free. Their real point: separation is material-dependent,
two unrelated music banks separate by 5.28 dB where an unrelated movie gave me
19-20. A movie is an easy negative, so I built the hard one and it failed. A 6 kHz
lowpass is caught on ADV at 4.27 dB, 2.8x, and NOT caught on S00A at 1.28 dB
against a 1.5 dB threshold, because S00A's own 6-16 kHz content sits at -67 dB. A
transcode that lost its whole top end would pass on S00A. Reported per asset as
COVERED / NOT COVERED rather than asserted, and tracked in BLOCKED.

Splitting the top band raised ADV from 2.58 to 4.27 dB. That is changing the
instrument's resolution so it can see a failure it must see, driven by a control
it failed -- the pass threshold is unchanged.

Repairing it exposed two defects that had been hiding each other. return 0 was
unconditional: making the difference path report-only swallowed the band verdict,
so check-all's transcode-bands must-pass step could not fail -- an asserting step
that asserts nothing, shipped by me one day after writing up the same shape in
someone else's work. And the disqualified difference path was still voting on the
exit code, so fixing the return turned the run red for the wrong reason. Neither
would have surfaced without a control the tool could fail.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
2026-08-31 00:37:59 +00:00
Sylpheed port agent
de25787d84 port: a capital letter hid a refuted claim; and band levels answer what alignment could not
Three findings, two of them defects in my own checkers.

Changing the KIND of quantity answered the P4 fidelity question on the first
attempt. Four attempts at sample-exact difference-signal alignment produced four
failures and no verdict -- well past the Decoder's rule that two failed attempts
at the same measurement are evidence the quantity is wrong, not the parsing. Band
energies need no alignment at all: 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 rather than being picked. Asserting in check-all with the known
negative on every run, not behind a flag. It also diagnoses the failure it
replaced: matching spectra mean same content at same level, so the difference
signal's failure is my alignment, now by evidence rather than assumption. The
difference path stays report-only. Band agreement cannot tell a faithful
transcode from one that kept the spectrum and mangled the waveform -- weaker than
P4 wanted, and what I can support.

check-claims held 'no loop-point field has been identified' in its register the
whole time and matched case-sensitively, so a capital N at the start of a sentence
hid a registered dead claim in BLOCKED.md -- the one document whose job is to say
what is still open. The correction had reached authored/audio.json and not the
blocked list, which is exactly the failure that file's own why warns about.
Matching is case-insensitive now and immediately surfaced five more unmarked
sites, including a whole DECISIONS section still describing the refuted state. All
six fixed: four tokened, two rewritten with the shipped values. Controlled with a
planted capitalised revival.

And --control caught its own harness: it perturbed only the first occurrence of an
anchor, and the Decoder's delivery heading now appears twice, so the check read the
untouched duplicate and passed a wrong contract. A perturbation that does not
reach every copy makes a check untestable silently. First time a control has
failed because of a change in someone else's document rather than my code.

Not accepted from the same message: the (A)-skips-a-movie row is NOT stale. It
reads (a) ANSWERED, cites Q9, and points at flow.json's skippable: true. Reported
back rather than quietly 'fixed' -- marking a live row stale is the error their
own message is about.

Every asserting check passes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
2026-08-30 23:56:45 +00:00
Sylpheed port agent
c7ebab1624 port: attempt the P4 fidelity question -- four traps reproduced, no verdict claimed
AUDIO-VERIFICATION.md section 1 calls transcode fidelity the question P4 actually
raised, needing neither an engine nor a device, and gives it in four lines of
shell. Nothing implemented it: verify-video-audio deliberately declines, saying a
difference RMS without alignment is meaningless. So the P4/P7 gate has rested on
level and non-silence and the fidelity claim has never been made.

tools/port/verify-transcode-fidelity now exists and is committed WITHOUT a
verdict, deliberately.

Four ways the measurement lies, each reproduced here rather than reasoned about.
Indexing with a negative lag wraps to the end of the array in Python, so the
difference was the transcode subtracted from an unrelated part of the source --
reported 7 dB LOUDER than the source, the same catastrophic-looking number the
doc warns of. My regex for the recorded -af truncated the fold to its FL half,
folding the source to a left-only signal: the doc names that trap, I reached it
through a parsing bug, and the matrix contains runs of spaces so it cannot be
tokenised on whitespace. -ss before -i is a container-level jump and on this WMA
Pro source returned 4.6 s for a 4.0 s request while the Ogg side returned 4.0 s,
so the windows covered different stretches of the movie, best correlation 0.172 --
this one is NOT in the doc and is indistinguishable from the alignment trap that
is. And the single-resolution search returned +2413 against a window of +-2400,
its own boundary rather than a peak, the same family as the Decoder's period
estimator returning its search floor.

Why no verdict: best alignment is corr 0.763 on S00A and 0.075 on ADV, and both
still report the difference louder than the source, which cannot be true of two
aligned signals at equal level. The remaining fault is on my side. A tool printing
'not faithful' in that state would put a false defect on the exporter. It now
distinguishes 'could not align' from 'not faithful', two failures I conflated
twice before separating them.

Filed for the human as a proposal, not an edit: section 1 should carry the
imprecise-seek trap as a fourth entry.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
2026-08-30 23:33:38 +00:00