WP10b: maintenance review UI — console Review page + review routes + WP10a carry-ins#4
Merged
Conversation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y8dLVL6RXWPxNNPMx1jr17
Budget check ahead of summarizer invocation (a hit budget never pays for an Ollama generation); CLI --namespace against a missing DB exits 2 without creating an empty file; Store.path declared on the ABC; the apply/auto-spawn asymmetry documented in memory_maintenance_run on both surfaces and in spawn_maintenance. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y8dLVL6RXWPxNNPMx1jr17
…e gateway Five auth-gated /views routes mirroring the views-router pattern (reserved-ns + existence guard, late require_auth import), registered before the static catch-all. All engine access through EngineGateway; CAS already-decided/ already-applied outcomes map to HTTP 409 with the body passed through. Queue reads go through the gateway deliberately — review_queue lazily expires overdue proposals, so a raw read-only path would fork that behavior. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y8dLVL6RXWPxNNPMx1jr17
…nd verbs Status header with dry-run/apply-behind-confirm maintenance buttons; entity groups with batch approve; per-kind evidence cards (near-dup texts + cosine, summarize sources + proposed text, evict score evidence); Approve / Keep / Edit-then-approve / Promote. Decisions are optimistic with 409 'already decided elsewhere' refresh; non-409 anomaly outcomes (expired/not_found/ invalid_decision) surface a notice instead of passing as success; a monotonic request token guards imperative reloads against cross-namespace state bleed; ApiError now carries the parsed error body so the 409 pass-through is usable. Commits ui/package-lock.json (none existed) so typecheck/build are pinned. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y8dLVL6RXWPxNNPMx1jr17
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y8dLVL6RXWPxNNPMx1jr17
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements WP10b per the claimed packet (plan:
docs/superpowers/plans/2026-07-17-wp10b-review-ui.md; design: spec §8.1 ofdocs/superpowers/specs/2026-07-16-sleep-time-maintenance-design.md).What's in it
routes/review.py): five auth-gated endpoints — queue / decide / promote / maintenance status / maintenance run (dry-run default) — all reaching the engine only throughEngineGateway; CAS double-decides surface as HTTP 409 with the lifecycle outcome passed through. Registered before the static catch-all (the 405-swallowing regression class).ui/src/pages/Review.tsx): entity-grouped pending proposals with per-kind evidence (near-dup texts + cosine, summarize sources + proposed text, evict score evidence), Approve / Keep / Edit-then-approve / Promote, batch approve per group, run-maintenance buttons (apply behind a confirm). Optimistic decisions with 409 "already decided elsewhere" refresh; non-409 anomaly outcomes surface a notice; a monotonic request token guards imperative reloads against cross-namespace state bleed.Store.pathon the ABC, apply/auto-spawn asymmetry documented in the tool docstrings on both surfaces.ui/package-lock.json(none existed) to pin the typecheck/build gates.Design note
Queue reads deliberately go through the gateway rather than the read-only
inspect_sqlpath sketched in spec §8.1: WP10a implementedreview_queuewith lazy expiry of overdue proposals (a write), so a raw read path would fork that behavior. Recorded in the plan.Verification
tsc --noEmitclean ·vite buildclean.🤖 Generated with Claude Code
https://claude.ai/code/session_01Y8dLVL6RXWPxNNPMx1jr17