Document: loomworks-create-stage-three-doors-scoping-note-v0_1
Version: v0.1
Status: scoping note — precedes one or more CRs. Captures a settled design shape, not a build plan. Grounded in the Example-Generator inspection (loomworks-marketing @ 3328a61), the create-page inspection (the empty create conversation), and the seed-viewer/seed-editor grounding. Several build details are deliberately left to per-CR grounding.
Date: 2026-06-28
Origin: Began as "the create page doesn't invite activity" (a screenshot of the deprecated create page — old menu-bar shell). Developed through: the page is abandoned → build create fresh → it should conclude in the generator or the seed → is seed creation a conversation or a generator? → two doors → the resultant seed is official, therefore editable → a third door for the already-documented Operator (PRD). This note preserves that trajectory because the destination only makes sense against the path.
Creating an engagement means producing its seed — the foundation document (what the work is, who it's for, the voice, the constraints, what success looks like). Operators arrive in different states, so there should be three clearly-marked ways in, all ending at the same committed seed:
All three end in one seed. The moment you commit it, the seed is official — and an official seed can be viewed and revised. Creating, viewing, and editing a seed are one continuous lifecycle, not three separate features.
The Operator set two non-negotiables, and every part of this note answers to them:
This shape was reached by correcting earlier positions, and the rejected paths are part of the record:
The destination — three doors, finishing-step matched to door, one resultant seed — is what survived these corrections.
The doors are not three implementations of one act. They serve three genuinely different starting materials and three levels of pre-formed confidence — and the finishing step matches the confidence level.
ChatView mode="create-engagement"). But it currently opens empty (a regression — see below), which is the immediate defect.loomworks.doneinseven.com/example-generator). Four questions (work / audience / done / constraints), a server-validated structured foundation-draft JSON capturing 4 of the 5 commitments. But it dead-ends — "persists NOTHING, no engine call, no engagement"; copy/download/print only. The boundary to the product is uncrossed for this feature (though the request-credits page already crosses with the PUBLIC_ENGINE_API_URL idiom — so the pattern is proven).Earlier in the trajectory the conversation was cast as the single finishing room all doors funnel through. The PRD insight corrected this. The finishing step varies by the Operator's confidence in what they brought:
| Door | Pre-formed confidence | Finishing step | |---|---|---| | Talk it through | low (discovering) | converse (the talking is the work) | | I'll tell you | medium (roughed in) | light refinement + supply the voice | | Here's my specification | high (finished spec) | mapping review; converse only if thin |
All three still converge on one merged resultant seed — the finishing step differs, the destination does not.
what_the_work_is, who_consumes_the_work, voice_of_the_work, constraints, success_conditions).The Operator's closing point: because the resultant seed is official, it is available for editing. This makes create / view / edit one continuous lifecycle of a single object:
The same five commitments, three moments: formed → read → revised. The instant a seed is official (committed), it is viewable and editable — no limbo. And the create conversation (door 1) and the edit conversation are the same conversational mechanism (propose → Operator approves → commit → prior-preserved, via the considerations machinery) pointed at a forming seed vs. an existing one. Create writes version 1; edit writes version N+1. This is why "only show what's available" holds across the lifecycle: before a seed is official there is nothing to view or edit (those affordances don't appear); the moment it's official they become available, because now there's something to act on.
The create conversation opening empty (no greeting, no priming — the screenshot's bare box) was found to be a frontend wiring gap over a ready engine: the engine's create_engagement_entry template is built to speak first (greet + ask the first question), but ChatView never fires the opening converse call on mount (it only sends from handleSend, which requires a typed message). The old Workshop surface also had a static greeting the rebuild dropped. So the conversation door's "empty" state is a real defect — but it is not a separate bug to fix in isolation. The conversation is the finishing room that all three doors feed; it must handle arriving empty (door 1 — fire the opening greeting), arriving with a generated draft (door 2 — the draft is the opening state), and arriving with a document extraction to review (door 3 — though door 3's primary finish is the mapping-review surface, not the conversation). Fixing the empty open and building door 1's warm start are the same work.
The Example Generator lives on the marketing domain; the product is the operator app. A door-2 or door-3 flow that carries material into the product crosses that boundary. It is not the first crossing — request-credits.astro already POSTs to the engine via an env-var-gated URL (PUBLIC_ENGINE_API_URL) with a graceful unset-fallback (Phase 51 alpha posture). Any door-2/door-3 crossing should follow that proven idiom, not invent a new mechanism.
The generator refuses (in code, three layers) to call its output "a seed" — its hardcoded label says the output is "a draft toward the engagement's Foundation Document … made real inside Loomworks, through the create-engagement conversation." This is not an obstacle; it names the exact bridge this design formalizes. The generator already models its own relation to the seed correctly: it produces material; the seed is committed in Loomworks, by the Operator. Doors 2 and 3 both honor this — they carry material across; the commit remains a Loomworks-side, Operator-authority act.
Door 3 is the door that brings a real external source (the uploaded document). Under the trust-axis = tie-to-source principle, the resultant seed's commitments could carry an outward thread to the source document ("voice = warm, derived from [the uploaded PRD]"). This is provenance doors 1 and 2 don't naturally produce. Whether to thread document-provenance into the seed is a design question for the door-3 CR — flagged, not settled.
Aligned. The seed is the engagement's foundation; this names three ways to author it, all converging on the seed's committed, versioned, Operator-authority form. "Only show what's available" governs the lifecycle (view/edit appear when the seed is official). Operator-authority governs the commit (machine assembles, Operator approves — no auto-commit on any door). Corrections-preserved governs versioning (every door's commit is version-aware; edit preserves priors). The document door's provenance thread is the trust-axis principle applied to an external source. No apparent conflict with the seed's commitments — this elaborates how a seed is authored, which the seed does not constrain.
This note captures the shape. The build is large and should stage. A natural ordering (to confirm per-CR):
foundation-draft across the boundary (the request-credits idiom) into the create conversation as its opening state; collect the voice in the conversation; commit. The real new-capability for door 2.
Each stage is its own CR with its own Step-0 grounding. The seed editor (CR'd, dcd25bb) and seed viewer (built) are the lifecycle's view/edit stages and are not part of this note's build — they're the destination this create stage feeds into.
DUNIN7 — Done In Seven LLC — Miami, Florida Loomworks — engagement create stage: three doors to one seed — scoping note — v0.1 — 2026-06-28 Creating an engagement's seed has three clearly-identified doors matched to the Operator's state: talk it through (conversation, for the still-forming), I'll tell you (the Example Generator, for the articulable), and here's my specification (a net-new PRD/document converter, for the already-documented). The finishing step matches the door — converse / refine / mapping-review — but all three converge on one merged resultant seed, Operator-committed. The moment it's official it is viewable and editable: create, view, and edit are one lifecycle of one object. The empty-create-conversation regression dissolves into door 1's finishing room. Boundary crossings follow the proven request-credits idiom. Build stages: door-1 fix → door-2 bridge → door-3 converter.