Archilyzer · Source

archilyzer

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

commit 24bcfbca9d181e42f16422a98f8fcd0655f4eddf
parent c7dc4703b90027fd65f153eb1be0db333ef299c4
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Thu,  1 Oct 2026 01:19:42 -0400

plans: posts on the deck, as shipped — the slice table, as built, the gates, what was left, the rollout

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

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

diff --git a/plans/deck-posts.md b/plans/deck-posts.md @@ -60,3 +60,55 @@ for the report and nothing in a build reads them. | P1 | The posts region and its overlay: `chrome-posts.mjs` (card HTML, stack/slide choreography, `?still`, `?preview=1`), `composeChrome({region:"posts", window})` per `postWindows` entry with its own cache, the build passing `manifest.posts` to `writeChromeSchedule` and `validatePosts` at build start, the overlay of each window at its `from` in the crossfade concat, `applyChrome`, `--chrome-only` and `--chrome-preview`; verify-build; docs | `report-to-video/*` | | P2 | umtool: `updatePosts(dir, {[id]: {attachTo?, hide?}}, {token})`, the On-screen section lists posts with their automatic clip and an override + hide, the preview shows the posts region in its windows; e2e | `umtool/lib`, `umtool/app/api/report`, `umtool/components`, `umtool/e2e` | | P3 | First application: the ferret report's posts (report section + manifest) and a rebuild | outside the repo | + +## As shipped + +Branch `deck/posts` from `main` 2cf43a69; slices merged `--no-ff` after review. + +| Commit | What | +|---|---| +| de072804 | P0 — this file; `deck.posts` settings, `validatePosts`, `clipDay`, `attachPosts`, `postSchedule`, `postWindows`, `postsGeometry`; `deckSchedule` carries `posts` only when there are some | +| fd577d96 | P2 — umtool: `updatePosts` (attachTo/hide only), posts rows on `GET /api/report/onscreen` (auto and effective clip, timing), `PUT /api/report/posts`, the preview composing one posts window at a time and the files route serving them, the Posts table, the `deck.posts` settings group (saving settings no longer drops it), `onscreen-posts.spec.ts` | +| a598a386 | P1 — `chrome-posts.mjs` (the cards; the stack planned in the page from measured heights by the same `postsCues` the tests run), `composeChrome` region `posts` per window with its own cache, `snapWindow` in `deck.mjs`, the overlay of every window at its `from` in the crossfade concat, `applyChrome`, `--chrome-only` and `--chrome-preview`, verify-build window checks, README, quirks, one `[Unreleased]` bullet | +| f9625df7 | The posts preview e2e asserts real cards (the branch for a missing region is gone) | + +### As built, where it differs from the rulings above + +- **Windows are snapped outward to the frame grid** (`snapWindow`, in `deck.mjs`): frame i of a + window is cut frame f0 + i exactly. It lives in `deck.mjs`, not `chrome-posts.mjs`, because the + build importing the page module pulled the composition's asset URL into umtool's bundle and + failed its `next build` while collecting page data — a failure no unit test could see. +- **The stack is planned in the page,** after the fonts load: whether a card overflows the column + depends on measured heights. The planner's source is embedded in the page, so the page and the + tests run one implementation. +- **A post's date is drawn as the day in its own string** (UTC as archived). +- The overlay of a window uses `-itsoffset`, `-reinit_filter 0`, `format=rgba` and + `eof_action=pass`, never `shortest=1`; a framemd5 test shows every frame outside a window is + bit-identical to the deck-only output and the length never changes. + +### Gates on a598a386 (then f9625df7) + +- Workspace tsc clean (51 s); `test:scripts` 300 pass, 2 skipped (the queue-lock timing cases); + capped umtool `next build` with the corpus linked exit 0 (23 s), link removed. +- umtool e2e `onscreen-posts onscreen clip-bench build projects report-fetch-via-editor`: 93 passed + (4.1 min); after f9625df7 the strict `onscreen-posts.spec.ts` 6 passed (real composition, + `posts:ready`). +- Byte-identical: a manifest without `posts` builds as before (`--only c07` md5 + `6a92235fa12ca181bb81993129c9ee9d`, with and without `posts`); a deck without posts writes the + same `schedule.json` and the same overlay chain and `applyChrome` argv. +- First application (P1, scratch): 7 posts on c03 ×2, c06 ×3, c12, c17 at the predicted times; + 350.200 s; verify-build windows 136/195/76/76 frames; QR 7/7 on the crossfade cut and on a + transition-0 copy. + +### Found and left + +- The ferret posts never fill the column, so "oldest slide up and out" is proven by unit tests, + not by media. +- There is no live text patching for posts in the umtool preview: an override or hide recomposes. +- The true still covers the deck region only. +- Adding a post is an agent's edit to the manifest; umtool edits only `attachTo` and `hide`. + +### Rollout + +Umtool-only, like the deck: a umtool rebuild and restart. Nothing under `export/`, `homepage/`, +`common/` or editor code.