summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-27 01:08:32 +0900
committerAdam Malczewski <[email protected]>2026-06-27 01:08:32 +0900
commit63c7e64532e85e0bbdd6d9ac6825d8f86be98e7a (patch)
treec9896deb21cd5a76f196492a191d56f8656c8109
parente59dc11f63b1df51142259bb2c406af8c9c8c2bb (diff)
downloaddispatch-63c7e64532e85e0bbdd6d9ac6825d8f86be98e7a.tar.gz
dispatch-63c7e64532e85e0bbdd6d9ac6825d8f86be98e7a.zip
chore: update path references for directory rename (dispatch-backend → backend, dispatch-web → frontend)
-rw-r--r--AGENTS.md2
-rw-r--r--HANDOFF.md4
-rw-r--r--ORCHESTRATOR.md14
-rw-r--r--README.md10
-rw-r--r--backend-to-fe-handoff-2.md2
-rw-r--r--backend-to-fe-handoff.md2
-rw-r--r--frontend-cache-rate-handoff.md2
-rw-r--r--frontend-cache-warming-handoff.md2
-rw-r--r--frontend-cache-warming-lifecycle-handoff.md2
-rw-r--r--frontend-compaction-handoff.md2
-rw-r--r--frontend-context-size-handoff.md2
-rw-r--r--frontend-conversation-lifecycle-handoff.md2
-rw-r--r--frontend-conversation-list-handoff.md2
-rw-r--r--frontend-conversation-open-handoff.md2
-rw-r--r--frontend-cr3-user-message-handoff.md2
-rw-r--r--frontend-cwd-resolution-handoff.md2
-rw-r--r--frontend-history-windowing-handoff.md2
-rw-r--r--frontend-lsp-cwd-handoff.md2
-rw-r--r--frontend-lsp-cwd-workspace-handoff.md2
-rw-r--r--frontend-message-queue-handoff.md2
-rw-r--r--frontend-metrics-handoff.md4
-rw-r--r--frontend-metrics-pass2-handoff.md2
-rw-r--r--frontend-reasoning-effort-handoff.md2
-rw-r--r--frontend-stop-generation-handoff.md2
-rw-r--r--frontend-todo-handoff.md2
-rw-r--r--frontend-turn-continuity-handoff.md2
-rw-r--r--frontend-workspaces-handoff.md2
-rw-r--r--notes/frontend-design.md4
-rw-r--r--notes/turn-continuity-design.md2
-rw-r--r--tasks.md22
30 files changed, 53 insertions, 53 deletions
diff --git a/AGENTS.md b/AGENTS.md
index f173a7e..d815e84 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -7,7 +7,7 @@
## What this project is
A **minimal kernel + extensions** agent runtime. The kernel runs ONE agent turn
and hosts extensions. Every feature is an extension. Tiers: **kernel → core →
-standard**. The web frontend is a SEPARATE repo (`../dispatch-web`), built to
+standard**. The web frontend is a SEPARATE repo (`../frontend`), built to
the same methodology and consuming the backend's typed contracts (see
`notes/frontend-design.md`).
diff --git a/HANDOFF.md b/HANDOFF.md
index 3b97767..29f1689 100644
--- a/HANDOFF.md
+++ b/HANDOFF.md
@@ -13,11 +13,11 @@ cache warming, turn continuity (detached turns + multi-client), skills, message
queue + steering, metrics (live + persisted), per-conversation model/cwd/reasoning
persistence, and broken-chat self-repair are all DONE and live-verified.
**`tsc -b` EXIT 0 · biome clean · 1468 vitest green.** The web frontend is a
-separate repo (`../dispatch-web`); contract changes are couriered via the user.
+separate repo (`../frontend`); contract changes are couriered via the user.
## How to boot & smoke-test
```bash
-cd /home/tradam/projects/dispatch/dispatch-backend
+cd /home/tradam/projects/dispat../backend
# .env auto-loads DISPATCH_API_KEY + BACKEND_PORT (24203).
# Dev stack (live-reload): bin/up (ports 24203/24205/24204)
# Stable second stack: ../bin/up2 (ports 25203/25205/25204, isolated data)
diff --git a/ORCHESTRATOR.md b/ORCHESTRATOR.md
index a812294..96dd00f 100644
--- a/ORCHESTRATOR.md
+++ b/ORCHESTRATOR.md
@@ -93,9 +93,9 @@ per the §3 map; the `--file` ORDER is the assembly order: constitution → brie
omit `--file .dispatch/extension-agent.md` for non-extension units):
```bash
-cd /home/tradam/projects/dispatch/dispatch-backend
+cd /home/tradam/projects/dispatch/backend
dispatch umans/umans-glm-5.2 \
- --cwd /home/tradam/projects/dispatch/dispatch-backend \
+ --cwd /home/tradam/projects/dispatch/backend \
--text "You are the single owner-agent for packages/<unit>/. The attached files are your constitution, brief, rules, and task — follow them exactly in the order given. Then IMPLEMENT the task now: edit ONLY files under packages/<unit>/, run tsc -b / vitest / biome for your package, and write your report to reports/<unit>.md. Reply with ONLY a one-line status + the path reports/<unit>.md — no diffs, no logs." \
--file AGENTS.md \
--file .dispatch/package-agent.md \
@@ -197,7 +197,7 @@ Keep it scoped (P6): state only the project-specific, non-inferable task — the
in its OWN code — NO shared redaction helper (design rationale:
`notes/observability-design.md` §9). Include this on EVERY extension summon (an
extension that never logs is a coverage gap, not an exemption).
-- **Frontend units** are summoned from the SEPARATE `../dispatch-web` repo using ITS
+- **Frontend units** are summoned from the SEPARATE `../frontend` repo using ITS
OWN harness (`package-agent.md` + `frontend-*.md` rules) + ITS OWN scoping map — NOT
these backend rules. See that repo's `ORCHESTRATOR.md`.
@@ -230,7 +230,7 @@ fix it. You diagnose from symptoms; the agent reads the code.
After every agent, independently:
```bash
-cd /home/tradam/projects/dispatch/dispatch-backend
+cd /home/tradam/projects/dispatch/backend
bun run typecheck # tsc -b --pretty — must be clean (EXIT 0)
bun run test # vitest — note the pass count
bun run check # biome — must be clean
@@ -347,7 +347,7 @@ live runs (§8 bracket trick), since a leak silently poisons the next run's coun
## 7. Repo geography
```
-/home/tradam/projects/dispatch/dispatch-backend # THE worktree (branch dev)
+/home/tradam/projects/dispatch/backend # THE worktree (branch dev)
AGENTS.md the subagent constitution (the summon points each agent at it; you enforce it)
ORCHESTRATOR.md the orchestrator's operating manual (this file)
@@ -392,7 +392,7 @@ The genesis commit deleted all prior source; we rebuilt from scratch. The OLD
project lives at `/home/tradam/projects/dispatch/dispatch-source` (reference only
— do not edit).
-The **web frontend is a SEPARATE repo** at `/home/tradam/projects/dispatch/dispatch-web`
+The **web frontend is a SEPARATE repo** at `/home/tradam/projects/dispatch/frontend`
(own git, own harness — its own `AGENTS.md`/`ORCHESTRATOR.md`/`GLOSSARY.md`/`.dispatch/`).
It consumes `packages/ui-contract` + the wire types as a pinned `file:` dependency.
`lsp references` does NOT span the two repos, so cross-repo contract changes are
@@ -417,7 +417,7 @@ provider silently fails to register: "No providers registered"). `.env` also pin
`BACKEND_PORT`, which beats `PORT` — so set `BACKEND_PORT` explicitly, and ISOLATE the data
paths or you'll share SQLite files + spawn a duplicate collector against the dev stack:
```bash
-cd /home/tradam/projects/dispatch/dispatch-backend
+cd /home/tradam/projects/dispatch/backend
BACKEND_PORT=4567 SURFACE_WS_PORT=4569 \
DISPATCH_DB=/tmp/opencode/probe/dispatch.db \
DISPATCH_TRACE_DB=/tmp/opencode/probe/traces.db \
diff --git a/README.md b/README.md
index d66e210..e3ec20a 100644
--- a/README.md
+++ b/README.md
@@ -204,9 +204,9 @@ bun run dispatch -- send <id> --text "follow up" --queue --open
---
-## Web frontend (dispatch-web)
+## Web frontend (frontend)
-The web UI is a **separate repo** ([github.com/realtradam/dispatch-web](https://github.com/realtradam/dispatch-web),
+The web UI is a **separate repo** ([github.com/realtrad../frontend](https://github.com/realtrad../frontend),
Svelte 5 + Vite + DaisyUI), built to the same methodology and consuming the backend's typed contracts
(`@dispatch/wire`, `@dispatch/transport-contract`, `@dispatch/ui-contract`). The browser chat MVP
is in progress — it streams turns over the chat WebSocket, renders the surface system (loaded
@@ -217,7 +217,7 @@ workspaces, LSP status, and per-conversation settings.
```sh
git clone [email protected]:realtradam/dispatch.git
-git clone [email protected]:realtradam/dispatch-web.git
+git clone [email protected]:realtrad../frontend.git
bin/up # backend (bun --watch :24203 + WS :24205) + frontend (vite HMR :24204)
```
@@ -225,7 +225,7 @@ bin/up # backend (bun --watch :24203 + WS :24205) + frontend (vite HMR :242
alongside `bin/up` without interference. Both Ctrl-C cleanly (including the collector child).
Then open **http://localhost:24204** (or your Tailscale hostname). See the
-[dispatch-web README](https://github.com/realtradam/dispatch-web#readme) for full setup.
+[dispatch-web README](https://github.com/realtrad../frontend#readme) for full setup.
---
@@ -320,7 +320,7 @@ Clone these repos as siblings:
```
dispatch/ workspace root (shared bin/ scripts)
├── dispatch/ this repo — backend (branch dev)
-├── dispatch-web/ [github.com/realtradam/dispatch-web](https://github.com/realtradam/dispatch-web) — web frontend
+├── frontend/ [github.com/realtrad../frontend](https://github.com/realtrad../frontend) — web frontend
└── bin/ shared dev scripts (up, up2)
```
diff --git a/backend-to-fe-handoff-2.md b/backend-to-fe-handoff-2.md
index 942381b..51a3e34 100644
--- a/backend-to-fe-handoff-2.md
+++ b/backend-to-fe-handoff-2.md
@@ -1,6 +1,6 @@
# Backend → FE handoff — context window + percentage-based compact
-> Courier to `../dispatch-web`. Response to the context-window ask in
+> Courier to `../frontend`. Response to the context-window ask in
> `backend-handoff.md` §3 + compacting rework.
## What shipped
diff --git a/backend-to-fe-handoff.md b/backend-to-fe-handoff.md
index dcaaa51..a6e726b 100644
--- a/backend-to-fe-handoff.md
+++ b/backend-to-fe-handoff.md
@@ -1,6 +1,6 @@
# Backend → FE handoff — CR-6 resolved + full endpoint list
-> Response to `backend-handoff.md` §2 CR-6. Courier back to `../dispatch-web`.
+> Response to `backend-handoff.md` §2 CR-6. Courier back to `../frontend`.
## CR-6: Assign seq during generation — RESOLVED
diff --git a/frontend-cache-rate-handoff.md b/frontend-cache-rate-handoff.md
index 89ab8e4..b64a612 100644
--- a/frontend-cache-rate-handoff.md
+++ b/frontend-cache-rate-handoff.md
@@ -1,6 +1,6 @@
# FE handoff — cache hit/miss + percentage (calculation guide)
-> **Courier doc** (backend → `../dispatch-web`, via the user). Per ORCHESTRATOR §7
+> **Courier doc** (backend → `../frontend`, via the user). Per ORCHESTRATOR §7
> the backend does not write the FE repo. This describes ONLY how to compute cache
> hit/miss + percentages from data the backend ALREADY exposes — **no UI design here**
> (the look is specified separately) and **no backend change is required**.
diff --git a/frontend-cache-warming-handoff.md b/frontend-cache-warming-handoff.md
index 67ff374..cf1f402 100644
--- a/frontend-cache-warming-handoff.md
+++ b/frontend-cache-warming-handoff.md
@@ -1,6 +1,6 @@
# FE handoff — cache warming: cache-rate fix + "expected cache" metric
-> **Courier doc** (backend → `../dispatch-web`, via the user). Per ORCHESTRATOR §7 the backend does
+> **Courier doc** (backend → `../frontend`, via the user). Per ORCHESTRATOR §7 the backend does
> NOT write the FE repo. `lsp references` does not span the two repos.
> Backend commits: `7ffb6b2` (arch-rewrite), `0e9d118` (`../claude/provider-anthropic`).
diff --git a/frontend-cache-warming-lifecycle-handoff.md b/frontend-cache-warming-lifecycle-handoff.md
index 0722e25..49bee0a 100644
--- a/frontend-cache-warming-lifecycle-handoff.md
+++ b/frontend-cache-warming-lifecycle-handoff.md
@@ -1,6 +1,6 @@
# FE handoff — CR-4 cache-warming lifecycle SHIPPED (+ CR-1 table, CR-2 scope)
-> **Courier doc** (backend → `../dispatch-web`, via the user). Response to your
+> **Courier doc** (backend → `../frontend`, via the user). Response to your
> `backend-handoff-cache-warming.md` (CR-4) and the open asks CR-1 / CR-2 in
> `backend-handoff.md`. Everything below is live on `bin/up` and verified with a
> headless probe (same flow as your `scripts/probe-cache-warming.ts` — re-run it to
diff --git a/frontend-compaction-handoff.md b/frontend-compaction-handoff.md
index 572b25f..195bc1e 100644
--- a/frontend-compaction-handoff.md
+++ b/frontend-compaction-handoff.md
@@ -1,6 +1,6 @@
# FE handoff — conversation compacting
-Courier this to `../dispatch-web`. All changes are ADDITIVE.
+Courier this to `../frontend`. All changes are ADDITIVE.
## What shipped (backend)
diff --git a/frontend-context-size-handoff.md b/frontend-context-size-handoff.md
index ed4cacd..a774a0c 100644
--- a/frontend-context-size-handoff.md
+++ b/frontend-context-size-handoff.md
@@ -1,6 +1,6 @@
# FE handoff — context size (current context-window usage)
-Courier this to `../dispatch-web` (cross-repo contract change; `lsp references` does not
+Courier this to `../frontend` (cross-repo contract change; `lsp references` does not
span repos — ORCHESTRATOR §7). Backend commit adds an optional `contextSize` field; no
breaking change.
diff --git a/frontend-conversation-lifecycle-handoff.md b/frontend-conversation-lifecycle-handoff.md
index ec877e1..ca6de57 100644
--- a/frontend-conversation-lifecycle-handoff.md
+++ b/frontend-conversation-lifecycle-handoff.md
@@ -1,6 +1,6 @@
# FE handoff — conversation lifecycle (tab persistence across devices)
-Courier this to `../dispatch-web`. All changes are ADDITIVE — nothing existing breaks.
+Courier this to `../frontend`. All changes are ADDITIVE — nothing existing breaks.
## What shipped (backend)
diff --git a/frontend-conversation-list-handoff.md b/frontend-conversation-list-handoff.md
index 16e90cb..dd3fd63 100644
--- a/frontend-conversation-list-handoff.md
+++ b/frontend-conversation-list-handoff.md
@@ -1,6 +1,6 @@
# FE handoff — conversation list, title, and open tab
-Courier this to `../dispatch-web`. All changes are ADDITIVE — nothing existing breaks.
+Courier this to `../frontend`. All changes are ADDITIVE — nothing existing breaks.
## What shipped (backend)
diff --git a/frontend-conversation-open-handoff.md b/frontend-conversation-open-handoff.md
index ae900eb..c4064ea 100644
--- a/frontend-conversation-open-handoff.md
+++ b/frontend-conversation-open-handoff.md
@@ -1,6 +1,6 @@
# FE handoff — conversation.open (CLI --open flag)
-Courier this to `../dispatch-web`. All changes are ADDITIVE.
+Courier this to `../frontend`. All changes are ADDITIVE.
## What shipped (backend)
diff --git a/frontend-cr3-user-message-handoff.md b/frontend-cr3-user-message-handoff.md
index 0a7859a..0fb20e5 100644
--- a/frontend-cr3-user-message-handoff.md
+++ b/frontend-cr3-user-message-handoff.md
@@ -1,6 +1,6 @@
# FE handoff — CR-3 fixed: user prompt is now on the turn's event stream
-Courier to `../dispatch-web`. This resolves CR-3 from `backend-handoff.md` ("a watcher can't see
+Courier to `../frontend`. This resolves CR-3 from `backend-handoff.md` ("a watcher can't see
the turn's USER prompt until seal"). **Option B implemented + live-verified.** Your staged-but-inert
consumption can now be turned on.
diff --git a/frontend-cwd-resolution-handoff.md b/frontend-cwd-resolution-handoff.md
index 66c93b4..80d5105 100644
--- a/frontend-cwd-resolution-handoff.md
+++ b/frontend-cwd-resolution-handoff.md
@@ -1,6 +1,6 @@
# Backend handoff — cwd resolution fixes (backend → FE) — courier doc
-> **From:** arch-rewrite orchestrator · **To:** dispatch-web orchestrator (b18a) · **Courier:** the user.
+> **From:** arch-rewrite orchestrator · **To:** frontend orchestrator (b18a) · **Courier:** the user.
> Response to the cwd bug report you sent to backend agent ab13. The fixes are DONE and
> live-verified on the dev stack.
diff --git a/frontend-history-windowing-handoff.md b/frontend-history-windowing-handoff.md
index f9244b1..6792c38 100644
--- a/frontend-history-windowing-handoff.md
+++ b/frontend-history-windowing-handoff.md
@@ -1,6 +1,6 @@
# Backend → frontend handoff — CR-5: history windowing (`limit` / `beforeSeq`)
-> **From:** arch-rewrite · **To:** dispatch-web · **Courier:** the user.
+> **From:** arch-rewrite · **To:** frontend · **Courier:** the user.
> Reply to `backend-handoff-chat-limit.md` (CR-5). 2026-06-12. SHIPPED.
## What shipped
diff --git a/frontend-lsp-cwd-handoff.md b/frontend-lsp-cwd-handoff.md
index f27b1e5..e7c8417 100644
--- a/frontend-lsp-cwd-handoff.md
+++ b/frontend-lsp-cwd-handoff.md
@@ -1,7 +1,7 @@
# Frontend handoff — LSP status + per-conversation CWD
> Backend milestone complete (this repo). The web frontend is a SEPARATE repo
-> (`../dispatch-web`); this document is couriered to it by the user (ORCHESTRATOR
+> (`../frontend`); this document is couriered to it by the user (ORCHESTRATOR
> §7 — `lsp references` does not span repos). All types below are exported from
> `@dispatch/transport-contract` (bumped to **0.5.0**).
diff --git a/frontend-lsp-cwd-workspace-handoff.md b/frontend-lsp-cwd-workspace-handoff.md
index 7e34211..d17f0a5 100644
--- a/frontend-lsp-cwd-workspace-handoff.md
+++ b/frontend-lsp-cwd-workspace-handoff.md
@@ -1,6 +1,6 @@
# FE Courier Handoff: LSP cwd resolution fix + PUT cwd workspaceId
-> Backend→FE courier. The user couriers this to `../dispatch-web` (FE agent `ffe3`).
+> Backend→FE courier. The user couriers this to `../frontend` (FE agent `ffe3`).
> No `@dispatch/wire` or `@dispatch/transport-contract` version bump is breaking —
> the `SetCwdRequest.workspaceId` is additive (optional); the `LspStatusResponse.cwd`
> semantics changed (was always non-null effective cwd; now null when no cwd set).
diff --git a/frontend-message-queue-handoff.md b/frontend-message-queue-handoff.md
index 2d55220..b9c2a6d 100644
--- a/frontend-message-queue-handoff.md
+++ b/frontend-message-queue-handoff.md
@@ -1,6 +1,6 @@
# FE handoff — message queue + steering injection
-Courier this to `../dispatch-web` (cross-repo contract change; `lsp references` does
+Courier this to `../frontend` (cross-repo contract change; `lsp references` does
not span repos — ORCHESTRATOR §7). All changes are ADDITIVE — nothing existing breaks.
## What shipped (backend)
diff --git a/frontend-metrics-handoff.md b/frontend-metrics-handoff.md
index 8da45ad..be033d8 100644
--- a/frontend-metrics-handoff.md
+++ b/frontend-metrics-handoff.md
@@ -1,6 +1,6 @@
# Frontend handoff — live turn metrics (tokens + timing)
-> From: arch-rewrite (backend) orchestrator · For: the dispatch-web FE team.
+> From: arch-rewrite (backend) orchestrator · For: the frontend FE team.
> Status: **LIVE on the stream now** (backend committed + live-verified). Consume via the pinned
> contracts `@dispatch/[email protected]` + `@dispatch/[email protected]` (reference snapshots
> regenerated in `dispatch-web/.dispatch/{wire,transport-contract}.reference.md`).
@@ -109,7 +109,7 @@ latency removed). If you want end-to-end rate including the wait, use `ttftMs +
- TPS is not sent pre-computed (derive it, §4). No per-token timing (metrics are per-step/per-turn).
## 7. Integration checklist
-1. Refresh deps: `bun run typecheck` in dispatch-web (picks up `[email protected]` / `[email protected]`).
+1. Refresh deps: `bun run typecheck` in frontend (picks up `[email protected]` / `[email protected]`).
2. Extend your `chat.delta` event handler: add a `case "step-complete"` and read the new optional
fields on `usage`/`tool-result`/`done`. (No exhaustive-switch break — these are additive.)
3. Keep a per-turn (and per-step, keyed by `stepId`) telemetry accumulator alongside the transcript
diff --git a/frontend-metrics-pass2-handoff.md b/frontend-metrics-pass2-handoff.md
index 9019a85..adf0404 100644
--- a/frontend-metrics-pass2-handoff.md
+++ b/frontend-metrics-pass2-handoff.md
@@ -1,6 +1,6 @@
# FE handoff — persisted replay metrics (Pass 2) + metrics endpoint
-> **Courier doc** (backend → `../dispatch-web`, via the user). Per ORCHESTRATOR §7
+> **Courier doc** (backend → `../frontend`, via the user). Per ORCHESTRATOR §7
> the backend does NOT write the FE repo; the FE orchestrator applies this delta
> on its side (regenerate the in-repo `.dispatch/*.reference.md` snapshots + bump
> the `file:` dep). `lsp references` does not span the two repos. Backend commit:
diff --git a/frontend-reasoning-effort-handoff.md b/frontend-reasoning-effort-handoff.md
index 8647f36..656dede 100644
--- a/frontend-reasoning-effort-handoff.md
+++ b/frontend-reasoning-effort-handoff.md
@@ -1,6 +1,6 @@
# FE handoff — reasoning effort (thinking-depth knob)
-Courier this to `../dispatch-web` (cross-repo contract change; `lsp references` does not
+Courier this to `../frontend` (cross-repo contract change; `lsp references` does not
span repos — ORCHESTRATOR §7). All changes are ADDITIVE — nothing existing breaks.
## What shipped (backend)
diff --git a/frontend-stop-generation-handoff.md b/frontend-stop-generation-handoff.md
index 33559b0..117b65e 100644
--- a/frontend-stop-generation-handoff.md
+++ b/frontend-stop-generation-handoff.md
@@ -1,6 +1,6 @@
# FE handoff — stop generation mid-turn
-Courier this to `../dispatch-web`. All changes are ADDITIVE.
+Courier this to `../frontend`. All changes are ADDITIVE.
## What shipped (backend)
diff --git a/frontend-todo-handoff.md b/frontend-todo-handoff.md
index 0edfa60..4a81296 100644
--- a/frontend-todo-handoff.md
+++ b/frontend-todo-handoff.md
@@ -1,6 +1,6 @@
# FE handoff — todo task list surface
-Courier this to `../dispatch-web` (cross-repo contract change; `lsp references` does
+Courier this to `../frontend` (cross-repo contract change; `lsp references` does
not span repos — ORCHESTRATOR §7). All changes are ADDITIVE — nothing existing breaks.
## What shipped (backend)
diff --git a/frontend-turn-continuity-handoff.md b/frontend-turn-continuity-handoff.md
index b8b664d..e0be4a3 100644
--- a/frontend-turn-continuity-handoff.md
+++ b/frontend-turn-continuity-handoff.md
@@ -1,6 +1,6 @@
# FE handoff — turn continuity + multi-client live view
-Courier to `../dispatch-web` (cross-repo; `lsp references` does not span repos —
+Courier to `../frontend` (cross-repo; `lsp references` does not span repos —
ORCHESTRATOR §7). Backend is implemented + live-verified against flash. This unblocks
the "turn keeps running when the browser is backgrounded/reloaded" + "watch the same
chat from a second device" behavior.
diff --git a/frontend-workspaces-handoff.md b/frontend-workspaces-handoff.md
index 2ddfaf5..1fed1bf 100644
--- a/frontend-workspaces-handoff.md
+++ b/frontend-workspaces-handoff.md
@@ -1,6 +1,6 @@
# Backend handoff — Workspaces (backend → FE) — courier doc
-> **From:** arch-rewrite orchestrator · **To:** dispatch-web orchestrator · **Courier:** the user.
+> **From:** arch-rewrite orchestrator · **To:** frontend orchestrator · **Courier:** the user.
> Response to `backend-handoff-workspaces.md`. This doc finalizes the contract shapes
> the backend will implement. The FE should re-pin `@dispatch/wire` and
> `@dispatch/transport-contract` `file:` deps and re-mirror any `.dispatch/*.reference.md`.
diff --git a/notes/frontend-design.md b/notes/frontend-design.md
index 16cb41f..e0687ed 100644
--- a/notes/frontend-design.md
+++ b/notes/frontend-design.md
@@ -86,7 +86,7 @@ chosen set. Skip the backend's 3-tier ceremony.
## 3. Repo structure (Vite + Svelte 5 SPA — SETTLED; not SvelteKit)
```
-dispatch-web/ (../dispatch-web — NEW repo, own git)
+dispatch-web/ (../frontend — NEW repo, own git)
AGENTS.md ORCHESTRATOR.md GLOSSARY.md
.dispatch/{package-agent.md, rules/frontend-*.md}
src/
@@ -416,7 +416,7 @@ slice); DaisyUI styling (F4 follow-up). The slice-1 input decisions were:
Or pick a different first surface.
2. **WS-transport boundary:** a NEW `transport-ws` extension vs. augment the existing
`transport-http`. (Boundary call.)
-3. **Repo scaffold go-ahead:** create `../dispatch-web` (git init + Vite/Svelte/biome/vitest +
+3. **Repo scaffold go-ahead:** create `../frontend` (git init + Vite/Svelte/biome/vitest +
the §8 harness). Orchestrator can scaffold config + harness; feature code = summoned agents.
### Slice-1 findings + open items (for the next, clean-context agent)
diff --git a/notes/turn-continuity-design.md b/notes/turn-continuity-design.md
index 29ec10d..f33cec6 100644
--- a/notes/turn-continuity-design.md
+++ b/notes/turn-continuity-design.md
@@ -1,7 +1,7 @@
# Turn continuity — detached turns + multi-client live view
> Status: DESIGN (locked) → backend implementation in progress. FE work couriered
-> to `../dispatch-web`. See ORCHESTRATOR §7 (cross-repo).
+> to `../frontend`. See ORCHESTRATOR §7 (cross-repo).
## Problem (confirmed by code trace)
diff --git a/tasks.md b/tasks.md
index 45967ca..137101a 100644
--- a/tasks.md
+++ b/tasks.md
@@ -30,7 +30,7 @@ safety invariant — never duplicate partial output). Plan:
- **Retry trigger:** emitted `error` with `retryable===true` → retry;
`retryable` false/absent → give up; a THROWN error → retryable-by-default
ONLY when pre-content. All gated on `!hadContent` (text/reasoning/tool-call/usage).
-- **Frontend handoff (5d3f, separate repo `../dispatch-web`):** render
+- **Frontend handoff (5d3f, separate repo `../frontend`):** render
`provider-retry` as a yellow warning system-message bubble showing `message`
(+`code`) with the `delayMs` countdown.
@@ -402,7 +402,7 @@ extension through the host):
provider capture (self-redacted); `trace-replay` record/replay lib + fixtures.
- **CLI** — one-shot HTTP client (`bun packages/cli/src/main.ts`); `GET /models`,
`--cwd`, `--conversation`.
-- **web frontend** — SEPARATE repo `../dispatch-web`. Slice 1 (surface system)
+- **web frontend** — SEPARATE repo `../frontend`. Slice 1 (surface system)
shipped via `ui-contract` + `surface-registry` + `transport-ws` +
`surface-loaded-extensions`. Slice 2 (browser chat) in progress there.
@@ -459,7 +459,7 @@ Enabled by a new env knob **`SURFACE_WS_PORT`** → `surfaceWsPort` config
per-step `stepId` + ttft/decode/genTotal + durationMs); journal turn/step spans
carry dotted `usage.*` incl. `usage.cacheReadTokens` (the #2 fix).
- [x] **FE courier handoff** written: `frontend-metrics-pass2-handoff.md` (in
- this repo; user couriers to `../dispatch-web`; ORCHESTRATOR §7).
+ this repo; user couriers to `../frontend`; ORCHESTRATOR §7).
## dedup / storage growth (DONE)
Design `notes/observability-design.md` §12. User-gated calls: extend existing
@@ -572,7 +572,7 @@ arm-on-settle/cancel-on-start; `pct = round(clamp(cacheRead/input,0,1)*100)`).
the `number` field kind + send/handle `conversationId` on the surface WS protocol.
## Cache warming — FE CR-3 (DONE)
-FE asked (dispatch-web `backend-handoff-cache-warming-timer.md`): expose next/last-warm timestamps +
+FE asked (frontend `backend-handoff-cache-warming-timer.md`): expose next/last-warm timestamps +
make a manual warm reset the timer/refresh the surface. Done via an **inversion** (commit `bfbad3a`):
session-orchestrator `warm()` (the single chokepoint for manual `/chat/warm` AND the auto timer) emits
a `warmCompleted` bus event; cache-warming subscribes and does all post-warm handling — so manual
@@ -637,7 +637,7 @@ persisted `TurnMetrics`.
aggregate); turn 2 (same conversation) → 1286 (grew cumulatively), live == persisted. Both
carriers agree; "current" = latest turn's value.
- [x] **FE courier handoff:** `frontend-context-size-handoff.md` (user couriers to
- `../dispatch-web`).
+ `../frontend`).
## Turn continuity — detached turns + multi-client live view (DONE)
Design: `notes/turn-continuity-design.md`. FE courier: `frontend-turn-continuity-handoff.md`.
@@ -687,7 +687,7 @@ outward stream/buffer. FE courier: `frontend-cr3-user-message-handoff.md`.
orchestrator summons owner-agents and does not write feature code itself.
## Cache warming — FE CR-4 lifecycle + CR-1 extensions table + CR-2 catalog scope (DONE)
-FE courier in: `../dispatch-web/backend-handoff-cache-warming.md` (+ CR-1/CR-2 from their living
+FE courier in: `../frontend/backend-handoff-cache-warming.md` (+ CR-1/CR-2 from their living
`backend-handoff.md`). Courier out: `frontend-cache-warming-lifecycle-handoff.md`. Full report:
`reports/cr4-cache-warming-lifecycle.md`.
- **CR-4a:** warming defaults OFF (opt-in per conversation) — `parseSettings` + `DEFAULT_STATE`;
@@ -709,7 +709,7 @@ FE courier in: `../dispatch-web/backend-handoff-cache-warming.md` (+ CR-1/CR-2 f
`done.reason:"aborted"` + warming disabled, catalog scopes + table field present, echo present.
## History windowing — FE CR-5 (DONE)
-FE courier in: `../dispatch-web/backend-handoff-chat-limit.md` (+ living `backend-handoff.md` §2
+FE courier in: `../frontend/backend-handoff-chat-limit.md` (+ living `backend-handoff.md` §2
CR-5). Courier out: `frontend-history-windowing-handoff.md`. User-gated call: ask #3 shipped as
the INVARIANT option (no new field) — seq is contractually **1-based, monotonic, gap-free**; FE
derives `hasOlder` from `chunks[0].seq > 1`.
@@ -763,7 +763,7 @@ budget_tokens; `../claude` orchestrated DIRECTLY (mode A); CLI `--effort` now.
Commits: arch-rewrite `35197ed` (contracts) + `020e051` (impl); ../claude `c0835a4`.
- [x] Live-verified vs claude (thinking deltas streamed at xhigh; persisted PUT honored next turn).
- [x] FE courier handoff written: `frontend-reasoning-effort-handoff.md` (user couriers to
- `../dispatch-web`): ChatRequest/chat.send field + GET/PUT endpoints + ladder + default-`high`
+ `../frontend`): ChatRequest/chat.send field + GET/PUT endpoints + ladder + default-`high`
semantics + cache note.
## Message queue + steering injection (DONE)
@@ -803,7 +803,7 @@ additive `steering` `AgentEvent`; queue state via the surface (NOT the chat stre
all agents in-lane. **Boot smoke:** private instance boots clean with `message-queue`
registered (no activation crash).
- [x] FE courier handoff written: `frontend-message-queue-handoff.md` (user couriers to
- `../dispatch-web`): surface (`rendererId:"message-queue"`), `chat.queue` WS op, `steering`
+ `../frontend`): surface (`rendererId:"message-queue"`), `chat.queue` WS op, `steering`
event, HTTP `POST /queue`, auto-start-when-idle, carry semantics, version bumps.
## Umans AI Coding Plan provider (DONE)
@@ -913,7 +913,7 @@ conversation tab. Short-ID prefix resolution (4+ chars → full ID via `GET /con
- [x] Live-verified end-to-end (CLI → real conversation → FE tab open).
## Workspaces (DONE)
-Cross-repo design ask from `../dispatch-web` (`backend-handoff-workspaces.md`).
+Cross-repo design ask from `../frontend` (`backend-handoff-workspaces.md`).
Outbound courier: `frontend-workspaces-handoff.md` (final shapes + Q1–Q8).
- **Boundary decision:** workspaces live inside `conversation-store` (metadata +
cwd persistence owner); no new extension. Single owner-agent for all workspace
@@ -969,7 +969,7 @@ Outbound courier: `frontend-workspaces-handoff.md` (final shapes + Q1–Q8).
pattern: separate key space per feature, append/write per conversation).
## Roadmap
-1. **Web frontend** (in progress, SEPARATE repo `../dispatch-web`; Svelte +
+1. **Web frontend** (in progress, SEPARATE repo `../frontend`; Svelte +
DaisyUI, same methodology). Slice 2 = browser chat MVP consuming the
wire/transport-contract + metrics. Cross-repo contract changes are couriered
via the user (ORCHESTRATOR §7); `lsp references` does not span repos.