Archilyzer · Source

archilyzer

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

commit 4eeeef86d12b58cf2e2acdbee6af033a2df362b2
parent 6d501f7683c3f272540505f907689e684b7e37cd
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Tue, 15 Sep 2026 15:00:42 -0400

plans: Phase 3 slice 1 sub-slices B and C shipped — every builder is a pure view

Records for b0a902e..eda6475 (jobs group) and 67c7f85..6d501f7 (console group),
with the merged-tip numbers. D (repoints, deletions, the full 533) is in flight.

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

Diffstat:
Mplans/one-core-phase-3.md | 57+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 57 insertions(+), 0 deletions(-)

diff --git a/plans/one-core-phase-3.md b/plans/one-core-phase-3.md @@ -370,3 +370,60 @@ Seen once and not caused here: `controller/relocateChannelMedia.test.ts` "out @ before the rename" failed on one run (`2 file(s) still differ (first: .d..t...... ./)`, an rsync directory-mtime race) and passed on the immediate re-run. A pre-existing flake; if it recurs it gets its own note in FACTS. + +### B — shipped 2026-09-14 + +Branch `one-core/phase-3-s1b` off `8c43231`, rebased onto `bb52dbd` and fast-forwarded: +`169874e` (workers) → `dfcb5f6` (activeJobs). Worktree and branch deleted. + +Gates (worktree #2): tsc clean after each commit; common **1239/1239** (+15: 5 workers, 10 +activeJobs); editor unit 59/59; editor `next build` clean; e2e subset of 13 specs (`jobs*` +×6, `workers`, `worker-remote`, `worker-unit`, `dashboard`, `dashboard-paths`, `widget`) +**68 passed, exit 0** in 4.3 min. Shells: `buildActiveJobs.ts` 461 → 120 (the 8 KB +`readLastLogLine` tail lives there by design; the shell proper is ~45), `buildWorkers.ts` +58 → 20. Views: `activeJobs.ts` 417 + 361 test, `workers.ts` 112 + 191 test. + +Divergences: + +1. **The injected readers are `channelStat` / `jobMeta`, not `readChannelStat` / + `readJobMeta`.** The plan named the fields with the `read` prefix AND put + `readChannelStat(` / `readJobMeta(` on the textual ban, which is context-blind, so + `i.readChannelStat(slug)` fails it. The fields were renamed; the guard was not loosened. +2. Two comments reworded for the same ban (`Date.now()` and `getAutoRunnerStatus` mentions). +3. `WorkersView.tsx` lives at `workers/components/WorkersView.tsx`; its now-unused + `WorkerRuntimeState` import was dropped. +4. `stuckJobIds` in the shell samples the disk gate via the same input assembler as the + payload — as before, since it delegated to `buildActiveJobsPayload()`. + +### C — shipped 2026-09-14 + +Branch `one-core/phase-3-s1c` off `8c43231`, rebased onto B's tip and fast-forwarded: +`c30496d` (schedulerStatus) → `4931909` (lanes + channelPriority + status) → `2ff7d2c` +(widgetSync + `widget/lib/syncInputs.ts`) → `5ddc158` (pulse). Worktree and branch deleted. + +Gates (worktree #3): tsc clean after each commit; common **1249/1249** on its own tip (+25: +schedulerStatus 2, autoQueueLanes 6, autoQueueStatus 5, widgetSync 5, pulse 7); editor unit +59/59; editor `next build` clean; e2e subset of 8 specs (`auto-queue`, `dashboard`, +`dashboard-paths`, `lane-runner`, `operation-settings`, `pulse`, `scheduler`, `widget`) +**82 passed, exit 0** in 2.9 min. `/api/pulse` rev bytes unchanged — the hashed parts, their +order and the `|` join are the same; `pulse.test.ts` asserts the hashed STRING through an +identity digest so a reorder names what moved. **`readAutoQueueState` is read once per +poll, not four times.** Shells: `operations/lanes.ts` 131 → 11 (types only, D deletes it), +`operations/status.ts` 179 → 72, `channelPriorityView.ts` 119 → 86, `scheduler/status.ts` +53 → 32, `api/widget/sync/route.ts` 331 → 22, `api/pulse/route.ts` 161 → 52. + +Divergences: + +1. **`api/widget/sync/route.ts` kept one `export type { WidgetSyncPayload }`** until D: its + only importers are the five shared client files, which are D's to repoint. +2. `operations/lanes.ts` re-exports three types, not one (`LaneWorker`, `LaneOperationView`, + `AutoQueueLanesPayload`) — a pure superset of the old surface. +3. `now` is a number on `schedulerStatus` and `widgetSync` (one-shot folds; the plan's shells + pass `Date.now()`) and a function on `autoQueueStatus` (the plan's `Pick<LiveInputs, … + "now">`). +4. `channelFocusName` stays in the editor with `readPriorityView`, its only caller. +5. `operations/status.ts` is 72 rather than ~40 because of the `byLane` helper that folds the + four runner statuses and pending counts into the `Record<AutoQueueKind, …>` the view takes. + +**Merged tip `5ddc158`**: tsc clean; common **1264/1264**; editor unit 59/59. The two +`"use client"` importers of a view (`components/pulse.ts`, `WorkersView.tsx`) are type-only.