Skip to content
Skip to main content
Novel Systems home
Decision log
D-055August 5, 2026

Provision · Commission · Monitor ships as a diagram after all, superseding D-053

Decided

/smart-tech#workflow now renders an SVG pipeline above the three cards, from md up. D-053 declined to build this. That decision is superseded, not reversed on a whim — its reasoning was sound about a different drawing.

Affects: components/smart-tech/workflow-diagram.tsx (new), app/smart-tech/page.tsx (#workflow), lib/tech-architecture.ts (WorkflowStage.handoff)

What D-053 said, and where it was right. It argued that a row of three boxes with arrows between them carries only ordering, that the eyebrow already states the ordering, and that every diagram added is a new artifact that can go stale and therefore needs a render guard like check:diagram. All three points hold against the diagram it was imagining.

What changed. The first point stops applying once the arrows are labelled. This page's claim is not that three stages happen in an order — every controls vendor claims that. It is that the artifact leaving one stage is the literal input to the next, with no re-keying between them. That claim was on the page already, split across the In/Out pairs of adjacent cards, which requires the reader to hold card one's "Out" in their head and compare it to card two's "In". On a connector the two are a single label. Same claim, one less step to see it.

The third point stops applying because there is no second artifact. The figure is a server component computed from HARDWARE_WORKFLOW_STAGES — node positions derived from the array length, labels read off each stage. check:diagram exists because docs/architecture.png is rendered by a browser on a Mac and can fall silently behind its mermaid source. Nothing here can fall behind: rename a stage and the SVG renames with it; change the shape and tsc fails.

The cost accepted. WorkflowStage gained a handoff field — leaves, short enough for a connector — and the two must be kept in agreement by hand. Truncating leaves to fit was tried and rejected: *"KNX group-address and DALI-2 short-address tables, in importable form"* cut to a character count gives *"KNX group-address and DALI-2 short-add…"*, which is not the name of anything.

What would have to change for this to be wrong. If the workflow gained a branch — a stage with two possible successors — a linear pipeline would misstate it, and the figure would need to become a real graph or go away again.