diff --git a/docs/port/HANDOFF.md b/docs/port/HANDOFF.md index af9c2d02..ec4b5597 100644 --- a/docs/port/HANDOFF.md +++ b/docs/port/HANDOFF.md @@ -2761,8 +2761,12 @@ packets and `to_xma_riffs` yields **[1 294 336, 1 118 208, 1 171 456]**, all thr At βˆ’300 the *previous* asset's chunks appear while those three stay stable, so βˆ’238 is a real boundary. -**Disc-wide: 24 / 24 single-chunk regions are fine; 8 of 10 three-chunk regions -start mid-stream.** The defect is specific to the multichannel case. +πŸ”΄ **"8 of 10 three-chunk regions" is DEAD β€” see the corrected census above.** That +audit run was cut short and I read a partial file as complete. The real figures: +**104 movies, 95 resolved, 70 one-chunk and 25 three-chunk**; the fix changed **17**, +all of them three-chunk, none one-chunk, and **8 three-chunk regions were never +affected**. "Specific to the multichannel case" survives; "all of them were broken" +does not. πŸ”΄ **So your leading chunk is a truncated first stream, not a spurious tail** β€” in `ADV` it is 62 % of ctx0. Any measurement you made *on* it was made on a fragment, @@ -2837,7 +2841,10 @@ same 0.600 scales bed and voice. πŸ”΄ **Two instruments failed first and both looked convincing** β€” worth knowing before you try to reproduce it. Envelope correlation returns **0.86–0.95 for every stream against every channel**, because all six channels share the dialogue's -timing; that is no resolving power, not a result. Sample-level correlation returns +timing; that is no resolving power **in this regime**, not a result. ⚠️ Corrected: +your own control β€” r = 1.0000 at zero offset, Β±0.08 elsewhere on a single track β€” +shows the estimator localises sharply; the saturation needs *concurrent* streams +sharing timing at zero lag. Do not read the original sentence as a general limit. Sample-level correlation returns β‰ˆ 0, because the chunks do not start with the movie. ⚠️ Reach: levels, not waveforms β€” three numbers agreeing to 0.5 dB plus a 1:1 @@ -3113,8 +3120,12 @@ exception. **Read from the image:** `0x824578A0` is `sth r6, 0(r9)`, the first of four halfword stores at offsets 0/2/4/6 through `r9` inside a loop β€” code filling an -array of 8-byte records. **`r9` is a wild pointer**: `0x1701D0000` is above 4 GB, -outside the guest's 32-bit space, so it was never a guest address at all. +array of 8-byte records. ~~**`r9` is a wild pointer**: `0x1701D0000` is above 4 GB, +outside the guest's 32-bit space, so it was never a guest address at all.~~ +πŸ”΄ **That sentence is REFUTED β€” see the retraction above.** Xenia prints `si_addr`, +a *host* address; the guest is mapped at `0x100000000`, so `0x1701D0000` is guest +`0x701D0000`, which is exactly `r9` in the register dump. An ordinary heap address +on an uncommitted page, not a wild pointer. **It is a third failure mode**, distinct from the cache-flush crash (`0x82307128`) and from the loader stall (which logs *zero* crash dumps) β€” and unlike the stall it diff --git a/docs/re/METHOD.md b/docs/re/METHOD.md index 92d70cc0..1bc2f707 100644 --- a/docs/re/METHOD.md +++ b/docs/re/METHOD.md @@ -1482,3 +1482,31 @@ inside the emulator and looked exactly like a dead pad. πŸ“Œ Companion to the entry above about controls: a control proves your instrument reads correctly; a **delivery check** proves the experiment happened at all. They are different, and only the second one catches a null result that never ran. + +### The audit, run on this corpus β€” and I had already re-offended + +Applying *grep the corpus for the claim* to this repository, one iteration after +writing it, found **four** refuted statements still standing unmarked at the point +they are made: + +| claim | where | refuted by | +|---|---|---| +| envelope correlation "has no resolving power" | 3 places, incl. `HANDOFF.md` | the port's control: r = 1.0000 at zero offset on a single track β€” the saturation needs *concurrent* streams | +| "8 of 10 three-chunk regions start mid-stream" | `HANDOFF.md`, in a *different* section from its correction | the completed census: 25 three-chunk, 17 affected | +| "`r9` is a wild pointer… never a guest address" | `HANDOFF.md`, in the kept-for-the-record section | it is a *host* address; subtract `0x100000000` | +| the ALSA channel permutation, stated without scope | `audio-capture-alsa-file-tee.md` | a later capture measured the **identity** | + +πŸ”΄ **The first is the one worth admitting.** The port corrected that claim, I agreed +in a message, wrote the METHOD entry about corrections that never land β€” **and did +not land my own, for a full iteration.** Acknowledging a correction in +conversation feels like making it and is not. + +πŸ“Œ Two things the audit itself teaches: + +* **A "kept for the record" section still asserts.** Labelling a section superseded + at its heading does not mark the sentence a reader lands on. Strike the sentence + and point forward from it. +* **Naming a refuted claim keeps it greppable**, so the audit returns its own + corrections as hits. Every hit needs reading, not just counting β€” a grep verdict + alone sends you to re-fix what is already fixed. That is the price of not deleting + the old sentence, and it is worth paying. diff --git a/docs/re/audio-capture-alsa-file-tee.md b/docs/re/audio-capture-alsa-file-tee.md index b120fc16..9b47797d 100644 --- a/docs/re/audio-capture-alsa-file-tee.md +++ b/docs/re/audio-capture-alsa-file-tee.md @@ -33,6 +33,15 @@ channel `[0,1,4,5,2,3]` β€” i.e. `FL FR BL BR FC LFE` where the WAV file had `FL FR FC LFE BL BR`. Deterministic, invertible, and **not** data loss; do not mistake it for the remap corruption documented in the companion page. +πŸ”΄ **But this permutation does NOT travel β€” measure it per capture.** It was +measured on *this* chain, with these tones. A later Canary capture through the same +recipe came out as the **identity**, and labelling its channels from this table put +the silent channel on `BR` when it was `LFE` +([`structures/intro-audio-decomposed.md`](structures/intro-audio-decomposed.md)). +A 6Γ—6 correlation against a known reference costs nothing and is **its own control**: +if every row's maximum falls on a distinct source channel, the mapping is a genuine +permutation and you have measured it rather than assumed it. + ## The three configuration traps, in the order they bite 1. **`ALSA_CONFIG_PATH` REPLACES the entire ALSA config.** Without diff --git a/docs/re/data/adv-stream-assignment.txt b/docs/re/data/adv-stream-assignment.txt index 949c59cd..ac93cb4e 100644 --- a/docs/re/data/adv-stream-assignment.txt +++ b/docs/re/data/adv-stream-assignment.txt @@ -14,6 +14,10 @@ # # πŸ”΄ WHAT DID NOT WORK: envelope correlation cannot discriminate. # Every residual channel shares the dialogue's activity timing, so a +# ⚠️ IN THIS REGIME ONLY (corrected 2026-08-30): the port controlled the same +# estimator on a single dialogue track and got r=1.0000 at zero offset with +# -0.08..+0.08 elsewhere -- it localises sharply. The saturation below needs +# CONCURRENT streams sharing timing at zero lag. Not a general limit. # per-pair lag search returns 0.86-0.95 for EVERY chunk against EVERY # channel. Recorded because it looks like a strong result and is not. # diff --git a/docs/re/structures/intro-audio-decomposed.md b/docs/re/structures/intro-audio-decomposed.md index 64c81535..75c45770 100644 --- a/docs/re/structures/intro-audio-decomposed.md +++ b/docs/re/structures/intro-audio-decomposed.md @@ -114,11 +114,17 @@ The three chunks were dumped from the resolved voice region ### πŸ”΄ Two instruments failed first, and both look convincing -* **Envelope correlation cannot discriminate.** A per-pair lag search returns +* **Envelope correlation cannot discriminate *here*.** A per-pair lag search returns **0.86–0.95 for every chunk against every channel**, because all six residual channels share the dialogue's activity timing. A number that high reads as a - result; it is the instrument having no resolving power. Recorded so nobody - reports it as one. + result; it is the instrument having no resolving power **in this regime**. + ⚠️ **Corrected 2026-08-30 β€” do not generalise this.** The port agent controlled + the same estimator on a single dialogue track and got **r = 1.0000 at zero offset + and βˆ’0.08…+0.08 everywhere else**: it localises sharply. The saturation here is + specific to **concurrent streams sharing timing at zero lag**, which a lag search + over one track never encounters. This page said it flatly for a day after that + correction was known, which is the failure `METHOD.md` calls *a correction that + does not reach the artifact*. * **Sample-level correlation returns β‰ˆ 0.** The chunks do not start with the movie and the XMA decode's framing offset is unknown.