@ccslabs/xtend 0.1.0-rc.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/README.md +4 -0
- package/catalog/component-catalog-coverage.js +2 -0
- package/catalog/epic13-package-export-lock.js +11 -1
- package/catalog/epic13-rmt-production-readiness.js +0 -1
- package/catalog/epic18-rmt-action-effect-runtime.d.ts +36 -0
- package/catalog/epic18-rmt-action-effect-runtime.js +249 -0
- package/catalog/epic18-rmt-app-platform-authoring.d.ts +39 -0
- package/catalog/epic18-rmt-app-platform-authoring.js +319 -0
- package/catalog/epic18-rmt-app-platform-fixture.d.ts +33 -0
- package/catalog/epic18-rmt-app-platform-fixture.js +221 -0
- package/catalog/epic18-rmt-app-platform-release-handoff.d.ts +30 -0
- package/catalog/epic18-rmt-app-platform-release-handoff.js +231 -0
- package/catalog/epic18-rmt-app-platform-tooling.d.ts +38 -0
- package/catalog/epic18-rmt-app-platform-tooling.js +242 -0
- package/catalog/epic18-rmt-component-template-primitives.d.ts +33 -0
- package/catalog/epic18-rmt-component-template-primitives.js +240 -0
- package/catalog/epic18-rmt-dom-descriptor-renderer.d.ts +35 -0
- package/catalog/epic18-rmt-dom-descriptor-renderer.js +232 -0
- package/catalog/epic18-rmt-event-routing-runtime.d.ts +35 -0
- package/catalog/epic18-rmt-event-routing-runtime.js +234 -0
- package/catalog/epic18-rmt-state-selector-runtime.d.ts +34 -0
- package/catalog/epic18-rmt-state-selector-runtime.js +216 -0
- package/catalog/epic18-rmt-surface-resource-graph-runtime.d.ts +36 -0
- package/catalog/epic18-rmt-surface-resource-graph-runtime.js +256 -0
- package/catalog/surface-manager-controller.js +5 -1
- package/catalog/surface-manager-materialization.js +7 -1
- package/catalog/surface-manager-overlay-bridge.js +41 -6
- package/catalog/surface-manager-workbench-fixture.js +1 -1
- package/catalog/surface-type-capability-matrix.d.ts +61 -0
- package/catalog/surface-type-capability-matrix.js +183 -0
- package/catalog/type-exports-rmt.js +37 -1
- package/catalog/type-exports.js +3 -3
- package/components/icon-packs/lucide.js +4 -0
- package/components/manifest.json +2 -0
- package/components/prism-rmt.d.ts +34 -0
- package/components/prism-rmt.js +130 -0
- package/components/xcards.js +15 -0
- package/components/xcode.d.ts +36 -1
- package/components/xcode.js +215 -20
- package/components/xfooter.js +17 -0
- package/components/xheader.js +14 -0
- package/components/xhero.js +16 -1
- package/components/xlink.js +97 -14
- package/components/xmasonry.js +15 -0
- package/components/xplayer.d.ts +44 -2
- package/components/xplayer.js +242 -15
- package/components/xrouter.js +27 -2
- package/components/xsection.js +15 -0
- package/components/xsidepanel.js +10 -2
- package/components/xsurfacemanager-controller.d.ts +2 -1
- package/components/xsurfacemanager-controller.js +27 -3
- package/components/xsurfacemanager.d.ts +2 -0
- package/components/xsurfacemanager.js +20 -8
- package/components/xsurfaceoverlay-bridge.d.ts +20 -5
- package/components/xsurfaceoverlay-bridge.js +114 -18
- package/components/xsurfaceportal.d.ts +29 -0
- package/components/xsurfaceportal.js +122 -0
- package/components/xsurfaceregion.d.ts +50 -0
- package/components/xsurfaceregion.js +285 -0
- package/components/xsurfacewindow.js +2 -1
- package/components/xtooltip.js +89 -23
- package/docs/README.md +222 -298
- package/docs/changelog.md +107 -0
- package/docs/component-catalog-coverage.md +9 -9
- package/docs/component-platform.md +19 -1
- package/docs/component-ux-app-authoring.md +56 -63
- package/docs/components/xcode.md +83 -53
- package/docs/components/xsurfaceportal.md +32 -0
- package/docs/components/xsurfaceregion.md +37 -0
- package/docs/components.md +105 -69
- package/docs/de/README.md +264 -0
- package/docs/de/XTend-ADR.md +221 -0
- package/docs/de/a11y-keyboard-smokes.md +62 -0
- package/docs/de/about.md +18 -0
- package/docs/de/api.md +157 -0
- package/docs/de/best-practices.md +76 -0
- package/docs/de/changelog.md +107 -0
- package/docs/de/component-catalog-coverage.md +58 -0
- package/docs/de/component-lab.md +103 -0
- package/docs/de/component-long-tail-migration.md +41 -0
- package/docs/de/component-platform.md +177 -0
- package/docs/de/component-ux-app-authoring.md +123 -0
- package/docs/de/component-ux-authoring.md +96 -0
- package/docs/de/component-ux-gates.md +45 -0
- package/docs/de/components/x-rmt-lifecycle-demo-build.md +60 -0
- package/docs/de/components/xalert.md +81 -0
- package/docs/de/components/xbutton.md +103 -0
- package/docs/de/components/xcalendar.md +82 -0
- package/docs/de/components/xcards.md +128 -0
- package/docs/de/components/xcheckbox.md +102 -0
- package/docs/de/components/xcode.md +156 -0
- package/docs/de/components/xdialog.md +92 -0
- package/docs/de/components/xdrawer.md +84 -0
- package/docs/de/components/xfooter.md +126 -0
- package/docs/de/components/xform.md +128 -0
- package/docs/de/components/xheader.md +308 -0
- package/docs/de/components/xhero.md +142 -0
- package/docs/de/components/xicon.md +125 -0
- package/docs/de/components/xinput.md +129 -0
- package/docs/de/components/xlightbox.md +98 -0
- package/docs/de/components/xlink.md +109 -0
- package/docs/de/components/xmasonry.md +124 -0
- package/docs/de/components/xmenu.md +158 -0
- package/docs/de/components/xmodal.md +82 -0
- package/docs/de/components/xplayer.md +104 -0
- package/docs/de/components/xpopover.md +67 -0
- package/docs/de/components/xprogress.md +56 -0
- package/docs/de/components/xradio.md +103 -0
- package/docs/de/components/xrouter.md +260 -0
- package/docs/de/components/xsection.md +125 -0
- package/docs/de/components/xselect.md +105 -0
- package/docs/de/components/xsidepanel.md +30 -0
- package/docs/de/components/xspinner.md +102 -0
- package/docs/de/components/xstate.md +148 -0
- package/docs/de/components/xstatus.md +55 -0
- package/docs/de/components/xsummary.md +78 -0
- package/docs/de/components/xsurfacemanager.md +27 -0
- package/docs/de/components/xsurfacewindow.md +21 -0
- package/docs/de/components/xtabs.md +160 -0
- package/docs/de/components/xtextarea.md +98 -0
- package/docs/de/components/xtheme.md +167 -0
- package/docs/de/components/xtoast.md +62 -0
- package/docs/de/components/xtooltip.md +66 -0
- package/docs/de/components/xtype.md +82 -0
- package/docs/de/components/xutils.md +144 -0
- package/docs/de/components/xwriter.md +94 -0
- package/docs/de/components.md +153 -0
- package/docs/de/conditional-network-evidence-ci.md +38 -0
- package/docs/de/conditional-network-evidence.md +50 -0
- package/docs/de/core-migration-guide.md +110 -0
- package/docs/de/design-tokens.md +116 -0
- package/docs/de/docs-rmt-production-hardening.md +31 -0
- package/docs/de/enterprise-adoption.md +413 -0
- package/docs/de/enterprise-component-flex-release-handoff.md +129 -0
- package/docs/de/epic10-platform-gates.md +62 -0
- package/docs/de/epic10-release-handoff.md +81 -0
- package/docs/de/epic11-enterprise-ux-handoff.md +70 -0
- package/docs/de/epic12-rc0-handoff.md +61 -0
- package/docs/de/epic18-media-manager-vendor-upstream.md +318 -0
- package/docs/de/epic18-rmt-app-platform-release-handoff.md +67 -0
- package/docs/de/epic18-vendor-bugfixes.md +34 -0
- package/docs/de/existing-component-metadata.md +67 -0
- package/docs/de/hydration-performance-closure.md +34 -0
- package/docs/de/hydration-policies.md +71 -0
- package/docs/de/known-residual-triage.md +22 -0
- package/docs/de/manifest-import-policy.md +79 -0
- package/docs/de/manifest.md +112 -0
- package/docs/de/motion-contrast.md +67 -0
- package/docs/de/package-export-lock.md +44 -0
- package/docs/de/performance-measurements.md +106 -0
- package/docs/de/performance-regression.md +89 -0
- package/docs/de/performance.md +94 -0
- package/docs/de/previews/README.md +17 -0
- package/docs/de/prod-browser-csp-smokes.md +40 -0
- package/docs/de/public-component-types.md +79 -0
- package/docs/de/quick-start-guide.md +220 -0
- package/docs/de/rc0-adoption-guide.md +102 -0
- package/docs/de/rc0-gate-matrix.md +58 -0
- package/docs/de/rc1-gate-matrix-ci-handoff.md +56 -0
- package/docs/de/rc1-migration-notes.md +69 -0
- package/docs/de/rc1-readiness.md +46 -0
- package/docs/de/release-owner-acceptance.md +56 -0
- package/docs/de/release-report-pack-dry-run-evidence.md +39 -0
- package/docs/de/rmt-action-effect-runtime.md +81 -0
- package/docs/de/rmt-app-platform-authoring.md +54 -0
- package/docs/de/rmt-app-platform-fixture.md +46 -0
- package/docs/de/rmt-app-platform-migration-guide.md +88 -0
- package/docs/de/rmt-app-platform-tooling.md +79 -0
- package/docs/de/rmt-component-template-primitives.md +57 -0
- package/docs/de/rmt-dom-descriptor-renderer.md +64 -0
- package/docs/de/rmt-dsl-authoring-polish.md +145 -0
- package/docs/de/rmt-event-routing-runtime.md +81 -0
- package/docs/de/rmt-first-demo-app.md +77 -0
- package/docs/de/rmt-first-xtend-apps.md +129 -0
- package/docs/de/rmt-kernel-panic-recovery-incident-handoff.md +61 -0
- package/docs/de/rmt-kernel-security-hardening-migration.md +50 -0
- package/docs/de/rmt-kernel-trusted-output-authoring.md +69 -0
- package/docs/de/rmt-language-server.md +234 -0
- package/docs/de/rmt-lifecycle-demo.md +24 -0
- package/docs/de/rmt-linter.md +140 -0
- package/docs/de/rmt-node-ssr-adapter.md +100 -0
- package/docs/de/rmt-php-ssr-adapter.md +120 -0
- package/docs/de/rmt-production-readiness.md +63 -0
- package/docs/de/rmt-state-selector-runtime.md +47 -0
- package/docs/de/rmt-surface-resource-graph-runtime.md +92 -0
- package/docs/de/rmt-tooling-release-gates.md +77 -0
- package/docs/de/rmt-vnext-authoring.md +170 -0
- package/docs/de/rmt-vnext-component-primitives.md +188 -0
- package/docs/de/rmt-vnext-cross-surface-events.md +68 -0
- package/docs/de/rmt-vnext-enterprise-mfe-handoff.md +70 -0
- package/docs/de/rmt-vnext-fabric-bridge-evidence.md +81 -0
- package/docs/de/rmt-vnext-migration-notes.md +62 -0
- package/docs/de/rmt-vnext-primitive-authoring-tooling.md +247 -0
- package/docs/de/rmt-vnext-primitive-grammar-design.md +289 -0
- package/docs/de/rmt-vnext-primitive-lowering.md +108 -0
- package/docs/de/rmt-vnext-primitive-migration.md +119 -0
- package/docs/de/rmt-vnext-primitive-parser-ast.md +76 -0
- package/docs/de/rmt-vnext-primitive-semantic-graph.md +118 -0
- package/docs/de/rmt-vnext-primitives-compiler-backlog.md +739 -0
- package/docs/de/rmt-vnext-release-handoff.md +83 -0
- package/docs/de/rmt-vnext-remote-surfaces.md +90 -0
- package/docs/de/rmt-vnext-source-to-sea-gate.md +612 -0
- package/docs/de/rmt-vnext-surface-registry-enterprise.md +76 -0
- package/docs/de/screenreader-signals.md +56 -0
- package/docs/de/supply-chain-gates.md +100 -0
- package/docs/de/surface-manager-authoring-guide.md +94 -0
- package/docs/de/surface-manager-browser-lab.md +45 -0
- package/docs/de/surface-manager-component-lab.md +43 -0
- package/docs/de/surface-manager-controller.md +66 -0
- package/docs/de/surface-manager-layout-engines.md +32 -0
- package/docs/de/surface-manager-lazy-hydration.md +63 -0
- package/docs/de/surface-manager-migration-guide.md +122 -0
- package/docs/de/surface-manager-native-rmt-surfaces.md +38 -0
- package/docs/de/surface-manager-overlay-bridge.md +53 -0
- package/docs/de/surface-manager-persistence.md +30 -0
- package/docs/de/surface-manager-quality-gates.md +51 -0
- package/docs/de/surface-manager-release-handoff.md +68 -0
- package/docs/de/surface-manager-remote-policy.md +54 -0
- package/docs/de/surface-manager-rmt-authoring.md +102 -0
- package/docs/de/surface-manager-route-lifecycle.md +59 -0
- package/docs/de/surface-manager-runtime-release-handoff.md +69 -0
- package/docs/de/surface-manager-side-panel-runtime.md +36 -0
- package/docs/de/surface-manager-stack-policy.md +39 -0
- package/docs/de/surface-manager-window-runtime.md +47 -0
- package/docs/de/surface-manager-workbench-fixture.md +43 -0
- package/docs/de/third-party-design-authoring.md +406 -0
- package/docs/de/trusted-dom-boundary-browser-proof.md +32 -0
- package/docs/de/trusted-dom-sanitizing.md +110 -0
- package/docs/de/type-exports.md +61 -0
- package/docs/de/typescript-components.md +63 -0
- package/docs/de/visual-browser-regression.md +83 -0
- package/docs/de/visual-owner-artifacts.md +46 -0
- package/docs/de/visual-snapshot-automation.md +87 -0
- package/docs/de/xtend-api-types.md +55 -0
- package/docs/de/xtend-builder-types.md +55 -0
- package/docs/de/xtend-catalog-types.md +44 -0
- package/docs/de/xtend-fabric-rmt-lane-mapping.md +143 -0
- package/docs/de/xtend-fabric.md +474 -0
- package/docs/de/xtend-loader-types.md +58 -0
- package/docs/de/xtend-loader.md +265 -0
- package/docs/de/xtend-policy-types.md +38 -0
- package/docs/de/xtend-rmt-types.md +40 -0
- package/docs/de/xtend-vendor-types.md +36 -0
- package/docs/de/xtendrmt-app-dsl.md +334 -0
- package/docs/de/xtendrmt-migration-guide.md +266 -0
- package/docs/de/xtendrmt-native-authoring.md +333 -0
- package/docs/de/xtendrmt-overview.md +109 -0
- package/docs/de/xtendrmt-parsedown-scheduling.md +301 -0
- package/docs/de/xtendrmt-runtime-bridge.md +155 -0
- package/docs/en/README.md +163 -0
- package/docs/en/XTend-ADR.md +221 -0
- package/docs/en/a11y-keyboard-smokes.md +68 -0
- package/docs/en/about.md +25 -0
- package/docs/en/api.md +171 -0
- package/docs/en/best-practices.md +125 -0
- package/docs/en/changelog.md +104 -0
- package/docs/en/component-catalog-coverage.md +104 -0
- package/docs/en/component-lab.md +103 -0
- package/docs/en/component-long-tail-migration.md +41 -0
- package/docs/en/component-platform.md +243 -0
- package/docs/en/component-ux-app-authoring.md +118 -0
- package/docs/en/component-ux-authoring.md +96 -0
- package/docs/en/component-ux-gates.md +45 -0
- package/docs/en/components/x-rmt-lifecycle-demo-build.md +75 -0
- package/docs/en/components/xalert.md +94 -0
- package/docs/en/components/xbutton.md +118 -0
- package/docs/en/components/xcalendar.md +95 -0
- package/docs/en/components/xcards.md +139 -0
- package/docs/en/components/xcheckbox.md +118 -0
- package/docs/en/components/xcode.md +153 -0
- package/docs/en/components/xdialog.md +108 -0
- package/docs/en/components/xdrawer.md +110 -0
- package/docs/en/components/xfooter.md +138 -0
- package/docs/en/components/xform.md +147 -0
- package/docs/en/components/xheader.md +308 -0
- package/docs/en/components/xhero.md +157 -0
- package/docs/en/components/xicon.md +149 -0
- package/docs/en/components/xinput.md +147 -0
- package/docs/en/components/xlightbox.md +113 -0
- package/docs/en/components/xlink.md +130 -0
- package/docs/en/components/xmasonry.md +136 -0
- package/docs/en/components/xmenu.md +185 -0
- package/docs/en/components/xmodal.md +102 -0
- package/docs/en/components/xplayer.md +114 -0
- package/docs/en/components/xpopover.md +87 -0
- package/docs/en/components/xprogress.md +73 -0
- package/docs/en/components/xradio.md +119 -0
- package/docs/en/components/xrouter.md +260 -0
- package/docs/en/components/xsection.md +136 -0
- package/docs/en/components/xselect.md +122 -0
- package/docs/en/components/xsidepanel.md +48 -0
- package/docs/en/components/xspinner.md +118 -0
- package/docs/en/components/xstate.md +163 -0
- package/docs/en/components/xstatus.md +71 -0
- package/docs/en/components/xsummary.md +90 -0
- package/docs/en/components/xsurfacemanager.md +42 -0
- package/docs/en/components/xsurfacewindow.md +31 -0
- package/docs/en/components/xtabs.md +187 -0
- package/docs/en/components/xtextarea.md +115 -0
- package/docs/en/components/xtheme.md +203 -0
- package/docs/en/components/xtoast.md +78 -0
- package/docs/en/components/xtooltip.md +85 -0
- package/docs/en/components/xtype.md +91 -0
- package/docs/en/components/xutils.md +161 -0
- package/docs/en/components/xwriter.md +106 -0
- package/docs/en/components.md +151 -0
- package/docs/en/conditional-network-evidence-ci.md +38 -0
- package/docs/en/conditional-network-evidence.md +50 -0
- package/docs/en/core-migration-guide.md +110 -0
- package/docs/en/design-tokens.md +137 -0
- package/docs/en/docs-rmt-production-hardening.md +31 -0
- package/docs/en/enterprise-adoption.md +413 -0
- package/docs/en/enterprise-component-flex-release-handoff.md +129 -0
- package/docs/en/epic10-platform-gates.md +62 -0
- package/docs/en/epic10-release-handoff.md +81 -0
- package/docs/en/epic11-enterprise-ux-handoff.md +70 -0
- package/docs/en/epic12-rc0-handoff.md +61 -0
- package/docs/en/epic18-media-manager-vendor-upstream.md +232 -0
- package/docs/en/epic18-rmt-app-platform-release-handoff.md +60 -0
- package/docs/en/epic18-vendor-bugfixes.md +29 -0
- package/docs/en/existing-component-metadata.md +67 -0
- package/docs/en/hydration-performance-closure.md +34 -0
- package/docs/en/hydration-policies.md +75 -0
- package/docs/en/known-residual-triage.md +22 -0
- package/docs/en/manifest-import-policy.md +81 -0
- package/docs/en/manifest.md +135 -0
- package/docs/en/motion-contrast.md +67 -0
- package/docs/en/package-export-lock.md +44 -0
- package/docs/en/performance-measurements.md +106 -0
- package/docs/en/performance-regression.md +89 -0
- package/docs/en/performance.md +132 -0
- package/docs/en/previews/README.md +17 -0
- package/docs/en/prod-browser-csp-smokes.md +40 -0
- package/docs/en/public-component-types.md +79 -0
- package/docs/en/quick-start-guide.md +189 -0
- package/docs/en/rc0-adoption-guide.md +102 -0
- package/docs/en/rc0-gate-matrix.md +58 -0
- package/docs/en/rc1-gate-matrix-ci-handoff.md +56 -0
- package/docs/en/rc1-migration-notes.md +69 -0
- package/docs/en/rc1-readiness.md +46 -0
- package/docs/en/release-owner-acceptance.md +56 -0
- package/docs/en/release-report-pack-dry-run-evidence.md +39 -0
- package/docs/en/rmt-action-effect-runtime.md +101 -0
- package/docs/en/rmt-app-platform-authoring.md +47 -0
- package/docs/en/rmt-app-platform-fixture.md +35 -0
- package/docs/en/rmt-app-platform-migration-guide.md +75 -0
- package/docs/en/rmt-app-platform-tooling.md +58 -0
- package/docs/en/rmt-component-template-primitives.md +49 -0
- package/docs/en/rmt-dom-descriptor-renderer.md +54 -0
- package/docs/en/rmt-dsl-authoring-polish.md +143 -0
- package/docs/en/rmt-event-routing-runtime.md +98 -0
- package/docs/en/rmt-first-demo-app.md +87 -0
- package/docs/en/rmt-first-xtend-apps.md +127 -0
- package/docs/en/rmt-kernel-panic-recovery-incident-handoff.md +60 -0
- package/docs/en/rmt-kernel-security-hardening-migration.md +49 -0
- package/docs/en/rmt-kernel-trusted-output-authoring.md +68 -0
- package/docs/en/rmt-language-server.md +243 -0
- package/docs/en/rmt-lifecycle-demo.md +23 -0
- package/docs/en/rmt-linter.md +146 -0
- package/docs/en/rmt-node-ssr-adapter.md +99 -0
- package/docs/en/rmt-php-ssr-adapter.md +118 -0
- package/docs/en/rmt-production-readiness.md +63 -0
- package/docs/en/rmt-state-selector-runtime.md +34 -0
- package/docs/en/rmt-surface-resource-graph-runtime.md +68 -0
- package/docs/en/rmt-tooling-release-gates.md +77 -0
- package/docs/en/rmt-vnext-authoring.md +102 -0
- package/docs/en/rmt-vnext-component-primitives.md +185 -0
- package/docs/en/rmt-vnext-cross-surface-events.md +59 -0
- package/docs/en/rmt-vnext-enterprise-mfe-handoff.md +62 -0
- package/docs/en/rmt-vnext-fabric-bridge-evidence.md +64 -0
- package/docs/en/rmt-vnext-migration-notes.md +62 -0
- package/docs/en/rmt-vnext-primitive-authoring-tooling.md +174 -0
- package/docs/en/rmt-vnext-primitive-grammar-design.md +268 -0
- package/docs/en/rmt-vnext-primitive-lowering.md +91 -0
- package/docs/en/rmt-vnext-primitive-migration.md +93 -0
- package/docs/en/rmt-vnext-primitive-parser-ast.md +59 -0
- package/docs/en/rmt-vnext-primitive-semantic-graph.md +103 -0
- package/docs/en/rmt-vnext-primitives-compiler-backlog.md +327 -0
- package/docs/en/rmt-vnext-release-handoff.md +83 -0
- package/docs/en/rmt-vnext-remote-surfaces.md +81 -0
- package/docs/en/rmt-vnext-source-to-sea-gate.md +482 -0
- package/docs/en/rmt-vnext-surface-registry-enterprise.md +68 -0
- package/docs/en/screenreader-signals.md +56 -0
- package/docs/en/supply-chain-gates.md +106 -0
- package/docs/en/surface-manager-authoring-guide.md +94 -0
- package/docs/en/surface-manager-browser-lab.md +45 -0
- package/docs/en/surface-manager-component-lab.md +43 -0
- package/docs/en/surface-manager-controller.md +66 -0
- package/docs/en/surface-manager-layout-engines.md +32 -0
- package/docs/en/surface-manager-lazy-hydration.md +63 -0
- package/docs/en/surface-manager-migration-guide.md +113 -0
- package/docs/en/surface-manager-native-rmt-surfaces.md +38 -0
- package/docs/en/surface-manager-overlay-bridge.md +53 -0
- package/docs/en/surface-manager-persistence.md +30 -0
- package/docs/en/surface-manager-quality-gates.md +51 -0
- package/docs/en/surface-manager-release-handoff.md +68 -0
- package/docs/en/surface-manager-remote-policy.md +54 -0
- package/docs/en/surface-manager-rmt-authoring.md +89 -0
- package/docs/en/surface-manager-route-lifecycle.md +59 -0
- package/docs/en/surface-manager-runtime-release-handoff.md +69 -0
- package/docs/en/surface-manager-side-panel-runtime.md +36 -0
- package/docs/en/surface-manager-stack-policy.md +39 -0
- package/docs/en/surface-manager-window-runtime.md +47 -0
- package/docs/en/surface-manager-workbench-fixture.md +43 -0
- package/docs/en/third-party-design-authoring.md +406 -0
- package/docs/en/trusted-dom-boundary-browser-proof.md +32 -0
- package/docs/en/trusted-dom-sanitizing.md +124 -0
- package/docs/en/type-exports.md +61 -0
- package/docs/en/typescript-components.md +63 -0
- package/docs/en/visual-browser-regression.md +83 -0
- package/docs/en/visual-owner-artifacts.md +46 -0
- package/docs/en/visual-snapshot-automation.md +87 -0
- package/docs/en/xtend-api-types.md +55 -0
- package/docs/en/xtend-builder-types.md +55 -0
- package/docs/en/xtend-catalog-types.md +44 -0
- package/docs/en/xtend-fabric-rmt-lane-mapping.md +143 -0
- package/docs/en/xtend-fabric.md +474 -0
- package/docs/en/xtend-loader-types.md +58 -0
- package/docs/en/xtend-loader.md +265 -0
- package/docs/en/xtend-policy-types.md +38 -0
- package/docs/en/xtend-rmt-types.md +40 -0
- package/docs/en/xtend-vendor-types.md +36 -0
- package/docs/en/xtendrmt-app-dsl.md +331 -0
- package/docs/en/xtendrmt-migration-guide.md +256 -0
- package/docs/en/xtendrmt-native-authoring.md +336 -0
- package/docs/en/xtendrmt-overview.md +63 -0
- package/docs/en/xtendrmt-parsedown-scheduling.md +301 -0
- package/docs/en/xtendrmt-runtime-bridge.md +155 -0
- package/docs/enterprise-adoption.md +4 -2
- package/docs/epic18-media-manager-vendor-upstream.md +318 -0
- package/docs/epic18-rmt-app-platform-release-handoff.md +67 -0
- package/docs/epic18-vendor-bugfixes.md +34 -0
- package/docs/index.php +1056 -109
- package/docs/manifest.md +8 -2
- package/docs/menu.json +986 -133
- package/docs/package-export-lock.md +2 -2
- package/docs/public-component-types.md +2 -2
- package/docs/quick-start-guide.md +126 -58
- package/docs/rmt-action-effect-runtime.md +101 -0
- package/docs/rmt-app-platform-authoring.md +54 -0
- package/docs/rmt-app-platform-fixture.md +46 -0
- package/docs/rmt-app-platform-migration-guide.md +88 -0
- package/docs/rmt-app-platform-tooling.md +79 -0
- package/docs/rmt-component-template-primitives.md +57 -0
- package/docs/rmt-dom-descriptor-renderer.md +64 -0
- package/docs/rmt-dsl-authoring-polish.md +67 -44
- package/docs/rmt-event-routing-runtime.md +98 -0
- package/docs/rmt-first-demo-app.md +2 -2
- package/docs/rmt-first-xtend-apps.md +70 -46
- package/docs/rmt-language-server.md +61 -4
- package/docs/rmt-lifecycle-demo.md +1 -2
- package/docs/rmt-node-ssr-adapter.md +144 -0
- package/docs/rmt-php-ssr-adapter.md +158 -0
- package/docs/rmt-state-selector-runtime.md +47 -0
- package/docs/rmt-surface-resource-graph-runtime.md +92 -0
- package/docs/rmt-vnext-authoring.md +128 -18
- package/docs/rmt-vnext-component-primitives.md +188 -0
- package/docs/rmt-vnext-fabric-bridge-evidence.md +81 -0
- package/docs/rmt-vnext-primitive-authoring-tooling.md +247 -0
- package/docs/rmt-vnext-primitive-grammar-design.md +289 -0
- package/docs/rmt-vnext-primitive-lowering.md +108 -0
- package/docs/rmt-vnext-primitive-migration.md +119 -0
- package/docs/rmt-vnext-primitive-parser-ast.md +76 -0
- package/docs/rmt-vnext-primitive-semantic-graph.md +118 -0
- package/docs/rmt-vnext-primitives-compiler-backlog.md +742 -0
- package/docs/rmt-vnext-release-handoff.md +14 -0
- package/docs/rmt-vnext-source-to-sea-gate.md +629 -0
- package/docs/surface-manager-migration-guide.md +34 -6
- package/docs/surface-manager-overlay-bridge.md +9 -4
- package/docs/surface-manager-rmt-authoring.md +50 -34
- package/docs/surface-manager-workbench-fixture.md +1 -2
- package/docs/third-party-design-authoring.md +1 -1
- package/docs/type-exports.md +3 -3
- package/docs/utils/pageloader.js +811 -62
- package/docs/visual-browser-regression.md +1 -1
- package/docs/xtend-rmt-types.md +3 -2
- package/docs/xtendrmt-app-dsl.md +187 -122
- package/docs/xtendrmt-docs-shell-vnext.rmt +165 -0
- package/docs/xtendrmt-migration-guide.md +48 -17
- package/docs/xtendrmt-native-authoring.md +213 -217
- package/docs/xtendrmt-overview.md +81 -61
- package/docs/xtendrmt-parsedown-scheduling.md +23 -8
- package/fabric/package.json +1 -1
- package/package.json +684 -21
- package/tools/package.json +5 -1
- package/tools/rmt-editor/vscode/README.md +72 -5
- package/tools/rmt-editor/vscode/XTend-Logo.png +0 -0
- package/tools/rmt-editor/vscode/extension.d.ts +33 -0
- package/tools/rmt-editor/vscode/extension.js +1816 -7
- package/tools/rmt-editor/vscode/language-configuration.json +2 -1
- package/tools/rmt-editor/vscode/package.json +193 -2
- package/tools/rmt-editor/vscode/snippets/rmt.code-snippets +41 -0
- package/tools/rmt-editor/vscode/syntaxes/rmt.tmLanguage.json +103 -1
- package/tools/rmt-editor/vscode/templates/launch.json +70 -0
- package/tools/rmt-editor/vscode/templates/tasks.json +172 -0
- package/tools/rmt-editor/vscode/xtend-rmt-language-0.0.0-enterprise-readiness.vsix +0 -0
- package/tools/rmt-language/app-platform-tooling.d.ts +128 -0
- package/tools/rmt-language/app-platform-tooling.js +677 -0
- package/tools/rmt-language/completions.d.ts +5 -0
- package/tools/rmt-language/completions.js +185 -3
- package/tools/rmt-language/diagnostics.js +54 -0
- package/tools/rmt-language/hover.js +36 -0
- package/tools/rmt-language/rmt-tooling-public-types.d.ts +7 -0
- package/tools/rmt-language/rules/app-platform-policy.js +39 -0
- package/tools/rmt-language/rules/index.js +5 -1
- package/tools/rmt-language/semantic-graph.d.ts +6 -0
- package/tools/rmt-language/semantic-graph.js +928 -0
- package/tools/rmt-language/snippets/index.js +44 -0
- package/tools/rmt-language/snippets/rmt.code-snippets +41 -0
- package/tools/rmt-language/vnext-compatibility.d.ts +10 -0
- package/tools/rmt-language/vnext-compatibility.js +642 -0
- package/tools/rmt-language/vnext-compiler.d.ts +5 -0
- package/tools/rmt-language/vnext-compiler.js +863 -17
- package/tools/rmt-language/vnext-parser.js +725 -9
- package/tools/rmt-language/vnext-release.d.ts +1 -0
- package/tools/rmt-language/vnext-release.js +20 -0
- package/tools/rmt-language/vnext-source-to-sea.d.ts +33 -0
- package/tools/rmt-language/vnext-source-to-sea.js +2227 -0
- package/tools/rmt-language/vnext-surfaces.js +111 -52
- package/tools/rmt-language/vnext-tooling.d.ts +19 -1
- package/tools/rmt-language/vnext-tooling.js +1247 -5
- package/tools/rmt-language-server/protocol.js +3 -0
- package/tools/rmt-language-server/server.d.ts +2 -0
- package/tools/rmt-language-server/server.js +176 -22
- package/tools/rmt-linter/cli.d.ts +2 -0
- package/tools/rmt-linter/cli.js +62 -0
- package/xtend-builder/generators/registry.js +11 -0
- package/xtend-builder/generators/rmt-app-platform.js +239 -0
- package/xtend-builder/generators/rmt-lifecycle-demo.js +3 -11
- package/xtend-builder/lib/cli.js +38 -0
- package/xtend-builder/package.json +3 -3
- package/xtend-builder/scaffold.config.js +29 -2
- package/xtend.css +49 -2
- package/xtendrmt/package.json +49 -1
- package/xtendrmt/rmt-action-effect-runtime.d.ts +126 -0
- package/xtendrmt/rmt-action-effect-runtime.js +494 -0
- package/xtendrmt/rmt-component-capability-registry.d.ts +180 -0
- package/xtendrmt/rmt-component-capability-registry.js +636 -0
- package/xtendrmt/rmt-core.d.ts +6 -0
- package/xtendrmt/rmt-core.esm.js +32 -6
- package/xtendrmt/rmt-dom-descriptor-renderer.d.ts +107 -0
- package/xtendrmt/rmt-dom-descriptor-renderer.js +1066 -0
- package/xtendrmt/rmt-event-routing-runtime.d.ts +144 -0
- package/xtendrmt/rmt-event-routing-runtime.js +666 -0
- package/xtendrmt/rmt-lifecycle-demo.app.js +2 -2
- package/xtendrmt/rmt-lifecycle-demo.core.json +4 -0
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.app.js +1 -1
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.scaffold.json +2 -2
- package/xtendrmt/rmt-lifecycle-demo.scaffold.json +4 -4
- package/xtendrmt/rmt-native-shell-runtime.d.ts +77 -0
- package/xtendrmt/rmt-native-shell-runtime.js +309 -0
- package/xtendrmt/rmt-node-ssr-adapter.d.ts +197 -0
- package/xtendrmt/rmt-node-ssr-adapter.js +1006 -0
- package/xtendrmt/rmt-php-ssr-adapter.php +976 -0
- package/xtendrmt/rmt-runtime.browser.js +32 -6
- package/xtendrmt/rmt-runtime.esm.js +32 -6
- package/xtendrmt/rmt-state-selector-runtime.d.ts +166 -0
- package/xtendrmt/rmt-state-selector-runtime.js +866 -0
- package/xtendrmt/rmt-surface-resource-graph-runtime.d.ts +224 -0
- package/xtendrmt/rmt-surface-resource-graph-runtime.js +932 -0
- package/xtendrmt/rmt-vnext-enterprise-mfe-demo.core.json +3 -0
- package/xtendrmt/rmt-vnext-reference-demo.core.json +3 -0
- package/xtendrmt/xtendrmt-bestcase-demo.core.json +3420 -372
- package/xtendrmt/xtendrmt-bestcase-demo.js +424 -8
- package/xtendrmt/xtendrmt-bestcase-demo.rmt +214 -6
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
# RMT vNext Primitive Compiler Backlog
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.rmt.vnext-primitives-compiler-backlog.v1`
|
|
4
|
+
- Status: `in_progress`
|
|
5
|
+
- Source: Media Manager downstream integration, `2026-05-19`
|
|
6
|
+
- Transfer type: lessons learned / backlog
|
|
7
|
+
- Downstream evidence:
|
|
8
|
+
- `/home/konni/Dokumente/net.ccs.cloud/media-manager/src/rmt/media-manager-shell.rmt`
|
|
9
|
+
- `/home/konni/Dokumente/net.ccs.cloud/media-manager/src/rmt/media-manager-shell.orchestration.rmt`
|
|
10
|
+
- `/home/konni/Dokumente/net.ccs.cloud/media-manager/docs/xtend-component-bugfixes.md`
|
|
11
|
+
|
|
12
|
+
## Problem
|
|
13
|
+
|
|
14
|
+
The Media Manager integration shows that the new RMT App Platform primitives are conceptually correct, but the developer experience still splits into two authoring models.
|
|
15
|
+
|
|
16
|
+
- RMT vNext is the understandable, human-friendly developer syntax.
|
|
17
|
+
- App Platform primitives currently live in a separate JSON-shaped source.
|
|
18
|
+
- The classic RMT build still has the scaffold/core compatibility path.
|
|
19
|
+
- Developers need to know which compiler owns which layer before they can build a coherent app shell.
|
|
20
|
+
|
|
21
|
+
This makes RMT lose part of its platform value. A platform is only credible when app authors can express the complete product shell in one unified, readable and diagnosable authoring experience.
|
|
22
|
+
|
|
23
|
+
## Epic Goal
|
|
24
|
+
|
|
25
|
+
The next RMT epic must massively expand the vNext compiler: app authors must be able to declare App Platform primitives directly in RMT vNext.
|
|
26
|
+
|
|
27
|
+
RMT Legacy and compatible JSON intermediate formats should move into the background. Developers should no longer have to work in legacy formats for normal app-shell work. The primary authoring surface is vNext; the compiler lowers that source into all runtime artifacts required by kernel, Fabric and UI host.
|
|
28
|
+
|
|
29
|
+
## Required vNext Primitive Surface
|
|
30
|
+
|
|
31
|
+
Grammar, parser, semantic graph and compiler output for vNext must support at least these primitive families:
|
|
32
|
+
|
|
33
|
+
| Primitive Family | Required vNext Capability |
|
|
34
|
+
|------------------|---------------------------|
|
|
35
|
+
| App Shell | template, route, root, shell chrome, slots and stable islands |
|
|
36
|
+
| Components | component refs, attributes, text nodes, slots, keyed lists, conditions and DOM descriptors |
|
|
37
|
+
| State | state records, selectors, derived values, reducers, persistence and XState bridge hints |
|
|
38
|
+
| Data | fixtures, REST endpoints, SSR payloads, streams, pagination and schema contracts |
|
|
39
|
+
| Actions | action declarations, async effects, loading/success/error status, retries and result routing |
|
|
40
|
+
| Events | DOM/custom event bindings, payload contracts, governance, bubbling/capture policy and action targets |
|
|
41
|
+
| Surfaces | static surfaces, dynamic keyed surface repeaters, bounds, focus, close, minimize, restore and persistence |
|
|
42
|
+
| Overlays | tooltip, toast, lightbox, popover, dialog and menu portal semantics |
|
|
43
|
+
| Resources | object URLs, streams, observers, timers, lazy imports and owner-scoped teardown |
|
|
44
|
+
| Security | trust boundaries, sanitizer policies, import policy and no-kernel-host-import assertions |
|
|
45
|
+
| Diagnostics | source maps, source pointers, primitive IDs, schedule refs and runtime correlation IDs |
|
|
46
|
+
|
|
47
|
+
The result must make it possible to build a granular app shell exclusively in RMT vNext. Host adapters may still provide endpoints, component imports and browser execution. UI structure, state graph, event routing, effects and lifecycle ownership must come from vNext source.
|
|
48
|
+
|
|
49
|
+
## Compiler Requirements
|
|
50
|
+
|
|
51
|
+
The compiler must become a complete App Platform lowering pipeline:
|
|
52
|
+
|
|
53
|
+
1. Parse vNext primitive syntax into a typed AST.
|
|
54
|
+
2. Build a semantic graph for components, state, selectors, actions, events, surfaces, portals, overlays, resources and data sources.
|
|
55
|
+
3. Validate references and contracts before runtime.
|
|
56
|
+
4. Generate deterministic RMT Core records for kernel ingestion.
|
|
57
|
+
5. Generate App Platform build reports, diagnostics and source maps from the same vNext source.
|
|
58
|
+
6. Generate scaffold and runtime adapter artifacts for XTend UI without forcing app authors into generated or legacy intermediate formats.
|
|
59
|
+
7. Preserve source-to-runtime correlation for every visible object and every event.
|
|
60
|
+
8. Keep the RMT kernel boundary framework-neutral: no XTend component imports in the kernel, no Fabric import in the kernel and no browser assumptions in Core records.
|
|
61
|
+
|
|
62
|
+
The old compatibility path may continue to exist as a compiler target, but must not be the authoring path.
|
|
63
|
+
|
|
64
|
+
## Kernel Retest After the Upgrade
|
|
65
|
+
|
|
66
|
+
After the compiler upgrade, the new output must be tested against the RMT kernel again. It is not enough to prove that vNext can parse and generate JSON. What must be provable is that vNext-authored primitives can drive the runtime stack.
|
|
67
|
+
|
|
68
|
+
The kernel gate must show that:
|
|
69
|
+
|
|
70
|
+
- vNext source can declare lanes and fibers through first-class syntax.
|
|
71
|
+
- The compiler lowers these declarations into kernel-readable schedule and lifecycle records.
|
|
72
|
+
- The RMT kernel can ingest these records without framework-specific imports.
|
|
73
|
+
- Fabric can receive or derive the expected lanes, fibers and schedule refs.
|
|
74
|
+
- The UI host can materialize the requested object or event.
|
|
75
|
+
- A headless browser can observe the final object, state change or event in the visible viewport.
|
|
76
|
+
|
|
77
|
+
## Source-to-Sea Fullstack Gate
|
|
78
|
+
|
|
79
|
+
A required "source to sea" gate must be introduced for RMT vNext.
|
|
80
|
+
|
|
81
|
+
The gate reconstructs the lifecycle of a UI object from RMT source to browser evidence:
|
|
82
|
+
|
|
83
|
+
```text
|
|
84
|
+
RMT vNext source
|
|
85
|
+
-> parser AST
|
|
86
|
+
-> semantic primitive graph
|
|
87
|
+
-> compiler core/app artifacts
|
|
88
|
+
-> RMT kernel schedule/lifecycle ingestion
|
|
89
|
+
-> Fabric lane/fiber telemetry
|
|
90
|
+
-> XTend UI host adapter
|
|
91
|
+
-> DOM/custom-element materialization
|
|
92
|
+
-> visible headless-browser viewport assertion
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The gate must fail if any correlation link is missing. The same primitive ID must be traceable through source-map pointer, compiler output, kernel record, Fabric fiber, DOM marker and browser assertion.
|
|
96
|
+
|
|
97
|
+
### Minimal Fixture
|
|
98
|
+
|
|
99
|
+
A small vNext fixture should declare:
|
|
100
|
+
|
|
101
|
+
- a visible component object, for example status, toast or card surface;
|
|
102
|
+
- a user-facing event, for example button click or custom component event;
|
|
103
|
+
- an action or effect with success status;
|
|
104
|
+
- a state update and selector;
|
|
105
|
+
- a Fabric lane and fiber expectation;
|
|
106
|
+
- a resource or surface lifecycle boundary.
|
|
107
|
+
|
|
108
|
+
The browser smoke must trigger the event and verify:
|
|
109
|
+
|
|
110
|
+
- The object exists in the viewport.
|
|
111
|
+
- State or text changes visibly.
|
|
112
|
+
- The event is recorded with the expected RMT action ID.
|
|
113
|
+
- Fabric reports the expected lane/fiber metadata.
|
|
114
|
+
- Kernel diagnostics contain the expected schedule/lifecycle record.
|
|
115
|
+
- Source-map metadata points back to the vNext source position.
|
|
116
|
+
|
|
117
|
+
## Evidence Contract
|
|
118
|
+
|
|
119
|
+
The full-stack gate writes a machine-readable evidence file. The artifact report uses `xtend.rmt.vnext.source-to-sea-evidence-report.v1` and lives at `.xtend-test-results/xtend-rmt-vnext-source-to-sea-evidence.json`; the embedded lifecycle evidence remains `xtend.rmt.vnext.source-to-sea-evidence.v1`.
|
|
120
|
+
|
|
121
|
+
Example embedded lifecycle evidence:
|
|
122
|
+
|
|
123
|
+
```json
|
|
124
|
+
{
|
|
125
|
+
"schema": "xtend.rmt.vnext.source-to-sea-evidence.v1",
|
|
126
|
+
"source": "tests/rmt-language/fixtures/vnext-source-to-sea.rmt",
|
|
127
|
+
"primitiveId": "demo.feedback.status",
|
|
128
|
+
"sourcePointer": "/events/0",
|
|
129
|
+
"compiler": {
|
|
130
|
+
"ok": true,
|
|
131
|
+
"artifactCount": 9
|
|
132
|
+
},
|
|
133
|
+
"kernel": {
|
|
134
|
+
"ingested": true,
|
|
135
|
+
"scheduleRef": "schedule:demo.feedback/demo.feedback.status/visible"
|
|
136
|
+
},
|
|
137
|
+
"fabric": {
|
|
138
|
+
"schema": "xtend.rmt.vnext.fabric-bridge-evidence.v1",
|
|
139
|
+
"workpackage": "RMT-VNEXT-PRIM-05",
|
|
140
|
+
"lane": "visible",
|
|
141
|
+
"fiber": "fiber:demo.feedback/demo.feedback.status/visible/0",
|
|
142
|
+
"scheduleRef": "component.visible.hydrate",
|
|
143
|
+
"endpointName": "xtendrmt.component.hydrate",
|
|
144
|
+
"telemetry": {
|
|
145
|
+
"schema": "xtend.fabric.telemetry-snapshot.v1",
|
|
146
|
+
"fiberCount": 6
|
|
147
|
+
},
|
|
148
|
+
"hostAdapter": {
|
|
149
|
+
"schema": "xtend.component.lifecycle-telemetry.v1",
|
|
150
|
+
"source": "xtend.component-adapter",
|
|
151
|
+
"operation": "hydrate"
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
"ui": {
|
|
155
|
+
"selector": "[data-rmt-primitive-id=\"demo.feedback.status\"]",
|
|
156
|
+
"visible": true,
|
|
157
|
+
"text": "Saved"
|
|
158
|
+
},
|
|
159
|
+
"browser": {
|
|
160
|
+
"viewportAsserted": true,
|
|
161
|
+
"eventObserved": true
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Current State on 2026-05-20
|
|
167
|
+
|
|
168
|
+
The first compiler and DX track for vNext primitives is release-gated:
|
|
169
|
+
|
|
170
|
+
- `RMT-VNEXT-PRIM-01` through `RMT-VNEXT-PRIM-04` are complete. Grammar, parser/AST, semantic graph and lowering create deterministic Core, App Platform and Kernel records from vNext source.
|
|
171
|
+
- `RMT-VNEXT-PRIM-06` has a deterministic source-to-sea slice. `createRmtVNextSourceToSeaEvidence(...)` correlates vNext source maps, kernel schedules, derivable Fabric fibers, UI markers and browser probe.
|
|
172
|
+
- `RMT-VNEXT-PRIM-06` also has a browser execution path. `runRmtVNextSourceToSeaBrowserExecution(...)` can open the same fixture through WebDriver, ChromeDriver or Safari Driver, read `window.__xtendRmtVNextSourceToSeaResult` and compare the real browser result against compiler, kernel and Fabric evidence. Without a local browser environment, the default run remains deterministic as a fixture contract.
|
|
173
|
+
- `RMT-VNEXT-PRIM-06` now writes source-to-sea evidence as a release artifact. `node scripts/capture_rmt_vnext_source_to_sea_evidence.js` creates `.xtend-test-results/xtend-rmt-vnext-source-to-sea-evidence.json`; `npm run test:rmt-vnext-source-to-sea:browser-required` makes the same path required for explicit local headless profiles.
|
|
174
|
+
- `RMT-VNEXT-PRIM-06` is now optional browser evidence in GitHub Actions. The job `rmt-vnext-primitive-gates` uses `npm run test:rmt-vnext-source-to-sea:chromedriver` only on manual `workflow_dispatch` with `run_source_to_sea=true` and then uploads the same source-to-sea evidence artifact.
|
|
175
|
+
- ChromeDriver auto-cleanup is robust for local Snap/Chromium installations. Automatically started ChromeDriver is first stopped through the WebDriver endpoint `/shutdown`; `process.kill()` remains only the fallback. This lets `npm run test:rmt-vnext-source-to-sea:chromedriver` pass locally with required-browser policy and artifact `driver: "chromedriver"`, `objectCount: 4`, one cross-primitive event, two route switches and two route lifecycle cycles.
|
|
176
|
+
- `RMT-VNEXT-PRIM-06` now has a multi-object slice. The fixture correlates `demo.feedback.status` and `demo.feedback.toast` as two simultaneous visible primitives across vNext source, kernel schedules, Fabric fibers, UI markers and browser probe.
|
|
177
|
+
- The multi-object slice now covers separate lanes and a cross-primitive event: `demo.feedback.status` runs visible, `demo.feedback.toast` runs on `idle`, and `demo.feedback.save` reduces toast state and emits `demo.feedback.toast.promoted`.
|
|
178
|
+
- The cross-primitive matrix now also covers a multi-stage cross-route event: after route mount, `demo.feedback.detail.ack -> demo.feedback.audit` goes through `demo.feedback.audit.escalated` and `state.demo.feedback.audit.text` from one `transition` target to the next. The browser result must show two cross-primitive events and report `stage: "route-target"`, `sourceLane: "transition"` and `targetLane: "transition"` for the second entry.
|
|
179
|
+
- The browser matrix additionally carries a route switch as PRIM-06 evidence: `demo.feedback.save` switches from `/rmt-vnext-source-to-sea` to `/rmt-vnext-source-to-sea/toast`, uses `ui.user-blocking.input` for navigation, `route.transition.render` for rendering and writes this route telemetry into the browser-required result.
|
|
180
|
+
- The route switch now has a real route-target object: `demo.feedback.detail` is authored in vNext as its own surface with `transition` lane, starts unmounted in the browser fixture and becomes visible only after the route change. The matrix correlates source, kernel schedule, Fabric fiber, route render schedule, UI marker and browser viewport.
|
|
181
|
+
- The route-target slice now also has remount/unmount evidence: `demo.feedback.detail` is unmounted after the first mount, `demo.feedback.detailTimer` is proven as resource cleanup through `dispose on surface.destroy`, and the target is then mounted visibly again through `route.transition.render`.
|
|
182
|
+
- The route-lifecycle slice now covers multiple targets. In addition to `demo.feedback.detail`, `demo.feedback.audit` is mounted as a second vNext-authored route target with its own `transition` lane and `demo.feedback.auditTimer`. The real browser-required run must report two sequential route switches and separate `unmountCount`/`remountCount` pairs per target with `countsMatch: true`.
|
|
183
|
+
- The route-lifecycle matrix now covers multiple cleanup resource kinds per target. Beside the timer, `demo.feedback.audit` also has `demo.feedback.auditSubscription` with `kind subscription`; the static object matrix and the real browser result must both show both resource IDs, `resourceKinds: ["timer", "subscription"]` and `resourceDisposed: true` for the audit cycle.
|
|
184
|
+
- Negative cleanup diagnostics are anchored in the gate. The fixture `tests/rmt-language/fixtures/vnext-source-to-sea-cleanup-invalid.rmt` intentionally leaves `demo.feedback.detailTimer` without `dispose on surface.destroy`; the route-lifecycle matrix must fail in a controlled way and report `rmt.vnext.source_to_sea.cleanup_dispose_policy_missing`.
|
|
185
|
+
- Owner mismatch diagnostics are also gateable. The fixture `tests/rmt-language/fixtures/vnext-source-to-sea-cleanup-owner-invalid.rmt` has `dispose on surface.destroy`, but intentionally binds `demo.feedback.detailTimer` to `surface.demo.feedback.toast`; the route-lifecycle matrix must report `rmt.vnext.source_to_sea.cleanup_owner_mismatch` and show the wrong owner in evidence.
|
|
186
|
+
- Missing cleanup resource records are now gateable as well. The fixture `tests/rmt-language/fixtures/vnext-source-to-sea-cleanup-resource-missing.rmt` keeps the route target `demo.feedback.audit`, but completely removes `demo.feedback.auditTimer` from the vNext source. The matrix must fail specifically for `demo.feedback.audit` with `rmt.vnext.source_to_sea.cleanup_resource_missing`, while the `demo.feedback.detail` lifecycle stays `passed`.
|
|
187
|
+
- Resource-kind drift is also gateable. The fixture `tests/rmt-language/fixtures/vnext-source-to-sea-cleanup-kind-invalid.rmt` keeps `demo.feedback.auditSubscription` bound to `surface.demo.feedback.audit` and keeps `dispose on surface.destroy`, but intentionally declares it as `kind cache`. The matrix must fail with `rmt.vnext.source_to_sea.cleanup_kind_mismatch` and show both `expectedKind: "subscription"` and `actualKind: "cache"`.
|
|
188
|
+
- The ChromeDriver evidence report now has its own CI artifact validation: `xtend.rmt.vnext.source-to-sea-ci-artifact-validation.v1`. In local browser-skip mode it remains `skipped`; in the required-browser path it must be `passed` and prove `objectCount: 4`, two cross-primitive events, two route switches, two route lifecycle cycles, `targetMounted`, `targetVisible`, `countsMatch` and the audit resources `demo.feedback.auditTimer` and `demo.feedback.auditSubscription`.
|
|
189
|
+
- `RMT-VNEXT-PRIM-07` has the first tooling slice for completions, hover, symbols and docs so vNext remains the default authoring path.
|
|
190
|
+
- `RMT-VNEXT-PRIM-07` now also has cursor-near primitive completions: `getRmtVNextToolingCompletions(...)` and the language server can derive state clauses, resource kinds and action partial words from position, source-map pointer and current line without editors having to set `xtend.context` explicitly.
|
|
191
|
+
- `RMT-VNEXT-PRIM-07` has the first quick-fix slice: `getRmtVNextToolingCodeActions(...)` and `textDocument/codeAction` create safe WorkspaceEdits for `owner-missing`, `unkeyed-repeat` and `payload-contract-missing`, so vNext authors can repair primitive errors directly in the editor.
|
|
192
|
+
- `RMT-VNEXT-PRIM-07` now has a second quick-fix slice: `initial-missing`, `resource-kind-missing` and `unknown-reference` for selector and portal references receive source-preserving repairs. This guides authors from common typo/scaffold gaps directly to valid primitive structure.
|
|
193
|
+
- `RMT-VNEXT-PRIM-07` has the action-authoring slice: `action-reducer-missing` and `effect-source-missing` create safe text edits for reducer targets and `effect fetch datasource` sources. `kernel-boundary` deliberately remains a command handoff without text edit so Kernel/Fabric imports are moved to host adapters.
|
|
194
|
+
- `RMT-VNEXT-PRIM-07` has the preview/fix-all slice: every primitive code action carries an `xtend.rmt.vnext.primitive-code-action-preview.v1` preview, and `source.fixAll.rmt.vnext.primitives` bundles all safe text-edit repairs in a document. Manual boundary commands are excluded from the bulk apply.
|
|
195
|
+
- `RMT-VNEXT-PRIM-07` now also has the command handoff for manual boundary cases: the language server reports `xtend.rmt.vnext.extractKernelImport` as `workspace/executeCommand` and returns `xtend.rmt.vnext.primitive-command-handoff.v1` without WorkspaceEdit. This lets an editor visibly move Kernel/Fabric import violations into a host-adapter path without automatically rewriting vNext source in a framework-specific way.
|
|
196
|
+
- `RMT-VNEXT-PRIM-07` now has the first VS Code bridge apply experience: `tools/rmt-editor/vscode/extension.js` classifies vNext primitive CodeActions into `workspace-edit`, `fix-all` and `manual-command`, exposes four VS Code commands and renders `xtend.rmt.editor.vscode-primitive-authoring-experience.v1` in the Output Channel. The DX is now not only documented, but visible in the editor.
|
|
197
|
+
- `RMT-VNEXT-PRIM-07` is complete. The VS Code bridge now reads the active `.rmt` document when no report is passed, asks the local RMT Language Server in-process through `textDocument/codeAction`, offers QuickPick paths for preview/fix-all/handoff and applies only safe WorkspaceEdits. `kernel-boundary` remains a visible manual handoff without `WorkspaceEdit`.
|
|
198
|
+
- `RMT-VNEXT-PRIM-08` has the first migration slice: App Platform primitive JSON is detected as legacy target, mirrored and annotated with vNext migration diagnostics.
|
|
199
|
+
- `RMT-VNEXT-PRIM-08` is complete. The new `xtend.rmt.vnext.primitive-migration-apply-plan.v1` apply plan creates the same vNext draft from App Platform primitive JSON as the preview, points to a `.vnext.rmt` target path, checks the draft against the vNext compiler and sets `automaticWrite: false`. Compatibility reports now distinguish `report-only`, `preview-ready`, `apply-plan-ready` and `blocked`; legacy remains mirror/compiler target, not authoring path.
|
|
200
|
+
- `RMT-VNEXT-PRIM-05` is complete. The new standalone gate `rmt-vnext-fabric-bridge` checks Fabric/RMT lane resolution, primary Fabric runtime fiber, lane matrix, host-adapter telemetry, route/component fibers, telemetry snapshot and browser markers as its own PRIM-05 contract.
|
|
201
|
+
- The release matrix now contains the primitive aggregate `npm run test:rmt-vnext-primitives:report`; the report is written to `.xtend-test-results/xtend-rmt-vnext-primitives-gate-report.json`.
|
|
202
|
+
- GitHub Actions runs the primitive gates in the job `rmt-vnext-primitive-gates`. The default gate covers parser, compiler, semantic graph, tooling, compatibility and type exports; source-to-sea evidence remains an optional artifact from manual dispatch.
|
|
203
|
+
- The source-to-sea evidence report now contains a machine-readable CI artifact gate. `createRmtVNextSourceToSeaCiArtifactValidation(...)` compares the written ChromeDriver report against the expected PRIM-06 matrix and fails on object, route, lifecycle or resource drift.
|
|
204
|
+
- The CI artifact path is now replayable: `test:rmt-vnext-source-to-sea:validate-artifact` calls `validateRmtVNextSourceToSeaCiArtifactFile(...)`, validates an already written ChromeDriver release artifact without a new browser run and fails closed for missing, unparseable or drifted artifacts.
|
|
205
|
+
- Cross-route drift is now gateable as a negative runtime slice. The browser probe `tests/browser/fixtures/rmt-vnext-source-to-sea-cross-route-invalid.html` intentionally wires `demo.feedback.detail.ack` to the wrong target primitive and must fail through `cross event route-target state belongs to target primitive`, `cross event route-target event belongs to target primitive` and `cross event route-target stage uses transition lanes`.
|
|
206
|
+
- Browser result drift is now also testable without a new browser start. `xtend.rmt.vnext.source-to-sea-browser-result-validation.v1` and `createRmtVNextSourceToSeaBrowserResultValidation(...)` validate the ChromeDriver result structure directly; route-switch drift must fail through `browser execution route switches pass` and lifecycle counter drift through `browser execution route lifecycle cycles pass`. Cross-primitive event drift and viewport/object-status drift must fail through `browser execution cross-primitive events pass` and `browser execution object matrix passes`.
|
|
207
|
+
- The release handoff keeps `npm run test:rmt-semantic-graph` and `npm run test:rmt-vnext-primitives:report` as required gates, while `npm run test:rmt-vnext-source-to-sea` and evidence capture remain optional browser-evidence gates.
|
|
208
|
+
- The full release report was run locally again successfully. Local browser/loopback skips remain accepted environment residuals; the primitive, PR, pack and release reports are consistent.
|
|
209
|
+
|
|
210
|
+
`RMT-VNEXT-PRIM-06`, `RMT-VNEXT-PRIM-07` and `RMT-VNEXT-PRIM-08` are locally complete. Package 6 covers source -> kernel -> Fabric -> UI -> browser, ChromeDriver-required evidence, CI artifact replay and negative drift cases for cross-route, route switch, lifecycle, cross-primitive events and viewport/object status. Package 7 makes these primitive diagnostics actively applicable in the editor. Package 8 provides the deterministic legacy-backgrounding and migration apply plan. The real GitHub Actions artifact comparison remains a release-handoff step for the release branch, no longer a local implementation blocker for the packages.
|
|
211
|
+
|
|
212
|
+
## Workpackages
|
|
213
|
+
|
|
214
|
+
| ID | Priority | Status | Title | Acceptance |
|
|
215
|
+
|----|----------|--------|-------|------------|
|
|
216
|
+
| `RMT-VNEXT-PRIM-01` | P0 | completed | vNext Primitive Grammar Design | Syntax covers state, selectors, actions, events, data, surfaces, overlays, portals and resources without falling back to JSON authoring. |
|
|
217
|
+
| `RMT-VNEXT-PRIM-02` | P0 | completed | Parser and AST Upgrade | Parser creates typed AST nodes with stable source ranges for every primitive. |
|
|
218
|
+
| `RMT-VNEXT-PRIM-03` | P0 | completed | Semantic Graph and Diagnostics | Cross-reference, ownership, event-payload and trust-boundary diagnostics run before runtime. |
|
|
219
|
+
| `RMT-VNEXT-PRIM-04` | P0 | completed | Compiler Lowering into Kernel Records | vNext primitives are lowered into deterministic Core/app artifacts that the RMT kernel can ingest. |
|
|
220
|
+
| `RMT-VNEXT-PRIM-05` | P0 | completed | Fabric Lane/Fiber Bridge Evidence | vNext-authored lanes and fibers are visible in Fabric telemetry without importing Fabric into the kernel. |
|
|
221
|
+
| `RMT-VNEXT-PRIM-06` | P0 | completed | Source-to-Sea Browser Gate | A headless browser test proves source -> kernel -> Fabric -> UI -> viewport for visible object, route, event and lifecycle paths. |
|
|
222
|
+
| `RMT-VNEXT-PRIM-07` | P1 | completed | Language Server and Authoring Docs | Completions, hover, symbols, CodeActions, Safe Fix-All and VS Code bridge teach vNext primitive syntax as the primary developer experience. |
|
|
223
|
+
| `RMT-VNEXT-PRIM-08` | P1 | completed | Migration and Legacy Backgrounding | Existing App Platform JSON fixtures can be converted or mirrored to vNext through preview/apply plan; legacy remains target, not workflow. |
|
|
224
|
+
|
|
225
|
+
## Acceptance Criteria
|
|
226
|
+
|
|
227
|
+
- App authors can declare a granular app shell only in RMT vNext.
|
|
228
|
+
- The compiler creates App Platform primitive reports from vNext source.
|
|
229
|
+
- RMT Legacy or JSON primitive files are not required for normal authoring.
|
|
230
|
+
- Kernel, Fabric and UI evidence can be correlated through primitive ID and source pointer.
|
|
231
|
+
- Fabric lane/fiber evidence is reconstructed from vNext source maps, `kernelRecords.schedules`, `kernelRecords.fibers`, Fabric runtime telemetry and browser markers.
|
|
232
|
+
- The source-to-sea gate is part of the optional RMT browser-evidence matrix.
|
|
233
|
+
- The primitive aggregate runs in GitHub Actions and in the local release report as an independent gate.
|
|
234
|
+
- Docs and language tooling present vNext as the default path and legacy as compatibility target.
|
|
235
|
+
|
|
236
|
+
## Started Work
|
|
237
|
+
|
|
238
|
+
- `RMT-VNEXT-PRIM-01` is complete.
|
|
239
|
+
- Syntax contract: [RMT vNext Primitive Grammar Design](./rmt-vnext-primitive-grammar-design.md)
|
|
240
|
+
- Design fixture: `tests/rmt-language/fixtures/vnext-primitives-grammar-design.rmt`
|
|
241
|
+
- `RMT-VNEXT-PRIM-02` is complete.
|
|
242
|
+
- Parser/AST handoff: [RMT vNext Primitive Parser AST](./rmt-vnext-primitive-parser-ast.md)
|
|
243
|
+
- `RMT-VNEXT-PRIM-03` is complete.
|
|
244
|
+
- Semantic graph handoff: [RMT vNext Primitive Semantic Graph](./rmt-vnext-primitive-semantic-graph.md)
|
|
245
|
+
- New API: `buildRmtVNextPrimitiveSemanticGraph(...)` in `tools/rmt-language/semantic-graph.js`
|
|
246
|
+
- `RMT-VNEXT-PRIM-04` is complete.
|
|
247
|
+
- Lowering handoff: [RMT vNext Primitive Lowering](./rmt-vnext-primitive-lowering.md)
|
|
248
|
+
- Compiler API: `compileRmtVNextSource(...)` uses the PRIM-03 graph as pre-lowering gate and creates `appPlatform` plus `kernelRecords`.
|
|
249
|
+
- `RMT-VNEXT-PRIM-05` is complete.
|
|
250
|
+
- Fabric bridge handoff: [RMT vNext Fabric Bridge Evidence](./rmt-vnext-fabric-bridge-evidence.md)
|
|
251
|
+
- Fabric bridge evidence: `createRmtVNextFabricBridgeEvidence(...)` creates a real `xtend.fabric.fiber.v1` from PRIM-04 kernel schedules and fibers, resolves it through `xtend.fabric.rmt-lane-mapping.v1` and correlates it with an `xtend.fabric.telemetry-snapshot.v1`.
|
|
252
|
+
- Browser markers: `tests/browser/fixtures/rmt-vnext-source-to-sea-smoke.html` carries `data-xtend-fabric-lane`, `data-xtend-fabric-fiber` and `data-xtend-fabric-schedule` so the Fabric bridge remains visible into the viewport.
|
|
253
|
+
- Lane matrix: `RMT_VNEXT_FABRIC_BRIDGE_LANE_MATRIX` hardens the bridge for `user-blocking`, `transition`, `idle`, `background` and `diagnostics`. Every lane creates a completed `xtend.fabric.fiber.v1`, an `xtend.fabric.rmt-lane-mapping.v1` decision and an `xtend.fabric.telemetry-snapshot.v1` schedule entry.
|
|
254
|
+
- Host/adapter telemetry: the source-to-sea bridge reads `xtend.component.lifecycle-telemetry.v1` from the browser probe, normalizes it through `fabric.recordComponentTelemetry(...)` and proves it in the Fabric telemetry snapshot. The XTend UI host-adapter layer is therefore no longer only a static DOM marker, but part of PRIM-05 evidence.
|
|
255
|
+
- Route/component fiber: the bridge now uses `createComponentFiberInstrumentation(...)` for `component.mount` and `component.hydrate` plus `createRouteFiberInstrumentation(...)` for `route.navigate` and `route.render`. Evidence checks the schedule refs `component.visible.mount`, `component.idle.hydrate`, `ui.user-blocking.input` and `route.transition.render` all the way into the Fabric telemetry snapshot.
|
|
256
|
+
- Standalone gate: `tests/rmt-language/rmt_vnext_fabric_bridge_suite.js` validates PRIM-05 as its own release gate. `npm run test:rmt-vnext-primitives:report` now includes `rmt-vnext-fabric-bridge`; source-to-sea remains a separate optional gate.
|
|
257
|
+
- `RMT-VNEXT-PRIM-06` has a first release-gated slice.
|
|
258
|
+
- Source-to-sea handoff: [RMT vNext Source-to-Sea Gate](./rmt-vnext-source-to-sea-gate.md)
|
|
259
|
+
- Evidence API: `createRmtVNextSourceToSeaEvidence(...)` correlates vNext source maps, PRIM-04 kernel records, Fabric fiber derivation, UI markers and browser fixture probe.
|
|
260
|
+
- Browser execution evidence: `runRmtVNextSourceToSeaBrowserExecution(...)` optionally reads the result key `window.__xtendRmtVNextSourceToSeaResult` from the real browser fixture through WebDriver and compares primitive ID, kernel schedule, Fabric fiber, Fabric schedule, host-adapter telemetry and action event with source-to-sea evidence. Without `RMT_VNEXT_SOURCE_TO_SEA_BROWSER_DRIVER`, this step is documented as a local environment skip, not as a release blocker.
|
|
261
|
+
- Evidence report: `createRmtVNextSourceToSeaEvidenceReport(...)` and `writeRmtVNextSourceToSeaEvidenceReport(...)` wrap lifecycle and browser-execution evidence in `xtend.rmt.vnext.source-to-sea-evidence-report.v1`.
|
|
262
|
+
- Release artifact: `.xtend-test-results/xtend-rmt-vnext-source-to-sea-evidence.json` is created through `npm run test:rmt-vnext-source-to-sea:evidence`. In GitHub Actions, the same report is written through `npm run test:rmt-vnext-source-to-sea:chromedriver` only on manual `workflow_dispatch` with `run_source_to_sea=true` and uploaded in the job `rmt-vnext-primitive-gates` as `xtend-rmt-vnext-source-to-sea-evidence-node-26`.
|
|
263
|
+
- ChromeDriver auto-cleanup: `runWebDriverBrowserProbe(...)` now stops automatically started ChromeDriver first through `/shutdown` and uses process signals only as fallback. This fixes Snap/AppArmor environments where a direct `kill()` fails with `EACCES` and previously overwrote a successful browser result. The local required-browser run `npm run test:rmt-vnext-source-to-sea:chromedriver` is now `passed`.
|
|
264
|
+
- Object matrix: `createRmtVNextSourceToSeaObjectMatrix(...)` creates `xtend.rmt.vnext.source-to-sea-object-matrix.v1` and proves four visible primitive lifecycles: `demo.feedback.status`, `demo.feedback.toast`, `demo.feedback.detail` and `demo.feedback.audit`. The matrix checks separate `visible`/`idle`/`transition` lanes and the cross-primitive event `demo.feedback.status -> demo.feedback.toast`.
|
|
265
|
+
- Cross-route event matrix: the same matrix now proves a second route-bound cross-primitive event. `demo.feedback.detail.ack -> demo.feedback.audit` reduces `state.demo.feedback.audit.text`, emits `demo.feedback.audit.escalated` and must be visible both statically and in the real browser result as `stage: "route-target"` with `sourceLane: "transition"` and `targetLane: "transition"`.
|
|
266
|
+
- Route-switch matrix: the same object matrix now validates two sequential browser route changes: `/rmt-vnext-source-to-sea -> /rmt-vnext-source-to-sea/toast` for `demo.feedback.detail` and `/rmt-vnext-source-to-sea/toast -> /rmt-vnext-source-to-sea/audit` for `demo.feedback.audit`. Both use `ui.user-blocking.input`, `route.transition.render` and the `transition` lane. The real browser-execution path must provide two `routeSwitches` with `status: "passed"`, `targetMounted: true` and `targetVisible: true`.
|
|
267
|
+
- Route-lifecycle matrix: `routeLifecycleCycles` validates separate repeated route cycles for `demo.feedback.detail` and `demo.feedback.audit`. Targets are unmounted, resource records `demo.feedback.detailTimer` and `demo.feedback.auditTimer` are validated against `dispose on surface.destroy`, and both targets are remounted afterward. The real browser-execution path must report `unmounted`, `remounted`, `resourceDisposed` and `countsMatch` as `true`, plus `unmountCount: 1` and `remountCount: 1` per target.
|
|
268
|
+
- Multi-resource cleanup: the audit cycle now carries multiple cleanup records. Beside `demo.feedback.auditTimer`, `demo.feedback.auditSubscription` must be provable as `kind subscription`, owner `surface.demo.feedback.audit` and `dispose on surface.destroy` through vNext lowering, object matrix and browser execution. Old `resourceId` cycles remain compatible; new cycles can specify `resources` with multiple resource IDs and expected kinds.
|
|
269
|
+
- Negative cleanup-kind fixture: `tests/rmt-language/fixtures/vnext-source-to-sea-cleanup-kind-invalid.rmt` proves that multi-resource cleanup checks not only existence, owner and dispose policy, but also the expected resource kind. The matrix creates `rmt.vnext.source_to_sea.cleanup_kind_mismatch` for `demo.feedback.auditSubscription`, records `expectedKind: "subscription"` and shows `actualKind: "cache"`.
|
|
270
|
+
- Negative cleanup fixture: `tests/rmt-language/fixtures/vnext-source-to-sea-cleanup-invalid.rmt` proves that the same lifecycle cycle without dispose policy is not accepted as valid evidence. The matrix creates diagnostic code `rmt.vnext.source_to_sea.cleanup_dispose_policy_missing` and records the missing policy with `dispose: null`.
|
|
271
|
+
- Negative cleanup owner fixture: `tests/rmt-language/fixtures/vnext-source-to-sea-cleanup-owner-invalid.rmt` proves that a cleanup resource record with present dispose policy is still invalid when the owner does not match the route target. The matrix creates `rmt.vnext.source_to_sea.cleanup_owner_mismatch` and shows `surface.demo.feedback.toast` as wrong owner.
|
|
272
|
+
- Negative cleanup resource fixture: `tests/rmt-language/fixtures/vnext-source-to-sea-cleanup-resource-missing.rmt` proves that a route lifecycle cycle without emitted resource record is invalid. `demo.feedback.audit` remains authored as a route target, but `demo.feedback.auditTimer` is completely missing; the matrix creates `rmt.vnext.source_to_sea.cleanup_resource_missing`, records `resource: null` and also shows that the `demo.feedback.detail` cycle remains `passed`.
|
|
273
|
+
- Positive source-to-sea fixture: `tests/rmt-language/fixtures/vnext-source-to-sea.rmt`
|
|
274
|
+
- Browser smoke fixture: `tests/browser/fixtures/rmt-vnext-source-to-sea-smoke.html`
|
|
275
|
+
- `RMT-VNEXT-PRIM-07` has a first release-gated tooling slice.
|
|
276
|
+
- Authoring tooling handoff: [RMT vNext Primitive Authoring Tooling](./rmt-vnext-primitive-authoring-tooling.md)
|
|
277
|
+
- Tooling API: `getRmtVNextToolingCompletions(...)`, `getRmtVNextToolingHover(...)` and `getRmtVNextToolingDocumentSymbols(...)` index primitive domains from PRIM-04 and present vNext as the default authoring path.
|
|
278
|
+
- Code-action preview: `getRmtVNextToolingCodeActions(...)` provides an `xtend.rmt.vnext.primitive-code-action-preview.v1` preview for every primitive repair plus `source.fixAll.rmt.vnext.primitives` for all safe text edits.
|
|
279
|
+
- Command handoff: `workspace/executeCommand` for `xtend.rmt.vnext.extractKernelImport` returns `xtend.rmt.vnext.primitive-command-handoff.v1`, remains without WorkspaceEdit and names the host-adapter path for manual Kernel/Fabric boundary repairs.
|
|
280
|
+
- Active VS Code bridge: `createActiveDocumentPrimitiveAuthoringExperience(...)` reads the active `.rmt` document, uses the local language server in-process and builds `xtend.rmt.editor.vscode-primitive-authoring-experience.v1` from real LSP CodeActions. Safe WorkspaceEdits run through `applyPrimitiveAuthoringWorkspaceEdit(...)`; `xtendRmt.rmtVNext.applySafePrimitiveFixAll` applies only `source.fixAll.rmt.vnext.primitives`.
|
|
281
|
+
- `RMT-VNEXT-PRIM-08` is complete.
|
|
282
|
+
- Migration handoff: [RMT vNext Primitive Migration](./rmt-vnext-primitive-migration.md)
|
|
283
|
+
- Migration API: `createAppPlatformPrimitiveMigrationPreview(...)` creates the vNext draft from App Platform primitive JSON; `createAppPlatformPrimitiveMigrationApplyPlan(...)` wraps the same draft in `xtend.rmt.vnext.primitive-migration-apply-plan.v1`, sets `automaticWrite: false`, provides the target path hint and blocks on parse/compile errors.
|
|
284
|
+
- VS Code bridge apply experience: `createPrimitiveAuthoringApplyExperience(...)` creates `xtend.rmt.editor.vscode-primitive-authoring-experience.v1`, and the commands `XTendRMT: Show vNext Primitive Apply Experience`, `XTendRMT: Show vNext Primitive Code Action Preview` and `XTendRMT: Show vNext Primitive Command Handoff` distinguish quick fix, fix-all and handoff in the Output Channel.
|
|
285
|
+
- New snippet: `rmt-vnext-primitive-shell`
|
|
286
|
+
- Positive fixture: `tests/rmt-language/fixtures/vnext-primitives-grammar-design.rmt`
|
|
287
|
+
- Negative fixture: `tests/rmt-language/fixtures/vnext-primitives-semantic-invalid.rmt`
|
|
288
|
+
- `RMT-VNEXT-PRIM-08` has a first release-gated migration slice.
|
|
289
|
+
- Primitive migration handoff: [RMT vNext Primitive Migration](./rmt-vnext-primitive-migration.md)
|
|
290
|
+
- Migration API: `createAppPlatformPrimitiveMigrationPreview(...)` detects App Platform primitive JSON, creates a compilable vNext draft and marks legacy as `compiler-target`.
|
|
291
|
+
- Positive App Platform fixture: `tests/fixtures/rmt-app-platform-tooling.rmt`
|
|
292
|
+
- Compatibility diagnostics: `rmt.vnext.primitive_migration.preview_available` for report-only mode and `rmt.vnext.primitive_migration.legacy_backgrounded` for the preview path.
|
|
293
|
+
- The vNext parser creates initial primitive nodes for the design fixture: `RmtStateDeclaration`, `RmtSelectorDeclaration`, `RmtDataSourceDeclaration`, `RmtActionDeclaration`, `RmtPortalDeclaration`, `RmtOverlayDeclaration`, `RmtResourceDeclaration`, extended `RmtSurfaceDeclaration` and event payload nodes.
|
|
294
|
+
- Release gates updated: `.github/workflows/xtend-default-gates.yml`, `package.json`, `scripts/run_xtend_tests.js`, `tools/rmt-language/vnext-release.js`, `tests/references/reference_path_suite.js` and [RMT vNext Release Handoff](./rmt-vnext-release-handoff.md).
|
|
295
|
+
|
|
296
|
+
## Next Implementation Step
|
|
297
|
+
|
|
298
|
+
`RMT-VNEXT-PRIM-06` is complete. `RMT-VNEXT-PRIM-05` is complete as its own Fabric bridge package: vNext source, kernel schedule, kernel fiber, Fabric mapping, Fabric runtime fiber, telemetry snapshot, route/component fiber and browser marker are correlated through the same primitive ID. The browser path can run optionally locally or through manual CI dispatch, and covers multiple visible UI objects plus negative runtime drifts.
|
|
299
|
+
|
|
300
|
+
The next patch should:
|
|
301
|
+
|
|
302
|
+
- As optional release evidence, compare a manually requested GitHub Actions source-to-sea run against `ciArtifactValidation.status: "passed"` and reference the uploaded artifact with `npm run test:rmt-vnext-source-to-sea:validate-artifact`.
|
|
303
|
+
- Resume implementation at `RMT-VNEXT-PRIM-07` or `RMT-VNEXT-PRIM-08`.
|
|
304
|
+
- For `RMT-VNEXT-PRIM-07`, as the next DX step, expand the VS Code bridge from Output Channel experience to production active-document integration: request real LSP CodeActions, offer preview selection, apply safe WorkspaceEdits and keep handoff follow-ups visible. Then check whether PRIM-07 can be set to `completed`.
|
|
305
|
+
- Extend PRIM-05 only when new Fabric lanes or production fiber instrumentations are added; the current lane/fiber bridge is gateable.
|
|
306
|
+
- Then run at least `npm run test:rmt-vnext-primitives:report`, `node scripts/run_xtend_tests.js references --json` and, before release, `npm run test:release:full:report` again. Source-to-sea browser evidence remains optional through `npm run test:rmt-vnext-source-to-sea:chromedriver`, `npm run test:rmt-vnext-source-to-sea:validate-artifact` and `node scripts/run_xtend_tests.js rmt-vnext-source-to-sea --json`.
|
|
307
|
+
|
|
308
|
+
## Related Documents
|
|
309
|
+
|
|
310
|
+
- [RMT vNext Authoring Guide](./rmt-vnext-authoring.md)
|
|
311
|
+
- [RMT vNext Primitive Grammar Design](./rmt-vnext-primitive-grammar-design.md)
|
|
312
|
+
- [RMT vNext Primitive Parser AST](./rmt-vnext-primitive-parser-ast.md)
|
|
313
|
+
- [RMT vNext Primitive Semantic Graph](./rmt-vnext-primitive-semantic-graph.md)
|
|
314
|
+
- [RMT vNext Primitive Lowering](./rmt-vnext-primitive-lowering.md)
|
|
315
|
+
- [RMT vNext Fabric Bridge Evidence](./rmt-vnext-fabric-bridge-evidence.md)
|
|
316
|
+
- [RMT vNext Source-to-Sea Gate](./rmt-vnext-source-to-sea-gate.md)
|
|
317
|
+
- [RMT vNext Primitive Authoring Tooling](./rmt-vnext-primitive-authoring-tooling.md)
|
|
318
|
+
- [RMT vNext Primitive Migration](./rmt-vnext-primitive-migration.md)
|
|
319
|
+
- [RMT vNext Release Handoff](./rmt-vnext-release-handoff.md)
|
|
320
|
+
- [RMT App Platform Tooling](./rmt-app-platform-tooling.md)
|
|
321
|
+
- [RMT App Platform Migration Guide](./rmt-app-platform-migration-guide.md)
|
|
322
|
+
- [RMT DOM Descriptor Renderer](./rmt-dom-descriptor-renderer.md)
|
|
323
|
+
- [RMT State Selector Runtime](./rmt-state-selector-runtime.md)
|
|
324
|
+
- [RMT Action Effect Runtime](./rmt-action-effect-runtime.md)
|
|
325
|
+
- [RMT Event Routing Runtime](./rmt-event-routing-runtime.md)
|
|
326
|
+
- [RMT Surface Resource Graph Runtime](./rmt-surface-resource-graph-runtime.md)
|
|
327
|
+
- [XTend-Fabric RMT Lane Mapping](./xtend-fabric-rmt-lane-mapping.md)
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# RMT vNext Release Handoff
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.rmt.vnext-release-handoff.v1`
|
|
4
|
+
- Report contract: `xtend.rmt.vnext-release-handoff-report.v1`
|
|
5
|
+
- Gate matrix: `xtend.rmt.vnext-release-gate-matrix.v1`
|
|
6
|
+
- Workpackage: `WP-E15-18`
|
|
7
|
+
- Gate: `node scripts/run_xtend_tests.js rmt-vnext-release --json`
|
|
8
|
+
|
|
9
|
+
Epic 15 is source-ready with the vNext release handoff. The new syntax is documented, the reference demo compiles byte-stably into Core JSON, and the local release matrix bundles parser, compiler, semantic modules, tooling, migration, regression, browser smoke and reference paths.
|
|
10
|
+
|
|
11
|
+
## Release Gates
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm run test:rmt-vnext-parser
|
|
15
|
+
npm run test:rmt-semantic-graph
|
|
16
|
+
npm run test:rmt-vnext-compiler
|
|
17
|
+
npm run test:rmt-vnext-lifecycle
|
|
18
|
+
npm run test:rmt-vnext-scheduler
|
|
19
|
+
npm run test:rmt-vnext-surfaces
|
|
20
|
+
npm run test:rmt-vnext-conditions
|
|
21
|
+
npm run test:rmt-vnext-composition
|
|
22
|
+
npm run test:rmt-vnext-imports
|
|
23
|
+
npm run test:rmt-vnext-events
|
|
24
|
+
npm run test:rmt-vnext-security
|
|
25
|
+
npm run test:rmt-vnext-streaming
|
|
26
|
+
npm run test:rmt-vnext-tooling
|
|
27
|
+
npm run test:rmt-vnext-compatibility
|
|
28
|
+
npm run test:rmt-vnext-regression
|
|
29
|
+
npm run test:rmt-vnext-primitives:report
|
|
30
|
+
npm run test:browser
|
|
31
|
+
npm run test:references
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Optional Browser Evidence
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npm run test:rmt-vnext-source-to-sea
|
|
38
|
+
npm run test:rmt-vnext-source-to-sea:evidence
|
|
39
|
+
npm run test:rmt-vnext-source-to-sea:chromedriver
|
|
40
|
+
npm run test:rmt-vnext-source-to-sea:validate-artifact
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
In GitHub Actions, this evidence runs only through manual `workflow_dispatch`
|
|
44
|
+
with `run_source_to_sea=true`.
|
|
45
|
+
|
|
46
|
+
The self gate for this closure is:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
npm run test:rmt-vnext-release
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Reference Demo
|
|
53
|
+
|
|
54
|
+
- Source: `xtendrmt/rmt-vnext-reference-demo.rmt`
|
|
55
|
+
- Core output: `xtendrmt/rmt-vnext-reference-demo.core.json`
|
|
56
|
+
- Browser probe: `tests/browser/fixtures/rmt-vnext-reference-smoke.html`
|
|
57
|
+
|
|
58
|
+
The demo covers the full vNext MVP surface:
|
|
59
|
+
|
|
60
|
+
- `template`
|
|
61
|
+
- `surface`
|
|
62
|
+
- `lane ... weight`
|
|
63
|
+
- lifecycle operations
|
|
64
|
+
- `when` conditions
|
|
65
|
+
- `slot` composition
|
|
66
|
+
- `on ... -> action ...`
|
|
67
|
+
- `from endpoint`, `from sse`, `from worker`
|
|
68
|
+
- `trust boundary`
|
|
69
|
+
- `sanitize html`
|
|
70
|
+
- `stream`
|
|
71
|
+
|
|
72
|
+
## Accepted Residuals
|
|
73
|
+
|
|
74
|
+
| Residual | Status | Follow-up path |
|
|
75
|
+
| --- | --- | --- |
|
|
76
|
+
| productive runtime adapters for vNext Core | planned-follow-up | `rmt-vnext-runtime-adapters` |
|
|
77
|
+
| formatter and writer API | planned-follow-up | `rmt-vnext-formatter-writer` |
|
|
78
|
+
| Workspace Project Index, Rename and References | planned-follow-up | `rmt-vnext-project-index` |
|
|
79
|
+
| Editor Marketplace Distribution | planned-follow-up | `rmt-vnext-editor-distribution` |
|
|
80
|
+
|
|
81
|
+
## Closure Decision
|
|
82
|
+
|
|
83
|
+
RMT vNext is accepted as syntax, compiler, tooling, compatibility and regression layer. The handoff is not a public runtime release; it marks the state `rmt-vnext-release-ready` and hands runtime adapters, formatter and workspace index over as clearly separated follow-up work.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# RMT vNext Remote Surfaces
|
|
2
|
+
|
|
3
|
+
RMT vNext describes remote surfaces as declarative enterprise MFE contracts. The RMT kernel executes no remote runtime and loads no network sources. Hosts can derive concrete loader, mount, sandbox and rollback decisions from the contract. Boundary: no remote runtime execution in RMT kernel.
|
|
4
|
+
|
|
5
|
+
## Contract
|
|
6
|
+
|
|
7
|
+
```js
|
|
8
|
+
schema: "xtend.rmt.vnext-remote-surface.v1"
|
|
9
|
+
manifestSchema: "xtend.rmt.vnext-remote-surface-manifest.v1"
|
|
10
|
+
securitySchema: "xtend.rmt.vnext-remote-security-policy.v1"
|
|
11
|
+
compilerSchema: "xtend.rmt.vnext-remote-compiler.v1"
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
A remote surface must explicitly declare:
|
|
15
|
+
|
|
16
|
+
- `owner` as responsible team or product.
|
|
17
|
+
- `version` and `versionRange` for active and expected versions.
|
|
18
|
+
- `origin` and `integrity` for manifest and artifact binding.
|
|
19
|
+
- `trustBoundary` and sandbox/CSP requirements.
|
|
20
|
+
- `fallback` to a local surface or blocking behavior.
|
|
21
|
+
- `exposes` as lane and shell-target bindings.
|
|
22
|
+
- `emits` and `consumes` as typed cross-surface events.
|
|
23
|
+
|
|
24
|
+
## Authoring
|
|
25
|
+
|
|
26
|
+
```rmt
|
|
27
|
+
remote surface checkout.cart from remote "@xtend/checkout-cart" {
|
|
28
|
+
owner: "checkout-platform"
|
|
29
|
+
version: "^3.1.0"
|
|
30
|
+
|
|
31
|
+
remote {
|
|
32
|
+
origin: "https://mfe.xtend.invalid/checkout"
|
|
33
|
+
integrity: "sha256-demo-integrity"
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
trust boundary enterprise.remote.strict {
|
|
37
|
+
sandbox: ["allow-scripts"]
|
|
38
|
+
capabilities: ["surface.mount", "event.emit", "event.consume"]
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
exposes {
|
|
42
|
+
critical -> shell.slot:sidebar.cart
|
|
43
|
+
idle -> shell.slot:background.prefetch
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
fallback surface panel.checkoutFallback
|
|
47
|
+
|
|
48
|
+
emits checkout.cart.updated.v1 {
|
|
49
|
+
owner: "checkout-platform"
|
|
50
|
+
payload: "xtend.schemas.cartUpdated.v1"
|
|
51
|
+
scope: lane critical -> shell.slot:sidebar.cart
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
consumes user.session.changed.v1 {
|
|
55
|
+
owner: "identity-platform"
|
|
56
|
+
payload: "xtend.schemas.userSessionChanged.v1"
|
|
57
|
+
scope: shell -> checkout.cart
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
The example is intentionally JSON-close: all domain facts can be serialized stably into Core JSON. The language remains readable enough for product teams and strict enough for gate suites.
|
|
63
|
+
|
|
64
|
+
## Boundaries
|
|
65
|
+
|
|
66
|
+
- No remote code is executed in the RMT kernel.
|
|
67
|
+
- No network access is allowed for language-layer gates.
|
|
68
|
+
- Remote surfaces are deny-by-default until owner, version, integrity, trust boundary and fallback are complete.
|
|
69
|
+
- SurfaceManager remains runtime orchestration; `surface.registry` remains the declarative enterprise MFE index.
|
|
70
|
+
|
|
71
|
+
## Gates
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
node scripts/run_xtend_tests.js rmt-vnext-remote-manifest --json
|
|
75
|
+
node scripts/run_xtend_tests.js rmt-vnext-remote-security --json
|
|
76
|
+
node scripts/run_xtend_tests.js rmt-vnext-remote-compiler --json
|
|
77
|
+
node scripts/run_xtend_tests.js rmt-vnext-remote-compatibility --json
|
|
78
|
+
node scripts/run_xtend_tests.js rmt-vnext-enterprise-release --json
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
The enterprise demo is in `xtendrmt/rmt-vnext-enterprise-mfe-demo.rmt`; the byte-stable core output is in `xtendrmt/rmt-vnext-enterprise-mfe-demo.core.json`.
|