rotatingMachine template + predicted-vs-measured composition rule #37
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type: slice
Depends on: #34, #35
Estimate: L (3 days)
Slice — layers touched
templates (
rotatingMachine.json) → dashboardAPI domain (predicted/measured pair logic) → editor (folder structure) → integration test → example flow update.Context
Implements PRD F-6 and F-7. Adds the second supported node type and the composition rule for paired predicted/measured panels.
Scope
src/templates/rotatingMachine.jsonwith panels:%control,flow,Δp,efficiency. Each panel declares itsemittedFieldsset (used by the no-data-duplication slice).measurementchild registered for the same quantity (e.g. flow) — render two side-by-side panels (predicted left, measured right) instead of one. If only predicted, one panel. If only measured, one panel.Out of scope
Acceptance criteria
Slice #37 shipped on branch
slice/37-rotatingmachine-templateBranches:
dashboardAPI·EVOLVScope reduction — important architectural note
The existing
config/machine.jsontemplate already covers the PRD F-6 panel set (state, mode, ctrl%, runtime, NCog%, flow predicted, efficiency, pressure up/down, temperature, prediction quality, confidence, drift, distance from peak) — 17 panels total, more than the PRD asked for.The substantive new work was therefore narrower than the issue body implied:
meta.emittedFieldsannotation per panel inmachine.json+machineGroup.json— needed by #39's parent dedup rule.collectEmittedFields(dashboard)helper on the domain class.Deferred: F-7 predicted-vs-measured side-by-side
The current architecture is "1 dashboard per node" (each child gets its own dashboard, cross-linked from the parent root dashboard). Side-by-side rendering of
predicted(rotatingMachine dashboard) andmeasured(measurement child dashboard) on the SAME panel would require refactoring the composer from N-dashboards-per-flow to 1-dashboard-with-N-panels, plus composer-side awareness of registered measurement children and their${measurement}substitution.That's a v2 lift. The drill-down navigation (root → click child link → see measured values) covers the use case for now. Flag for revisit if the comparison UX matters more than the screen-space savings.
Closes #37.