Context
T3.4 of the harness pillar (#13349), against the merged chat-creation SSOT's composing state. The wedge (PR #14727) renders the five states; the composing branch currently shows the intent text only. The SSOT draws a blueprint preview card: the route-validated candidate rendered AS STRUCTURE (schema badge, title, column chips, row count) so the human confirms shape before the accept path instantiates — the human-gate half of the emit-validate/accept-validate sandwich.
The Fix
- A
BlueprintPreview component in the create module (view/create/, class-based per the recorded core-idiom convention — reactive configs, set() batching, view state via the CreationStateProvider bindings; NO external state modules).
- Renders from provider
data (the route outcome's accepted blueprint parked on the provider between route-accept and accept-confirm): schema id badge (grid@1), title, per-column chips (field → text), data row count. Pure render — the blueprint object is display truth, never mutated here.
- Two affordances: confirm (→ the controller's accept path, existing) and edit (→ back to composing with the intent restored — the SSOT's no-dead-end rule).
- Structural firewall inherited: the preview renders ONLY allowlisted config keys (iterate the schema registry's allowlist, never
Object.keys of the candidate — render-side symmetry with the validator).
Acceptance Criteria
Out of Scope
Live render-verify/e2e (#14734's scope grows one assertion) · mutation preview (T2.12's follow-up once its grammar lands) · non-grid schemas (registry-driven by construction — arrives free with the next schema registration).
Related
Parent #13349 (T3.4) · the merged SSOT (the drawn bar) · PR #14727 (the wedge this slots into) · the blueprint schema registry (the allowlist source) · the core-idiom convention (recorded).
Claimable — non-Fable implementable; the SSOT drawing + the provider contract fully specify it.
Origin Session ID: b9b95ac6-42f5-47a3-b58f-6071f79657e8
Retrieval Hint: "keeper blueprint preview composing card schema badge column chips confirm edit affordance"
Context
T3.4 of the harness pillar (#13349), against the merged chat-creation SSOT's composing state. The wedge (PR #14727) renders the five states; the composing branch currently shows the intent text only. The SSOT draws a blueprint preview card: the route-validated candidate rendered AS STRUCTURE (schema badge, title, column chips, row count) so the human confirms shape before the accept path instantiates — the human-gate half of the emit-validate/accept-validate sandwich.
The Fix
BlueprintPreviewcomponent in the create module (view/create/, class-based per the recorded core-idiom convention — reactive configs,set()batching, view state via the CreationStateProvider bindings; NO external state modules).data(the route outcome's accepted blueprint parked on the provider between route-accept and accept-confirm): schema id badge (grid@1), title, per-column chips (field → text), data row count. Pure render — the blueprint object is display truth, never mutated here.Object.keysof the candidate — render-side symmetry with the validator).Acceptance Criteria
Out of Scope
Live render-verify/e2e (#14734's scope grows one assertion) · mutation preview (T2.12's follow-up once its grammar lands) · non-grid schemas (registry-driven by construction — arrives free with the next schema registration).
Related
Parent #13349 (T3.4) · the merged SSOT (the drawn bar) · PR #14727 (the wedge this slots into) · the blueprint schema registry (the allowlist source) · the core-idiom convention (recorded).
Claimable — non-Fable implementable; the SSOT drawing + the provider contract fully specify it.
Origin Session ID: b9b95ac6-42f5-47a3-b58f-6071f79657e8 Retrieval Hint: "keeper blueprint preview composing card schema badge column chips confirm edit affordance"