[renderer] Wire epic dashboard to the deterministic renderer#354
Closed
leeovery wants to merge 3 commits into
Closed
[renderer] Wire epic dashboard to the deterministic renderer#354leeovery wants to merge 3 commits into
leeovery wants to merge 3 commits into
Conversation
Add epic-dashboard.cjs — renders the full epic state display (box title, three stage dividers, one tree per phase) from a buildEpicDetail-shaped object, using the generic renderer + conventions. Epic-specific composition (lifecycle labels, count summaries, ← source rows, impl progress) lives here. Adds titlecase() to conventions. Built and tested in isolation against the real data contract — no edits to the live discovery.cjs or epic-display-and-menu.md yet; that hookup is a small deliberate follow-up. 9 tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add a 'render <work_unit> [new_arrivals_json]' command to discovery.cjs that emits the finished dashboard block via epic-dashboard.cjs (the display surface); the default data-dump output (reasoning surface) is untouched, so other consumers are unaffected. Complete epic-dashboard with the stage-meta callouts (seeded / imports / new-arrivals). 43 tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace section A's hand-drawn template + the ~100-line 'Stage and tree
display rules' with a call to 'discovery.cjs render {work_unit}', emitted
verbatim in a code block. The renderer (epic-dashboard.cjs) owns all the
gutter/wrap/branch math; the skill just runs it and shows the result.
Keeps the no-map 'Otherwise' branch self-contained (still hand-drawn,
wiring it is a follow-up). Net -94 lines of prose.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Owner
Author
|
Winding this back. It was a valuable end-to-end spike — it proved the renderer covers the epic dashboard from real data — but we're pausing the live integration to design the data-handler architecture properly first (one central data handler, per-skill thin entries, schema-driven projections). The diff stays here for reference; renderer core lives in #348/#351. |
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.
Summary
Stacked on #351. Makes the epic state display render via the deterministic renderer instead of being hand-drawn inline.
epic-dashboard.cjs(new) —renderEpicDashboard(epic)assembles the entire dashboard (box title, three stage dividers, one tree per phase, stage-meta callouts) from abuildEpicDetail-shaped object, using the generic renderer ([renderer] Tree shape — discovery-map renderer (spike → keeper) #351) + conventions. Epic-specific composition (lifecycle labels, count summaries,←source rows, impl progress, seed/import/new-arrival callouts) lives here;titlecase()added to conventions.discovery.cjs— newrender <work_unit> [new_arrivals_json]command that emits the finished block (the display surface) in-process; the default data-dump output (the reasoning surface) is untouched, so every other consumer is unaffected.epic-display-and-menu.md— the "non-empty map" branch drops from ~103 lines (hand-drawn template + the whole "Stage and tree display rules") to 7: run the command, emit verbatim. Net −94 lines of prose. The no-map "Otherwise" branch is kept self-contained (still hand-drawn; wiring it + its recommendation logic is a follow-up).Intentional visual changes from the old hand-drawing (all previously agreed):
↳ From …provenance, 8-col body gutter, width-72 wrapping with the gutter-orphan bug now impossible.Test plan
node --test tests/scripts/test-render.cjs tests/scripts/test-epic-dashboard.cjs— 43 tests (renderer + epic-dashboard: helpers, full render, callouts).buildEpicDetailfixture; therendercommand errors cleanly when the work unit isn't an active epic..workflows/manifest is not exercised here (this repo has none); the data path reuses the battle-testeddiscover().🤖 Generated with Claude Code