Skip to content

Screens capability matrix

This page traces each language-level screens release criterion to the Screenplay syntax that expresses it, how the compiler treats it, the diagnostics that guard it, and anything the language cannot yet express. It covers the authoring language only. Rendering and runtime proof live in the screens release acceptance matrix.

“Executable model” means the backend executable semantic model (ESM). UI constructs are explicitly deferred from it with PLAY0269; they are authored, validated, printed and exported, and Stage plans them from the syntax tree.

CriterionSyntaxSemanticsDiagnosticsNot expressible
Screen identity (536.2)screen <Name> in a slice; descriptionAuthoring; PLAY0269 in the ESMPLAY0103 malformed directiveNone
Package components and exact stable ids (536.2)component <Package.Component> <name>, id "<stable-id>"Authoring; the stable id is never normalizedPLAY0103, PLAY0632 package not in a ui profileNone
Typed bindings (536.2)from data, from query, from component, from literal, mode, null, expectedTyped UiBindingSyntax; invalid text kept as rawTextPLAY0103None
Typed literals (536.2)property <path> = <string, number, bool, null, array or object>Typed ExpressionSyntaxPLAY0103None
Exposed values (536.2)exposes <name> from <binding> on components; exposes <name> <Type> on templatesAuthoringPLAY0103, PLAY0026None
Toolbars and presentation (536.2)toolbar, item, presentation, iconAuthoringPLAY0103None
CriterionSyntaxSemanticsDiagnosticsNot expressible
Command forms (536.2)form <Name> for <Command>, field, populate, on submitAuthoringPLAY0208–PLAY0216None
Generation mode and geometry, Scene 4.12 (536.2)generation auto|manual, layout with column, place, columnGap, rowGapCommandFormLayoutSyntax maps 1:1 to Scene CommandFormLayoutPLAY0210 malformed generation or layout linesNone
CriterionSyntaxSemanticsDiagnosticsNot expressible
Template categories and assignment (536.2, 536.3)layout, screen template, dialog template, category, type, template <Name> at module, feature or sliceHierarchical; the nearest assignment winsPLAY0026, PLAY0631 scope mismatchNone
Template picker metadatadisplay, description, scopesScene DisplayName, Description, Metadata.ScopesPLAY0026, PLAY0631None
Template contentcontent <slot> with screen directivesScene template ContentPLAY0629 unknown slot, PLAY0656 nesting cycleNone
Arrangementsarrangement flow|freeform, row, column, grid columns rows, grow, span, when, variant, placeScene FlowArrangement, FreeformArrangementPLAY0235, PLAY0236None
Exposuresexposure for <Owner>, property <component>.<path> with label, operations, fields, reexposesScene ExposureDeclarationPLAY0621–PLAY0624None
Instance valuesinstance <X> with set and itemsScene InstanceContributionPLAY0625–PLAY0628None
Screen contributionscontribute to <Point> [order <n>] inside a screenScene Screen.ContributionsPLAY0655 unknown pointNone
Recursive outlets (536.3)outlet <name> on layouts, templates and componentsAuthoringPLAY0630 unknown outletNone
CriterionSyntaxSemanticsDiagnosticsNot expressible
Navigation targets and URL overrides (536.3)navigate to <Screen> [by <param>], route, outlet, parameterScene DestinationReferencePLAY0107, PLAY0197 unknown screen, PLAY0630None
Navigation itemscontribute to <Point> with navigate, label, order, id, icon, presentation, group, destination outlet|dialog|externalScene NavigationItem and DestinationKindPLAY0217–PLAY0224, PLAY0654 unknown destinationNone
Dialog placement (536.3)open dialog <DialogTemplate>, destination dialog <DialogTemplate>AuthoringPLAY0654None
CriterionSyntaxSemanticsDiagnosticsNot expressible
Packages and icons (536.2)packages and icons in a ui profileAuthoringPLAY0632 component from an undeclared packageNone
Design-time output (536.6)A design-time action’s result is ordinary syntax: instance values, form fields and layoutPackage callbacks stay in the package; only their output is sourceThe diagnostics of the constructs it producesPackage code and callbacks, by design
CriterionProof
Parser-printer-parser preservation (536.4)when_printing_screen_composition, when_printing_screen_release_ui_contract
References and cycles (536.4)Corpus rejection vectors for template nesting cycles, re-exposure cycles, out-of-scope screen references, missing outlets and destinations
.NET and TypeScript parity (536.5)Shared transport schema, golden syntax vectors and Conformance/diagnostics.json
Language service (536.5)when_surfacing_screen_composition_diagnostics (validation, keywords, highlighting, native diagnostic markers)
Authoring separate from executable readiness (536.5)UI constructs are authored and validated; the ESM reports them as PLAY0269 deferred
MCP remove and move (537.1)when_moving_and_removing_screen_nodes
MCP missing package (537.3)when_moving_and_removing_screen_nodes: removing a package a component still uses is refused with PLAY0632

The TypeScript compiler parses and preserves every construct above. The reference checks (owners, instances, cycles, outlets, destinations, scopes, contribution points, packages) run in the C# compiler; the language service shows them when a Monaco host supplies the native compiler’s diagnostics.