Archilyzer · Source

archilyzer

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

commit 428a54e67ce4962550119321abbfbc5a437becce
parent 15300ae7349e3d6a313ced7d35c4a2b5f12aab75
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Wed, 23 Sep 2026 20:20:19 -0400

plans: one-core Phase 3 slices 2 and 4a marked shipped

Status line with merge shas; the rewrites-not-redirects and no-batch-route
decisions under slice 2; zod adopted and saveSettings(patch) in place of
saveSettingsBlock under slice 4; Phase 4's `settings example` already
exists as common/bin/settings-example.ts.

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

Diffstat:
Mplans/one-core.md | 19++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/plans/one-core.md b/plans/one-core.md @@ -311,6 +311,11 @@ https://jeralyzer.pages.dev/corpus.json` before and after, byte-identical output ### Phase 3 — Views in the core, editor as shell (4 slices) +> **Status 2026-09-23.** Slice 1 shipped 2026-09-15 (`838da4a`). **Slice 2 shipped 2026-09-23, +> merged as `8d6e84f6`; slice 4a (settings.json only) shipped 2026-09-23, merged as `ae2fa5a9`.** +> Slice 3 and slice 4b (`site.json`, channel `config.json`, sidecars) are the next release. +> Records, gates and the next release's inventory: [`one-core-phase-3.md`](one-core-phase-3.md). + 1. **`common/views/`**: move `buildActiveJobs`, `buildWorkers`, `lanes.ts`, `channelFlow.ts` + `stageStatus.ts`, the widget sync builder and `pulse` out of `editor/app/**` into pure functions over (snapshot, registry, settings, pool). Each keeps @@ -318,6 +323,9 @@ https://jeralyzer.pages.dev/corpus.json` before and after, byte-identical output 2. **One polling route.** `/api/view/[name]` serves any view; the seven thin routes become rewrites to it (retired routes redirect). Worker protocol (`/api/worker/*`), the external cron tick, file serving and the four `/api/test/*` routes stay. + *As shipped (2026-09-23): EIGHT routes, not seven, became `rewrites()` to the one route — + API paths are rewritten, never redirected, so method, body and `?rev=` pass through. No + `names=a,b` batch route: cadences stay per call site, and Phase 6's SSE is the batch.* 3. **One drawing per noun.** Channel row: `channels/components/ChannelsTable.tsx` with a column set replaces the dashboard's and `ChannelWorkTable`. Job in flight: the `JobRowView` renderer from slice 8c with a `variant` replaces `RunningJobsList`, @@ -338,6 +346,14 @@ https://jeralyzer.pages.dev/corpus.json` before and after, byte-identical output `config.json`'s mutable sync state (`lastSyncedAt`, `lastFullSweepAt`, …) is declared as such in the schema; splitting the file is *not* in scope (disk is frozen). `settings.json.example` and the docs' key table are generated from the schema. + *As shipped for `settings.json` (slice 4a, 2026-09-23): **zod adopted** — the veto is spent, + one dependency in `common/`, kept out of every client bundle. The writer is + `saveSettings(patch: Partial<SiteSettings>)` (one-level-deep merge, + `editor/app/settings/saveSettings.ts`), NOT `saveSettingsBlock(block, patch)`: the + channel-priority action writes `channelPriority` and the four `autoQueue` roots in one + write, which a one-block signature would split. It is a helper the actions call, not a + server action. `SETTINGS.md` + `settings.json.example` are generated. `site.json`, channel + `config.json` and the sidecars are slice 4b.* Deleted: six payload builders from the app, seven API routes, two channel tables, three job renderers, eight stage status derivations, ~1,400 lines of hand sanitizers. @@ -351,7 +367,8 @@ job renderers, eight stage status derivations, ~1,400 lines of hand sanitizers. `--nodata`; `build:hub` gets a CLI and an editor entry (it has neither). 2. **`common/bin/archilyzer.ts`**: `index`, `compose site|hub|homepage`, `build site <id>|all`, `deploy site <id>`, `sync tick`, `run <operation> <channel> [ids…]`, `mcp`, `settings - example`, `doctor` (the env/binary/port checks now scattered across `paths.ts`, umtool's + example` (*already exists as `common/bin/settings-example.ts`, with `--check`, since Phase 3 + slice 4a — becomes a one-line subcommand*), `doctor` (the env/binary/port checks now scattered across `paths.ts`, umtool's doctor and `worktree.mjs`). Existing bins become one-line subcommands and are removed from `package.json` scripts once nothing references them. Port defaults exist once (`scripts/worktree.mjs` today says it "mirrors" three other places).