Archilyzer · Source

archilyzer

Archilyzer
git clone https://archilyzer.pages.dev/source/archilyzer.git
Log | Files | Refs | README | LICENSE

commit 49d17ad4576eaf6d7c212be7abdfa930d36467ca
parent 2e37008f7bdf8e1d6f28cdce52dcf2f275f5ea56
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Thu,  1 Oct 2026 16:30:08 -0400

plans: the fix pass after the finale review — FIX-A, FIX-B, LOW-1 to LOW-7, the gates

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

Diffstat:
Mplans/deck-posts.md | 42++++++++++++++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+), 0 deletions(-)

diff --git a/plans/deck-posts.md b/plans/deck-posts.md @@ -358,3 +358,45 @@ Found and left: - `onscreen-posts.spec.ts`'s timings at 15 fps (above) — resolved: 3c70c6d3 on the main line made the posts and mute specs follow whole-frame holds and the build's mute fade, and the merge carries it. + +## Fix pass after the finale review + +The read-only review of 1aecf54f (everything after df062b37: B2, the A/V pin, B1, T1) said SHIP +AFTER FIXES. A capped umtool `next build` with the corpus linked passed at 1aecf54f: exit 0, 26 s. + +| Commit | What | +|---|---| +| 3465184d | FIX-A: an `endFade` longer than the last segment is the segment. `endFadeFrames` clamps the fade's frames to `lastFrame`, and the sound fades over the same frames, so the last frame is bg and the sound silent together (a 3 s segment under `endFade: 5` was 59 % of the way to bg) | +| 3d9d5afd | FIX-B: "Bench B1, as built" above; one `[Unreleased]` bullet | +| 083ee2d6 | LOW-5: `MUTE_FADE` lives in the dependency-free `report-to-video/mute.mjs` (`umtool-report-to-video/mute`), re-exported by `deck.mjs`; the bench's `playback.mjs` imports it from there | +| ece9c818 | LOW-6: `/api/report/audio` spawns the build's `FFMPEG_BIN`, and the request's abort signal kills the decode | +| 46a4d417 | LOW-1: a window save clamps a mute mark within the writer's 0.02 s of the moved edge onto it and stores it. Chosen over loosening the build: the build's check stays strict for every writer, and the clamp is what a patched mark already got | +| 0ffed4f2 | LOW-2: a `muteFrom` at or past its segment's length (inside the extent, past `cutEnd`) is noted as "will not be heard", not "muted from" | +| c56f1a74 | LOW-3: the teaser segment's key hashes `encodeArgs(render)` (crf, preset, audio bitrate, rate, channels) | +| 964585a1 | LOW-4: `TEASER_LIMITS.fit` — title 34, kicker 56, overline 64, second tier 66 characters per row, the tail and its gap counted on its row; `validateTeaser` refuses a longer row with a sentence | +| 07d1fa08 | LOW-7: the records | + +- **LOW-4, rendered.** A teaser whose title line is the 80 characters the limit allowed, still at + 6.5 s through `compose-chrome --region teaser --still`: shrunk to its 56 px floor, the line ran + past both edges of the frame (ink in columns 0–1919). Measured in the face at each role's floor + on ordinary headline words in capitals, a row holds: title 36–37, kicker 58–60, overline 65–67, + second tier 69–71. Each limit is a little under that. Stills at the limits, the tail included + where it sits, keep their ink within columns 114–1804. A row of only wide capitals (M, W) can + still spill at these counts, and the README says so. +- **LOW-5, the client bundle.** Client chunks (`umtool/.next/static`) at 1aecf54f: `crypto-browserify` + in 1 chunk (3 hits), `createHash` 1, 1,505,165 bytes in all. After: 0, 0, 1,043,591 bytes. + `chromeCacheKey` is 0 both times, because the minifier renames it. +- **LOW-7.** The changelog no longer says a cut without the deck, posts, `muteFrom` or `endFade` + "builds exactly as before" (the pin changed every crossfaded graph). The end fade falls on + whatever the last segment is, a closing teaser included. The README's "what it was" line is + corrected. The teaser's loudness is the segment's measured −19.7 LUFS in both. The 15 fps spec + item is marked resolved. `quirks.md` has the acrossfade-by-sound vs xfade-by-picture drift. + +Gates at 07d1fa08: + +- Workspace tsc clean (49 s). `test:scripts` 368 pass, 2 skipped (370). +- Capped umtool `next build` with the corpus linked: exit 0 (23 s), link removed. +- Byte-identical: `--only c07 --skip-fetch` on the unchanged ferret manifest copy without + `render.chrome` gives md5 `6a92235fa12ca181bb81993129c9ee9d`. +- umtool e2e `onscreen-posts onscreen clip-bench build projects report-fetch-via-editor`: 97 + passed (4.9 min).