The all-sessions coverage GET dies: the per-session block is the coverage surface

Extraction-UX close-out interlude (master dispatch 2026-09-24, off UI's
ff1ec7a confirmation): nothing client-side consumes GET /api/graph/coverage
— the sidebar block and the chat-bar ring both read GET /api/chats/[id]'s
coverage block. The dead route (app/api/graph/coverage/route.ts) is
deleted; the manual-extract front door (POST /api/graph/coverage/extract)
stays by design.

No server helper was orphaned — the route was composition-only over
shared seams (chatStore, extractionStatuses, stores, coverageOf). The
sessionCoverage doc + the chats/[id] route comment now point at the
per-session block as THE coverage surface.

Pin (tests/coverage.test.ts): the route file's absence (prompt-overrides'
structural-pin precedent) + the Extract POST's survival — a merge cannot
resurrect the dead surface silently.
This commit is contained in:
amosblomqvist
2026-09-24 15:29:01 +03:00
parent bc1f668e2a
commit 3327309e8b
4 changed files with 22 additions and 47 deletions
+3 -2
View File
@@ -7,8 +7,9 @@ export async function GET(_req: Request, { params }: { params: Promise<{ id: str
// turnInFlight lets a returning client re-attach to a running turn
// (chat-handler write-ahead + registry — see src/server/turn-liveness.ts).
// coverage (extraction-UX redesign, 2026-09-24): the chat view's ring
// meter — one session's read of the same derivation /api/graph/coverage
// serves for all sessions. getChat already 404'd, so the block exists.
// meter + sidebar block — THE coverage surface (the all-sessions GET
// route died with the redesign; the Extract POST stays). getChat
// already 404'd, so the block exists.
return Response.json({ ...chat, turnInFlight: isTurnRunning(id), coverage: sessionCoverage(id) });
}