Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .mulch/expertise/server.jsonl
Original file line number Diff line number Diff line change
Expand Up @@ -90,3 +90,4 @@
{"type":"pattern","classification":"tactical","recorded_at":"2026-06-06T11:19:56.674Z","evidence":{"commit":"a9d2d4f49f1d0d546ca21fe79ec8c0c2c7dd4d74"},"dir_anchors":["src/server/handlers"],"name":"conversation-send-off-plotsync-pr","description":"POST /conversations/:id/send-off (sendOffConversationHandler in src/server/handlers/conversations.ts, warren-756d) reuses defaultPlotSyncer (src/plots/sync.ts) to open a plotSync PR carrying only the .plot/ diff, finalizes the anchoring run (running->succeeded + conversation.sent_off system event), then ConversationsRepo.recordSubmission stamps submitted_pr_url/submitted_pr_number/planner_agent and flips status->closed in one write so the merge poller (warren-b872) can auto-dispatch keyed on plot_id. 400s on no_op sync (no plot-state change), closed conversation, or no plot bound.","files":["docs/http-api.md","docs/openapi.yaml","src/db/migrations/0023_pink_slipstream.sql","src/db/migrations/meta/0023_snapshot.json","src/db/migrations/meta/_journal.json","src/db/migrations/postgres/0016_magenta_tarantula.sql","src/db/migrations/postgres/meta/0016_snapshot.json","src/db/migrations/postgres/meta/_journal.json","src/db/repos/conversations.test.ts","src/db/repos/conversations.ts","src/db/schema/postgres.ts","src/db/schema/sqlite.ts","src/server/handlers/conversations.test.ts","src/server/handlers/conversations.ts","src/server/handlers/index.ts"],"id":"mx-a3aae6"}
{"type":"decision","classification":"tactical","recorded_at":"2026-06-06T16:34:11.546Z","evidence":{"commit":"7f02f42314567e58b9a34e101639607f042b4da0"},"dir_anchors":["src/server/handlers"],"title":"conversations-re-wake-route","rationale":"To keep server test files under the 500-line budget and resolve unique burrow provisioning, we extracted re-wake tests and handled dynamic burrow mock IDs","id":"mx-dea901"}
{"type":"convention","classification":"tactical","recorded_at":"2026-06-14T00:38:38.906Z","evidence":{"commit":"14464837a7196d25e4479c2cf57fd62a7aa2bae0"},"content":"POST /conversations/:id/send-off (sendOffConversationHandler, src/server/handlers/conversations.ts) guards preconditions via assertSendOffReady(deps, conversation) -> {token, plotId}: throws ValidationError(400) when closed, no Plot bound, OR deps.autoOpenPr?.token is empty ('no GitHub token configured', hint -> GITHUB_TOKEN), surfacing a clear error instead of an opaque git-push failure. Helper extracted to stay under cognitive-complexity 15. Merge poller (bootConversationMergePollerFromEnv, src/server/main/detector-wiring.ts) is now on-by-default opt-out via WARREN_MERGE_POLLER_DISABLED=1 (inverted the old WARREN_MERGE_POLLER_ENABLED opt-in), mirroring WARREN_CONVERSATION_IDLE_DISABLED. Acceptance scenarios 33/34 drop the enable flag (keep WARREN_MERGE_POLLER_TICK_MS=500). burrow-cli >= 0.3.12 image requirement documented in README deploy section.","id":"mx-66417b"}
{"type":"convention","classification":"tactical","recorded_at":"2026-06-14T01:44:06.481Z","evidence":{"commit":"2edc407f3e6fb0a97d2a51645760b8df058db3e1"},"dir_anchors":["src/plots","src/server/handlers"],"content":"warren-cef0 (pl-0008 step 1): removed the orphaned POST /plots/:id/formalize brainstorm-summarize endpoint. Deleted the ROUTE_TABLE entry + import (src/server/handlers/index.ts), formalizePlotHandler from src/server/handlers/plots/workbench.ts (now answer-question-only, dropping the triggerBackgroundSync/sync.ts import), the ServerDeps.plotFormalizer seam (src/server/types.ts) + its deps.ts wiring, and plotFormalizer test stubs in plots.workbench.harness.ts + plots.test-support.ts. Also deleted the underlying src/plots/formalize.ts module (createDefaultPlotFormalizer/PlotFormalizer/extractSuggestedIntent/SuggestedIntent) + its index.ts re-exports + tests since nothing else referenced it. RunsRepo.listByPlotId stays (still used by plots/shared.ts). Regenerated docs/http-api.md + docs/openapi.yaml (56 routes). UI plotsApi.formalize + SuggestedIntent mirror are a separate step (warren-b265).","id":"mx-30c3c3"}

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions .seeds/issues.jsonl

Large diffs are not rendered by default.

3 changes: 1 addition & 2 deletions docs/http-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ This page enumerates every HTTP route registered by warren's `Bun.serve` router.

To refresh: `bun run gen:docs`. To check (CI mode): `bun run gen:docs:check`.

Total routes: **57**.
Total routes: **56**.

## /agents

Expand Down Expand Up @@ -72,7 +72,6 @@ Total routes: **57**.
| `GET` | `/plots` | `listPlotsHandler` | |
| `POST` | `/plots` | `createPlotHandler` | |
| `GET` | `/plots/needs-attention/count` | `needsAttentionCountHandler` | Static path — must precede `/plots/:id` so the param route doesn't swallow `needs-attention` as an :id. |
| `POST` | `/plots/:id/formalize` | `formalizePlotHandler` | |
| `GET` | `/plots/:id/summary` | `getPlotSummaryHandler` | Static-suffix path — must precede `/plots/:id` so the param route doesn't swallow `summary` as the rest of the id. |
| `GET` | `/plots/:id` | `getPlotHandler` | |
| `POST` | `/plots/:id/intent` | `editPlotIntentHandler` | |
Expand Down
17 changes: 0 additions & 17 deletions docs/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -433,23 +433,6 @@ paths:
required: true
schema:
type: string
/plots/{id}/formalize:
post:
operationId: formalizePlotHandler
tags:
- plots
summary: POST /plots/:id/formalize
responses:
'200':
description: Successful response.
default:
description: Error response (see `src/core/errors.ts`).
parameters:
- name: id
in: path
required: true
schema:
type: string
/plots/{id}/intent:
post:
operationId: editPlotIntentHandler
Expand Down
10 changes: 4 additions & 6 deletions src/db/repos/runs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -236,12 +236,10 @@ 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 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.
* tests). Powers the Plot detail/summary surfaces that enumerate every
* run bound to a Plot — callers re-sort the underlying events by `ts`
* so dispatch-order surprises don't affect the result. The
* `runs_plot_id` index (sqlite + postgres) covers the predicate.
*/
async listByPlotId(plotId: string): Promise<RunRow[]> {
return this.adapter.pickAll(
Expand Down
141 changes: 0 additions & 141 deletions src/plots/formalize.test.ts

This file was deleted.

Loading
Loading