LearnNewsExamplesServices
Frontmatter
id14720
titleKeeper chat surface: the five-state view binding against the merged SSOT (T3.3)
stateClosed
labels
enhancementai
assigneesneo-fable
createdAt10:44 AM
updatedAt2:54 PM
githubUrlhttps://github.com/neomjs/neo/issues/14720
authorneo-fable
commentsCount0
parentIssue13349
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAt2:54 PM

Keeper chat surface: the five-state view binding against the merged SSOT (T3.3)

Closed Backlog/active-chunk-3 enhancementai
neo-fable
neo-fable commented on 10:44 AM

Context

T3.3 of the harness pillar (#13349) — the first PRODUCT-FACING view leaf: the chat-creation surface that renders Grace's render-verified SSOT (#14645 / PR #14692 — at review, the last gate of the SSOT pair) by binding the create-module spine built this cycle. This is the operator's wedge made visible: a stranger types an intent and gets a live app.

The Fix

The create-module view (per the recorded module convention, apps/agentos/view/create/):

  • A view (Container + Controller per house pattern) whose five render branches bind data.flowState from CreationStateProvider — one branch per SSOT state (empty · composing · generating · materialized · error), matching the drawn bar exactly (the empty invitation single-affordance, the blueprint preview, the cancellable progress, the live-panel + promote affordance, the always-a-reason error with edit-and-retry).
  • User events dispatch through the provider's applyFlowEvent (the ONE writer); the submit path calls routeCreationRequest (the merged #14655 route) with the intake text, then applyCreationRouteOutcome + acceptBlueprint (#14689) on acceptance — the stage add → insert seam does the instantiation, the registrar writes the registry.
  • data.flowReason renders the ERROR state's reason verbatim (the refusal vocabulary surfaces to the human unchanged).
  • Bindings only: no component-local flow booleans (the #14711/#14718 contract), instance data read via stores.createdInstances.

§9.6 Core-Idiom Pre-Flight (to be recorded at intake): src/core/Base.mjs, src/Neo.mjs, src/state/Provider.mjs read this session by the claimant; the view leaf adds src/component/Base.mjs / container + controller contracts at intake time.

Acceptance Criteria

  • All five SSOT states BOUND as render branches on provider data, matching the drawn bar structurally. (The LIVE browser render-verify moved to #14734 at PR-review — it requires the merge train on dev.)
  • Flow state exclusively via provider bindings + applyFlowEvent/applyCreationRouteOutcome — zero flow booleans anywhere in the view (the §7.5.1 audit line).
  • The happy wedge through the REAL spine (unit grain): typed intent → route → accept path → stage insert → registry record present. (The live-surface e2e proof = #14734.)
  • The refusal wedge live: a gate-refused blueprint lands ERROR with the pipeline reason rendered, edit-and-retry recovers.
  • Unit spec for the controller's dispatch mapping through the real spine. (Visual/e2e proof split to #14734 — blocked on the merge train by construction.)

Blocked-by (implementation; the spec binds the SSOT artifact CONTENT — PR #14692 merging joins the gate list)

PR #14710 (accept path) · PR #14712 (transition oracle) · PR #14719 (state provider) · PR #14692 (the SSOT itself — unstick package posted 09:03) — this leaf imports the first three and renders the fourth.

Out of Scope

The promote/dock mechanics beyond the affordance (dock lane) · NL provider wiring (the injected generate stays a double until its leaf) · pane chrome beyond this surface · theming (#14681).

Related

Parent #13349 (T3.3) · #14645/PR #14692 (the SSOT — the bar; at review) · #14718/PR #14719 (the provider this binds) · #14711/PR #14712 (the oracle) · #14689/PR #14710 (the accept path) · #14655/#14656 (merged route + registry).

First-claim: @neo-fable (create-stack continuity; claims at the gates' merge). Claimable by anyone sooner — the spec is complete.

Origin Session ID: b9b95ac6-42f5-47a3-b58f-6071f79657e8 Retrieval Hint: "keeper chat surface five state view binding provider wedge stranger intent live app"

tobiu referenced in commit 4cdcf7d - "feat(agentos): the keeper chat surface — five SSOT states bound to the create spine (#14720) (#14727) on 2:54 PM
tobiu closed this issue on 2:54 PM