Archilyzer · Source

archilyzer

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

commit 6f2d48322fbb80c12c42cdd03040f6784a49d62c
parent bbcc1acd2bb342722b0e7c78913d9d1ba18d050d
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Thu, 24 Sep 2026 18:47:24 -0400

plans: release 4 prelude — bbcc1acd live on :3001

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

Diffstat:
Mplans/STATE.md | 2++
Mplans/one-core-phase-3.md | 76++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 78 insertions(+), 0 deletions(-)

diff --git a/plans/STATE.md b/plans/STATE.md @@ -3,6 +3,8 @@ The working memory for the local-AI derived-corpus work. Rewritten at the end of every session, before context is cleared. See [`README.md`](README.md) for the protocol. +**Live on :3001 (2026-09-24, 18:42):** `9ab10d77` (release 3), `BUILD_ID` `XsKaA_drqdAbTguxUGVsn`; smoke clean, boot and a form save rewrote nothing but the saved channel's key order; the one-sync md5 sweep is still owed (YouTube 429 cooldown refused it) — [rollout record](one-core-phase-3.md#rollout-2026-09-24--9ab10d77-live-on-3001). + **Last updated:** 2026-09-24 — **release 3: one-core Phase 3 slices 3a and 4b are on `main` @ `ef88ac4d`.** Rollout prelude first (`c0a90a37`, `1e27f7c3`: the backfill lane form's re-acquire figures derived, release 2 live on :3001 — rollout record: diff --git a/plans/one-core-phase-3.md b/plans/one-core-phase-3.md @@ -627,6 +627,82 @@ where a record and the code disagreed, the code won): (`ChannelWorkTable.tsx`) were corrected, and the three `SUB_FILE_RE` comments now say `sidecar()` enforces the rule — comment-only edits, line counts unchanged. +### Rollout 2026-09-24 — `9ab10d77` live on :3001 + +Release 3 (`ef88ac4d`, slices 3a and 4b) plus the three plans/comment commits after it, put in +front of the operator. Editor only — `git diff --stat 1e27f7c3..9ab10d77 -- umtool` prints +nothing, so umtool was not rebuilt or restarted (it keeps serving on :3050). + +**Offline round-trips first.** `phase3-settings-numbers.ts live=settings.json`: the written +block equals `jq -S . settings.json` (diff empty, 1,353 scalar paths each side, no key added; +the live file is 90,513 sorted bytes, up from release 3's 89,871 because the operator's +settings moved, not the code). `phase3-files-numbers.ts` over the LIVE `transcripts/` (not a +frozen tree): 6 `site.json` + 71 `config.json`, every `unknown keys: []`, no `WRITE THREW`, +and the 3,832-line output is **identical** to release 3's frozen-input run +(`s4b-numbers-merged.txt`) — none of those files has moved since the freeze. Write-back bytes: +all six `site.json` identical; **66 of 71** `config.json` identical, and the other five +(`cornbreadman`, `elfpire-eva`, `legal-mindset`, `omnivods-odysee`, `the-quartering-rumble`) +differ in key order only (`jq -S` equal on a scratch write) — the one-time schema-order +reorder slice 4b named, and the same md5s release 3 measured. + +**Build and one restart.** `pnpm --filter editor build` detached into the live `.next` while +the old server served: exit 0, ~42 s, `ƒ /api/view/[name]` in the route table; `BUILD_ID` +`vXFdg-SWIkdh7XpWLEqCQ` → **`XsKaA_drqdAbTguxUGVsn`**. Then TERM pnpm 255275 / next-server +255325 (cwd `editor/`), :3001 free, `setsid nohup pnpm run start -H 0.0.0.0` → next-server +525417, `/` 200 after 2 s, `/tags` 200. One restart for the release. + +**Smoke, started 8 s after boot.** The eight old/new pairs, with `heldMs, fraction, detail, +now, rev, builtAt, updatedAt, elapsedMs, etaMs, disk.freeBytes` stripped: `pulse` (109 B), +`workers` (1,113 B), `activeJobs` (3,225 B), `schedulerStatus` (37,343 B), `widgetSync` +(1,522 B), `widgetActionable` (1,513 B), `cleanable` (1,677 B) equal on the first pass. +`autoQueueStatus` differed on the first pass only because the world moved in the 71 s +between the two fetches: a YouTube 429 cooldown opened (`cooldowns: [] → [{youtube, fails +10}]`), the download runner took its next focus video (`CAi9jNrHetw → ncdPaDSqt-c`, +`quarteringvlogs` focus pending 2 → 3) — all live state. Re-fetched two minutes later it was +equal (508,672 B, 2 s). `/api/view/bogus` and `/api/view/invalidate-cache` 404; +`/api/widget/presets` 200; `/api/view/pulse?rev=` and `/api/pulse?rev=` both +`changed:false` (downloads were in flight — 2 auto-download, 2 auto-transcribe, 1 transcribe, +1 auto-digest, 1 auto-backfill, 1 refresh-report — and the rev still held); `cleanableBytes: +null`. Pages, all 200: `/` 2 s, `/channels` 0 s, `/channels?sort=size` 0 s, `/jobs` 2 s, +`/operations/diarization` **62 s**, `/settings`, `/storage`, `/tags`, `/channels/FearAnd`, +`/channels/FearAnd/videos/03Bgz7vkgbs` 0 s each. No `ZodError` in the start log (0). + +**The new surfaces, from the served HTML.** `/channels` is the rack: a `sticky top-0` thead, +71 sticky identity cells, a sortable **Tier** column ("sort by Tier"). The grouped view renders +only with a single site in scope (`page.tsx`: groups partition a site), so it was checked on +`/channels?site=jeralyzer` — 4 `data-testid="group-name"` section headers (`default`, +Archives, Guest Appearances, Extended Universe), each `scope="rowgroup"` and +`md:sticky md:top-[var(--thead-h)]` — and `?site=anilyzer` (12). `/jobs` is the one JobRow +table: 50 `<tr data-kind … data-job-id>` rows, 3 of them `data-live`. `/operations/diarization` +says **Holding**, "0 in flight" (the lane is held, so `InFlightList` renders nothing — it +returns null on no items), and "**693** videos still have media on disk and **74,413** would +need re-downloading — 107× the reachable work, against 276.24 GB free" (679 / 74,411 / 110× / +269.43 GB at the last rollout). + +**md5 sweeps** over `settings.json` + 6 `site.json` + 71 `config.json` +(`settings.json` `ed53f672…`). (a) Right after boot, and again 3 min later just before the form +save: identical to the pre-build baseline — boot rewrote nothing. (c) One Configure-form save +with no field changed on `legal-mindset`, through `pnpm ops channel-config` with `patch: {}` +(it lays the empty patch over `channelConfigToFormData(existing)` and calls +`updateChannelAction`, the server action the form posts): only +`channels/legal-mindset/config.json` changed, `87ee6758…` → `7dd35dac…` — exactly the md5 +the offline write-back predicted; `diff <(jq -S) <(jq -S)` empty, the raw diff moves `name` +after `platform` and `cookieMode` after `downloadFilter` (key order only). `settings.json` and +every `site.json` unchanged. (b) **One sync was not run.** `pnpm ops sync +{"slug":"FearAnd"}` was refused by the editor — "youtube is in a rate-limit cooldown (1634s +remaining)", the 429 cooldown the autoQueueStatus pair caught opening — so no sync job ran; +the md5 sweep after the refusal is unchanged. A non-YouTube channel was not substituted. +Syncs stamp through `patchChannelConfig`, so the expected effect of a sync is a +`lastSyncedAt` (and, on a full sweep, `lastFullSweepAt`) change on the synced channel's file +only; that remains unmeasured for this build. + +**Boot cost, as observed:** small. The API views and every page but one answered in 0–3 s from +8 s after boot; `/operations/diarization` took 62 s and the first `/api/auto-queue/status` +~70 s, both corpus-wide, both while the recency pass ran (`[recency] dating 8000 of 8886 +undated candidates`, twice — once per Next module graph). IO pressure at boot was +`full avg10 7.26` (58–66 % at the last rollout, when a remux was saturating the platter), which +is the difference from the 25 minutes release 2 paid. + ## Next release — slice 3b and Phase 4 (inventory kept from 2026-09-23) Slices 3a and 4b shipped in the release above (2026-09-24); the slice 3b bullets and the