From e6f6bd86eab07954d8f06e740659969c3dfecc7f Mon Sep 17 00:00:00 2001 From: Adam Malczewski Date: Fri, 12 Jun 2026 15:21:03 +0900 Subject: docs: merge ORCHESTRATOR.md into AGENTS.md as a single-agent guide MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit One main agent does planning, contracts, and the feature writing — no summoning. Removes ORCHESTRATOR.md and the now-obsolete summoning artifacts (.dispatch/package-agent.md + .dispatch/rules/frontend-*.md, whose code rules are restated in AGENTS.md); keeps the contract mirrors + daisyui reference. Fixes dangling refs in README.md and backend-handoff.md. --- .dispatch/rules/frontend-inject-transport.md | 7 ------- .dispatch/rules/frontend-interpreter-generic.md | 8 -------- .dispatch/rules/frontend-no-ambient-state.md | 7 ------- .dispatch/rules/frontend-pure-core.md | 7 ------- .dispatch/rules/frontend-styling.md | 12 ------------ 5 files changed, 41 deletions(-) delete mode 100644 .dispatch/rules/frontend-inject-transport.md delete mode 100644 .dispatch/rules/frontend-interpreter-generic.md delete mode 100644 .dispatch/rules/frontend-no-ambient-state.md delete mode 100644 .dispatch/rules/frontend-pure-core.md delete mode 100644 .dispatch/rules/frontend-styling.md (limited to '.dispatch/rules') diff --git a/.dispatch/rules/frontend-inject-transport.md b/.dispatch/rules/frontend-inject-transport.md deleted file mode 100644 index fbe83d7..0000000 --- a/.dispatch/rules/frontend-inject-transport.md +++ /dev/null @@ -1,7 +0,0 @@ -# Rule: inject the transport; parsers are pure - -The WS/NDJSON framing + parsing is a PURE function (bytes/messages → typed events); -the socket/fetch is INJECTED. Test the parser with crafted chunk inputs (and -trace-replay-style fixtures), never a live connection. The op-protocol core is a -pure state machine: `reduce(intent, incoming) → { viewModel, outgoingCommands }`; -the carrier (WebSocket) is the injected shell. diff --git a/.dispatch/rules/frontend-interpreter-generic.md b/.dispatch/rules/frontend-interpreter-generic.md deleted file mode 100644 index 557f2d4..0000000 --- a/.dispatch/rules/frontend-interpreter-generic.md +++ /dev/null @@ -1,8 +0,0 @@ -# Rule: the surface interpreter is generic - -The surface interpreter switches on field KINDS (toggle/progress/selector/stat/ -button/custom), NEVER on a surface id. An `if (surface.id === "...")` imports a -feature's identity into the platform and breaks isolation (guardrail 1). An -unknown field `kind` or a `custom` `rendererId` with no registered renderer → -GRACEFUL SKIP, never a crash. Render from the spec; the backend owns what a -surface contains. diff --git a/.dispatch/rules/frontend-no-ambient-state.md b/.dispatch/rules/frontend-no-ambient-state.md deleted file mode 100644 index 663bf1a..0000000 --- a/.dispatch/rules/frontend-no-ambient-state.md +++ /dev/null @@ -1,7 +0,0 @@ -# Rule: no ambient state (frontend) - -State is owned per-unit and passed explicitly. NO module-global mutable store -reached from everywhere — that is the old FE's "tools leak across tabs" / -"model resets on tab switch" bug class. Svelte runes (`$state`) are a THIN -reactive wrapper over a pure reducer, never the home of logic. Subscriptions are -owned and disposed on unmount (no orphaned or duplicate subscriptions). diff --git a/.dispatch/rules/frontend-pure-core.md b/.dispatch/rules/frontend-pure-core.md deleted file mode 100644 index fa7bc2e..0000000 --- a/.dispatch/rules/frontend-pure-core.md +++ /dev/null @@ -1,7 +0,0 @@ -# Rule: pure core / injected shell (frontend) - -Decision logic — reducers, view-models, formatters, parsers — is pure -(input → output): NO DOM, NO `fetch`/WebSocket, NO Svelte import. Put it in a -`.ts` module that tests with zero mounting and zero mocks. Effects (socket, fetch, -IndexedDB, clock) are INJECTED at the edges (props or an adapter). This is for -testability, not purity dogma — stop where it would only add ceremony. diff --git a/.dispatch/rules/frontend-styling.md b/.dispatch/rules/frontend-styling.md deleted file mode 100644 index e123619..0000000 --- a/.dispatch/rules/frontend-styling.md +++ /dev/null @@ -1,12 +0,0 @@ -# Rule: styling is DaisyUI v5 + the dracula theme (UI units only) - -The global stylesheet already enables **DaisyUI v5** with the **dracula** theme -(`data-theme` on ``). Do NOT add or change theme config, re-import Tailwind/DaisyUI, -or hand-roll a design system — just apply DaisyUI / Tailwind utility classes in your -`.svelte` files (e.g. `select`, `textarea`, `btn btn-primary`, `tabs`, `chat chat-start` / -`chat-end` + `chat-bubble`). - -Keep components THIN: a `.svelte` file wires props/events to pure logic and applies classes -— it holds NO business logic (that stays in `logic/` / the reducer). Render plain semantic -HTML decorated with classes. biome lints `.ts`/`.js` only; `.svelte` correctness is -`svelte-check`'s job. -- cgit v1.2.3