Archilyzer · Source

archilyzer

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

commit 538f6528a248814c093ba921b26684a7aaff8167
parent b0b8e6b14be0077b53da53df2ee7156c2bc467a8
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Thu, 17 Sep 2026 14:57:12 -0400

nav: a place the machine keeps bytes is a noun, not a fold of Cleanup

Twelve entries, and the twelfth is a recorded exception rather than a slip.
The IA rule is "fold, do not add" — umtool's rule, quoted in both consoles —
and nav.test.ts is where it is either true or not. So the number moves only
when a plan says why, and this one says: a storage location is a PLACE the
machine keeps bytes, like a worker or a job, and not a fold of Cleanup, which
is an operation over bytes that already have a place.

The sentence is in three files that would otherwise drift apart: nav.ts's
header, the test's comment, and the IA doc's end-state list.

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

Diffstat:
Meditor/app/lib/nav.test.ts | 12+++++++++---
Meditor/app/lib/nav.ts | 8++++++++
Mplans/editor-operations-ia.md | 9++++++++-
3 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/editor/app/lib/nav.test.ts b/editor/app/lib/nav.test.ts @@ -16,9 +16,15 @@ test("four groups, one noun each", () => { ); }); -test("eleven entries, every href distinct", () => { - assert.equal(NAV_LINKS.length, 11); - assert.equal(new Set(NAV_LINKS.map((l) => l.href)).size, 11); +// TWELVE, and the twelfth is a recorded exception rather than a slip. The IA +// rule is "fold, do not add" and this test is where it is either true or not — +// so the number moves only when a plan says why. /storage is a Machine NOUN (a +// place the machine keeps bytes), not a fold of Cleanup (an operation over +// bytes that already have a place); see nav.ts's header and +// plans/editor-operations-ia.md. +test("twelve entries, every href distinct", () => { + assert.equal(NAV_LINKS.length, 12); + assert.equal(new Set(NAV_LINKS.map((l) => l.href)).size, 12); }); test("the Sites group is one entry", () => { diff --git a/editor/app/lib/nav.ts b/editor/app/lib/nav.ts @@ -3,6 +3,7 @@ import { ClipboardCheck, Cpu, Globe, + HardDrive, LayoutDashboard, ListChecks, ListPlus, @@ -35,6 +36,12 @@ import { // So: FOLD, DO NOT ADD, and every retired route REDIRECTS rather than 404s // (see editor/next.config.ts). The entries marked "interim" were folded by // later slices; the end state is eleven, and slice 5 reached it (2026-08-30). +// +// ONE RECORDED EXCEPTION, at twelve: /storage. A storage location is a place +// the machine keeps bytes — a Machine NOUN, like a worker or a job — and not a +// fold of Cleanup, which is an operation over bytes that already have a place. +// Agreed with the operator 2026-09-17; plans/editor-operations-ia.md carries +// the same sentence. export type NavBadgeKey = "jobs" | "changelog" | "cleanable"; @@ -89,6 +96,7 @@ export const NAV_GROUPS: NavGroup[] = [ { href: "/jobs", label: "Jobs", icon: ListChecks, badgeKey: "jobs", keywords: "queue tasks active running live monitor stuck" }, { href: "/workers", label: "Workers", icon: Cpu, keywords: "transcription whisper gpu" }, { href: "/cleanup", label: "Cleanup", icon: Trash2, badgeKey: "cleanable", keywords: "clean reclaim disk space prune audio" }, + { href: "/storage", label: "Storage", icon: HardDrive, keywords: "drive disk platter mount volume media location relocate cold" }, { href: "/saved-videos", label: "Saved videos", icon: Bookmark, keywords: "backup" }, { href: "/settings", label: "Settings", icon: Settings, keywords: "config preferences" }, { href: "/changelog", label: "Changelog", icon: ScrollText, badgeKey: "changelog", keywords: "release notes" }, diff --git a/plans/editor-operations-ia.md b/plans/editor-operations-ia.md @@ -70,7 +70,14 @@ Four groups, eleven top-level entries, down from three groups and nineteen: - **Corpus** — Dashboard, Channels, Review - **Operations** — Operations *(Schedule folded in, 2026-08-29: it is `/operations/sync`)* - **Sites** — Sites *(Charts, Search aliases, Deploy, Build and Homepage folded in, 2026-08-30)* -- **Machine** — Jobs *(Active and Queue folded in, 2026-08-30)*, Workers, Cleanup, Saved videos, Settings, Changelog +- **Machine** — Jobs *(Active and Queue folded in, 2026-08-30)*, Workers, Cleanup, Storage + *(added 2026-09-17 — see below)*, Saved videos, Settings, Changelog + +**One recorded exception, at twelve: `/storage`** (plans/storage-locations.md, agreed with +the operator 2026-09-17). A storage location is a *place the machine keeps bytes* — a Machine +noun like a worker or a job — and not a fold of Cleanup, which is an *operation over* bytes +that already have a place. `editor/app/lib/nav.ts`'s header carries the same sentence, and +`nav.test.ts` asserts twelve so the number can only move when a plan says why. **The rule, and it is umtool's rule, not a new one.** `umtool/components/AppNav.tsx` states it after the same disease: "SEVEN visible entries, and the cap is still NINE … The next tool