From bc25a73331fb36f49e38d435bba142651ed2fbb2 Mon Sep 17 00:00:00 2001 From: JJ Lee Date: Sat, 8 Aug 2026 18:26:50 -0400 Subject: [PATCH] docs(adr-0004): note server-side arm constraint (staged-skill drift, #296) --- docs/adr/0004-bug-session-lifecycle.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/adr/0004-bug-session-lifecycle.md b/docs/adr/0004-bug-session-lifecycle.md index 5f60bdd29..0e02580b6 100644 --- a/docs/adr/0004-bug-session-lifecycle.md +++ b/docs/adr/0004-bug-session-lifecycle.md @@ -10,6 +10,6 @@ The Report-a-Bug entry point spawns a **bug session** — a single-purpose Sessi **Considered:** deleting filed sessions too (rejected — the transcript is the only record of what diagnostics were attached and what was edited at the confirm gate; provenance beats maximal ephemerality); no auto-close, an end-card waiting for the user to dismiss (rejected — adds a click at the exact moment the flow should feel finished); archiving abandoned sessions like filed ones (rejected — an abandoned capture has no artifact worth restoring, and invisible accumulation is how history gets noisy); detecting filing by parsing tool calls or server-event payloads (rejected — fragile against the browser-fallback path, and part text is not reliably on the event bus). -**Accepted costs:** closing a surface now means deleting a session on this one dock — the opposite of everywhere else in the app, so the dock's two affordances must stay unambiguous (chevron collapses and keeps alive, the close control kills); the skill gains a terminal-line contract that any future rewrite must preserve; in-flight bug sessions need a metadata marker plus a list filter to stay out of history before reaching their terminal state. +**Accepted costs:** closing a surface now means deleting a session on this one dock — the opposite of everywhere else in the app, so the dock's two affordances must stay unambiguous (chevron collapses and keeps alive, the close control kills); the skill gains a terminal-line contract that any future rewrite must preserve; in-flight bug sessions need a metadata marker plus a list filter to stay out of history before reaching their terminal state. The arm target (`/session/:id/command`) resolves against the **server's** command set, not the extension's staged skill paths — a non-extension-hosted server (launchd, SSH, remote) must re-stage skills on extension updates to stay in sync; the extension pre-flights the arm (GET `/command`) and fails actionably when the skill is absent server-side (#296). **Flip condition:** if users start treating bug sessions as real conversations (continuing past filing, or expecting drafts to survive), revisit toward archive-always and a visible drafts list.