- Status: Accepted; §Decision.2 + W2 (below) superseded 2026-07-27 by the tab removal
- Date: 2026-07-14
- Deciders: maintainer
- Scope:
apps/web— theworkflowsidebar section, its Workflow header tab - Supersedes: ADR 0067 §Decision.2 and invariant W2
- Superseded in part by: the Workflow/Screen tab removal (
7be0e11, product decision) — seedocs/workflow/contract.md
⚠️ Read this first. The Workflow / Screen tabs were removed on 2026-07-27 (
7be0e11): the section is now a single Workflow Studio view. Everything below about "both tabs" — §Decision.2 ("Tela on both canvas-class tabs") and the reversed W2 ("both tabs host Tela") — is historical. The live rule is: one view, exactly oneTela. This ADR's core decision (Workflow hosts the artboard Studio editor, not the React Flow graph) still holds; only the two-tab framing is retired. Current invariants live indocs/workflow/contract.md.
Context
ADR 0067 split the workflow section into two
header tabs: Workflow (the React Flow graph of screens + edges) and Screen
(one adaptive screen with Tela). Its invariant W2 pinned "Tela is present only
on the Screen tab; the Workflow graph never renders Tela / a device frame."
In practice the graph was never the surface the maintainer wanted first on entry.
The 71e0a00 commit had already built the intended Workflow surface — a free 2D
Studio editor of composition artboards (ArtboardsCanvas: Tela strip on top,
Layers rail, Punta inspector, Dito primitive picker, its own ruler + zoom pill +
Library panel) — before the two-tab split moved the graph back onto the Workflow
tab and left ArtboardsCanvas mounted nowhere. ADR 0067's own Context even
records the intended wiring as workflow → ArtboardsCanvas, fallback WorkflowCanvas.
The maintainer's decision (2026-07-14): the Workflow tab is the artboard Studio
editor, not the graph. This puts Tela on the Workflow tab, which W2 forbade — so
W2 is reversed here rather than worked around inline (per docs/workflow/contract.md
§Versioning, a Tela-placement change requires an ADR amendment).
Decision
-
The Workflow tab renders the artboard Studio editor. The
view === "workflow"branch ofapp/app/workflow/page.tsxmounts the standard Studio composition —StudioDndShellwrappingLayersSidebar+Tela+ArtboardsCanvas+PuntaDito— identical in shape to/app/library(ADR 0063) and to the Screen tab. This restores the71e0a00surface.
-
Tela is present on both canvas-class tabs. Both Workflow (free 2D artboard canvas) and Screen (single adaptive project screen) host Tela and the Studio rails. The tabs differ by canvas type, not by Tela presence:
- Workflow —
ArtboardsCanvas: a pan/zoom world of many composition artboards, each an independently editable studio-bus tree. - Screen — the project's own screen canvas: one project screen filling the canvas edge-to-edge.
- Workflow —
-
Invariant W2 is retired and replaced (see
docs/workflow/contract.md): the new rule is Tela is present on every canvas-class view; the retired React Flow graph is the only Tela-less workflow surface, and it is no longer mounted. -
The screen-flow graph is retained, not deleted.
WorkflowCanvas(components/workflow-canvas.tsx) stays in the repo — it is still consumed byapp/share/page.tsx— but is no longer mounted on/app/workflow. Where the graph lives long-term (its own tab, a zoom-out mode, or dropped) is left open.
Consequences
- W1 wording changes. "Workflow is first and active on mount" still holds; the
clause "shows the graph, never Screen" becomes "shows the artboard Studio editor,
never Screen." Updated in
contract.md/scenarios.md. - W2 is reversed. Both tabs host Tela. The scenario
S2is rewritten from "Tela only on Screen" to "Tela on every canvas-class view." - Two Studio surfaces now share the page. Workflow and Screen render the same
rail composition around different center canvases. The rails act on whichever
studio-bus tree is active; each tab owns its own active-tree lifecycle
(
ArtboardsCanvasdefault-selects the first composition artboard on mount). - Graph is dormant, recoverable. No behavioural regression for
share/(still importsWorkflowCanvas); re-mounting the graph later is a one-line change.
Alternatives considered
- Keep the graph on Workflow, put the artboard editor on Screen — rejected by the maintainer (chose the artboard editor on the Workflow tab explicitly).
- A third "Artboards" tab — rejected as premature; the artboard canvas is the Workflow surface, not an additional one. Revisit only if the graph earns its own tab back.
- Delete
WorkflowCanvas— rejected;share/still uses it and the graph may return. Dormant-but-present is cheaper than a re-write.
Implementation (2026-07-14, feat/sorg-layout)
app/app/workflow/page.tsx—view === "workflow"branch swapped fromPersistenceLoader > WorkflowCanvastoStudioDndShell > LayersSidebar + Tela + ArtboardsCanvas + Punta + Dito.PersistenceLoader/WorkflowCanvasimports dropped from this file (still used elsewhere). Workflow tabhintupdated.docs/workflow/contract.md,docs/workflow/scenarios.md— W1/W2 + S1/S2 updated.docs/adr/0067-workflow-screen-surface.md— Status annotated "§Decision.2 & W2 superseded by ADR 0069."