@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,63 @@
|
|
|
1
|
+
# TypeScript Components
|
|
2
|
+
|
|
3
|
+
XTend introduces new components TypeScript-first. Runtime artifacts remain local ES modules under `components/`, while the source of truth lives under `src/components/<tag>/`.
|
|
4
|
+
|
|
5
|
+
Contract: `xtend.scaffold.typescript-component-blueprint.v1`
|
|
6
|
+
|
|
7
|
+
Since `WP-E10-16`, this guide is part of the Epic 10 release handoff `xtend.epic10.release-handoff.v1`. New components must prove not only TypeScript source, but also RMT metadata, Fabric boundary, a11y, performance, fixture, docs and local gates.
|
|
8
|
+
|
|
9
|
+
## Source Layout
|
|
10
|
+
|
|
11
|
+
| File | Purpose |
|
|
12
|
+
|------|---------|
|
|
13
|
+
| `<tag>.ts` | custom element source with static RMT, Fabric, a11y and performance metadata |
|
|
14
|
+
| `<tag>.contract.ts` | Component Contract v2 |
|
|
15
|
+
| `<tag>.rmt.ts` | RMT component metadata for `xtend.component` |
|
|
16
|
+
| `<tag>.a11y.ts` | a11y profile |
|
|
17
|
+
| `<tag>.performance.ts` | performance profile |
|
|
18
|
+
| `<tag>.fixture.ts` | typed fixture data |
|
|
19
|
+
|
|
20
|
+
## Builder
|
|
21
|
+
|
|
22
|
+
The builder renders the new artifact group in dry run:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
node xtend-builder/scaffold.js component-files --tag x-example --profile display --feature state --json
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
The local gate is:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
node scripts/run_xtend_tests.js builder-typescript-blueprint --json
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Required Gates as of WP-E10-16
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
node scripts/run_xtend_tests.js component-contract-v2 --json
|
|
38
|
+
node scripts/run_xtend_tests.js epic10-platform-gates --json
|
|
39
|
+
node scripts/run_xtend_tests.js epic10-release-handoff --json
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
New components additionally run through their component-level suite, catalog coverage, a11y, performance and visual regression gates.
|
|
43
|
+
|
|
44
|
+
As of `WP-TypeExports-09`, the productive TypeExports handoff is also part of the release view:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npm run test:type-exports:release
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
New TypeScript-first components must therefore deliver not only runtime and component-contract artifacts, but also cover their public package surface through `components/*.d.ts`, an explicit package `types` condition or a documented `types-not-required` boundary.
|
|
51
|
+
|
|
52
|
+
## RMT and Fabric
|
|
53
|
+
|
|
54
|
+
Every new component needs an `xtend.component` RMT record and a Fabric boundary. The canonical runtime boundary for Fabric context is `adapter-injection-via-xtend-component-resolveFabricContext`; `window.XTendFabric` is a host convenience surface and not the component contract.
|
|
55
|
+
|
|
56
|
+
## Boundaries
|
|
57
|
+
|
|
58
|
+
- no CDN imports
|
|
59
|
+
- no new runtime dependencies for core components
|
|
60
|
+
- no productive TypeScript compiler in the blueprint package
|
|
61
|
+
- no automatic file output without review
|
|
62
|
+
- RMT kernel boundary: `no-rmt-kernel-import-of-xtend-types`
|
|
63
|
+
- TypeExports boundary: `declarations-follow-js-runtime-surface`
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Visual Browser Regression
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.docs.visual-browser-regression.v1`
|
|
4
|
+
- Plan contract: `xtend.catalog.component-regression-priority-plan.v1`
|
|
5
|
+
- Gate contract: `xtend.catalog.component-regression-priority-gate.v1`
|
|
6
|
+
- Snapshot contract: `xtend.epic12.visual-snapshot-automation-contract.v1`
|
|
7
|
+
- Workpackage: `ER-WP-35`
|
|
8
|
+
|
|
9
|
+
This page describes the current XTend plan for visual and browser-close regression. ER-WP-35 does not introduce a screenshot runner yet. Instead, XTend creates a stable priority plan that defines per manifest component which browser smokes, viewports, theme variants, visual states and performance profiles must be automated first.
|
|
10
|
+
|
|
11
|
+
## Check Locally
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
node scripts/run_xtend_tests.js regression-priority
|
|
15
|
+
node scripts/run_xtend_tests.js regression-priority --json
|
|
16
|
+
npm run test:regression-priority
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
The gate is part of the local test runner and uses the Component Catalog Coverage Matrix as its source. It remains CDN-free and needs no external browser automation.
|
|
20
|
+
|
|
21
|
+
## Minimum Coverage
|
|
22
|
+
|
|
23
|
+
Every component in the plan receives:
|
|
24
|
+
|
|
25
|
+
- viewports: `desktop-1280`, `mobile-390`
|
|
26
|
+
- theme/preference variants: `light`, `dark`, `forced-colors`, `reduced-motion`
|
|
27
|
+
- performance profile: `xtend.performance.component-profile.v1`
|
|
28
|
+
- handoff gates: `browser`, `performance-regression`, `catalog-coverage`, `references`
|
|
29
|
+
|
|
30
|
+
P0 components such as `x-router`, `x-link`, `x-modal`, `x-input`, `x-select`, `x-checkbox`, `x-radio`, `x-textarea`, `x-tooltip`, `x-popover`, `x-drawer`, `x-form`, `x-calendar`, `x-writer`, `x-dialog` and `x-lightbox` are classified as `p0-browser-critical`. P1 components such as `x-status` and `x-progress` form the visual and performance baseline. P2 components remain visible as long tail.
|
|
31
|
+
|
|
32
|
+
## Profile Rules
|
|
33
|
+
|
|
34
|
+
| Profile | Browser smokes | Visual states |
|
|
35
|
+
|---------|----------------|---------------|
|
|
36
|
+
| `routing` | route changes, keyboard navigation, history state, RMT route adapter | initial route, active route, RMT scheduled route |
|
|
37
|
+
| `form` | input sync, validation feedback, keyboard entry, form submit | default, focus, invalid, disabled |
|
|
38
|
+
| `overlay` | focus trap, Escape close, scroll lock, focus restore | closed, open, focus trapped, reduced motion open |
|
|
39
|
+
| `feedback` | live region, dismiss timer, reduced motion | info, warning, error, dismissed |
|
|
40
|
+
| `interactive` | keyboard activation, focus visible, mobile tap | default, hover, focus visible, active, disabled |
|
|
41
|
+
| `media` | media controls, poster load, fullscreen toggle | poster, playing, controls focus |
|
|
42
|
+
| `theme` | theme switch, token contrast, forced colors | light theme, dark theme, forced colors |
|
|
43
|
+
| `display` | layout stability, responsive overflow | default layout, narrow layout |
|
|
44
|
+
| `iconography` | layout stability, theme token color | default layout, high-contrast currentColor |
|
|
45
|
+
| `utility` | utility integration probe | helper ready |
|
|
46
|
+
|
|
47
|
+
## Boundary Closure
|
|
48
|
+
|
|
49
|
+
The plan keeps the earlier boundary gaps traceable, but no longer treats them as open RC1 residuals:
|
|
50
|
+
|
|
51
|
+
- 0 manifest entries still need suite, fixture or type follow-up.
|
|
52
|
+
- `xstate` is closed as a runtime boundary since `WP-E13-05`.
|
|
53
|
+
- `x-utils` is closed as a utility boundary since `WP-E13-05`.
|
|
54
|
+
- The 42 visible runtime/UI components keep explicit performance profiles; `xstate` and `x-utils` are not artificially reinterpreted as visual profile carriers.
|
|
55
|
+
|
|
56
|
+
This makes it clear that `ER-WP-35` prioritizes, while handing the actual screenshot/pixel regression to CI and release readiness.
|
|
57
|
+
|
|
58
|
+
## Snapshot Automation Contract
|
|
59
|
+
|
|
60
|
+
Since `WP-E12-10`, the next step is defined through `xtend.epic12.visual-snapshot-automation-contract.v1`:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
node scripts/run_xtend_tests.js visual-snapshot-automation --json
|
|
64
|
+
npm run test:visual-snapshot-automation
|
|
65
|
+
node scripts/run_xtend_tests.js visual-snapshots --json
|
|
66
|
+
npm run test:visual-snapshots
|
|
67
|
+
node scripts/run_xtend_tests.js design-tokens --json
|
|
68
|
+
npm run test:design-tokens
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The snapshot contract takes over the 360 combinations from the Component Shell Theme Matrix and describes `shell-structure`, `visual-state`, `theme-token-state`, `motion-density-state`, `viewport-layout`, `focus-a11y-state` and `rmt-shell-descriptor` as snapshot scopes. The diff strategy is `dom-first-pixel-ready`: DOM structure and CSS tokens are handled with tolerance `0`. Since `WP-E12-11`, `xtend.epic12.visual-snapshot-runner.v1` compares the local fixture against a textual JSON DOM baseline. Pixel diff is prepared as `optional-local-pixel-diff` and remains outside the Node contract gate. Since `WP-E12-12`, these CSS tokens are productized as `xtend.design-tokens.product-contract.v1` and checked through the same `--xtend-*` names in `x-theme`, Theme Matrix and Snapshot Baseline.
|
|
72
|
+
|
|
73
|
+
## Handoff
|
|
74
|
+
|
|
75
|
+
- `WP-E12-10`: Visual Snapshot Automation Contract is complete.
|
|
76
|
+
- `WP-E12-11`: local snapshot fixture and DOM-first runner are complete.
|
|
77
|
+
- `WP-E12-12`: Enterprise Design System Token Productization is complete.
|
|
78
|
+
- `ER-WP-36`: productize CI workflow for default gates and regression priority gate.
|
|
79
|
+
- `ER-WP-38`: extend release checklist with browser/visual regression, artifacts and SemVer risks.
|
|
80
|
+
- `ER-WP-39`: Enterprise Adoption Guide with QA recommendations and baseline strategy is complete.
|
|
81
|
+
- `ER-WP-40`: Docs app with RMT Parsedown Scheduling Pilot is complete.
|
|
82
|
+
|
|
83
|
+
The machine-readable implementation is in `catalog/component-regression-priority.js`. The architecture decision is in `development/XTend-Visuelle-und-Browsernahe-Regression-Prioritaetsplan.md`.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Visual Owner Artifacts
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.epic13.visual-owner-artifact.v1`
|
|
4
|
+
- Manifest contract: `xtend.epic13.visual-owner-artifact-manifest.v1`
|
|
5
|
+
- Report: `xtend.epic13.visual-owner-artifact-report.v1`
|
|
6
|
+
- Workpackage: `WP-E13-08`
|
|
7
|
+
- Local gate: `node scripts/run_xtend_tests.js epic13-visual-owner-artifact --json`
|
|
8
|
+
- Package script: `npm run test:epic13-visual-owner-artifact`
|
|
9
|
+
- Manifest: `tests/browser/visual-baselines/rc1-visual-owner-artifact.manifest.json`
|
|
10
|
+
- Publish boundary: `private-until-release-owner-acceptance`
|
|
11
|
+
|
|
12
|
+
## Purpose
|
|
13
|
+
|
|
14
|
+
Visual Owner Artifacts connect the existing DOM-first Visual Snapshot Automation with a reproducible screenshot/pixel artifact path for RC1. The local gate validates contract, manifest and DOM snapshot state. Actual screenshot generation remains optional and belongs in stable browser or CI environments.
|
|
15
|
+
|
|
16
|
+
## Path Convention
|
|
17
|
+
|
|
18
|
+
```text
|
|
19
|
+
.xtend-test-results/visual-snapshots/rc1/{family}/{viewport}/{theme}/{density}/{motion}.png
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
The report is stored at:
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
.xtend-test-results/visual-snapshots/rc1/visual-owner-artifact-report.json
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
The fixture remains `tests/browser/fixtures/visual-snapshots-fixture.html`; the DOM baseline remains `tests/browser/visual-baselines/visual-snapshots.dom-baseline.json`.
|
|
29
|
+
|
|
30
|
+
## Local Usage
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npm run test:epic13-visual-owner-artifact
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
The local mode is `static-artifact-manifest-plus-dom-snapshot-gate`. `pixelDiffRequiredInLocalGate`, `screenshotRequiredInLocalGate` and `binaryBaselineCommitted` are `false`.
|
|
37
|
+
|
|
38
|
+
## Relationship to Existing Gates
|
|
39
|
+
|
|
40
|
+
- The DOM structure comes from [Visual Snapshot Automation](./visual-snapshot-automation.md).
|
|
41
|
+
- The production-close browser/CSP preparation comes from [PROD Browser CSP Smokes](./prod-browser-csp-smokes.md).
|
|
42
|
+
- The owner artifact remains `optional-browser-driver-or-ci-artifact` until a stable browser-capture environment is chosen as a required release gate.
|
|
43
|
+
|
|
44
|
+
## Handoff
|
|
45
|
+
|
|
46
|
+
`WP-E13-08` is complete. `WP-E13-09` bundled `xtend.epic13.rmt-production-readiness.v1` under [RMT Production Readiness](./rmt-production-readiness.md). `WP-E13-10` completed [Docs RMT Production Hardening](./docs-rmt-production-hardening.md). `WP-E13-11` completed [Trusted DOM Boundary Browser Proof](./trusted-dom-boundary-browser-proof.md) and `xtend.epic13.trusted-dom-boundary.v1`. `WP-E13-12` completed [RC1 Migration Notes](./rc1-migration-notes.md) and `xtend.epic13.rc1-migration-notes-semver.v1`. `WP-E13-13` completed [RC1 Gate Matrix and CI Handoff](./rc1-gate-matrix-ci-handoff.md) and `xtend.epic13.rc1-gate-matrix-ci-handoff.v1`.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Visual Snapshot Automation
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.epic12.visual-snapshot-automation-contract.v1`
|
|
4
|
+
- Entry contract: `xtend.epic12.visual-snapshot-automation-entry.v1`
|
|
5
|
+
- Automation report contract: `xtend.epic12.visual-snapshot-automation-report.v1`
|
|
6
|
+
- Runner contract: `xtend.epic12.visual-snapshot-runner.v1`
|
|
7
|
+
- Fixture contract: `xtend.epic12.visual-snapshot-fixture.v1`
|
|
8
|
+
- Runner report contract: `xtend.epic12.visual-snapshot-runner-report.v1`
|
|
9
|
+
- Design token contract: `xtend.design-tokens.product-contract.v1`
|
|
10
|
+
- Workpackages: `WP-E12-10`, `WP-E12-11`, `WP-E12-12`
|
|
11
|
+
- Contract gate: `node scripts/run_xtend_tests.js visual-snapshot-automation --json`
|
|
12
|
+
- Snapshot gate: `node scripts/run_xtend_tests.js visual-snapshots --json`
|
|
13
|
+
|
|
14
|
+
XTend Visual Snapshot Automation is the Epic 12 line for local visual regression. `WP-E12-10` defines scopes, matrix, tolerances and artifact policy. `WP-E12-11` builds a local DOM-first snapshot runner with JSON baseline on top of that.
|
|
15
|
+
|
|
16
|
+
## Check Locally
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
node scripts/run_xtend_tests.js visual-snapshot-automation
|
|
20
|
+
node scripts/run_xtend_tests.js visual-snapshot-automation --json
|
|
21
|
+
npm run test:visual-snapshot-automation
|
|
22
|
+
node scripts/run_xtend_tests.js visual-snapshots --json
|
|
23
|
+
npm run test:visual-snapshots
|
|
24
|
+
node scripts/run_xtend_tests.js design-tokens --json
|
|
25
|
+
npm run test:design-tokens
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
The gate is local-only, CDN-free and uses no external browser services.
|
|
29
|
+
|
|
30
|
+
## Matrix
|
|
31
|
+
|
|
32
|
+
The contract adopts the 360 combinations of the Component Shell Theme Matrix:
|
|
33
|
+
|
|
34
|
+
- themes: `light`, `dark`, `high-contrast`, `forced-colors`
|
|
35
|
+
- motion: `default-motion`, `reduced-motion`
|
|
36
|
+
- density: `comfortable`, `compact`, `dense`
|
|
37
|
+
- viewports: `desktop-1280`, `tablet-768`, `mobile-390`
|
|
38
|
+
- UX families: `form-controls`, `feedback-status`, `navigation-routing`, `overlay-interaction`, `layout-display-media`
|
|
39
|
+
|
|
40
|
+
## Snapshot Scopes
|
|
41
|
+
|
|
42
|
+
- `shell-structure`
|
|
43
|
+
- `visual-state`
|
|
44
|
+
- `theme-token-state`
|
|
45
|
+
- `motion-density-state`
|
|
46
|
+
- `viewport-layout`
|
|
47
|
+
- `focus-a11y-state`
|
|
48
|
+
- `rmt-shell-descriptor`
|
|
49
|
+
|
|
50
|
+
The RMT boundary remains `no-rmt-kernel-import-of-xtend-types`: RMT describes and schedules shells, but imports no XTend types into the kernel.
|
|
51
|
+
|
|
52
|
+
As of `WP-E12-12`, the snapshot fixture uses the same product tokens as `x-theme` and the Component Shell Theme Matrix. The DOM baseline tracks `--xtend-surface`, `--xtend-text`, `--xtend-color-primary`, `--xtend-density-spacing` and `--xtend-radius`; local fixture names such as `--snapshot-*` have been removed.
|
|
53
|
+
|
|
54
|
+
## Diff Strategy
|
|
55
|
+
|
|
56
|
+
`WP-E12-10` defines `dom-first-pixel-ready`; `WP-E12-11` performs the local DOM diff:
|
|
57
|
+
|
|
58
|
+
- DOM structure and CSS tokens have tolerance `0`.
|
|
59
|
+
- Pixel diff is prepared as `optional-local-pixel-diff`, but does not run in the Node contract gate.
|
|
60
|
+
- Maximum pixel mismatch is `0.01`.
|
|
61
|
+
- Layout shift is limited to `1px`.
|
|
62
|
+
- Before capture, the runner must wait for custom elements, fonts, loader completion and one animation frame.
|
|
63
|
+
|
|
64
|
+
## Artifacts
|
|
65
|
+
|
|
66
|
+
| Artifact | Path |
|
|
67
|
+
|----------|------|
|
|
68
|
+
| Contract | `development/XTend-Visual-Snapshot-Automation-Contract.md` |
|
|
69
|
+
| Plan | `tests/browser/visual-snapshot-automation-plan.js` |
|
|
70
|
+
| Automation suite | `tests/browser/visual_snapshot_automation_suite.js` |
|
|
71
|
+
| Runner | `tests/browser/visual-snapshots-runner.js` |
|
|
72
|
+
| Fixture | `tests/browser/fixtures/visual-snapshots-fixture.html` |
|
|
73
|
+
| DOM baseline | `tests/browser/visual-baselines/visual-snapshots.dom-baseline.json` |
|
|
74
|
+
| Snapshot suite | `tests/browser/visual_snapshots_suite.js` |
|
|
75
|
+
| Output root | `.xtend-test-results/visual-snapshots` |
|
|
76
|
+
| Report path | `.xtend-test-results/visual-snapshots/visual-snapshots-report.json` |
|
|
77
|
+
| RC1 owner manifest | `tests/browser/visual-baselines/rc1-visual-owner-artifact.manifest.json` |
|
|
78
|
+
|
|
79
|
+
The baseline is textual and reviewable in `WP-E12-11`. Binary or screenshot baselines remain reserved for an optional local pixel-diff mode.
|
|
80
|
+
|
|
81
|
+
## RC1 Visual Owner Artifact
|
|
82
|
+
|
|
83
|
+
As of `WP-E13-08`, [Visual Owner Artifacts](./visual-owner-artifacts.md) uses this DOM-first line as the source for `xtend.epic13.visual-owner-artifact.v1`. The local gate `node scripts/run_xtend_tests.js epic13-visual-owner-artifact --json` normalizes artifact root, report path, screenshot template and viewports. Screenshot/pixel creation remains `optional-browser-driver-or-ci-artifact`.
|
|
84
|
+
|
|
85
|
+
## RC0 Adoption Update
|
|
86
|
+
|
|
87
|
+
Since `WP-E12-15`, the [RC0 Adoption Guide](./rc0-adoption-guide.md) references this DOM-first snapshot path as RC0 baseline. Component authors treat `visual-snapshots`, `design-tokens` and `component-shell-theme-matrix` together as a local review chain; pixel baselines remain optional and must not block the local RC0 dry run.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# XTend API Types
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.type-exports.api-declarations.v1`
|
|
4
|
+
- Workpackage: `WP-TypeExports-03`
|
|
5
|
+
- Gate: `node scripts/run_xtend_tests.js type-exports-api --json`
|
|
6
|
+
- Report: `.xtend-test-results/xtend-type-exports-api-report.json`
|
|
7
|
+
- Declaration: `api.d.ts`
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
`api.d.ts` describes the public core API from `api.js`: `initXTendAPI(manifest)`, the global namespace `window.XTend.*`, the legacy aliases and the event `xtend-api-ready`. The declaration is types-only; `api.js` remains unchanged at runtime.
|
|
12
|
+
|
|
13
|
+
## Namespace
|
|
14
|
+
|
|
15
|
+
The central namespace type is `XTendNamespace`.
|
|
16
|
+
|
|
17
|
+
| API | Type |
|
|
18
|
+
| --- | --- |
|
|
19
|
+
| `window.XTend.compliance` | `XTendComplianceApi` |
|
|
20
|
+
| `window.XTend.theme` | `XTendThemeApi` |
|
|
21
|
+
| `window.XTend.toast` | `XTendToastApi` |
|
|
22
|
+
| `window.XTend.alert` | `XTendAlertApi` |
|
|
23
|
+
| `window.XTend.dialog` | `XTendDialogApi` |
|
|
24
|
+
| `window.XTend.modal` | `XTendModalApi` |
|
|
25
|
+
|
|
26
|
+
## Legacy Aliases
|
|
27
|
+
|
|
28
|
+
`api.d.ts` continues to type the existing global convenience aliases:
|
|
29
|
+
|
|
30
|
+
- `window.XTheme`
|
|
31
|
+
- `window.XToast`
|
|
32
|
+
- `window.XAlert`
|
|
33
|
+
- `window.XDialog`
|
|
34
|
+
- `window.XModal`
|
|
35
|
+
- `window.showToast`
|
|
36
|
+
- `window.showAlert`
|
|
37
|
+
- `window.showDialog`
|
|
38
|
+
- `window.showModal`
|
|
39
|
+
|
|
40
|
+
## Event
|
|
41
|
+
|
|
42
|
+
`WindowEventMap` contains `xtend-api-ready` with `XTendApiReadyDetail`. The payload reports whether toast, alert, dialog, modal and theme APIs are initialized.
|
|
43
|
+
|
|
44
|
+
## Package Export
|
|
45
|
+
|
|
46
|
+
As of `WP-TypeExports-03`, the package export `./api` has the `types` condition `./api.d.ts`. `browser` and `default` continue to point to `./api.js`.
|
|
47
|
+
|
|
48
|
+
## Drift Gate
|
|
49
|
+
|
|
50
|
+
The gate `type-exports-api` checks:
|
|
51
|
+
|
|
52
|
+
- `api.d.ts` exists and is included in the package.
|
|
53
|
+
- `./api` points to `./api.d.ts` through `types`.
|
|
54
|
+
- `initXTendAPI`, `window.XTend.*`, legacy aliases and `xtend-api-ready` are visible in runtime and declaration.
|
|
55
|
+
- `api.js` imports no declaration file.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# XTend Builder Types
|
|
2
|
+
|
|
3
|
+
Status: `completed`
|
|
4
|
+
Workpackage: `WP-TypeExports-06`
|
|
5
|
+
Schema: `xtend.type-exports.builder-declarations.v1`
|
|
6
|
+
Gate: `node scripts/run_xtend_tests.js type-exports-builder --json`
|
|
7
|
+
|
|
8
|
+
## Scope
|
|
9
|
+
|
|
10
|
+
`WP-TypeExports-06` types the Builder, Scaffold and Component Lab program APIs without porting the CLI or generators to TypeScript.
|
|
11
|
+
|
|
12
|
+
The shared basis lives in `./xtend-builder/builder-public-types.d.ts`:
|
|
13
|
+
|
|
14
|
+
- `XtendBuilderComponentInput`
|
|
15
|
+
- `XtendBuilderComponentPlan`
|
|
16
|
+
- `XtendBuilderComponentFilesResult`
|
|
17
|
+
- `XtendBuilderWorkflow`
|
|
18
|
+
- `XtendBuilderComponentLabPlan`
|
|
19
|
+
|
|
20
|
+
## Declaration Pack
|
|
21
|
+
|
|
22
|
+
The root and workflow APIs are stabilized through these facades:
|
|
23
|
+
|
|
24
|
+
- `./xtend-builder/scaffold.d.ts`
|
|
25
|
+
- `./xtend-builder/lib/cli.d.ts`
|
|
26
|
+
- `./xtend-builder/blueprints/component-blueprint.contract.d.ts`
|
|
27
|
+
- `./xtend-builder/generators/component-plan.d.ts`
|
|
28
|
+
- `./xtend-builder/generators/component-files.d.ts`
|
|
29
|
+
- `./xtend-builder/generators/registry.d.ts`
|
|
30
|
+
- `./xtend-builder/workflows/developer-workflow.d.ts`
|
|
31
|
+
|
|
32
|
+
Component Lab and preview consumers receive their own contracts:
|
|
33
|
+
|
|
34
|
+
- `./xtend-builder/preview/component-preview.d.ts`
|
|
35
|
+
- `./xtend-builder/preview/component-lab.d.ts`
|
|
36
|
+
- `./xtend-builder/preview/component-lab-ux-inspector.d.ts`
|
|
37
|
+
|
|
38
|
+
The already exported typing and UX contract modules are represented as narrow facades, including `component-shell-contract`, `component-styling-contract`, `component-network-contract`, `rmt-shell-authoring-contract`, `rmt-dsl-authoring-polish`, the form/feedback/navigation/overlay/layout UX contracts and `component-ux-performance-contract`.
|
|
39
|
+
|
|
40
|
+
## Package Exports
|
|
41
|
+
|
|
42
|
+
The package exports `./builder`, `./builder/*` and the explicit builder subexports receive `types` conditions. Example:
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
"./builder": {
|
|
46
|
+
"types": "./xtend-builder/scaffold.d.ts",
|
|
47
|
+
"default": "./xtend-builder/scaffold.js"
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
`./builder/*` remains a generic connection for repo-local builder modules and points to `./xtend-builder/*.d.ts`.
|
|
52
|
+
|
|
53
|
+
## Boundary
|
|
54
|
+
|
|
55
|
+
The declarations remain `types-only-no-runtime-imports`. They import no builder runtime, components, RMT kernel or loader/API runtime. The local gate compares runtime exports, package `types` conditions, existing declaration files and the shared builder type base.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# XTend Catalog Types
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.type-exports.catalog-declarations.v1`
|
|
4
|
+
- Workpackage: `WP-TypeExports-07`
|
|
5
|
+
- Gate: `node scripts/run_xtend_tests.js type-exports-catalog --json`
|
|
6
|
+
- Report: `.xtend-test-results/xtend-type-exports-catalog-report.json`
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Catalog modules describe XTend gates, handoffs, release plans and SurfaceManager runtime scopes as machine-readable plan/report structures. `WP-TypeExports-07` introduces a shared declaration pattern so new catalogs do not need to type every property from scratch.
|
|
11
|
+
|
|
12
|
+
`./catalog/catalog-public-types.d.ts` defines the shared base types `XtendCatalogPlan`, `XtendCatalogReport`, `XtendCatalogGate`, `XtendCatalogFactory`, `XtendCatalogValidator` and `XtendCatalogDiagnostic`. The individual catalog facades export the runtime symbols of the respective `.js` module and bind functions such as `create*Plan`, `create*Report`, `create*Gate` and `validate*Plan` to these base types.
|
|
13
|
+
|
|
14
|
+
## Package Surface
|
|
15
|
+
|
|
16
|
+
All public `./catalog/*` package exports now have their own `types` condition. Examples:
|
|
17
|
+
|
|
18
|
+
```json
|
|
19
|
+
"./catalog/epic13-package-export-lock": {
|
|
20
|
+
"types": "./catalog/epic13-package-export-lock.d.ts",
|
|
21
|
+
"default": "./catalog/epic13-package-export-lock.js"
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The runtime target remains unchanged. The declarations import no runtime files and are intended as consumer facades.
|
|
26
|
+
|
|
27
|
+
## Catalog Families
|
|
28
|
+
|
|
29
|
+
The gate classifies three catalog families that matter for XTend:
|
|
30
|
+
|
|
31
|
+
- SurfaceManager catalogs remain internal XTend UI support and document app-shell, surface, routing and runtime handoffs.
|
|
32
|
+
- Epic catalogs describe workpackage, gate and contract plans across multiple epics.
|
|
33
|
+
- Release catalogs bundle handoff, readiness, export-lock and migration decisions.
|
|
34
|
+
|
|
35
|
+
The SurfaceManager catalogs do not replace Fabric, the RMT kernel or a runtime layer. They remain declarative plans and reports that support UI surfaces.
|
|
36
|
+
|
|
37
|
+
## Drift Gate
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
node scripts/run_xtend_tests.js type-exports-catalog --json
|
|
41
|
+
npm run test:type-exports-catalog
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The gate verifies that package catalogs have their `types` conditions, that all catalog runtime exports appear in the `.d.ts` facades, that SurfaceManager/epic/release catalogs are classified and that runtime files receive no declaration imports.
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# XTend-Fabric RMT Lane Mapping
|
|
2
|
+
|
|
3
|
+
- Status: production mapping contract starting with `ER-WP-13`
|
|
4
|
+
- Contract: `xtend.docs.xtend-fabric-rmt-lane-mapping.v1`
|
|
5
|
+
- Mapping Contract: `xtend.fabric.rmt-lane-mapping.v1`
|
|
6
|
+
- Runtime: `fabric/rmt-lane-mapping.js`
|
|
7
|
+
- Test: `tests/fabric/fabric_rmt_lane_mapping_suite.js`
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
`fabric/rmt-lane-mapping.js` connects Fabric lanes with RMT schedule policies without building XTend into the RMT kernel.
|
|
12
|
+
|
|
13
|
+
Fabric describes UI work semantically: `user-blocking`, `a11y`, `visible`, `transition`, `idle`, `background`, `diagnostics`. RMT remains host-neutral and still sees only schedule records with `endpointName`, `scope`, `lane`, `priority`, `deadlineMs`, `preferIdle`, `coalesceKey` and `budgetClass`.
|
|
14
|
+
|
|
15
|
+
Since `WP-E13-09`, [RMT Production Readiness](./rmt-production-readiness.md) references this mapping under `xtend.epic13.rmt-production-readiness.v1` so RMT-first apps can ingest Fabric/Lane signals in a production-oriented way without violating the RMT kernel boundary.
|
|
16
|
+
|
|
17
|
+
## Lane Mapping
|
|
18
|
+
|
|
19
|
+
| Fabric Lane | RMT Schedule Lane | Reason |
|
|
20
|
+
|-------------|-------------------|--------|
|
|
21
|
+
| `user-blocking` | `user-blocking` | input, navigation and focus are critical |
|
|
22
|
+
| `a11y` | `user-blocking` | screen-reader and focus signals are user-facing; RMT does not yet have a dedicated `a11y` lane |
|
|
23
|
+
| `visible` | `visible` | visible component work |
|
|
24
|
+
| `transition` | `transition` | route and UI transitions |
|
|
25
|
+
| `idle` | `idle` | non-visible hydration and follow-up |
|
|
26
|
+
| `background` | `background` | best-effort work |
|
|
27
|
+
| `diagnostics` | `diagnostics` | telemetry and snapshots |
|
|
28
|
+
|
|
29
|
+
`a11y` therefore remains a Fabric lane. The generated RMT schedule record carries the RMT lane `user-blocking` and preserves `metadata.fabricLane = "a11y"` so reporters and later adapters can see the original semantics.
|
|
30
|
+
|
|
31
|
+
## API
|
|
32
|
+
|
|
33
|
+
```js
|
|
34
|
+
const mapping = window.XTendFabricRmtLaneMapping.createFabricRmtLaneMapping();
|
|
35
|
+
|
|
36
|
+
const result = mapping.resolveFiber({
|
|
37
|
+
kind: 'component.hydrate',
|
|
38
|
+
lane: 'idle',
|
|
39
|
+
scope: 'x-alert#secondary',
|
|
40
|
+
componentRef: 'x-alert'
|
|
41
|
+
});
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Important functions:
|
|
45
|
+
|
|
46
|
+
| API | Purpose |
|
|
47
|
+
|-----|---------|
|
|
48
|
+
| `createFabricRmtLaneMapping(options)` | creates a mapping object with lane map and schedule records |
|
|
49
|
+
| `createRmtScheduleRecords(options)` | creates host-neutral RMT schedule records for Fabric lanes |
|
|
50
|
+
| `resolveRmtScheduleForFiber(fiber, options)` | resolves a fiber to a schedule record |
|
|
51
|
+
| `normalizeFabricLaneForRmt(lane)` | translates one Fabric lane into an RMT lane |
|
|
52
|
+
|
|
53
|
+
## Example Schedule Records
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"schema": "xtend.fabric.rmt-lane-schedule.v1",
|
|
58
|
+
"id": "component.idle.hydrate",
|
|
59
|
+
"endpointName": "xtendrmt.component.hydrate",
|
|
60
|
+
"scope": "xtend.fabric.idle",
|
|
61
|
+
"lane": "idle",
|
|
62
|
+
"priority": 35,
|
|
63
|
+
"deadlineMs": 500,
|
|
64
|
+
"preferIdle": true,
|
|
65
|
+
"coalesceKey": "xtend.fabric.idle",
|
|
66
|
+
"budgetClass": "background",
|
|
67
|
+
"metadata": {
|
|
68
|
+
"contract": "xtend.fabric.rmt-lane-mapping.v1",
|
|
69
|
+
"fabricLane": "idle",
|
|
70
|
+
"rmtLane": "idle"
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Since `ER-WP-20`, there is also `component.lazy.hydrate` for hydration deferred below the fold or under backpressure. The RMT lane remains `idle`; the difference is in `scheduleRef`, scope and coalescing.
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"schema": "xtend.fabric.rmt-lane-schedule.v1",
|
|
80
|
+
"id": "a11y.user-blocking.announce",
|
|
81
|
+
"endpointName": "xtendrmt.a11y.announce",
|
|
82
|
+
"scope": "xtend.fabric.a11y",
|
|
83
|
+
"lane": "user-blocking",
|
|
84
|
+
"priority": 95,
|
|
85
|
+
"deadlineMs": 80,
|
|
86
|
+
"preferIdle": false,
|
|
87
|
+
"coalesceKey": "xtend.fabric.a11y.announce",
|
|
88
|
+
"budgetClass": "critical",
|
|
89
|
+
"metadata": {
|
|
90
|
+
"contract": "xtend.fabric.rmt-lane-mapping.v1",
|
|
91
|
+
"fabricLane": "a11y",
|
|
92
|
+
"rmtLane": "user-blocking",
|
|
93
|
+
"reason": "RMT schedules-domain has no dedicated a11y lane in xtend.rmt.schedules-domain.v1."
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Kernel Boundary
|
|
99
|
+
|
|
100
|
+
The mapping imports no XTendRMT kernel and parses no `.rmt` documents. It can already accept normalized schedule records from a host or test fixture and resolve `scheduleRef` or `endpointNameHint` against them.
|
|
101
|
+
|
|
102
|
+
Allowed:
|
|
103
|
+
|
|
104
|
+
- map Fabric fibers to RMT schedule records
|
|
105
|
+
- use generated schedule records as app/adapter hints
|
|
106
|
+
- reference existing `schedules[*]` records from normalized RMT documents
|
|
107
|
+
- preserve `metadata.fabricLane` for diagnostics and reporters
|
|
108
|
+
|
|
109
|
+
Not allowed:
|
|
110
|
+
|
|
111
|
+
- import the RMT runtime or kernel into Fabric
|
|
112
|
+
- force `a11y` as an RMT kernel lane
|
|
113
|
+
- execute XTend components in the RMT kernel
|
|
114
|
+
- duplicate RMT schema validation in Fabric
|
|
115
|
+
|
|
116
|
+
## Adapter Ingestion
|
|
117
|
+
|
|
118
|
+
Starting with Epic 10 / `WP-E10-05`, the production `xtend.component` adapter uses the same semantics as runtime context. The contract is `xtend.component.fabric-lane-ingestion.v2`.
|
|
119
|
+
|
|
120
|
+
Precedence in the adapter:
|
|
121
|
+
|
|
122
|
+
1. `rmt.schedule-record`
|
|
123
|
+
2. `rmt.component-metadata`
|
|
124
|
+
3. `fabric.runtime-override`
|
|
125
|
+
4. `component.static-contract`
|
|
126
|
+
5. `scaffold.blueprint-default`
|
|
127
|
+
|
|
128
|
+
The adapter does not import Fabric into the RMT kernel. During mounting and hydration it only resolves the Fabric context, sets `result.metadata.fabric` and marks DOM hosts with `data-xtend-fabric-lane`, `data-xtend-rmt-lane`, `data-xtend-fabric-fiber`, `data-xtend-fabric-source` and `data-rmt-endpoint`.
|
|
129
|
+
|
|
130
|
+
## Gates
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
node scripts/run_xtend_tests.js fabric-lane-mapping --json
|
|
134
|
+
node scripts/run_xtend_tests.js rmt-component-fabric-ingestion --json
|
|
135
|
+
node scripts/run_xtend_tests.js hydration-policy --json
|
|
136
|
+
npm run test:fabric-lanes
|
|
137
|
+
npm run test:rmt-component-fabric-ingestion
|
|
138
|
+
npm run test:hydration-policy
|
|
139
|
+
node scripts/run_xtend_tests.js references --json
|
|
140
|
+
npm test
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
`ER-WP-20` builds on this and hardens lazy/idle/visible hydration policies with concrete `scheduleRef` decisions. Route render and XRouter navigation remain correlatable through `ER-WP-15`.
|