Skip to content

feat: add the declarative .oven system and React oven kit#13

Open
apresmoi wants to merge 90 commits into
mainfrom
feat/ovens
Open

feat: add the declarative .oven system and React oven kit#13
apresmoi wants to merge 90 commits into
mainfrom
feat/ovens

Conversation

@apresmoi

@apresmoi apresmoi commented Jul 20, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Componentize all five ovens into a shared React component library (dashboard/src/oven/) at 100% visual and behavioral parity with the previous UI.
  • Add the declarative .oven system: an XML authoring format compiled to a frozen IR and rendered by a shared reducer-backed OvenRuntime. All five ovens (Checklist, Streaming Diff, Differential Testing, Visual Parity, Performance Tracing) render live from a .oven at byte-identical DOM parity.
  • Minimize the oven footprint: .ir.json is generated at build time (no longer committed), detail.json is removed via a schema-v5 oven migration (legacy runs still read), and each oven is now <id>.oven + instructions.md + a thin engine data layer.
  • Support consumer-authored custom ovens end to end: burnlist oven create/fork plus a generic dashboard render path that serves and renders a bound custom oven's data.
  • Add onboarding and authoring docs to the skill and website: a start-here mental-model guide, a .oven DSL reference, and a "designing ovens: measure what you can't fake" guide. The generated skill.md leads with concepts, setup, and honest-measurement.

Validation

  • npm run build:dashboard, npm run verify, and npm run verify:package pass on Node 18.20.8, 20.19.6, and 22.
  • DOM goldens are byte-identical and timezone-independent; the five ovens' rendered DOM is unchanged through the migration.
  • cd website && npm run build passes.
  • Live-integration and edge cases (compact bundles, 304 Not Modified polling, oven fork ids, switch default cases, malformed input) have dedicated behavioral tests alongside the DOM goldens.

Structure

  • Roughly 16.7k of the changed lines are DOM goldens (byte-frozen render snapshots under **/goldens/ and *.golden.html).
  • Read order: dashboard/src/oven/ (the React oven kit) → src/ovens/dsl/ (the .oven XML → IR compiler) → dashboard/src/oven/runtime/ (OvenRuntime, reducer, collection pipeline, adapters, poll transport) → ovens/<id>/ (the five .oven files + thin engine data layer) → src/server/ + src/cli/ (custom-oven discovery, create/fork, generic render + data serving) → skills/burnlist/ + website/ (skill, docs, onboarding).
  • The DT vanilla renderer (dashboard/src/oven/differential-testing-render/*.js), the DT engine, and the dashboard server are pre-existing files relocated during the migration; they back the frozen golden oracle (AGENTS.md names them as decomposition targets). Newly-authored logic files are ≤400 lines.

Notes

  • Root dependencies stays empty (zero runtime dependencies); the engine layer stays .mjs.

apresmoi added 30 commits July 18, 2026 17:40
…/DomainNote/ImageTriptych/FrameCard) into oven components
…-drop, inflight coalescing, scenario/field-view)
…nation, empty views) + capture root className
…eldRows/visibleFields) into render module (region 2)
…lock) into differential-testing-template.js (region 3, verbatim)
…d->ovens css imports; delete VP/SD renderer folders
…to oracle goldens (differential-testing region 7)
apresmoi added 30 commits July 19, 2026 12:06
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