Archilyzer · Source

archilyzer

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

commit 733baddfc9de7d3e9030126cdfba388f7b154e33
parent e19ea927bf8150b48254acb6efad74dd3d516b21
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Mon, 28 Sep 2026 12:37:18 -0400

plans: slice Q's review recorded — SHIP; L1 and L3 fixed, the rest left; the operator step corrected (I1)

"Slice Q, as shipped" gains a Review subsection (verdict SHIP; L1
6e21cf60, L3 e19ea927; L2, L4, L5, L6 left with one line each; I2 for
slice R), the two fix rows in the commit table, and the operator step
per I1: the link target holds only the rebuildable .cache/umtool index
and caches, the song data is under ~/reports/quartering-uh-song/data, so
a missed link costs an index rebuild and the nesting trap, not data.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Diffstat:
Mplans/release-12.md | 66++++++++++++++++++++++++++++++++++++++++++++++++++++++------------
1 file changed, 54 insertions(+), 12 deletions(-)

diff --git a/plans/release-12.md b/plans/release-12.md @@ -166,7 +166,10 @@ can be redone): | `0b28a7a4` | `common, docs:` `/run/media/<user>` / `operator`, `WORKTREES.md`, `fit-hooks.mjs` | | `29dc507c` | `changelog:` one `[Unreleased]` bullet; the released line's path example | | `1059befb` | `e2e:` deck.spec pins the relative `out` an accept records | -| _this_ | `plans:` this record; `source-mirror.md`'s "As shipped" note under Slice Q | +| `57ce980a` | `plans:` this record; `source-mirror.md`'s "As shipped" note under Slice Q | +| `75327c6f` | `changelog:` review L1 — the bullet leads with the full `mkdir -p … && ln -s …` command | +| `0416881f` | `umtool:` review L3 — `ThumbEntry` declares `bg` (relative to the song data dir; `dataFile()`, never `resolveInRoots`) | +| _this_ | `plans:` the review, and the operator step corrected (review I1) | **Gates** (from the worktree root; logs `$T/q-*.log`): - **The grep gate** `git grep -c -i 'user' HEAD -- . ':!plans/'` is **empty** (exit 1) at @@ -216,12 +219,14 @@ can be redone): slice's file. - **`REPO_ROOT` outside any checkout** falls back to the cwd's parent, as the plan says. Started from `/`, that is `/`. -- **`bg` is now relative to the song data dir,** and nothing reads it yet. +- **`bg` is now relative to the song data dir,** and nothing reads it yet. `ThumbEntry` declares + it and says how to resolve it (review L3, below). **Changelog.** -- **One `[Unreleased]` bullet** in `editor/CHANGELOG.md`: umtool's corpus from `TRANSCRIPTS_DIR` or - the checkout, the two new defaults (and the symlink to make before restarting umtool), relative - manifests, and the run logs gone. +- **One `[Unreleased]` bullet** in `editor/CHANGELOG.md`. It leads with the change and the command + a reader runs, `mkdir -p ~/.local/share/archilyzer && ln -s <where the data is> + ~/.local/share/archilyzer/song`, before restarting umtool (review L1). Then: the corpus from + `TRANSCRIPTS_DIR` or the checkout, the videos' default, relative manifests, and the run logs gone. - **The released `[0.9.0]` storage-locations entry now says `/run/media/<user>/<uuid>`.** A released entry is normally left as written. This one was changed because it is a path example, not a name a reader would search for. @@ -231,12 +236,49 @@ restart**: ``` mkdir -p ~/.local/share/archilyzer && ln -s /home/user/.claude/jobs/efbe67a7/tmp/song ~/.local/share/archilyzer/song ``` -- **Why before a restart:** a restarted :3050 with no link finds nothing at the new default. It may - also create `~/.local/share/archilyzer/song/.cache/umtool` as a real directory, and `ln -s` would - then put the link *inside* it (`song/song`). If that happened, remove the directory first. -- **Best at merge, not only before a restart.** The live :3050 is a `next start` build and is - unaffected until then, but it runs song scripts from disk. The song build chain passes `SONG_DIR` - explicitly (`lib/trim.ts:226`), and `accept-thumb` needs only `SONG_REPORTS`, whose default is - unchanged. A script run by hand with no `SONG_DIR` looks at the new default. +- **What the link keeps (review I1).** The link target is the live :3050's current default + `SONG_DATA`, and it holds **only the rebuildable `.cache/umtool`**: 7.9 MB of project index and + caches, "safe to delete at any time" (`lib/paths.mjs`). The song project's bulk data is under + `~/reports/quartering-uh-song/data`, not there. The link keeps :3050's `SONG_DATA`, + `SONG_SCRATCH`, `CACHE_DIR` and `INDEX_DIR` byte-identical to today's (the job dir's realpath is + its path). +- **What a missed link costs:** an index rebuild, and the nesting trap. It loses no data. A + restarted :3050 with no link finds nothing at the new default and may create + `~/.local/share/archilyzer/song/.cache/umtool` as a real directory. A later `ln -s` would then put + the link *inside* it (`song/song`). If that happened, remove the directory first. +- **Linking to `~/reports/quartering-uh-song/data` instead** is a separate choice for the operator. + It moves `CACHE_DIR` there and makes `SONG_SCRATCH` equal `SONG_REPORTS`. +- **Before the restart,** the live :3050 is a `next start` build and keeps its baked paths, but it + runs song scripts from disk: + - the song build chain passes `SONG_DIR` explicitly (`lib/trim.ts:226`); + - `accept-thumb` needs only `SONG_REPORTS`, whose default is unchanged; + - a script run by hand with no `SONG_DIR` looks at the new default. + +**Review** (verdict **SHIP**; a read-only Opus review of `90c7f776..57ce980a`, `$T/q-review.md`). +No High or Medium findings. The coordinator asked for two of the Lows to be fixed: +- **L1 — fixed, `75327c6f`.** The changelog's bare `ln -s` failed on a machine with no + `~/.local/share/archilyzer`. The bullet now leads with the full command, + `mkdir -p ~/.local/share/archilyzer && ln -s <where the data is> ~/.local/share/archilyzer/song`. + It names no machine path. +- **L3 — fixed, `0416881f`.** A future reader could resolve the relative `bg` through + `resolveInRoots`, which binds it to `SONG_REPORTS`. `ThumbEntry` now declares `bg?` with the + rule: relative to the song data dir, resolve with `dataFile()`, never `resolveInRoots`. This is + a type and comment only; no behaviour changed. +- **Left, on the coordinator's word:** + - **L2.** Run from a cwd outside any checkout, umtool's `REPO_ROOT` falls back to the cwd's parent + and reads a corpus that is not there. This is the plan's design, and every documented + invocation runs inside the checkout. A walk from `import.meta.url` as a second try is the + follow-up. + - **L4.** `cues.mjs` (`build-video`, `resolve-windows`, `check-availability`) still ignores + `TRANSCRIPTS_DIR`. The plan leaves `cues.mjs` alone, and this is not a regression. + - **L5.** With no song data, `SONG_SCRATCH` widens to `~/.local/share/archilyzer` in the read and + write roots. Nothing else lives there today, and it was noted only. + - **L6.** Cosmetic: a stale "job temp dir" comment in `lib/paths.mjs`, ragged comment wraps, and + `docs/folders.md`'s older roots list. Not worth a commit here. +- **I2, for slice R.** `29dc507c`'s commit message and older blobs carry `/run/media/user`, which + the built-in `${os.homedir()}` rule does not match. R's `source-scrub.txt` needs its own rule, or + its denylist refuses the publish (it fails closed). +- **After the fixes:** tsc is clean (41 s, all seven packages), and the grep gate is empty at the + new tip. Per the coordinator, e2e was not re-run for a type comment and a changelog line. ## Rollout