Skip to content

feat(engine): finding + findings-summary surfaces — review-findings loop unified#491

Merged
leeovery merged 1 commit into
mainfrom
feat/render-findings-gates
Jul 22, 2026
Merged

feat(engine): finding + findings-summary surfaces — review-findings loop unified#491
leeovery merged 1 commit into
mainfrom
feat/render-findings-gates

Conversation

@leeovery

@leeovery leeovery commented Jul 21, 2026

Copy link
Copy Markdown
Owner

Stage 2 of the render-surfaces programme (design log: #489; base: #490). The findings/approval family: one surface pair now serves both review-findings loops — workflow-planning-process and workflow-specification-process carried near-identical ~240-line reference twins whose displays, frames, and gate menus all now come from the engine.

Surfaces

render findings-summary <wu>.<phase>.<topic> --file <payload> — the numbered overview ({review_label} — N items found), summaries in the · subsection grammar, and the working-through line, one section.

render finding <wu>.<phase>.<topic> --file <payload> — one finding end-to-end:

  • DISPLAY: finding — title, [label, value] meta pairs (each consumer's own vocabulary), details.
  • The proposal, either as DISPLAY: finding content (markdown, full content) or as the framed diff in three sections — frame open, diff body emitted as a ```diff fence (colouring survives), frame close. Borders computed from actual content width (the Portal defect, fixed user-visibly) and capped at 100 so a border never wraps; unwrappable diff lines may overflow past the cap.
  • The gate: MENU: finding gate when finding_gate_mode is gated (with v/view full offered only for diff findings) or DISPLAY: finding auto-approved when auto — per-consumer apply/applied/feedback labels ride in the payload.

Contract notes: tracking files are markdown, so per D2 the model reads them and hands validated JSON (11 loud validation cases); the gate-mode read and branch left both prose files entirely.

Test plan

  • 12 new tests: byte-exact summary, gated diff render (frame min-width, view-full presence), maxWidth border cap, content+auto variant, loud validation for both surfaces.
  • npm test — 1485/1485. Typecheck + conventions lint clean.

🤖 Generated with Claude Code

Stack

  1. feat(engine): discovery-map add-batch + cache purge at close (D7 one-call) #495
  2. feat(engine): render surface catalogue — resume-gate and task-list pilots #490
  3. feat(engine): finding + findings-summary surfaces — review-findings loop unified #491 👈 current
  4. feat(engine): task-gate surfaces — proposed-task, tasks-overview, author-task-gate, phase-tree #492
  5. feat(engine): selection projection + bridge continuation surfaces #493
  6. feat(engine): transaction confirmation sections — lifecycle verbs carry their own chrome #496
  7. feat(engine): entry-gate + phase-note — entry validation derives engine-side #497
  8. feat(engine): the fence is the frame — boxedFrame retired (D8) #498
  9. feat(engine): topic complete + discovery-session close fold their kb warnings (7a) #499
  10. feat(engine): resume-gate variants + entry-gate --own + phase-completed --paths (7b) #500
  11. test(conventions): templated-fence ratchet — check 13 lands D4 (7c) #501

…ings loop unified

One payload-driven surface pair now serves both review-findings loops
(planning and specification), whose reference files were near-identical
twins. Tracking files are markdown, so the model reads them and hands a
validated JSON payload; the gate mode is manifest state at the address,
and the surface returns the gate menu or the post-apply auto line.
Per-consumer verbs (apply/applied/feedback labels) ride in the payload.

The diff presentation returns the boxed frame as three sections — open
rule, diff body (emitted as a ```diff fence so colouring survives),
close rule — with borders computed from content width and capped at 100
so the border itself never wraps. Both references swapped; menu, meta
block, diff frame, summary overview, and auto lines all deleted from
prose.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@leeovery
leeovery force-pushed the feat/render-findings-gates branch from 7169d34 to d367029 Compare July 22, 2026 14:24
@leeovery
leeovery merged commit 0d68a8d into main Jul 22, 2026
@leeovery
leeovery deleted the feat/render-findings-gates branch July 22, 2026 15:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant