Skip to content

Screens release acceptance matrix

This page tracks the screens release against the original issue bodies. Each row is one acceptance criterion from a scoped issue, marked with the strongest evidence that exists for it today:

StatusMeaning
PASSDelivered and proven. A language-only criterion is proven by a merged specification; a behavior criterion by executing a released artifact against the canonical corpus. The proof is linked.
PARTIALPart of the criterion is delivered. The row states what remains, including any execution proof that has not run.
OPENNothing delivered satisfies the criterion yet. The row states the required work.

A closed issue is not proof, and a merged pull request proves only that code exists. Behavior counts as proven when a released artifact was executed. A run on a local build is listed as progress, not acceptance.

The matrix was reconciled on 9 and 10 October 2026, last against this vector:

ComponentVersionNotes
Scene4.14.0Navigation diagnostics, template provenance and third-party design-time extensions (Scene#81); navigation history, template preview states and dual-host package proof (Scene#82).
Screenplay4.124.0Conformance harness and corpus, and screen composition syntax for exposures, instances and template content (Screenplay#602). The CLI and Stage bundle the 4.114.0 screen ABI.
Stage4.51.3 / 4.52.04.51.3 is the CLI 3.41.0 default. 4.52.0 renders generated React applications on the Stage frontend runtime (Stage#289); no public CLI bundles it yet.
CLI3.41.0Defaults to Stage 4.51.3. Refuses a UI profile it cannot honor with nothing published, and lets cratis screenplay generate recover a rendered application (cli#301).
Studio0.141.0Deployed. Adds generation previews with digests, Play and static parity, guarded slice planning and migration checks (Studio#1638), and composite template selection (Studio#1639). Production requires a signed-in user, so no Studio behavior has run against it.
AI7.20.0Screen guidance names the passing public vector (AI#573); real MCP stdio transcript (AI#563).
ProofVectorResult
Browser runtime, publicCLI 3.41.0 + cratis/stage:4.51.3Pass: 51 assertions, none blocked. Two-item scoped selection, only B’s comment, selected-row query and deep-link identity, delayed A response discarded, clear-selection, Create, Rename and AddComment with invalid and valid submits, persistence after reload, and the dark theme effect. Recorded as browser-native-controls-runtime-3.41.0-4.51.3 (Screenplay#630).
Browser runtime, publicCLI 3.40.7 + cratis/stage:4.51.1Pass: 51 assertions, none blocked (Screenplay#605).
Browser runtime, publicCLI 3.40.6 + cratis/stage:4.50.1Failed: the work item list stayed empty (R1, fixed in Stage 4.51.1).
Browser runtime, publicCLI 3.40.5 + cratis/stage:4.50.0Partial: 49 assertions pass, 2 are blocked. Scoped selection, the selected-row query and deep-link identity, the delayed A request, clear-selection, and Create, Rename and AddComment with invalid and valid submits all pass. So does the dark theme effect. B1 and B4 remain blocked.
Browser runtime, publicCLI 3.40.4 + cratis/stage:4.49.7Partial. Endpoints, two-item seeding, list and row B details, dotted and punctuated stable ids, enabled native controls and an invalid native create that sends zero requests pass. Recorded as browser-native-controls-runtime-3.40.4-4.49.7 in ScreenCompositionCorpus.V1 (#596).
MCP stdio transcriptCLI 3.41.0Pass. Initialize, 37 tools, open, propose, stale apply refused with StaleRevision, apply, and reopen with a changed revision and a preserved comment.
Typed-source MCP authoringScreenplay 4.116.0Pass. when_authoring_screen_release_ui_from_an_empty_folder.
Corpus parse, print and admissionScreenplay 4.116.0Pass. for_ScreenCompositionCorpus; the single-file, folder, reordered and relocated forms produce identical outcomes.
CLI renderCLI 3.41.0 + Stage 4.51.3Pass, with two preserved guarded-action warnings. 38 artifacts, byte-identical across two renders, with no timestamps, foreign GUIDs, absolute paths or environment bytes (screen-composition-render-audit.cjs).
CLI profile rejectionCLI 3.41.0Pass. A profile naming an unknown package is refused with CLI-RENDER-007 and one naming a missing layout with CLI-RENDER-008, each with exit 5 and nothing published; a modified managed scene.json is refused and left untouched. On CLI 3.40.6 both profile changes still published every artifact.
Render then recoverCLI 3.41.0Pass. cratis screenplay generate recovers the rendered application to all 45 slices and command, event, read model and query members the source declares. CLI 3.40.6 refused it with CLI0017.
Studio production PlayStudio 0.141.0Not executed. Automation exists (Studio#1628). Production returns 401 to every unauthenticated request; the run needs the access described under Studio production access.

Rerun every harness against the installed CLI, and the Stage image it defaults to, with one command:

Terminal window
SCREENPLAY_EXPECTED_CLI_VERSION=<cli> SCREENPLAY_EXPECTED_STAGE_TAG=<stage> \
Source/DotNET/Screenplay.CanonicalVectors.Specs/BrowserHarness/run-public-acceptance.sh

It first runs the self-tests of the browser and render-audit harnesses, then the browser harness, the render audit (determinism, portable artifacts, profile rejection and render-then-recover), the MCP transcript and the Studio harness. It fails when the CLI or the started Stage image differs from the expected versions, so a drifted vector cannot pass as the intended one.

Every browser blocker below passes on public CLI 3.41.0 with Stage 4.51.3, and did on CLI 3.40.7 with Stage 4.51.1. The table keeps how each one cleared, so a regression can be traced. The browser assertions were never relaxed to clear them.

BlockerCleared inEarlier public observation
R1 Work item listStage 4.51.1CLI 3.40.6 + Stage 4.50.1: the list bound to the single-item work-item-by-id route and stayed empty.
B1 Scoped commentsStage 4.51.1CLI 3.40.5 + Stage 4.50.0: A’s comment showed under B.
B2 Selected query identityStage 4.50.0CLI 3.40.4 + Stage 4.49.7: no query carried the selected row’s identity.
B3 Deep-link identityStage 4.50.0CLI 3.40.4 + Stage 4.49.7: the URL stayed #/WorkItemList.
B4 Stale responseStage 4.51.1CLI 3.40.5 + Stage 4.50.0: the delayed A request was aborted, but A’s comment still showed.
B5 Native fieldsStage 4.50.0CLI 3.40.4 + Stage 4.49.7: no form inputs rendered.
B6 Theme effectStage 4.50.0CLI 3.40.4 + Stage 4.49.7: the background did not change.
B7 Guarded actionsNot cleared, by designGuarded Close and the double-click interaction stay fail-closed with STAGE-SCENE-ACTION-001 and STAGE-SCENE-INTERACTION-001.

Studio 0.139.0 is deployed at https://app.cratis.studio. Every path, including /, returns 401 without a session, because the whole host sits behind Studio’s AuthProxy, which handles OpenID Connect sign-in and the invitation flow.

The production automation from Studio#1628 (scripts/screen-editor/check-studio-production-play.mjs) cannot get through that proxy as written. It authenticates by sending the local development X-MS-CLIENT-PRINCIPAL headers for the test user Alice Admin, and AuthProxy strips caller-supplied identity headers before forwarding. Those headers only work against a local Studio without AuthProxy.

To run it against production, the automation needs:

RequirementDetail
A Studio userA real account that can sign in through the production identity provider, is a member of an organization, and has access to a project.
A signed-in sessionSign in interactively once, save the browser state (for example with Playwright storageState), and have the automation load it instead of the Alice headers. Agents must not hold the account password.
A target event modelSTUDIO_URL plus STUDIO_PROJECT_ID, STUDIO_APPLICATION_ID, STUDIO_DOMAIN_ID and STUDIO_EVENT_MODEL_ID, or a full STUDIO_EVENT_MODEL_ROUTE.
Fixture contentAn event model whose screens include the destination the script edits (STUDIO_SCREEN_DESTINATION_ITEM, defaulting to Orders), and STUDIO_IMPORT_JSON_FILE for the import step.
Permission to writeThe run saves, imports and starts Play in that project, so the account and project should be dedicated to testing.

Creating that account and choosing the project is a decision for the Studio owner; this harness does not create accounts or change authentication.

The browser harness requires the add-comment form to expose a commentId input. The expectation is taken from the authored model, not from what the runtime renders. In the corpus, AddComment declares commentId CommentId identifier. The identifier is client-supplied rather than generated: the caller provides it, the command routes CommentAdded to that event source with for commentId, and the slice’s own AddingAComment specification supplies commentId when it executes the command. A native form for this command therefore has to collect commentId.

The local CLI build with Stage 4.49.10 renders that input with the label “Comment Id” and submits the identifier the user enters, together with the selected row’s workItemId.

when_reading_the_add_comment_command_identity pins this by reading the released corpus document. If the model ever changes to commentId CommentId generated identifier, that specification fails first, and the browser assertion must change from expecting an input to verifying the generated identifier in the projection.

#CriterionStatusEvidence or remaining work
7.1A master/detail application binds a query to a table, selection to details, and an auto/manual multi-column form.PASSQuery table, selection driving details, and native command forms with validation and submission all pass in the browser. Proven on public CLI 3.41.0 with Stage 4.51.3 (browser-native-controls-runtime-3.41.0-4.51.3).
7.2Recursive shell/module/feature/slice composition; templates, exposed settings, toolbar dialogs/outlets and URLs survive save/export/import.PARTIALSurvives Screenplay parse, print and MCP edits. Studio save/export/import has not run, because production Studio is not deployed.
7.3One package contract across Studio, embedded Event Models/VS Code, Stage runtime and generated React.PARTIALScene hosts cover standalone, embedded and webview rendering (Scene#79); the Stage runtime loads the package profile. The embedded host and generated React are not exercised.
7.4An AI agent creates and modifies the multi-file application through Screenplay MCP; examples compile and run.PARTIALMCP authoring and the stdio transcript pass on CLI 3.41.0, and the authored application runs in the browser. An AI-edited application has not been run end to end.
7.5Studio Play uses the full surface with only the upper-right toolbar and restores authoring chrome on Stop.PARTIALImplemented (Studio#1608, Studio#1619) and automated (Studio#1628). Not executed against production Studio.
7.6The canonical release vector proves runtime and render behavior and CLI/Studio parity, with no silent fallback.PARTIALRuntime and render pass on public CLI 3.41.0 with Stage 4.51.3, deterministically, with portable artifacts, profile rejection and recovery. Studio parity has not run.
#CriterionStatusEvidence or remaining work
69.1Explicit binding source kinds, one-way/two-way support, inherited context and null behavior.PARTIALTyped data-context, query, component-output and literal sources (Scene#77); preserved cleared values (Scene#78). Runtime null behavior is not observed (B1).
69.2Expose output properties such as the selected item and propagate them to a detail component or query parameter.PARTIALComponent output scope (Scene#77) and selected-row outputs (Stage#275). Propagation into the comment query fails (B1, B2).
69.3Validate types, scope, missing or renamed elements, lifecycle cleanup and cycles.PARTIALResolver diagnostics for cycles, missing components and type mismatches, plus lifecycle cleanup (Scene#77). No negative binding vector exercises them; tracked with 168.3.
69.4One shared runtime resolver with C#/TypeScript parity, not a Studio-only evaluator.PARTIALStage renders through the Scene runtime (Stage#244). No conformance vector compares the C# and TypeScript resolvers.
69.5Executable proof of master/detail selection, clearing, nested template scope and query rebind.PASSSelection, clearing, the comment query rebinding to the selected row, and discarding a delayed response for the previous row all pass in the browser. Proven on public CLI 3.41.0 with Stage 4.51.3 (browser-native-controls-runtime-3.41.0-4.51.3).
#CriterionStatusEvidence or remaining work
70.1Versioned extension points for previews, designers, property editors and display renderers, with fallbacks.PARTIALGeneric lookups for previews, designers, property editors, displays and actions, with a fallback and a diagnostic for each unknown or incompatible extension (Scene#81). No executed host run loads them.
70.2Actions with stable identity and owner-controlled state that run canonical edit batches; separate from application commands.PARTIALrunDesignTimeAction submits an action’s canonical edit batch whole or not at all (Scene#81); Studio runs batches through editor history (Studio#1608). Owner-controlled visible and enabled state is not verified.
70.3Platform-neutral metadata in Scene.Model; design-time React in an optional bundle.PARTIALRuntime-only and design-time packages are separated (Scene#79). No harness asserts that a runtime host loads no design-time code.
70.4Research and record WinForms/ASP.NET designer patterns.PASSA design record compares the WinForms and ASP.NET designer patterns with Scene’s extension points (Scene#81).
70.5A third-party component supplies every extension point, with unknown-extension diagnostics and a Generate fields action.PARTIALThird-party design-time extensions load through the generic host with unknown-extension diagnostics (Scene#81). No third-party fixture supplies every extension point and a Generate fields action.
#CriterionStatusEvidence or remaining work
71.1Command selection, auto/manual mode, columns, widths and field placement as canonical properties.PASSTyped geometry (Scene#80, Screenplay#592); the corpus parses and prints it.
71.2Auto follows command metadata; manual layout places fields inside one native form boundary.PARTIALNative geometry rendering (Scene#80) and served form metadata (Stage#276, Stage#277). The public runtime renders no fields (B5).
71.3A deterministic, non-destructive Generate fields design-time action.PARTIALDeterministic generation (Scene#77) and generated fields in Studio (Studio#1608). The action’s visibility and non-overwrite behavior are not executed.
71.4Responsive columns, moving and resizing fields; identical values, validation and responses at runtime and in generated apps.PARTIALGeometry, resize helpers and dirty-value preservation (Scene#80). A valid create runs only on a local CLI build; generated React is not exercised.
71.5Tests for mode switching, schema changes, unknown field types, validation, keyboard access and no nested forms.PARTIALLayout validation and invalid-geometry blocking (Scene#80). The other cases are not covered by an executed vector.
#CriterionStatusEvidence or remaining work
73.1A pattern-to-template coverage matrix from the listed marketplaces, with prioritized decisions.PARTIALA pattern-to-template coverage matrix compares the listed marketplaces (Scene#82). Prioritized decisions are not confirmed.
73.2Shell, dashboard, list, master/detail, CRUD, dialog, settings and nested workspace templates.PARTIALAdds a MasterDetail screen template (Scene#82) to the list, live list and command form blueprints (Scene#78). Dashboard and settings templates are not evidenced.
73.3Templates use shared categories, exposed configuration, bindings, toolbar actions and recursive slots.PARTIALApplicability, categories and scopes (Scene#76, Scene#78). Exposed configuration is not exercised by a vector.
73.4Package-backed previews with realistic data, empty, loading and error states, responsive and accessible.PARTIALPreviews take a populated, empty, loading or error state, and the data table announces loading and error (Scene#82). Accessibility and responsive behavior are not verified by an executed run.
73.5Compatibility, attribution and license metadata, and tests, for each template.PARTIALTemplateMetadata carries compatibility ranges, attribution and an SPDX license, validated by validateTemplateMetadata (Scene#81). Not every shipped template is shown to carry them.
#CriterionStatusEvidence or remaining work
74.1Stable destination identity, named outlet, route and typed parameters.PASSStable destinations with typed route parameters: the selected row’s identity reaches the URL as #/WorkItemDetails?workItemId=<B>. Proven on public CLI 3.41.0 with Stage 4.51.3 (browser-native-controls-runtime-3.41.0-4.51.3).
74.2Recursive composition that resolves navigation into the correct outlet.PARTIALOutlets declare the template types they accept (Scene#81), and the selected row resolves into the details outlet in the browser. Recursive nested composition is not exercised.
74.3Toolbar items configure label, icon, presentation, slice and destination.PARTIALAuthored, parsed and rendered as controls. The dialog destination flow is blocked by B5.
74.4URL overrides, deep links, refresh, back/forward, dialog close/return and parameters.PARTIALBrowser history, refresh, dialog close and return, and URL parameters are delivered (Scene#82); the deep link and dialog open and close pass on public CLI 3.41.0 with Stage 4.51.3. Back/forward and refresh are not asserted by the harness.
74.5Diagnose duplicate routes, incompatible or missing outlets, cycles and unavailable targets.PARTIALdiagnoseNavigation reports duplicate routes, missing and incompatible outlets, cycles and unavailable targets in TypeScript and C# (Scene#81). No negative navigation vector runs it.
#CriterionStatusEvidence or remaining work
75.1A host API supplies bundles and catalogs and resolves the effective UI profile.PARTIALHost configuration (Scene#77) and runtime hosts (Scene#79). Stage resolves the Desktop profile; the host API is not exercised directly.
75.2The same configuration drives components, assets, bindings and optional design-time extensions.PARTIALAsset and font emission (Scene#79); Stage serves assets and stylesheets. The theme effect fails (B6).
75.3Embedded Event Models/VS Code and standalone host examples without Studio globals.PARTIALDual-host package proof in Scene (Scene#82). No conformance run of an embedded host.
75.4Consistent diagnostics for unknown, incompatible or missing packages; host policy controls imports and network access.PARTIALResolution diagnostics (Scene#78) and blocking hosts (Scene#79). No negative package vector.
75.5One custom package set across embedded and standalone rendering, deterministic, with no duplicate singletons.PARTIALOne package set across embedded and standalone hosts is proven in Scene (Scene#82). A custom set is not exercised by a conformance run.
#CriterionStatusEvidence or remaining work
168.1A multi-file screens vector covering templates, bindings, forms, dialogs, URLs and every package type.PASSScreenCompositionCorpus.V1 (#551, #568, #592).
168.2Package-backed custom designer output and exposed inherited settings; deterministic data and identities.PARTIALDeterministic data and identities are pinned. The corpus has no package-backed custom designer output.
168.3Negative vectors for incompatible types and packages, missing outlets and references, and cycles; round-trip and behavior expectations.PARTIALRound-trip and behavior expectations exist. Negative screen vectors for packages, outlets and cycles do not.
168.4Consumers use the released corpus package, with no copied fixtures.PASSStage consumes Cratis.Screenplay.CanonicalCorpus 4.114.0 (when_planning_the_screen_composition_corpus_scene); the MCP transcript requires --corpus and has no built-in fixture.
168.5Application, document, semantic, event-contract and specification ids are reviewed literals.PASSPinned in when_loading_the_v1_screen_corpus.
168.6Single-file, folder, reordered and relocated forms produce identical bytes, ids and outcomes.PASSPinned per form in for_ScreenCompositionCorpus.
168.7Copied Screenplay fixtures migrate with byte and semantic parity before v2.PASSRegisterProjectCorpus.LegacyV1 (#169).
168.8Stage consumes the corpus and pins ordered artifact paths, hashes and bytes.PARTIALPinned for RegisterProject (Stage#75). The screens vector pins the Scene digest, not every artifact.
168.9The CLI materializes the corpus forms and produces exactly the Stage plan.PARTIALCLI 3.41.0 renders the authored composition deterministically. Plan parity with Studio has not run.
168.10Studio export matches the corpus source, identities, ESM and Stage plan.OPENStudio export has not run; production Studio is not deployed.
168.11Arc/Generation render-then-recover compares portable ids, contracts and outcomes.PASSscreen-composition-render-audit.cjs renders the corpus with CLI 3.41.0, recovers it with cratis screenplay generate, and finds all 45 slices and command, event, read model and query members the source declares, with none missing or added.
168.12v2 preserves ids, advances the event revision, removes the payload id and carries stream context.PASSRegisterProjectCorpus.V2 (#270).
168.13Unsupported, stale or conflicting vectors commit zero artifacts or model changes.PARTIALA stale MCP apply is refused with StaleRevision, and a refused UI profile publishes nothing on CLI 3.41.0. Unsupported screen semantics still publish with guarded warnings (B7).
168.14The corpus package is test-framework-free and consumers stay deterministic.PASSScreenplay.CanonicalCorpus references only the Screenplay compiler.
#CriterionStatusEvidence or remaining work
173.1Run the application through Studio authoring/export, Studio Play, CLI run and generated React.PARTIALCLI run passes on public CLI 3.41.0 with Stage 4.51.3. Generated React renders on the Stage runtime in Stage 4.52.0 (Stage#289), not yet from a public CLI. Studio has not run.
173.2Compare plans, package resolution, artifact bytes and behavior across consumers.PARTIALOnly the CLI side runs, and it passes. Studio and generated React are not compared.
173.3A host-configured package set in embedded rendering; consistent diagnostics, no fallback UI.OPENNo embedded-host run.
173.4Record the exact released matrix and browser results before closing the tracker.PARTIALRecorded for every public vector so far in ReleasedVectorResults; not yet green.
173.5CLI and Studio use the same released Screenplay and Stage packages.OPENStudio is not deployed on the released vector.
173.6Identical inputs produce identical profile and plan digests.PARTIALTwo CLI 3.41.0 renders of the same input are byte-identical across all 38 artifacts. Studio reports deterministic profile and plan digests (Studio#1638); the two have not been compared.
173.7Artifact paths, bytes and hashes are byte-identical.OPENRequires both consumers.
173.8Unsupported semantics produce matching diagnostics and zero artifacts.PARTIALGuarded-action warnings and PLAY0268/PLAY0269 are preserved on the CLI side only.
173.9Both consumers reject changed or stale profile inputs.PARTIALCLI 3.41.0 rejects a changed profile (unknown package CLI-RENDER-007, missing layout CLI-RENDER-008) and a modified managed artifact, each with nothing published. The Studio side has not run.
173.10The test runs from package dependencies, not repository source copies.PARTIALThe browser harness runs the published CLI and image. It reads the corpus source from this repository rather than from the package.
173.11Version or digest drift fails loudly before publication.PARTIALrun-public-acceptance.sh fails on an unexpected CLI version or Stage tag. No gate runs before publication.
173.12No timestamps, random GUIDs, absolute paths or environment bytes in artifacts.PASSAll 38 artifacts of a CLI 3.41.0 render contain no timestamps, no GUIDs absent from the source, no absolute paths and no host, user or folder bytes (screen-composition-render-audit.cjs, which plants each case in its self-test).
173.13The final release candidate reruns parity against the pinned matrix as the closing record.OPENNot reached. run-public-acceptance.sh is that rerun.
#CriterionStatusEvidence or remaining work
536.1A capability matrix from the release tracker to syntax, semantics, missing constructs and diagnostics.PARTIALThis page maps criteria to proof; the construct-level capability matrix maps each criterion to syntax, semantics, diagnostics and what is not expressible.
536.2Express identity, bindings, forms, template categories, exposed values, packages, icons and toolbar presentation.PASSScreenplay#553 and Screenplay#592, plus exposures, instances and template content in Screenplay#602; the positive typed source case parses.
536.3Hierarchical template assignment, recursive outlets, navigation targets, URL overrides and dialog placement.PASSAuthored in the folder corpus and parsed (#553).
536.4Parser-printer-parser preservation and multi-file edits; validate references and cycles.PARTIALRound-trip and multi-file MCP edits pass. Re-exposure cycles and broken references are diagnosed (PLAY0621 to PLAY0632, Screenplay#602), but no corpus vector pins them.
536.5.NET and TypeScript parsers, schema, printers, language services and documentation together; authoring distinct from executable readiness.PARTIALBoth compilers are held together by the conformance documents, and backend ESM refuses UI with PLAY0268/PLAY0269 as intended. Editor surfaces are not verified here.
536.6Design-time functions stay in packages; their output has a Screenplay representation.PARTIALNo callbacks are serialized. Package-produced output has no corpus vector.
#CriterionStatusEvidence or remaining work
537.1Typed create, edit, remove and move for screens, templates, forms, bindings, packages, icons, outlets, navigation and toolbars.PARTIALCreate and edit pass in the typed-source transcript. Remove and move are not exercised for screen nodes.
537.2Build the application from an empty folder, split across files, then edit a selection binding and dialog action.PASSwhen_authoring_screen_release_ui_from_an_empty_folder.
537.3Catalog and schema context for choosing components and paths; explicit unsupported diagnostics.PARTIALSchema discovery is available. Missing-package diagnostics are not exercised.
537.4Preview-before-apply, revision conflicts, invalid bindings, preservation and rollback; Studio-hosted and standalone parity.PARTIALPreview, stale revision and comment preservation pass on CLI 3.41.0. Studio-hosted MCP has not run.
537.5A runnable MCP transcript for AI verification that separates authoring from execution readiness.PASSAI#563 stdio transcript on CLI 3.41.0.
#CriterionStatusEvidence or remaining work
236.1Compile once into one shared typed plan for disk rendering and live hosting.PARTIALOne Scene with native command form metadata serves both the live Stage and generated applications (Stage#289). Disk and live outputs are not compared by a conformance run.
236.2A complete buildable React app with shells, routing, outlets, dialogs, bindings and icons.PARTIALcratis render emits the Stage frontend runtime into the generated application, with routes, Scene, theme and pinned packages (Stage#289, Stage 4.52.0). Public proof waits for a CLI that bundles Stage 4.52.0.
236.3Scene is the rendering authority.PASSStage#244; the runtime serves /stage/scene.
236.4Explicit package composition; no silent fallback to a default shell or flattened screen.PARTIALThe authored composition renders. Unsupported guarded actions warn rather than block; that policy is preserved, not resolved.
236.5Determinism, diagnostics, zero-output failures and building the full fixture.PARTIALStage’s Verification/generated-react-browser builds the generated application and runs the browser scenarios against it (Stage#289). Not yet run from a public CLI.
#CriterionStatusEvidence or remaining work
237.1Real query data, reactive bindings, command inputs, validation and responses, and package components.PASSReal query data, selection-driven bindings, native command inputs with validation and responses, and package components all pass in the browser. Proven on public CLI 3.41.0 with Stage 4.51.3 (browser-native-controls-runtime-3.41.0-4.51.3).
237.2The recursive hierarchy with authored URLs, outlets, dialogs and toolbars.PARTIALURLs and the parameterized details outlet pass on public CLI 3.41.0 with Stage 4.51.3. Recursive hierarchy beyond the corpus is not exercised.
237.3Production lifecycle, loading, error and empty states, and admission diagnostics; authorization preserved.PARTIALGuarded actions stay fail-closed (B7), and forms without metadata fail closed (Stage#275). Loading and error states are not asserted.
237.4The same scenarios against live Stage and generated React.PARTIALThe live scenarios pass on public CLI 3.41.0 with Stage 4.51.3; Stage runs the same scenarios against a generated application (Stage#289). Not yet from a public CLI.
237.5Studio Play and CLI run host this runtime without Studio-specific semantics.PARTIALCLI run hosts it. Studio Play on the released runtime has not run.
#CriterionStatusEvidence or remaining work
284.1Resolve the application context and UI profile for cratis run and cratis render.PASScli#293; the folder source renders and runs with the Desktop profile.
284.2Forward bundles, assets and profile to the released Stage runtime and planner; custom packages work without Studio.PARTIALBuilt-in packages forward. A custom package set is not exercised.
284.3Input scoping, import safety, read-only mounts and compatibility checks; diagnose before reporting success.PASSCLI 3.41.0 diagnoses an unknown package (CLI-RENDER-007) and a missing layout (CLI-RENDER-008) before publishing, with nothing published and earlier managed artifacts untouched, and refuses a modified managed artifact without --force.
284.4Integration tests run the multi-file app, exercise deep links, forms and outlets, and launch the rendered React.PARTIALThe multi-file app runs, with deep links, forms and outlets passing on public CLI 3.41.0 with Stage 4.51.3. Launching the rendered React waits for a CLI bundling Stage 4.52.0.
284.5Document configuration and the compatible package and image set.PARTIALThis page records the compatible set. The CLI documentation is not verified here.
#CriterionStatusEvidence or remaining work
536.1Teach bindings, template configuration, forms, generation results, packages, categories, outlets and toolbar dialogs.PARTIALScreen authoring and guidance name the passing public vector (AI#573). Design-time generation results are not covered.
536.2An agent workflow that creates and edits the multi-file app through MCP, then runs and renders it.PARTIALCreate and edit through MCP pass, and the authored application runs in the browser. Running an AI-edited application end to end has not been exercised.
536.3Correct old limitations only after upstream ships; distinguish authoring, admission and runtime support.PASSGuidance was updated only after the public vector passed: older-vector gaps are removed, and the guarded Close and double-click refusals stay (AI#573).
536.4Compile examples, run the MCP transcript and runtime smoke coverage; skill routing finds the workflow.PARTIALThe MCP transcript and the browser runtime pass on CLI 3.41.0. Skill-routing coverage is not verified here.
536.5Link the Screenplay-owned fixtures rather than copying them.PASSThe transcript has no built-in fixture: it requires --corpus and copies the Screenplay corpus into a scratch folder for each run.

No Studio behavior has been executed against the deployed build: production requires a signed-in user (see Studio production access). Merged implementation is listed so that, where it exists, only the production execution remains.

#CriterionStatusEvidence or remaining work
156.1Host package designers, property editors and design actions through the Scene contract.PARTIALDesign-time actions (Studio#1608) and custom designers in the property panel (Studio#1614). Not executed in production.
156.2Owner-defined state and exposure; edit batches join validation, save, undo/redo and keyboard interaction.PARTIALEdit batches run through editor history and save (Studio#1608). Owner-defined state and keyboard access are not verified.
156.3Preview on the real Scene renderer; packages customize their own components.PARTIALThe preview uses Scene. Package self-customization is not verified.
156.4Audit legacy-editor consumers and the six designers; record implemented versus remaining items.OPENNo audit record is linked from the issue.
156.5Prove extension loading and fallback in Studio and the embeddable editor.OPENNot executed.
156.6Migrate ScreenTemplateEditor onto PreviewSurface.OPENNo linked delivery.
156.7Port drag/drop, resize and multi-select onto Scene.Model mutations.PARTIALForm geometry placement and resizing (Studio#1621). General drag/drop and multi-select are not evidenced.
156.8Migrate EventModelingEditor.OPENNo linked delivery.
156.9Make the six designers editable.OPENNo linked delivery.
156.10Bind command properties from input widgets, with the binding visible in the preview.OPENNo linked delivery.
156.11Delete the prototype editor and its model mirror.OPENNo linked delivery.

Another owner closed this issue on 8 October 2026 under decision 0012 (Studio#1610) and moved the remaining implementation to StudioIssues#275 and Screenplay#536. The closure is a scoping decision, not proof of native delivery, so its criteria are tracked here.

#CriterionStatusEvidence or remaining work
165.1Export and import every authored UI element without loss.PARTIALTyped transport (Studio#1615, Studio#1620) and destination metadata through import and export (Studio#1624). No golden production export has run.
165.2Preserve hierarchy and qualified references across folder export and import.PARTIALPreserved by the Screenplay transport. The Studio folder round-trip has not run.
165.3Feed the same application into Play and static rendering.PARTIALStudio feeds the same typed Screenplay to Play and to static generation (Studio#1636). Not executed in production.
165.4Unsupported UI blocks or is reported; never empty Screens output.PARTIALExport warns about a dropped screen (Studio#1569). Blocking behavior has not run.
165.5Golden save, export, compile, import and reopen cases.OPENNot executed.
#CriterionStatusEvidence or remaining work
275.1Pass the complete UI and package composition into the shared Stage plan for preview and implementation.PARTIALTyped transport exists. Plan parity with the CLI has not run.
275.2Studio Play on the released Stage runtime; diagnostics before a partial frontend.PARTIALPlay and specification runs use the Stage 4.49.9 images, and export names any member that keeps a screen out of Play (Studio#1636). Not executed in production.
275.3Prove the application through preview, Play and generated output; retire legacy under the parity gate.OPENNot executed.
275.4One exact Stage package version and one facade for preview and implementation.PARTIALStudio builds on Screenplay 4.114 and Stage 4.49.9, one version for Play and generation (Studio#1636). The CLI now defaults to Stage 4.50.1, so the two consumers differ.
275.5The input is the compiled model and execution plan, not a pruned event model.PARTIALTyped Screenplay transport (Studio#1620). Not verified against the plan.
275.6A read-only preview of paths, bytes, hashes, diagnostics and gaps.PARTIALA generation preview lists each file with size, hash and status, with the digests, diagnostics and gaps (Studio#1638). Not executed in production.
275.7No target-specific rendering logic left in Studio.OPENNot audited.
275.8Deterministic profile and plan digests for corpus input.PARTIALStudio reports deterministic profile and plan digests regardless of file order or location (Studio#1638). Not run against the corpus.
275.9Retire legacy generation behind a flag once parity is green.OPENParity is not green.
#CriterionStatusEvidence or remaining work
470.1A dry-run, resumable, idempotent migration before the release.PARTIALA guarded migration tool exists: a read-only plan, and an apply that refuses production, requires --max-subjects, stops rather than trimming and is a no-op on a second run (Studio#1636). Not run against data before the release.
470.2Preservation checks for templates, identities, exposed values and bindings; report malformed documents.PARTIALThe migration checks each document keeps inherited templates and slots, component identities and exposed values, and writes a report; apply --resume never migrates a screen twice (Studio#1638). Not run against data.
470.3Export and import parity on migrated documents without rewriting events.OPENNo migrated documents have been exported or imported.
#CriterionStatusEvidence or remaining work
502.1The full UI comes from the same plan as Play; the scaffolding boundary is preserved.PARTIALStatic generation renders through Stage from the same typed Screenplay as Play (Studio#1636). Not executed in production.
502.2Screen artifacts in the ownership manifest; gaps block publication.PARTIALImplementation gaps and Stage errors block before anything is written (Studio#1638). Not executed.
502.3Validate the generated full application, not backend slices.OPENNot run.
502.4Screenplay first, then Stage, as two commits in one session.PARTIALSlice implementation commits the Screenplay before the code (Studio#1638). Not executed.
502.5Render exactly the unit of work’s feature and slices into the right folders.PARTIALGeneration writes into a folder the user selects and refuses one outside the application’s source folder (Studio#1636). Not executed.
502.6Never write scaffold files.PARTIALSlice implementation writes only the slice’s own files and never scaffold files (Studio#1638). Not executed.
502.7Errors and gaps block with nothing committed.PARTIALGeneration is refused with the reason shown when a screen cannot be rendered or nothing would be generated (Studio#1636). Not executed.
502.8The same input produces byte-identical output.PARTIALGeneration reports files already up to date (Studio#1636). Byte identity is not verified for Studio; the CLI render of the same corpus is byte-identical.
502.9The legacy renderer path is no longer used.OPENNot verified.
#CriterionStatusEvidence or remaining work
555.1Choose a source and a typed path for each bindable property; show identity, context and effective value.PARTIALTyped source controls (Studio#1608) and preserved literal types (Studio#1614). Not executed in production.
555.2Bind a detail component or query parameter to a selected item; validate types and sources.PARTIALAuthoring is merged. The same runtime propagation fails at B1 and B2.
555.3Visibility and exposure with stable identities; no magic strings.PARTIALUnavailable and incompatible sources are disabled (Studio#1614). Exposure enforcement is not verified.
555.4A reactive Scene preview, undo/redo, and the same canonical binding on export.OPENNot executed.
555.5End-to-end master/detail authoring, save and reopen, and round-trip tests.OPENNot executed.
#CriterionStatusEvidence or remaining work
556.1Select the command and toggle auto mode.PARTIALNative generation mode (Studio#1621). Not executed in production.
556.2A Generate fields action with correct state and non-destructive behavior.PARTIALGenerated command fields (Studio#1608, Studio#1621). Visibility and non-destructive behavior are not verified.
556.3Edit columns and widths; drag fields among columns and resize them on the canvas.PARTIALManual placement, unequal widths, gaps and spans (Studio#1621). Not executed in production.
556.4Canvas and properties stay synchronized with the model, validation and undo/redo; schema changes handled.PARTIALGeometry persists through undo, dirty state, save and reload (Studio#1621). Schema-change handling is not verified.
556.5Save and reopen, round-trip and runtime-render equivalence for a two-column form.PARTIALRuntime rendering of command-form fields with validation and submission passes on public CLI 3.40.5 + Stage 4.50.0 (B5). Studio save and reopen of a two-column form has not run in production.
#CriterionStatusEvidence or remaining work
557.1Searchable categorized browsing with previews, provenance and compatibility.PARTIALA Scene-backed template selector (Studio#1614); every package template, including composite ones, can now be chosen (Studio#1639). Search and provenance are not evidenced.
557.2Scene types and applicability rules, including custom categories.PARTIALCategory and scope editing (Studio#1614) over Scene applicability (Scene#76). Not executed in production.
557.3Choose or inherit a template at every scope, with slot fit and inherited visuals.OPENNot executed.
557.4Realistic package previews at different sizes; draft, apply and discard preserved.OPENNot executed.
557.5Large catalogs, keyboard navigation, unavailable packages and selection persistence.OPENNot executed.
#CriterionStatusEvidence or remaining work
558.1Stable navigation keys and URL configuration; shell navigation chooses the outlet.PARTIALRoute, outlet and dialog destination fields (Studio#1619, Studio#1624). Runtime deep links fail (B3).
558.2Edit toolbar collections: label, icon, mode, slice and destination.PARTIALToolbar destinations (Studio#1619). Not executed in production.
558.3Template-owned placement rules and inherited, non-editable visuals.PARTIALTemplate outlet editing (Studio#1619). Inherited visuals are not verified.
558.4Preview recursive navigation with nested templates and route parameters.OPENNot executed; the runtime fails B3.
558.5Validate destinations, routes and scope; save, reopen and round-trip every value.PARTIALDestinations persist through save, reload, import and export, and removal is blocked while in use (Studio#1624). Route validation is not verified.
#CriterionStatusEvidence or remaining work
559.1One upper-right toolbar, with Stop first, then Frontend, API and Chronicle.PARTIALStudio#1608, automated in Studio#1628. Not run in production.
559.2Hide the authoring toolbars and zoom controls for the whole Play session.PARTIALSame as 559.1.
559.3The Stage surface fills the space below announcements.PARTIALA workspace-sized overlay (Studio#1619). Not run in production.
559.4Stop restores chrome, zoom and focus; loading, failed-start and stop transitions are consistent.PARTIALFailed-start and restart handling (Studio#1619, Studio#1624). Not run in production.
559.5Browser assertions and screenshots across viewports, announcements and views.PARTIALThe automation exists (Studio#1628). The production run is blocked by the deployment lock.