From 48b7477d6bd82be5b01d643eedb3889af7566166 Mon Sep 17 00:00:00 2001 From: Warren <28354219+jayminwest@users.noreply.github.com> Date: Tue, 9 Jun 2026 09:29:51 +0000 Subject: [PATCH 1/2] Update comments referencing the retired brainstorm/interactive flow (warren-9d72) --- src/db/repos/runs.ts | 4 ++-- src/plots/formalize.ts | 16 ++++++++-------- src/plots/needs-attention.ts | 4 ++-- src/runs/conversation-rewake.ts | 6 +++--- src/server/types.ts | 4 ++-- .../pages/plot-detail/interactive-panel.tsx | 18 +++++++++--------- 6 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/db/repos/runs.ts b/src/db/repos/runs.ts index ee9d8cf2..70f8fafe 100644 --- a/src/db/repos/runs.ts +++ b/src/db/repos/runs.ts @@ -237,8 +237,8 @@ export class RunsRepo { /** * Every run row bound to a given `plotId`, ordered by id (stable for * tests). Powers `POST /plots/:id/formalize` (warren-d22e / pl-0344 - * step 8) which needs to enumerate every interactive turn of a - * brainstorm conversation to extract suggested intent — the caller + * step 8) which needs to enumerate every turn of a Plot's + * intent-shaping conversation to extract suggested intent — the caller * re-sorts the underlying events by `ts` so dispatch-order surprises * don't affect the summary. The `runs_plot_id` index (sqlite + * postgres) covers the predicate. diff --git a/src/plots/formalize.ts b/src/plots/formalize.ts index 1dbd7046..d99d8c6d 100644 --- a/src/plots/formalize.ts +++ b/src/plots/formalize.ts @@ -1,25 +1,25 @@ /** - * `PlotFormalizer` — Plot brainstorm-summarize seam for + * `PlotFormalizer` — Plot conversation-summarize seam for * `POST /plots/:id/formalize` (warren-d22e / pl-0344 step 8). * - * Formalize converts a brainstorm-style interactive conversation into a + * Formalize converts a Plot's intent-shaping conversation into a * **suggested** Plot intent — a `{goal, non_goals, constraints, * success_criteria}` shape the user reviews, edits, and applies via the * existing `POST /plots/:id/intent` route. The status transition to * `ready` rides on the existing `POST /plots/:id/status` route. This * handler is therefore non-mutating: it reads warren's events table for - * every interactive run bound to the Plot, extracts the agent's + * every run bound to the Plot, extracts the agent's * marker-formatted intent claims, and returns a JSON suggestion. The * Plot itself is untouched, no Plot event is emitted, no run is * spawned. * * Why deterministic extraction, not a dispatched summarize-turn: * - * 1. Interactive runs are async (respawn-per-turn, reply lands at reap - * via `agent_message` capture — see `src/runs/interactive.ts`). A + * 1. Conversation turns are async (the reply lands at reap via + * `agent_message` capture — see `src/runs/conversation-rewake.ts`). A * synchronous HTTP response that includes an agent-generated summary * would either block on a fresh dispatch or return a half-shape. - * 2. The brainstorm agent (`src/registry/builtins/brainstorm.ts`) is + * 2. The intent-shaping agent is * already instructed to name intent fields explicitly via * `**goal**: ...` / `**non_goals**: -` / etc. markers. The contract * is in the system prompt; the parser anchors it. @@ -31,7 +31,7 @@ * Extraction rules: * * - The seam scans every `agent_message` event across the Plot's - * interactive runs, in `ts` ascending order. Later messages override + * conversation runs, in `ts` ascending order. Later messages override * earlier ones for the singular `goal` field; list fields * (`non_goals`, `constraints`, `success_criteria`) accumulate * deduplicated. @@ -84,7 +84,7 @@ export interface DefaultPlotFormalizerDeps { /** * Production `PlotFormalizer`. Reads every `agent_message` event on - * interactive runs bound to the Plot and folds them through + * conversation runs bound to the Plot and folds them through * `extractSuggestedIntent`. The Plot itself is untouched; the caller * (handler) is responsible for validating that the Plot exists. */ diff --git a/src/plots/needs-attention.ts b/src/plots/needs-attention.ts index 2892b7c8..3616274b 100644 --- a/src/plots/needs-attention.ts +++ b/src/plots/needs-attention.ts @@ -29,8 +29,8 @@ * - **stale_draft**: Plot status is `drafting` and `last_event_ts` * is older than `staleDraftAfterDays` (default 7). Pinned to * `last_event_ts` (not `updated_at`) so an idle conversation in a - * brainstorm Plot — where every chat turn appends a `note` / - * interactive message event — keeps the draft fresh. + * drafting Plot — where every chat turn appends a `note` / + * conversation message event — keeps the draft fresh. * * The pure helper is exported separately from the aggregator so the * unit tests in `./aggregate.test.ts` can exercise it without mocking diff --git a/src/runs/conversation-rewake.ts b/src/runs/conversation-rewake.ts index 8762cd3a..9962e837 100644 --- a/src/runs/conversation-rewake.ts +++ b/src/runs/conversation-rewake.ts @@ -41,8 +41,8 @@ * `conversation.rewake_replayed` system event on the new run carrying the * prior run id + replayed message count. * - * Mirrors the seam discipline of `conversation-idle.ts` and the spawn-forward - * discipline of `interactive.ts`: the reader / rotator are seams (production + * Mirrors the seam discipline of `conversation-idle.ts`: the reader / rotator + * are seams (production * queries the warren-0b91 `conversations` + `messages` tables; the unit suite * hands back literals) so this module needs neither disk nor those tables to * be exercised, and the live HTTP wiring (warren-af15) slots the repo-backed @@ -323,6 +323,6 @@ async function appendRewakeEvent( }); } catch { // Logging-only trail; a failure here must not unwind a successful - // re-wake. Mirrors recordPlotContextLoadFailure in interactive.ts. + // re-wake. Best-effort logging trail only. } } diff --git a/src/server/types.ts b/src/server/types.ts index 93ebf81c..9eb52d30 100644 --- a/src/server/types.ts +++ b/src/server/types.ts @@ -392,8 +392,8 @@ export interface ServerDeps { * Server-side Plot formalize seam (warren-d22e / pl-0344 step 8). * Used by `POST /plots/:id/formalize` to extract a suggested intent * (`{goal, non_goals, constraints, success_criteria}`) from the - * brainstorm conversation — every `agent_message` event across - * interactive runs bound to the Plot is parsed for field markers and + * intent-shaping conversation — every `agent_message` event across + * conversation runs bound to the Plot is parsed for field markers and * folded into a single suggestion. The Plot is NOT mutated; the user * accepts/edits via the existing `POST /plots/:id/intent` route. * `bootServer` always wires the default; tests substitute a stub. diff --git a/src/ui/src/pages/plot-detail/interactive-panel.tsx b/src/ui/src/pages/plot-detail/interactive-panel.tsx index 910ebbd5..23d254de 100644 --- a/src/ui/src/pages/plot-detail/interactive-panel.tsx +++ b/src/ui/src/pages/plot-detail/interactive-panel.tsx @@ -28,9 +28,10 @@ import { ReadOnlyField } from "./run-plan.tsx"; /** * InteractivePanel (warren-444c / pl-0344 step 11) — renders Start * brainstorming / Run planner / Formalize over an inline Chat anchored - * to the latest interactive run on the Plot. The agent's reply streams - * back into the transcript via reap-side `agent_message` capture - * (warren-509f, src/runs/reap/interactive.ts). + * to the latest conversation run on the Plot. The agent's reply streams + * back into the transcript via the Plot's conversation flow (the + * respawn-per-turn interactive primitive was retired with + * mode=interactive — warren-d622 / LEVERET.md §0.8). */ /* ----------------------------------------------------------------------- */ @@ -58,12 +59,11 @@ interface InteractiveAnchor { /** * Walk the Plot's event_log in reverse and return the most recent * `run_dispatched` event whose `data.agent` is in the interactive set. - * `null` when no interactive run has ever been dispatched against this - * Plot. Each interactive turn is its own run row (respawn-per-turn, - * src/runs/interactive.ts) but `Chat`'s `onTurnSpawned` re-anchor only - * fires from inside the component — the activity feed sees every spawn - * as a fresh `run_dispatched`, so picking the latest tracks the live - * conversation handle. + * `null` when no such run has ever been dispatched against this + * Plot. Each turn is its own run row but `Chat`'s `onTurnSpawned` + * re-anchor only fires from inside the component — the activity feed + * sees every spawn as a fresh `run_dispatched`, so picking the latest + * tracks the live conversation handle. */ function findLatestInteractiveRun( events: readonly PlotEvent[], From 122934ce0d8db1ad89922c9103b9501937eb929d Mon Sep 17 00:00:00 2001 From: warren Date: Tue, 9 Jun 2026 09:31:01 +0000 Subject: [PATCH 2/2] chore(warren): seeds state --- .seeds/issues.jsonl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.seeds/issues.jsonl b/.seeds/issues.jsonl index 2b2f8ada..62b4af4f 100644 --- a/.seeds/issues.jsonl +++ b/.seeds/issues.jsonl @@ -628,9 +628,9 @@ {"id":"warren-e810","title":"Render terminal-failed banner in ConversationDetail","status":"closed","type":"task","priority":1,"plan_step_index":2,"description":"\nStep 3 of plan pl-de53.\n\nParent seed: warren-203d — Leveret UI: surface anchoring-run failure on the conversation surface\nPlan template: bug\nPlan approach: UI-only fix, no wire/API changes. (1) Teach Chat to accept the already-fetched persisted transcript and render it merged with the live stream, so messages show regardless of run state. (2) In ConversationDetail, feed…\n\nRun `sd plan show pl-de53` for the full plan (context, alternatives, sibling steps, acceptance criteria).\n","createdAt":"2026-06-07T12:04:30.130Z","updatedAt":"2026-06-07T12:25:32.861Z","labels":["bugwatch"],"plan_id":"pl-de53","blocks":["warren-0db3","warren-203d"],"extensions":{"role":"pi","lastRunId":"run_5gn4g2bcm1sz","lastRunAt":"2026-06-07T12:18:48.853Z"},"closedAt":"2026-06-07T12:25:32.861Z"} {"id":"warren-0732","title":"Add Chat regression test for transcript render with empty stream","status":"closed","type":"task","priority":2,"plan_step_index":3,"description":"\nStep 4 of plan pl-de53.\n\nParent seed: warren-203d — Leveret UI: surface anchoring-run failure on the conversation surface\nPlan template: bug\nPlan approach: UI-only fix, no wire/API changes. (1) Teach Chat to accept the already-fetched persisted transcript and render it merged with the live stream, so messages show regardless of run state. (2) In ConversationDetail, feed…\n\nRun `sd plan show pl-de53` for the full plan (context, alternatives, sibling steps, acceptance criteria).\n","createdAt":"2026-06-07T12:04:30.130Z","updatedAt":"2026-06-07T12:35:56.802Z","labels":["bugwatch"],"plan_id":"pl-de53","blocks":["warren-0db3","warren-203d"],"closedAt":"2026-06-07T12:35:56.802Z"} {"id":"warren-0db3","title":"Release: run /release per .claude/commands/release.md","status":"closed","type":"task","priority":2,"plan_step_index":4,"description":"\nStep 5 of plan pl-de53.\n\nParent seed: warren-203d — Leveret UI: surface anchoring-run failure on the conversation surface\nPlan template: bug\nPlan approach: UI-only fix, no wire/API changes. (1) Teach Chat to accept the already-fetched persisted transcript and render it merged with the live stream, so messages show regardless of run state. (2) In ConversationDetail, feed…\n\nRun `sd plan show pl-de53` for the full plan (context, alternatives, sibling steps, acceptance criteria).\n","createdAt":"2026-06-07T12:04:30.130Z","updatedAt":"2026-06-07T12:43:15.515Z","labels":["bugwatch"],"plan_id":"pl-de53","blocks":["warren-203d"],"closedAt":"2026-06-07T12:43:15.515Z"} -{"id":"warren-a056","title":"nightwatch patrol: 2026-06-09","status":"open","type":"task","priority":3,"createdAt":"2026-06-09T09:07:21.686Z","updatedAt":"2026-06-09T09:24:12.449Z","labels":["patrol","nightwatch"],"plan_id":"pl-7580","blockedBy":["warren-9d72","warren-f48a"]} +{"id":"warren-a056","title":"nightwatch patrol: 2026-06-09","status":"open","type":"task","priority":3,"createdAt":"2026-06-09T09:07:21.686Z","updatedAt":"2026-06-09T09:31:01.193Z","labels":["patrol","nightwatch"],"plan_id":"pl-7580","blockedBy":["warren-f48a"]} {"id":"warren-43e6","title":"Repoint stale src/preview/launch.ts and src/preview/proxy.ts comment references after the launch/ + proxy/ splits","status":"closed","type":"task","priority":3,"plan_step_index":0,"description":"\nStep 1 of plan pl-7580.\n\nParent seed: warren-a056 — nightwatch patrol: 2026-06-09\nPlan template: refactor\nPlan approach: Each step is an independent, comment-only fix touching a small set of files; there are no real dependencies between the four fix steps, so they can land in any order as separate PRs. The final Release step is ordered last and blocked by…\n\nRun `sd plan show pl-7580` for the full plan (context, alternatives, sibling steps, acceptance criteria).\n","createdAt":"2026-06-09T09:08:52.347Z","updatedAt":"2026-06-09T09:15:37.125Z","labels":["nightwatch"],"plan_id":"pl-7580","blocks":["warren-f48a","warren-a056"],"closedAt":"2026-06-09T09:15:37.125Z"} {"id":"warren-bfe2","title":"Repoint stale src/runs/reap.ts comment references after the reap/ split","status":"closed","type":"task","priority":3,"plan_step_index":1,"description":"\nStep 2 of plan pl-7580.\n\nParent seed: warren-a056 — nightwatch patrol: 2026-06-09\nPlan template: refactor\nPlan approach: Each step is an independent, comment-only fix touching a small set of files; there are no real dependencies between the four fix steps, so they can land in any order as separate PRs. The final Release step is ordered last and blocked by…\n\nRun `sd plan show pl-7580` for the full plan (context, alternatives, sibling steps, acceptance criteria).\n","createdAt":"2026-06-09T09:08:52.347Z","updatedAt":"2026-06-09T09:20:04.011Z","labels":["nightwatch"],"plan_id":"pl-7580","blocks":["warren-f48a","warren-a056"],"extensions":{"role":"pi","lastRunId":"run_jse1pepa24x7","lastRunAt":"2026-06-09T09:17:00.450Z"},"closedAt":"2026-06-09T09:20:04.011Z"} {"id":"warren-9358","title":"Fix src/runs/burrow_config.ts -> src/runs/burrow-config.ts filename in planner.ts comment","status":"closed","type":"task","priority":3,"plan_step_index":2,"description":"\nStep 3 of plan pl-7580.\n\nParent seed: warren-a056 — nightwatch patrol: 2026-06-09\nPlan template: refactor\nPlan approach: Each step is an independent, comment-only fix touching a small set of files; there are no real dependencies between the four fix steps, so they can land in any order as separate PRs. The final Release step is ordered last and blocked by…\n\nRun `sd plan show pl-7580` for the full plan (context, alternatives, sibling steps, acceptance criteria).\n","createdAt":"2026-06-09T09:08:52.347Z","updatedAt":"2026-06-09T09:24:12.449Z","labels":["nightwatch"],"plan_id":"pl-7580","blocks":["warren-f48a","warren-a056"],"closedAt":"2026-06-09T09:24:12.449Z"} -{"id":"warren-9d72","title":"Update comments referencing the retired brainstorm/interactive flow","status":"open","type":"task","priority":3,"plan_step_index":3,"description":"\nStep 4 of plan pl-7580.\n\nParent seed: warren-a056 — nightwatch patrol: 2026-06-09\nPlan template: refactor\nPlan approach: Each step is an independent, comment-only fix touching a small set of files; there are no real dependencies between the four fix steps, so they can land in any order as separate PRs. The final Release step is ordered last and blocked by…\n\nRun `sd plan show pl-7580` for the full plan (context, alternatives, sibling steps, acceptance criteria).\n","createdAt":"2026-06-09T09:08:52.347Z","updatedAt":"2026-06-09T09:08:52.347Z","labels":["nightwatch"],"plan_id":"pl-7580","blocks":["warren-f48a","warren-a056"]} -{"id":"warren-f48a","title":"Release: run /release per .claude/commands/release.md","status":"open","type":"task","priority":3,"plan_step_index":4,"description":"\nStep 5 of plan pl-7580.\n\nParent seed: warren-a056 — nightwatch patrol: 2026-06-09\nPlan template: refactor\nPlan approach: Each step is an independent, comment-only fix touching a small set of files; there are no real dependencies between the four fix steps, so they can land in any order as separate PRs. The final Release step is ordered last and blocked by…\n\nRun `sd plan show pl-7580` for the full plan (context, alternatives, sibling steps, acceptance criteria).\n","createdAt":"2026-06-09T09:08:52.347Z","updatedAt":"2026-06-09T09:24:12.449Z","labels":["nightwatch"],"plan_id":"pl-7580","blockedBy":["warren-9d72"],"blocks":["warren-a056"]} +{"id":"warren-9d72","title":"Update comments referencing the retired brainstorm/interactive flow","status":"closed","type":"task","priority":3,"plan_step_index":3,"description":"\nStep 4 of plan pl-7580.\n\nParent seed: warren-a056 — nightwatch patrol: 2026-06-09\nPlan template: refactor\nPlan approach: Each step is an independent, comment-only fix touching a small set of files; there are no real dependencies between the four fix steps, so they can land in any order as separate PRs. The final Release step is ordered last and blocked by…\n\nRun `sd plan show pl-7580` for the full plan (context, alternatives, sibling steps, acceptance criteria).\n","createdAt":"2026-06-09T09:08:52.347Z","updatedAt":"2026-06-09T09:31:01.193Z","labels":["nightwatch"],"plan_id":"pl-7580","blocks":["warren-f48a","warren-a056"],"extensions":{"role":"pi","lastRunId":"run_2cwz2pp100m2","lastRunAt":"2026-06-09T09:25:40.442Z"},"closedAt":"2026-06-09T09:31:01.193Z"} +{"id":"warren-f48a","title":"Release: run /release per .claude/commands/release.md","status":"open","type":"task","priority":3,"plan_step_index":4,"description":"\nStep 5 of plan pl-7580.\n\nParent seed: warren-a056 — nightwatch patrol: 2026-06-09\nPlan template: refactor\nPlan approach: Each step is an independent, comment-only fix touching a small set of files; there are no real dependencies between the four fix steps, so they can land in any order as separate PRs. The final Release step is ordered last and blocked by…\n\nRun `sd plan show pl-7580` for the full plan (context, alternatives, sibling steps, acceptance criteria).\n","createdAt":"2026-06-09T09:08:52.347Z","updatedAt":"2026-06-09T09:31:01.193Z","labels":["nightwatch"],"plan_id":"pl-7580","blocks":["warren-a056"]}