@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,145 @@
|
|
|
1
|
+
# RMT DSL Authoring Polish
|
|
2
|
+
|
|
3
|
+
Der Contract `xtend.rmt.dsl-authoring-polish.v1` bereitet eine freundlichere
|
|
4
|
+
RMT-DSL fuer XTend Component Shells vor. Er macht RMT Authoring kuerzer, ohne
|
|
5
|
+
XTend in den RMT Kernel einzubetten.
|
|
6
|
+
|
|
7
|
+
Lokaler Gate:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
node scripts/run_xtend_tests.js rmt-dsl-authoring-polish --json
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Warum dieses Paket existiert
|
|
14
|
+
|
|
15
|
+
Nach `WP-E12-12` besitzt XTend ein produktives Design-Token-Vokabular.
|
|
16
|
+
`WP-E12-13` nutzt diese Tokens, damit Shells, Slots, Styles, A11y, Events,
|
|
17
|
+
Commands, Hydration, Fabric-Lanes und XRouter-Routen in RMT einfacher
|
|
18
|
+
beschrieben werden koennen.
|
|
19
|
+
|
|
20
|
+
RMT bleibt dabei host-neutral:
|
|
21
|
+
|
|
22
|
+
- `xtend.component` rendert und hydriert Components im Host.
|
|
23
|
+
- `xtend.xrouter` verbindet Route Records mit XRouter.
|
|
24
|
+
- `xtend.fabric` und Telemetry bleiben Adapter-/Hostdaten.
|
|
25
|
+
- `no-rmt-kernel-import-of-xtend-types` bleibt Pflicht.
|
|
26
|
+
|
|
27
|
+
## Authoring-Aliase
|
|
28
|
+
|
|
29
|
+
| Alias | Ziel |
|
|
30
|
+
|-------|------|
|
|
31
|
+
| `component` | XTend Component Record |
|
|
32
|
+
| `shell` | Shell-Zustand, Slots, Parts und Fokus |
|
|
33
|
+
| `slot` | Template-, Component- oder Text-Slots |
|
|
34
|
+
| `style` | Variant, Theme, Density, Tokens und Parts |
|
|
35
|
+
| `token` | produktive `--xtend-*` Tokens |
|
|
36
|
+
| `theme` | Theme Pack |
|
|
37
|
+
| `density` | Density Pack |
|
|
38
|
+
| `a11y` | Role, Label, Live Region, Keyboard und Announcements |
|
|
39
|
+
| `on` | Event zu Command |
|
|
40
|
+
| `command` | Command zu Schedule |
|
|
41
|
+
| `hydrate` | Hydration Policy |
|
|
42
|
+
| `lane` | Fabric Lane und Fiber |
|
|
43
|
+
| `route` | XRouter Route |
|
|
44
|
+
| `link` | XLink-kompatibler Link |
|
|
45
|
+
| `outlet` | Route Outlet im Template |
|
|
46
|
+
|
|
47
|
+
## Beispiel
|
|
48
|
+
|
|
49
|
+
```rmt
|
|
50
|
+
template settings.shell {
|
|
51
|
+
state settings.theme type string initial "dark"
|
|
52
|
+
state settings.density type string initial "comfortable"
|
|
53
|
+
|
|
54
|
+
portal surface.root root "#settings-root" layer surface
|
|
55
|
+
|
|
56
|
+
surface settings.shell kind page component x-section {
|
|
57
|
+
portal surface.root
|
|
58
|
+
|
|
59
|
+
lane visible weight 80 {
|
|
60
|
+
hydrate settings-header {
|
|
61
|
+
slot header hydrate settings.header.template
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
hydrate feedback-toast from endpoint xtendrmt.component.hydrate {
|
|
65
|
+
slot feedback hydrate feedback.toast
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
lane idle weight 20 {
|
|
70
|
+
hydrate settings-shell-style from endpoint xtendrmt.component.hydrate {
|
|
71
|
+
trust boundary "xtend.security.sanitizing-boundary.v1"
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Token-Aliase bleiben Teil des Contracts: produktive Styles referenzieren
|
|
79
|
+
weiterhin stabile Custom Properties wie `--xtend-surface` und
|
|
80
|
+
`--xtend-color-primary`, waehrend vNext die Struktur, Slots und Hydration
|
|
81
|
+
beschreibt.
|
|
82
|
+
|
|
83
|
+
Der normalisierte Output wird zu `components[]`, `templates[]` und
|
|
84
|
+
`schedules[]`. RMT beschreibt die Struktur; XTend fuehrt die
|
|
85
|
+
Component-Hydration aus.
|
|
86
|
+
|
|
87
|
+
## Routing-Sugar
|
|
88
|
+
|
|
89
|
+
Routen koennen authoringfreundlich als Surface-, Link- und Outlet-Struktur
|
|
90
|
+
beschrieben werden:
|
|
91
|
+
|
|
92
|
+
```rmt
|
|
93
|
+
template settings.routing {
|
|
94
|
+
portal surface.root root "#app-root" layer surface
|
|
95
|
+
|
|
96
|
+
surface settings.route kind page component x-section {
|
|
97
|
+
portal surface.root
|
|
98
|
+
|
|
99
|
+
lane visible weight 80 {
|
|
100
|
+
hydrate settings-shell from endpoint xtendrmt.route.render
|
|
101
|
+
hydrate settings-link from endpoint xtendrmt.component.hydrate
|
|
102
|
+
slot outlet hydrate primary
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
on click target settings-link -> action route.navigate {
|
|
106
|
+
payload href from "/settings"
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Das wird zu `routes[]`, `components[]` und `templates[]` mit Adapter
|
|
113
|
+
`xtend.xrouter`. XRouter bleibt Host Adapter, nicht RMT-Kernel-Abhaengigkeit.
|
|
114
|
+
|
|
115
|
+
## Diagnostik
|
|
116
|
+
|
|
117
|
+
Der Polish-Plan definiert diese Diagnosecodes:
|
|
118
|
+
|
|
119
|
+
- `rmt.dsl.alias.unknown`
|
|
120
|
+
- `rmt.dsl.alias.required-field-missing`
|
|
121
|
+
- `rmt.dsl.token.unknown`
|
|
122
|
+
- `rmt.dsl.route.target-unresolved`
|
|
123
|
+
- `rmt.dsl.link.route-unresolved`
|
|
124
|
+
- `rmt.dsl.slot.target-unresolved`
|
|
125
|
+
- `rmt.dsl.schedule.unresolved`
|
|
126
|
+
- `rmt.dsl.inline-runtime-code-refused`
|
|
127
|
+
- `rmt.dsl.kernel-boundary.refused`
|
|
128
|
+
|
|
129
|
+
Damit kann XTendRMT upstream freundlichere Parserfehler und Editor-Hints bauen,
|
|
130
|
+
ohne die XTend Runtime zu importieren.
|
|
131
|
+
|
|
132
|
+
## Artefakte
|
|
133
|
+
|
|
134
|
+
- Contract: `development/XTend-RMT-DSL-Authoring-Polish-fuer-Component-Shells.md`
|
|
135
|
+
- Modul: `xtend-builder/typing/rmt-dsl-authoring-polish.js`
|
|
136
|
+
- Fixture: `tests/fixtures/rmt-dsl-authoring-polish.rmt`
|
|
137
|
+
- Suite: `tests/rmt/rmt_dsl_authoring_polish_suite.js`
|
|
138
|
+
|
|
139
|
+
## RC0 Adoption Update
|
|
140
|
+
|
|
141
|
+
Seit `WP-E12-15` beschreibt der [RC0 Adoption Guide](./rc0-adoption-guide.md),
|
|
142
|
+
wie App Authors diese DSL-Polish-Schicht fuer Shell-first XTend Apps nutzen.
|
|
143
|
+
Die wichtigste Migrationsregel bleibt: RMT darf XTend-Komponenten,
|
|
144
|
+
XRouter-Routen und Content Slots konstruieren und schedulen, ohne XTend-Typen
|
|
145
|
+
in den RMT Kernel einzubetten.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# RMT Event Routing Runtime
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.epic18.rmt-event-routing-runtime.v1`
|
|
4
|
+
- Workpackage: `WP-E18-09`
|
|
5
|
+
- Runtime: `xtendrmt/rmt-event-routing-runtime.js`
|
|
6
|
+
- Types: `xtendrmt/rmt-event-routing-runtime.d.ts`
|
|
7
|
+
- Fixture: `tests/fixtures/rmt-event-routing-runtime.rmt`
|
|
8
|
+
- Lokaler Gate: `node scripts/run_xtend_tests.js rmt-event-routing-runtime --json`
|
|
9
|
+
- Naechstes Paket: `WP-E18-10`
|
|
10
|
+
|
|
11
|
+
## Zweck
|
|
12
|
+
|
|
13
|
+
Die Event Routing Runtime macht DOM- und Custom Events zu nativen RMT-App-Platform-Primitives. Apps koennen Events deklarativ an Actions binden, Payloads vor der Action-Ausfuehrung validieren, Governance-Policies anwenden und Listener nach Owner-Scope bereinigen.
|
|
14
|
+
|
|
15
|
+
Die Runtime delegiert die Ausfuehrung an die Action Effect Runtime aus `WP-E18-08`. Sie erzeugt kein zweites Action-Framework und importiert keine XTend-UI-Komponenten.
|
|
16
|
+
|
|
17
|
+
## Event Bindings
|
|
18
|
+
|
|
19
|
+
Ein Event Binding kann deklarieren:
|
|
20
|
+
|
|
21
|
+
- `event`
|
|
22
|
+
- `target`
|
|
23
|
+
- `component`
|
|
24
|
+
- `owner`
|
|
25
|
+
- `action`
|
|
26
|
+
- `actionMode`
|
|
27
|
+
- `payload`
|
|
28
|
+
- `payloadContract`
|
|
29
|
+
- `governance`
|
|
30
|
+
- `condition`
|
|
31
|
+
|
|
32
|
+
Targets werden ueber explizite Refs, eine uebergebene `targets` Map, einen eigenen Target Resolver oder eine DOM-Query aus einem bereitgestellten Root aufgeloest. Produktlokale `event.target.closest(...)`-Delegationketten sind fuer normale App-Flows nicht erforderlich.
|
|
33
|
+
|
|
34
|
+
## Payload Contracts
|
|
35
|
+
|
|
36
|
+
Payloads werden aus Event-Daten mit Ausdruecken wie diesen gebaut:
|
|
37
|
+
|
|
38
|
+
- `$event.target.value`
|
|
39
|
+
- `$detail.id`
|
|
40
|
+
- `$target.dataset.id`
|
|
41
|
+
- `$source.dataset.path`
|
|
42
|
+
|
|
43
|
+
Contracts nutzen eine kleine strukturelle Form:
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"type": "object",
|
|
48
|
+
"required": ["id"],
|
|
49
|
+
"properties": {
|
|
50
|
+
"id": "string"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Ungueltige Payloads werden geblockt, bevor die Action Runtime aufgerufen wird, und emittieren `rmt.event.payload_contract.invalid` Diagnostics.
|
|
56
|
+
|
|
57
|
+
## Event Governance
|
|
58
|
+
|
|
59
|
+
Unterstuetzte Policies:
|
|
60
|
+
|
|
61
|
+
- `preventDefault`
|
|
62
|
+
- `stopPropagation`
|
|
63
|
+
- `stopImmediatePropagation`
|
|
64
|
+
- `capture`
|
|
65
|
+
- `passive`
|
|
66
|
+
- `once`
|
|
67
|
+
- `retarget`
|
|
68
|
+
|
|
69
|
+
Retargeting kann `target`, `current-target` oder `composed-path` verwenden. Dadurch bleibt Component-Interaktion explizit, ohne produktspezifisches DOM-Walking.
|
|
70
|
+
|
|
71
|
+
## Ownership
|
|
72
|
+
|
|
73
|
+
`attach()` registriert Listener und merkt sich ihren Owner. `detachOwner(ownerId)` entfernt nur die Listener fuer diesen Scope, waehrend `detachAll()` die verbleibenden Listener entfernt. Das ist die Bruecke zur Surface- und Resource-Lifecycle-Arbeit in `WP-E18-10`.
|
|
74
|
+
|
|
75
|
+
## Diagnostics
|
|
76
|
+
|
|
77
|
+
Diagnostics nutzen `xtend.epic18.rmt-event-routing-diagnostic.v1` auf `rmt.app_platform.event_routing`. Route Diagnostics enthalten Event-ID, Component, Payload und Action-Ziel, damit Build- und Runtime-Reports zeigen koennen, warum eine User-Interaktion ausgefuehrt wurde oder nicht.
|
|
78
|
+
|
|
79
|
+
## Handoff
|
|
80
|
+
|
|
81
|
+
`WP-E18-10` kann nun Surface-, Overlay-, Portal- und Resource-Graphs mit owner-scoped Events und dem Resource-Ownership-Modell aus `WP-E18-08` haerten.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# RMT-first Demo-App
|
|
2
|
+
|
|
3
|
+
Contract: `xtend.epic10.rmt-first-demo-app.v1`
|
|
4
|
+
|
|
5
|
+
Die RMT-first Demo-App zeigt den Zielpfad fuer Epic 10: Eine XTend App wird nicht mehr als manuelle HTML-Shell gebaut, sondern aus einem `.rmt` App-Dokument gerendert. XTend liefert lokale Web Components. RMT liefert Shell, Routes, Templates, Schedules, Fabric/Lane Metadata und Diagnostics.
|
|
6
|
+
|
|
7
|
+
## Startpunkt
|
|
8
|
+
|
|
9
|
+
- Demo / Browser Smoke: `tests/browser/fixtures/rmt-first-demo-app-smoke.html`
|
|
10
|
+
- RMT Document: `xtendrmt/rmt-first-demo-app.rmt`
|
|
11
|
+
- Runtime: `xtendrmt/rmt-first-demo-app.js`
|
|
12
|
+
- Browser Smoke: `tests/browser/fixtures/rmt-first-demo-app-smoke.html`
|
|
13
|
+
|
|
14
|
+
Die Hostseite enthaelt nur den RMT Root:
|
|
15
|
+
|
|
16
|
+
```html
|
|
17
|
+
<div
|
|
18
|
+
id="rmt-first-demo-root"
|
|
19
|
+
data-rmt-host="rmt-first-demo"
|
|
20
|
+
data-rmt-document-src="xtendrmt/rmt-first-demo-app.rmt"></div>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Die Shell selbst kommt aus `app.shell.template`.
|
|
24
|
+
|
|
25
|
+
## Was RMT besitzt
|
|
26
|
+
|
|
27
|
+
- App Shell
|
|
28
|
+
- Routes
|
|
29
|
+
- `dom_descriptor` Templates
|
|
30
|
+
- Component Records
|
|
31
|
+
- Props, Attribute, Slots und Event Commands
|
|
32
|
+
- Schedules und Lanes
|
|
33
|
+
- Fabric/Fiber Metadata
|
|
34
|
+
- Diagnostics
|
|
35
|
+
|
|
36
|
+
## Was XTend besitzt
|
|
37
|
+
|
|
38
|
+
- Custom Elements
|
|
39
|
+
- Manifest Lookup
|
|
40
|
+
- Component Lifecycle
|
|
41
|
+
- DOM-Ausfuehrung
|
|
42
|
+
- XRouter-Registrierung
|
|
43
|
+
- Fabric-Ausfuehrung und Telemetry Hooks
|
|
44
|
+
|
|
45
|
+
Der RMT-Kernel importiert keine XTend-Komponenten. Diese Boundary bleibt `no-rmt-kernel-import-of-xtend-types`.
|
|
46
|
+
|
|
47
|
+
## Demo-Routen
|
|
48
|
+
|
|
49
|
+
| Route | Pfad | Inhalt |
|
|
50
|
+
|-------|------|--------|
|
|
51
|
+
| `dashboard` | `/` | Shell-first Status und Performance Coverage |
|
|
52
|
+
| `settings` | `/settings` | Form Controls mit `x-select`, `x-checkbox`, `x-radio`, `x-textarea` |
|
|
53
|
+
| `overlays` | `/overlays` | `x-tooltip`, `x-popover`, `x-drawer` |
|
|
54
|
+
|
|
55
|
+
## No-Manual-Shell-Regel
|
|
56
|
+
|
|
57
|
+
Die Demo gilt nur als korrekt, wenn:
|
|
58
|
+
|
|
59
|
+
- der Host keine statischen `x-section` oder `x-router` Shell-Tags enthaelt
|
|
60
|
+
- die Runtime kein `innerHTML` nutzt
|
|
61
|
+
- `manifest.metadata.manualShellAllowed` auf `false` steht
|
|
62
|
+
- `manifest.metadata.hostShellMarkup` auf `false` steht
|
|
63
|
+
- der Browser-Smoke die Shell aus RMT rendert
|
|
64
|
+
|
|
65
|
+
## Lokaler Gate
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
node scripts/run_xtend_tests.js rmt-first-demo-app --json
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Der Gate prueft RMT-Referenzen, Runtime-Registry-Normalisierung, Host-Boundary, Browser-Smoke, Package-Metadata und die Dokumentationspfade.
|
|
72
|
+
|
|
73
|
+
## Weiterfuehrung
|
|
74
|
+
|
|
75
|
+
`WP-E10-14` migriert bestehende priorisierte Komponenten in dieselbe RMT/Fabric-Metadata-Linie. Die Demo-App bleibt dafuer der erste produktive Abnahme-Host.
|
|
76
|
+
|
|
77
|
+
Seit `WP-E13-09` ist die Demo-App Teil von [RMT Production Readiness](./rmt-production-readiness.md). Der Contract `xtend.epic13.rmt-production-readiness.v1` nutzt sie als shell-first Evidence fuer Routing, Components, Fabric/Lane, Lifecycle Telemetry und Diagnostics.
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# RMT-first XTend Apps
|
|
2
|
+
|
|
3
|
+
Docs Contract: `xtend.docs.rmt-first-xtend-apps.v1`
|
|
4
|
+
|
|
5
|
+
Dieser Guide beschreibt den Zielpfad aus Epic 10: Eine vollstaendige XTend App
|
|
6
|
+
wird als RMT-vNext-Dokument beschrieben. XTend liefert lokale Web Components,
|
|
7
|
+
RMT liefert Shell, Routes, Templates, Components, Schedules, Hydration
|
|
8
|
+
Policies, Fabric-Lanes und Diagnostics.
|
|
9
|
+
|
|
10
|
+
Der zugrunde liegende Authoring Contract ist:
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
xtend.rmt.first-class-app-authoring.v1
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Grundregeln
|
|
17
|
+
|
|
18
|
+
- RMT vNext ist App-Authoring-Modell.
|
|
19
|
+
- XTend-Komponenten werden ueber Surfaces mit `component x-*` beschrieben und
|
|
20
|
+
in `xtend.component` Records kompiliert.
|
|
21
|
+
- XRouter wird ueber `xtend.xrouter` angebunden.
|
|
22
|
+
- Templates nutzen bevorzugt `dom_descriptor` als generierten Output.
|
|
23
|
+
- Event Bindings laufen als `on ... -> action ...`.
|
|
24
|
+
- Fabric-, Lane- und Fiber-Hints kommen aus `lane`- und Lifecycle-Klauseln.
|
|
25
|
+
- Der RMT Kernel importiert keine XTend-Klassen oder XTend-Typen.
|
|
26
|
+
|
|
27
|
+
Die Boundary bleibt:
|
|
28
|
+
|
|
29
|
+
```text
|
|
30
|
+
no-rmt-kernel-import-of-xtend-types
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Minimalstruktur
|
|
34
|
+
|
|
35
|
+
```rmt
|
|
36
|
+
template settings.app {
|
|
37
|
+
state settings.status type string initial "ready"
|
|
38
|
+
|
|
39
|
+
selector settings.feedback from state settings.status {
|
|
40
|
+
output StatusView
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
action settings.refresh {
|
|
44
|
+
reduce state.settings.status = "refreshing"
|
|
45
|
+
emit settings.refresh.requested with action settings.refresh
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
portal surface.root root "#app-root" layer surface
|
|
49
|
+
|
|
50
|
+
surface settings.status kind card component x-status {
|
|
51
|
+
source selector settings.feedback
|
|
52
|
+
portal surface.root
|
|
53
|
+
|
|
54
|
+
lane visible weight 80 {
|
|
55
|
+
mount x-status
|
|
56
|
+
hydrate settings-status from selector settings.feedback
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
on click target refresh-button -> action settings.refresh {
|
|
60
|
+
payload source from target.dataset.action
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Der Compiler erzeugt daraus `xtend.component`, `xtend.xrouter`,
|
|
67
|
+
`rmt.state-scheduler-diagnostics`, `dom_descriptor` Templates und
|
|
68
|
+
Schedule-/Lane-Records. Diese JSON-Records sind Runtime-Mirror, nicht der
|
|
69
|
+
primaere Authoring-Pfad.
|
|
70
|
+
|
|
71
|
+
## Referenzpfade
|
|
72
|
+
|
|
73
|
+
- Contract: `development/XTend-RMT-First-Class-App-Authoring.md`
|
|
74
|
+
- Fixture: `tests/fixtures/rmt-first-class-xtend-app.rmt`
|
|
75
|
+
- Demo-App: `xtendrmt/rmt-first-demo-app.rmt`
|
|
76
|
+
- Browser-Smoke: `tests/browser/fixtures/rmt-first-demo-app-smoke.html`
|
|
77
|
+
- Gate: `node scripts/run_xtend_tests.js rmt-first-class-app --json`
|
|
78
|
+
- Demo-Gate: `node scripts/run_xtend_tests.js rmt-first-demo-app --json`
|
|
79
|
+
|
|
80
|
+
## Fabric und Telemetry
|
|
81
|
+
|
|
82
|
+
Komponenten erhalten Fabric-Kontext ueber Adapter Injection. Die kanonische
|
|
83
|
+
Boundary ist:
|
|
84
|
+
|
|
85
|
+
```text
|
|
86
|
+
adapter-injection-via-xtend-component-resolveFabricContext
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
`window.XTendFabric` kann durch Hosts genutzt werden, ist aber nicht die
|
|
90
|
+
Contract-Oberflaeche einer Komponente.
|
|
91
|
+
|
|
92
|
+
## Release-Handoff
|
|
93
|
+
|
|
94
|
+
Der Abschluss von Epic 10 wird in [Epic 10 Release
|
|
95
|
+
Handoff](./epic10-release-handoff.md) dokumentiert. Die dortige Gate-Kette
|
|
96
|
+
entscheidet, ob ein RMT-first XTend App-Pfad releasefaehig genug fuer einen
|
|
97
|
+
Kandidaten ist.
|
|
98
|
+
|
|
99
|
+
Seit `WP-E13-09` buendelt [RMT Production
|
|
100
|
+
Readiness](./rmt-production-readiness.md) diesen Pfad unter
|
|
101
|
+
`xtend.epic13.rmt-production-readiness.v1`: Shell-first App Shell, Routing,
|
|
102
|
+
Components, Fabric/Lanes, Lifecycle Telemetry, Diagnostics und Artifact Parity
|
|
103
|
+
sind als RC1-Gate verbunden. `WP-E13-10` hat [Docs RMT Production
|
|
104
|
+
Hardening](./docs-rmt-production-hardening.md) abgeschlossen; `WP-E13-11` hat
|
|
105
|
+
[Trusted DOM Boundary Browser Proof](./trusted-dom-boundary-browser-proof.md)
|
|
106
|
+
und `xtend.epic13.trusted-dom-boundary.v1` abgeschlossen. `WP-E13-12` hat [RC1
|
|
107
|
+
Migration Notes](./rc1-migration-notes.md) und
|
|
108
|
+
`xtend.epic13.rc1-migration-notes-semver.v1` abgeschlossen. `WP-E13-13` hat
|
|
109
|
+
[RC1 Gate Matrix und CI-Handoff](./rc1-gate-matrix-ci-handoff.md) und
|
|
110
|
+
`xtend.epic13.rc1-gate-matrix-ci-handoff.v1` abgeschlossen.
|
|
111
|
+
|
|
112
|
+
## Component UX Authoring
|
|
113
|
+
|
|
114
|
+
Seit `WP-E11-16` ergaenzt [Component UX App Authoring](./component-ux-app-authoring.md)
|
|
115
|
+
diesen Guide um sichtbare UX-Regeln fuer RMT-first Apps. Dazu gehoeren Theme,
|
|
116
|
+
Motion, Density, Viewports, Browser-Smokes und die Component Shell Theme Matrix
|
|
117
|
+
`xtend.epic11.component-shell-theme-matrix.v1`.
|
|
118
|
+
|
|
119
|
+
Seit `WP-E11-17` beschreibt [Component Long-Tail
|
|
120
|
+
Migration](./component-long-tail-migration.md), welche Legacy- und
|
|
121
|
+
Infrastrukturkomponenten zuerst fuer RMT-first App-Kompatibilitaet
|
|
122
|
+
nachgehaertet werden.
|
|
123
|
+
|
|
124
|
+
Der lokale Docs-Gate lautet:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
node scripts/run_xtend_tests.js component-ux-authoring-docs --json
|
|
128
|
+
node scripts/run_xtend_tests.js component-long-tail-migration --json
|
|
129
|
+
```
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# RMT Kernel Panic Recovery Incident Handoff
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.rmt.kernel-migration-authoring-incident-handoff.v1`
|
|
4
|
+
- Workpackage: `RKSH-WP-11`
|
|
5
|
+
- Local gate: `node scripts/run_xtend_tests.js rmt-kernel-handoff-docs --json`
|
|
6
|
+
|
|
7
|
+
Dieses Handoff beschreibt, wie Host-Teams Panic- und Recovery-Diagnostics auswerten, wenn die Kernel-Trust-Schicht fehlerhafte Outputs blockiert oder Recovery startet.
|
|
8
|
+
|
|
9
|
+
## Diagnostics-Kanaele
|
|
10
|
+
|
|
11
|
+
| Kanal | Zweck |
|
|
12
|
+
|-------|-------|
|
|
13
|
+
| `rmt.kernel.panic` | Panic-State, Trigger, Severity, Scope und blockierte Commits. |
|
|
14
|
+
| `rmt.kernel.recovery` | Recovery-Outcome, Snapshot-Nutzung, Fallback und Quarantaene. |
|
|
15
|
+
| `rmt.kernel.escalation` | Escalation Envelope aus Diagnostics Hub oder Command Bus. |
|
|
16
|
+
| `rmt.kernel.scheduler_failure` | `failed`, `aborted`, `panic_blocked` und Backpressure-Failure fuer Jobs. |
|
|
17
|
+
|
|
18
|
+
## Mindestfelder fuer Incident Review
|
|
19
|
+
|
|
20
|
+
- `panicId`
|
|
21
|
+
- `correlationId`
|
|
22
|
+
- `state`
|
|
23
|
+
- `severity`
|
|
24
|
+
- `scope`
|
|
25
|
+
- `trigger`
|
|
26
|
+
- `blockedCommitCount`
|
|
27
|
+
- `recoveryAction`
|
|
28
|
+
- `quarantined`
|
|
29
|
+
- `hostNotified`
|
|
30
|
+
- `affectedJobs`
|
|
31
|
+
- `firstSeenAt`
|
|
32
|
+
- `lastSeenAt`
|
|
33
|
+
|
|
34
|
+
## Incident Severity
|
|
35
|
+
|
|
36
|
+
| Severity | Bedeutung | Erwartete Reaktion |
|
|
37
|
+
|----------|-----------|--------------------|
|
|
38
|
+
| `warning` | Output wurde korrigiert oder sanitisiert. | Verdicts beobachten, keine Eskalation noetig. |
|
|
39
|
+
| `degraded` | Output wurde blockiert, UI bleibt mit sicherem Fallback nutzbar. | Host-Team prueft Authoring oder Remote Source. |
|
|
40
|
+
| `critical` | Surface, Template oder Binding wurde quarantined. | Incident oeffnen, `correlationId` und `panicId` verfolgen. |
|
|
41
|
+
| `fatal` | Recovery ist fehlgeschlagen oder mehrere Kernel-Scope-Fehler korrelieren. | Release/Traffic stoppen und letzten sicheren Stand wiederherstellen. |
|
|
42
|
+
|
|
43
|
+
## Recovery-Aktionen
|
|
44
|
+
|
|
45
|
+
| `recoveryAction` | Bedeutung | Host-Handoff |
|
|
46
|
+
|------------------|-----------|--------------|
|
|
47
|
+
| `rollback-last-safe-snapshot` | Der Kernel stellt den letzten sicheren Snapshot wieder her. | Snapshot-ID und Surface-Scope sichern. |
|
|
48
|
+
| `render-safe-fallback` | Ein gepruefter Fallback ersetzt unsicheren Output. | Fallback-Markup und Reason Code pruefen. |
|
|
49
|
+
| `quarantine-surface` | Betroffene Surface nimmt keine neuen Commits an. | Remote Source oder Adapter deaktivieren. |
|
|
50
|
+
| `abort-scope-jobs` | Scheduler Jobs im betroffenen Scope werden abgebrochen. | `rmt.kernel.scheduler_failure` mit `panic_blocked` pruefen. |
|
|
51
|
+
| `notify-host` | Host Adapter wird aktiv ueber Recovery informiert. | `hostNotified` und Host-Log-Korrelation bestaetigen. |
|
|
52
|
+
|
|
53
|
+
## Triage-Ablauf
|
|
54
|
+
|
|
55
|
+
1. `rmt.kernel.panic` nach `panicId`, `correlationId`, `scope`, `trigger` und `blockedCommitCount` filtern.
|
|
56
|
+
2. `rmt.kernel.recovery` mit demselben `correlationId` verbinden und `recoveryAction`, `quarantined` sowie `hostNotified` bewerten.
|
|
57
|
+
3. `rmt.kernel.escalation` pruefen, wenn Diagnostics-Subscriber oder Command-Handler beteiligt waren.
|
|
58
|
+
4. `rmt.kernel.scheduler_failure` pruefen, wenn Jobs `failed`, `aborted` oder `panic_blocked` sind.
|
|
59
|
+
5. Authoring anhand von [RMT Kernel Trusted Output Authoring](./rmt-kernel-trusted-output-authoring.md) korrigieren.
|
|
60
|
+
6. Migration und Regression mit [RMT Kernel Security Hardening Migration](./rmt-kernel-security-hardening-migration.md) und `node scripts/run_xtend_tests.js rmt-kernel-security-regression --json` absichern.
|
|
61
|
+
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# RMT Kernel Security Hardening Migration
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.rmt.kernel-migration-authoring-incident-handoff.v1`
|
|
4
|
+
- Workpackage: `RKSH-WP-11`
|
|
5
|
+
- Status: `completed`
|
|
6
|
+
- Local gate: `node scripts/run_xtend_tests.js rmt-kernel-handoff-docs --json`
|
|
7
|
+
|
|
8
|
+
Dieses Dokument beschreibt die Migration fuer Hosts und RMT-Authoring, die bisher implizit erlaubte Runtime-Outputs genutzt haben. Seit der Kernel-Haertung gilt: HTML, Attribute, Properties und Remote Outputs werden erst committed, wenn die Trust-Schicht ein `RmtKernelRuntimeTrustVerdict` erzeugt hat.
|
|
9
|
+
|
|
10
|
+
## Wann eine Trust Boundary erforderlich ist
|
|
11
|
+
|
|
12
|
+
| Output | Trust Boundary | Migration |
|
|
13
|
+
|--------|----------------|-----------|
|
|
14
|
+
| `slot.html`, `prerender.html`, `fallback.html` | HTML muss vor jedem DOM-Commit bewertet werden. | `commitTrustedHtml` mit `sanitize html`, `html_fragment` und `safeFallbackHtml` nutzen. |
|
|
15
|
+
| Direkte DOM-HTML-Sinks wie `innerHTML`, `insertAdjacentHTML` und `template.innerHTML` | Diese Sinks bleiben privilegierte Trusted-DOM-Sinks. | Direkte Writes entfernen und den Runtime Trust-Sink-Adapter verwenden. |
|
|
16
|
+
| Attribute wie `href`, `src`, `srcset`, `action`, `formaction` und `srcdoc` | URL- und Sandbox-Policy entscheidet vor dem Commit. | `commitTrustedAttribute` verwenden und gefaehrliche Protokolle wie `javascript:` blockieren. |
|
|
17
|
+
| Event-nahe Attribute wie `onclick`, `onload` oder `onerror` | Event-Attribute sind keine erlaubten Markup-Outputs. | Commands oder registrierte Event-Handler statt HTML-Attributen verwenden. |
|
|
18
|
+
| Style- und DOM-Property-Writes wie `style`, `innerHTML`, `outerHTML`, `srcdoc` | Property-Policy bewertet Nebenwirkungen und DOM-Clobbering-Risiko. | `commitTrustedProperty` nur fuer explizit erlaubte Properties nutzen. |
|
|
19
|
+
| Remote Outputs und Adapter Outputs | Remote Surface Boundaries brauchen Scope, Origin, Capability und Integrity-Kontext. | Remote Outputs als `remote-surface` oder `adapter-output` scope in die Trust Authority geben. |
|
|
20
|
+
|
|
21
|
+
## Legacy-Pfade ersetzen
|
|
22
|
+
|
|
23
|
+
1. Direkte HTML-Commits aus Komponenten, Adaptern und Host-Bridges entfernen. Der Kernel darf `innerHTML`, `insertAdjacentHTML` oder Template-HTML nur ueber `commitTrustedHtml` erreichen.
|
|
24
|
+
2. HTML, das weiterhin erlaubt sein soll, als `html_fragment` markieren und durch `sanitize html` fuehren. Der Sanitizer muss `script`, `iframe`, `srcdoc`, `on*`, `javascript:` und vergleichbare gefaehrliche Patterns entfernen oder blockieren.
|
|
25
|
+
3. Reine Texte als Text schreiben: `textContent` ist fuer Labels, Status, Fehlermeldungen und User Content der bevorzugte Pfad.
|
|
26
|
+
4. Attribute trennen: `data-*` und `aria-*` bleiben normale strukturierte Attribute, URL-Attribute laufen durch `commitTrustedAttribute`.
|
|
27
|
+
5. Properties trennen: nur explizit erlaubte Properties laufen durch `commitTrustedProperty`; HTML-nahe Properties bleiben blockiert.
|
|
28
|
+
6. Fallbacks wie `fallback.html` nicht privilegieren. Recovery-Fallbacks muessen dieselbe Policy wie normale Outputs erfuellen und ein `safeFallbackHtml` besitzen.
|
|
29
|
+
7. Diagnose und Regression pruefen: `listTrustVerdicts()`, `rmt.kernel.panic`, `rmt.kernel.recovery` und `node scripts/run_xtend_tests.js rmt-kernel-security-regression --json` muessen nach der Migration gruen bleiben.
|
|
30
|
+
|
|
31
|
+
## SemVer-Auswirkung
|
|
32
|
+
|
|
33
|
+
Blockierte Legacy-Outputs koennen ein Breaking Change sein, wenn veroeffentlichte Hosts bisher bewusst unsicheres Markup gerendert haben und dieses Verhalten Teil der dokumentierten Integrationsoberflaeche war.
|
|
34
|
+
|
|
35
|
+
| Aenderung | SemVer |
|
|
36
|
+
|-----------|--------|
|
|
37
|
+
| Unsichere HTML-, URL- oder Event-Attribute werden neu blockiert und bestehende Apps koennen dadurch sichtbaren Content verlieren. | `major` |
|
|
38
|
+
| Unsichere Pfade erhalten Warnungen, Diagnostics oder Opt-in-Fallbacks, aber der bisher sichere Output bleibt sichtbar. | `minor` |
|
|
39
|
+
| Nur Docs, Tests, Report-Felder oder strengere Diagnostics ohne Output-Aenderung werden ergaenzt. | `patch` |
|
|
40
|
+
|
|
41
|
+
Release Notes muessen fuer behavior-changing Blocks mindestens die betroffenen Sinks, den Reason Code, den Recovery-Pfad und die empfohlene Migration nennen.
|
|
42
|
+
|
|
43
|
+
## Verifikation
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
node scripts/run_xtend_tests.js rmt-kernel-handoff-docs --json
|
|
47
|
+
node scripts/run_xtend_tests.js rmt-kernel-security-regression --json
|
|
48
|
+
node scripts/verify_xtendrmt_artifact_parity.js --json
|
|
49
|
+
```
|
|
50
|
+
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# RMT Kernel Trusted Output Authoring
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.rmt.kernel-migration-authoring-incident-handoff.v1`
|
|
4
|
+
- Workpackage: `RKSH-WP-11`
|
|
5
|
+
- Package script: `npm run test:rmt-kernel-handoff-docs`
|
|
6
|
+
|
|
7
|
+
RMT-Authoring darf nicht davon ausgehen, dass ein String sicher ist, nur weil er aus einem Template, einer Remote Surface oder einem Adapter stammt. Jeder output-nahe Authoring-Pfad braucht eine klare Trust Boundary und einen sicheren Fallback.
|
|
8
|
+
|
|
9
|
+
## Authoring-Regeln
|
|
10
|
+
|
|
11
|
+
- Text bleibt Text: Labels, Status, User Content und Fehlermeldungen als `textContent` oder strukturierte Textfelder authoren.
|
|
12
|
+
- HTML nur bewusst authoren: `html_fragment` mit `sanitize html` und explizitem Scope verwenden.
|
|
13
|
+
- Attribute klein halten: `data-*` und `aria-*` sind bevorzugt, URL-Attribute laufen ueber `commitTrustedAttribute`.
|
|
14
|
+
- Properties nur fuer erlaubte Runtime-Ziele nutzen: DOM-HTML-Properties nicht als Abkuerzung verwenden.
|
|
15
|
+
- Fallbacks sind nicht privilegiert: `safeFallbackHtml` muss selbst sanitizbar und nicht interaktiv gefaehrlich sein.
|
|
16
|
+
- Remote Surface Outputs brauchen Scope, Capability, Origin und Integrity-Kontext, bevor sie in den Kernel gelangen.
|
|
17
|
+
|
|
18
|
+
## Sichere Muster
|
|
19
|
+
|
|
20
|
+
```js
|
|
21
|
+
runtime.commitTrustedHtml(slotTarget, {
|
|
22
|
+
scope: 'slot',
|
|
23
|
+
source: 'slot.html',
|
|
24
|
+
html: model.safeSummaryHtml,
|
|
25
|
+
policy: {
|
|
26
|
+
transform: 'sanitize html',
|
|
27
|
+
output: 'html_fragment'
|
|
28
|
+
},
|
|
29
|
+
safeFallbackHtml: '<p data-rmt-fallback="safe">Content unavailable.</p>'
|
|
30
|
+
});
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
```js
|
|
34
|
+
runtime.commitTrustedAttribute(linkTarget, {
|
|
35
|
+
scope: 'binding',
|
|
36
|
+
name: 'href',
|
|
37
|
+
value: model.href,
|
|
38
|
+
allowedProtocols: ['https:', 'mailto:']
|
|
39
|
+
});
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
```js
|
|
43
|
+
runtime.commitTrustedProperty(inputTarget, {
|
|
44
|
+
scope: 'binding',
|
|
45
|
+
name: 'value',
|
|
46
|
+
value: model.value,
|
|
47
|
+
policy: 'form-control-value'
|
|
48
|
+
});
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Authoring-Checkliste
|
|
52
|
+
|
|
53
|
+
| Frage | Sichere Antwort |
|
|
54
|
+
|-------|-----------------|
|
|
55
|
+
| Enthält der Output Markup? | `html_fragment` plus `sanitize html` und `commitTrustedHtml`. |
|
|
56
|
+
| Ist es nur Text? | `textContent` oder ein strukturierter Text-Record. |
|
|
57
|
+
| Ist es ein URL-Attribut? | `commitTrustedAttribute` mit Protokoll-Allowlist. |
|
|
58
|
+
| Ist es `data-*` oder `aria-*`? | Strukturierter Attribute-Commit, keine HTML-Interpolation. |
|
|
59
|
+
| Ist es ein Fallback? | `safeFallbackHtml` mit derselben Policy wie normale HTML-Outputs. |
|
|
60
|
+
| Kommt es aus Remote oder Adapter Code? | Trust Scope `remote-surface` oder `adapter-output`, Capability und Diagnostics-Korrelation. |
|
|
61
|
+
|
|
62
|
+
## No-go-Muster
|
|
63
|
+
|
|
64
|
+
- Markup aus Remote Sources direkt in `slot.html`, `prerender.html` oder `fallback.html` schleusen.
|
|
65
|
+
- Event-Attribute wie `onclick` als Daten transportieren.
|
|
66
|
+
- `style` oder HTML-nahe Properties als Escape Hatch verwenden.
|
|
67
|
+
- `safeFallbackHtml` aus derselben unsicheren Quelle wie den blockierten Output bilden.
|
|
68
|
+
- Diagnostics ignorieren, wenn ein Verdict `blocked` oder `panic` meldet.
|
|
69
|
+
|