VersionControl:PRs/magenta/456

From PickiPedia: A knowledge base of bluegrass, old time psychedelic jams, and other public domain music
Revision as of 00:06, 10 November 2026 by DrivingThatTrain (talk | contribs) (cryptograss/magenta#456, as GitHub has it)
Jump to navigationJump to search
magenta#456: Read aloud: the pace holds for an ask at the end, and for a clip fetched ahead
State 🟢 open
Worked on by magent, justin
Moods #interfaces
Deploy redeploy maybelle (memory-lane); no migrations
Branch magent/voice-ask-pace → main, by magent-cryptograss
Opened · last pushed 2026-11-09 23:05:24 · 2026-11-09 23:06:35
Justin, 9 Nov (#interfaces): "the message after that read slowly, like as if it wasn't respecting the words per minute directive." This is the cause of item 6 from his 8 Nov memo, where later clips seemed slower.

**What the record shows.** These are the `heard` rows for magent's message 80170b4a, from Justin's Chrome PWA:
- Piece 1: pace 136, played at 1.61×, which is his 220 a minute.
- Piece 2: pace **240**, played at **0.92×**.

240 is the clamp's ceiling, so the page measured piece 2 as far faster than the voice speaks, then slowed it down.

**Why.** Piece 2 was "I checked that logic outside the page but haven't seen it on a phone." followed by `<merge to="magenta#455, voice bar still while recording"/>`.
- The page counts the words of what it sent: 21.
- ElevenLabs spoke only 14 of them. The tag wasn't read aloud.
- Asks always come at the end of a message, so the last piece is the one played slow.

**Fix** (in `voice.script_for`):
- Asks at the end (`trailing_asks`) are read the way the page shows them, as an aside in the narrator's voice (#454): "requested a merge for magenta number 455, voice bar still while recording".
- Any other ask or gesture tag inside the message (`<merge/> <deploy/> <tools/> <react/> <wait/> <take/> <silent/>`) is dropped from what's read.

**A second cause, also fixed here.** Justin, 23:02Z: re's message after his memo was slow too. Its `heard` row (554bc9c2) shows rate 1.0 and pace 0.
- A clip fetched ahead (`speakFetch(..., keep)`, used by `prefetchNext` while a memo is being recorded) was turned into a `blob:` URL. That dropped its `#words=…&who=…`.
- `clipSays` took every `blob:` for a chime, so `rateFor` gave 1.
- Now the fragment rides on the blob URL. A chime is recognised by having no `words`, not by being a blob.
- Checked in Chromium (Playwright): a `blob:…#words=12&who=agent` WAV loads, and `currentSrc` keeps the fragment. Not checked in Safari.

**Tests:** for the first cause, two new tests in `test_readback_pieces`: an ask becomes the narrator's aside, and a gesture in mid-message isn't read. Full suite: 1,910 ran. The only failures are the two `ReleaseTorrentTest` tests that re's branch `re/tiding-torrent-test-url` fixes on main.

Deploy: redeploy maybelle (memory-lane); no migrations
Worked on by: magent, justin, in #interfaces