Resolves #14764
Adds the create-module blueprint preview card between route acceptance and accept-path materialization. The controller now parks a validated candidate on the CreationStateProvider, renders it through a class-based BlueprintPreview, and only materializes after the human confirm affordance runs the existing accept path.
Evidence: L2 (static checks + provider/controller direct probe; local Playwright harness stalled before test execution) -> L2 required (ticket ACs are state-machine, provider, controller, and render-helper behavior unit-pinned without a browser render). Residual: none for the close-target ACs.
Deltas from ticket
- Added an explicit PREVIEWED transition so route acceptance returns to composing with a provider-owned candidate instead of claiming materialized.
- Parked candidateBlueprint atomically inside CreationStateProvider because Provider.setData expands plain objects into nested configs by design.
- Kept the preview renderer allowlist-driven via BLUEPRINT_SCHEMAS and avoided candidate Object.keys traversal.
Test Evidence
node --check apps/agentos/view/create/BlueprintPreview.mjs apps/agentos/view/create/CreationStateProvider.mjs apps/agentos/view/create/CreateSurfaceController.mjs apps/agentos/view/create/util/creationFlowState.mjs
node --check test/playwright/unit/apps/agentos/create/createSurface.spec.mjs test/playwright/unit/apps/agentos/create/creationFlowState.spec.mjs test/playwright/unit/apps/agentos/create/creationStateProvider.spec.mjs
npm run agent-preflight -- --no-fix apps/agentos/view/create/BlueprintPreview.mjs apps/agentos/view/create/CreateSurface.mjs apps/agentos/view/create/CreateSurfaceController.mjs apps/agentos/view/create/CreationStateProvider.mjs apps/agentos/view/create/util/creationFlowState.mjs test/playwright/unit/apps/agentos/create/createSurface.spec.mjs test/playwright/unit/apps/agentos/create/creationFlowState.spec.mjs test/playwright/unit/apps/agentos/create/creationStateProvider.spec.mjs passed.
- Direct Node provider/controller probe passed: submit parks
grid@1 candidate, confirm materializes, refused route keeps candidate null, hostile config key is not rendered.
npm run test-unit -- test/playwright/unit/apps/agentos/create/creationFlowState.spec.mjs test/playwright/unit/apps/agentos/create/createSurface.spec.mjs was interrupted after the local Playwright runner produced no result output for about 2 minutes; a single-spec retry with line reporter also stalled before test output. No Playwright pass is claimed from local.
Post-Merge Validation
Commits
4380dd4289 - feat(agentos): add keeper blueprint preview (#14764)
Authored by Euclid (GPT-5, Codex Desktop). Session 6439a7c5-5f2f-4658-9226-835c317c7a0b.
Resolves #14764
Adds the create-module blueprint preview card between route acceptance and accept-path materialization. The controller now parks a validated candidate on the CreationStateProvider, renders it through a class-based BlueprintPreview, and only materializes after the human confirm affordance runs the existing accept path.
Evidence: L2 (static checks + provider/controller direct probe; local Playwright harness stalled before test execution) -> L2 required (ticket ACs are state-machine, provider, controller, and render-helper behavior unit-pinned without a browser render). Residual: none for the close-target ACs.
Deltas from ticket
Test Evidence
node --check apps/agentos/view/create/BlueprintPreview.mjs apps/agentos/view/create/CreationStateProvider.mjs apps/agentos/view/create/CreateSurfaceController.mjs apps/agentos/view/create/util/creationFlowState.mjsnode --check test/playwright/unit/apps/agentos/create/createSurface.spec.mjs test/playwright/unit/apps/agentos/create/creationFlowState.spec.mjs test/playwright/unit/apps/agentos/create/creationStateProvider.spec.mjsnpm run agent-preflight -- --no-fix apps/agentos/view/create/BlueprintPreview.mjs apps/agentos/view/create/CreateSurface.mjs apps/agentos/view/create/CreateSurfaceController.mjs apps/agentos/view/create/CreationStateProvider.mjs apps/agentos/view/create/util/creationFlowState.mjs test/playwright/unit/apps/agentos/create/createSurface.spec.mjs test/playwright/unit/apps/agentos/create/creationFlowState.spec.mjs test/playwright/unit/apps/agentos/create/creationStateProvider.spec.mjspassed.grid@1candidate, confirm materializes, refused route keeps candidate null, hostile config key is not rendered.npm run test-unit -- test/playwright/unit/apps/agentos/create/creationFlowState.spec.mjs test/playwright/unit/apps/agentos/create/createSurface.spec.mjswas interrupted after the local Playwright runner produced no result output for about 2 minutes; a single-spec retry with line reporter also stalled before test output. No Playwright pass is claimed from local.Post-Merge Validation
unitconfirms the updated create-flow specs under CI.Commits
4380dd4289-feat(agentos): add keeper blueprint preview (#14764)Authored by Euclid (GPT-5, Codex Desktop). Session 6439a7c5-5f2f-4658-9226-835c317c7a0b.