Document: loomworks-restore-engagement-creation-affordance-scoping-note-v0_1
Version: v0.1
Status: scoping note — precedes a frontend CR. Shape settled below; one Operator decision (the affordance's exact form) confirms at CR drafting. Grounded in loomworks-create-flow-and-old-surface-omissions-inspection-v0_1.
Date: 2026-06-28
Origin: Operator observed on the live lens-home (/operator/engagement-navigation) that there is no way to create an engagement — no "+ Engagement" / create affordance anywhere on the surface.
Not a regression of capability: engagement creation is fully live end-to-end (engine + Companion); only the home's entry point was dropped when the new lens-home was built to mockups 3 & 4. This restores the entry point. The mockup is a baseline, not the spec — the create affordance is being kept.
You can create an engagement today — by speaking "create an engagement" to the Companion, or by going directly to the create page's URL. What's missing is a visible way in from the home where you manage your engagements. The old home had a "+ Engagement" button; the new home (built to a mockup that omitted it) doesn't. This adds a visible create entry point back to the home, opening the create conversation that already exists. Frontend only — nothing new is built underneath; the capability is already there.
The create capability is live on every layer except the home's entry point:
POST /me/engagements/create-from-conversation (the canonical creation path) plus the /seed* family (converse / extract / commit) plus the legacy field path POST /engagements, all mounted. Creation writes a real engagement with a versioned seed and a Memory event.create_engagement_entry / _active / _commit) with real handlers (not stubs) and prompt examples. A spoken "create an engagement" / "start a new project" already classifies and acts today — through any converse surface, including the home's voice mic (which routes to converse)./operator/create-engagement renders ChatView mode="create-engagement" and hints create_engagement_entry on the first turn. It works — but nothing links to it. Grep finds zero create affordances on the new home; the old "+ Engagement" lived in the deleted EngagementList/sidebar.The gap is exactly one thing: no visible affordance on the home. This is rewire, not rebuild — the inspection's highest-value, lowest-cost item.
No conflict — this restores a capability the seed's success conditions assume. The seed names creating an engagement (accumulating Memory against a seed) as a core operator action; an Operator who cannot reach creation from the home cannot perform the seed's first success condition. The "only show what is available" rule cuts toward this: creation IS available (live end-to-end), so it should appear on the surface — its absence is the surface failing to show an available capability, the same trap as the upload / navigation / mobile-transcript omissions.
The affordance is a visible create entry point on the lens-home that opens the existing create conversation — voice-first, consistent with the surface.
The create surface is conversational (ChatView mode="create-engagement"), not a field form. So the affordance does NOT pre-fill fields — there are none. It opens the create conversation, where the seed is built in dialogue (the same machinery the create page already drives). This also sets up the later Example-Generator integration cleanly: "inject the generated draft as the opening turn" lands in exactly this conversation.
Three forms the affordance could take. Lean: both 1 and 3 (a visible button AND a voice try-prompt) — the home already carries voice try-prompts ("open a project" · "what needs me") at top-right, so a create try-prompt is consistent and nearly free; a visible button serves the direct-manipulation path. Form 2 (rely on voice alone) is rejected — it leaves the capability invisible, violating "show what's available."
/operator/create-engagement (the existing page) or the create conversation in place. Direct-manipulation entry.
Open decision (confirm at CR drafting): the button's exact form and placement — a header "+ create" control, a card in the YOUR SPACE / YOUR ENGAGEMENTS zone, or a persistent control. Resolved against the real Home.tsx layout at CR time (see grounding-needed below). Lean: a header-level create control (the home's natural "act on the whole space" location), plus the try-prompt. Confirm.
/operator/create-engagement) exists and works — the affordance points at it (or opens its conversation in place).So the work is: add a visible create affordance to the home (button + try-prompt) that opens the existing create conversation. No engine change, no classifier change, no new flow code.
This scoping note is create-engagement only — deliberately narrow. The inspection found several other old-surface omissions (new-workspace entry point, saved-filters link, personal quick-capture input, orphaned system pages, the deleted engagement table / voice recognizer / inline reply card). Those are out of this scope — each is its own keep-or-drop decision, scoped separately. Bundling them here would turn a one-affordance rewire into a surface-wide rebuild. Create is the live pain and the precondition for the generator integration; it ships alone first.
(Named for the record, not for this CR: new-workspace and the orphaned system pages are also rewire-small "(a)" items — live but unlinked — and are the natural next omissions to restore after create. The voice-recognizer item is a genuine open design question, not a mechanical rebuild — it stays deferred to the navigation-routing decision.)
Home.tsx layout — the header / zone structure where a create control sits, and the exact try-prompt mechanism (so placement is grounded, not guessed). The inspection located Home.tsx:280-331 as having no create button; the CR grounds against the actual current file./operator/create-engagement (the existing page, simplest) or open the create conversation in place on the home (richer, but a larger change). Lean: navigate to the existing page first — smallest, reuses the working page as-is. The in-place option is a later refinement.
First of the restore work — live pain, smallest cost, and the precondition for the Example-Generator → create integration (which injects into this same create conversation). Independent of the source-model work and the seed-editor question. Ships on the Operator-Layer feat-companion-surface branch (where the home lives), frontend-only.
/operator/create-engagement page (lean, smallest) vs. open the create conversation in place on the home?DUNIN7 — Done In Seven LLC — Miami, Florida Loomworks — restore engagement-creation affordance — scoping note — v0.1 — 2026-06-28 Engagement creation is live end-to-end (engine + Companion + a working create page); only the home's entry point was dropped to a mockup. This restores a visible create affordance (button + voice try-prompt) opening the existing create conversation. Frontend-only, rewire not rebuild. Create-only — other omissions scoped separately.