@warpgogol/werkstatt-shared 0.14.0 → 0.15.0
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/README.md +31 -13
- package/README.uk.md +25 -15
- package/package.json +519 -762
- package/src/{share/agent → agent}/ard-catalog.ts +6 -1
- package/src/{share/agent → agent}/dns-aid.test.ts +2 -2
- package/src/{share/agent → agent}/manifest.ts +15 -1
- package/src/{share/agent → agent}/search.ts +6 -1
- package/src/{share → agent}/tests/api-catalog.test.ts +2 -2
- package/src/{share → agent}/tests/ard-catalog.test.ts +2 -2
- package/src/{share → agent}/tests/capability.test.ts +1 -1
- package/src/{share → agent}/tests/fleet-catalog.test.ts +1 -1
- package/src/{share → agent}/tests/knowledge.test.ts +2 -2
- package/src/{share → agent}/tests/manifest.test.ts +1 -1
- package/src/{share → agent}/tests/mcp-card.test.ts +2 -2
- package/src/agent/tests/omit-empty.test.ts +33 -0
- package/src/{share → agent}/tests/openapi.test.ts +2 -2
- package/src/{share → agent}/tests/proof.test.ts +1 -1
- package/src/{share → attribution}/material-credits.ts +4 -4
- package/src/{share → checks}/check-hints.ts +6 -1
- package/src/checks/index.ts +4 -1
- package/src/checks/lib/astro-site-url.ts +6 -1
- package/src/checks/lib/i18n.ts +14 -0
- package/src/checks/result-helpers.ts +22 -5
- package/src/checks/tests/remediation-auto-populate.test.ts +83 -0
- package/src/{share → client-scripts}/counter-utils.ts +6 -2
- package/src/{share/scripts → client-scripts}/external-link-qr.ts +11 -16
- package/src/{share/scripts → client-scripts}/external-links.ts +12 -1
- package/src/{share/scripts → client-scripts}/gsap-counter.ts +8 -3
- package/src/client-scripts/index.ts +35 -0
- package/src/{share/scripts → client-scripts}/inline-number-animation.ts +1 -1
- package/src/{share/scripts → client-scripts}/lenis.ts +6 -1
- package/src/{share/scripts → client-scripts}/lordicon.ts +6 -1
- package/src/{share/scripts → client-scripts}/orchestrator.ts +10 -1
- package/src/{share/scripts → client-scripts}/scheduler.ts +6 -1
- package/src/client-scripts/scroll-spy.ts +106 -0
- package/src/client-scripts/tests/external-link-qr.test.ts +8 -0
- package/src/client-scripts/tests/external-links.test.ts +25 -0
- package/src/client-scripts/tests/gsap-counter.test.ts +8 -0
- package/src/client-scripts/tests/gsap-mountain-journey.test.ts +8 -0
- package/src/client-scripts/tests/gsap-parallax.test.ts +8 -0
- package/src/client-scripts/tests/gsap-reveal.test.ts +8 -0
- package/src/client-scripts/tests/gsap-stagger.test.ts +8 -0
- package/src/client-scripts/tests/inline-number-animation.test.ts +8 -0
- package/src/client-scripts/tests/lenis.test.ts +8 -0
- package/src/client-scripts/tests/live-photos.test.ts +8 -0
- package/src/client-scripts/tests/lordicon.test.ts +8 -0
- package/src/client-scripts/tests/orchestrator.test.ts +47 -0
- package/src/client-scripts/tests/scheduler.test.ts +23 -0
- package/src/client-scripts/tests/scroll-spy.test.ts +204 -0
- package/src/{share/scripts → client-scripts/tests}/video-player.test.ts +51 -31
- package/src/component/contracts.ts +206 -0
- package/src/component/index.ts +11 -0
- package/src/{share → content}/content-reference.ts +3 -3
- package/src/{share/content → content}/entity-id.ts +6 -3
- package/src/content/index.ts +3 -0
- package/src/{share/content → content}/merge.ts +6 -1
- package/src/content/system-manifest.test.ts +107 -0
- package/src/content/system-manifest.ts +12 -94
- package/src/{share → content}/tests/resolve-field-path.test.ts +1 -1
- package/src/{share → content}/tests/substitute-deep.test.ts +1 -1
- package/src/content-discipline/index.ts +19 -0
- package/src/{share/content-discipline → content-discipline}/parsers.ts +2 -2
- package/src/{share/env.d.ts → env.d.ts} +6 -3
- package/src/fingerprint/canonical-json.ts +731 -0
- package/src/fingerprint/index.ts +12 -0
- package/src/fingerprint/primitives.ts +72 -0
- package/src/{share/i18n → i18n}/localization.ts +6 -2
- package/src/integration/adapters.ts +10 -71
- package/src/integration/dispatch.ts +1 -1
- package/src/integration/funnel.ts +6 -1
- package/src/integration/index.ts +101 -4
- package/src/integration/lagebild-destination-adapter.ts +108 -0
- package/src/integration/lagebild-ingress.ts +7 -12
- package/src/integration/orchestration.ts +11 -10
- package/src/integration/tests/deliver-event.test.ts +1 -1
- package/src/integration/tests/dispatch.test.ts +4 -4
- package/src/integration/tests/hub-runtime.test.ts +22 -14
- package/src/integration/vitest.config.ts +8 -0
- package/src/kernel/desired-state.ts +227 -0
- package/src/kernel/diagnostic.ts +289 -0
- package/src/kernel/fs-atomic.ts +131 -0
- package/src/kernel/index.ts +15 -0
- package/src/kernel/tests/fs-atomic.test.ts +150 -0
- package/src/kernel/tests/workspace-io.test.ts +187 -0
- package/src/kernel/types.ts +459 -0
- package/src/kernel/workspace-io.ts +248 -0
- package/src/{share → knowledge}/tests/claim.test.ts +1 -1
- package/src/{share → knowledge}/tests/derivation.test.ts +1 -1
- package/src/{share → knowledge}/tests/freshness.test.ts +1 -1
- package/src/{share → knowledge}/tests/ledger.test.ts +1 -1
- package/src/{share → knowledge}/tests/plan.test.ts +1 -1
- package/src/{share → knowledge}/tests/source.test.ts +1 -1
- package/src/legal/index.ts +15 -0
- package/src/{share/middleware → middleware}/access-protection.ts +8 -8
- package/src/{share → node}/dev-props-validator.ts +6 -1
- package/src/{share → node}/import-scan.ts +23 -3
- package/src/{share → node}/semantic/derived-prices-loader.ts +4 -2
- package/src/{share → node}/semantic/markdown-twin-provenance.ts +1 -1
- package/src/node/tests/derived-prices-loader.test.ts +59 -0
- package/src/node/tests/markdown-twin-provenance.test.ts +152 -0
- package/src/observability/env-resolver.ts +6 -1
- package/src/observability/index.ts +6 -1
- package/src/observability/otlp-converter.ts +6 -1
- package/src/observability/otlp-transport.ts +6 -1
- package/src/observability/pusher.ts +6 -1
- package/src/observability/redact.ts +6 -1
- package/src/observability/typed-refs.ts +6 -2
- package/src/observability/vitest.config.ts +1 -0
- package/src/{share → offers}/formula-eval.ts +3 -3
- package/src/{share → offers}/tests/formula-eval.test.ts +2 -2
- package/src/onboarding/index.ts +1 -0
- package/src/{share → onboarding}/tests/onboarding-yaml.test.ts +1 -1
- package/src/ontology/archetype-registry.ts +6 -1
- package/src/ontology/archetypes/index.json +33 -1
- package/src/ontology/archetypes/index.yaml +27 -1
- package/src/ontology/archetypes/sections/entity-grid.yaml +46 -0
- package/src/ontology/archetypes/sections/exit-diagram.yaml +43 -0
- package/src/ontology/biome-token-projection.ts +6 -1
- package/src/ontology/cosmic/index.ts +6 -1
- package/src/ontology/cosmic/moon-catalog.ts +6 -1
- package/src/ontology/cosmic/planet-catalog.ts +6 -1
- package/src/ontology/cosmic/star-catalog.ts +6 -1
- package/src/ontology/enums.ts +6 -1
- package/src/ontology/external-surfaces/index.ts +1 -1
- package/src/ontology/index.ts +6 -2
- package/src/ontology/manifest.ts +26 -4
- package/src/ontology/operations/artifact-store.ts +45 -0
- package/src/ontology/operations/dht.ts +98 -0
- package/src/ontology/operations/handoff.ts +92 -0
- package/src/ontology/operations/index.ts +187 -1
- package/src/ontology/operations/leitstand.ts +99 -0
- package/src/ontology/operations/materialization.ts +90 -0
- package/src/ontology/operations/mission.ts +111 -0
- package/src/ontology/operations/naming-policy.ts +132 -0
- package/src/ontology/operations/notausgang.ts +64 -0
- package/src/ontology/operations/release.ts +121 -0
- package/src/ontology/operations/sternsystem.ts +192 -0
- package/src/ontology/operations/werkstatt.ts +48 -0
- package/src/ontology/schemas/biome.ts +7 -2
- package/src/ontology/schemas/capability.ts +1 -1
- package/src/ontology/schemas/constellation.ts +6 -1
- package/src/ontology/schemas/index.ts +6 -2
- package/src/ontology/schemas/manifest-resolver.ts +6 -1
- package/src/ontology/schemas/page-entry.ts +9 -5
- package/src/ontology/schemas/system/growth.ts +6 -1
- package/src/ontology/schemas/system/manifest.ts +40 -1
- package/src/ontology/schemas/system/page-output.ts +7 -6
- package/src/ontology/schemas/system/tests/growth.test.ts +22 -0
- package/src/ontology/schemas/system/tests/integrations.test.ts +12 -0
- package/src/ontology/schemas/system/tests/manifest.test.ts +22 -0
- package/src/ontology/schemas/system/tests/page-output.test.ts +13 -0
- package/src/ontology/schemas/system/tests/release.test.ts +22 -0
- package/src/ontology/schemas/system/tests/text.test.ts +18 -0
- package/src/ontology/schemas/system/tests/verification.test.ts +12 -0
- package/src/ontology/schemas/system/text.ts +15 -0
- package/src/ontology/schemas/system.ts +6 -2
- package/src/ontology/schemas/tests/biome.test.ts +19 -0
- package/src/ontology/schemas/tests/capability.test.ts +22 -0
- package/src/ontology/schemas/tests/constellation.test.ts +22 -0
- package/src/ontology/schemas/tests/dns-records.test.ts +13 -0
- package/src/ontology/schemas/tests/manifest-resolver.test.ts +13 -0
- package/src/ontology/schemas/tests/page-entry.test.ts +22 -0
- package/src/ontology/schemas/tests/section-archetype.test.ts +12 -0
- package/src/ontology/schemas/tests/site-family.test.ts +18 -0
- package/src/ontology/schemas/tests/system.test.ts +20 -0
- package/src/ontology/shared-section-props/body-fragments.ts +2 -0
- package/src/ontology/tests/sternsystem-owner.test.ts +1 -1
- package/src/ontology/vitest.config.ts +1 -0
- package/src/{share → page}/page.ts +13 -9
- package/src/{share → page}/tests/dev-props-validator.test.ts +1 -1
- package/src/{share → page}/tests/hero-section-numbering-parity.test.ts +1 -1
- package/src/passport/index.ts +6 -1
- package/src/passport/key-rotate.ts +10 -2
- package/src/passport/schema.ts +6 -1
- package/src/passport/sign.ts +8 -3
- package/src/passport/vitest.config.ts +1 -0
- package/src/pbt/index.test.ts +95 -0
- package/src/pbt/index.ts +251 -0
- package/src/plugin/plugin-contract.ts +1 -1
- package/src/{share → policy}/entitlement.ts +24 -4
- package/src/{share → policy}/feature-policy.ts +8 -3
- package/src/{share → policy}/visibility.ts +7 -2
- package/src/redirects/redirects.ts +117 -0
- package/src/{share → redirects/tests}/redirects.test.ts +1 -1
- package/src/remediation/remediation-catalog.ts +316 -0
- package/src/{share/routes → routes}/template-filter.ts +1 -1
- package/src/{share → runtime}/runtime-context.ts +7 -2
- package/src/{share → runtime}/shared-context.ts +1 -1
- package/src/{share/schemas → schemas}/claims.ts +2 -2
- package/src/{share/schemas → schemas}/effects.ts +6 -1
- package/src/{share/schemas → schemas}/features.ts +1 -1
- package/src/{share/schemas → schemas}/index.ts +3 -3
- package/src/{share/schemas → schemas}/navigation.ts +6 -1
- package/src/{share/schemas → schemas}/page-base.ts +6 -2
- package/src/{share/schemas → schemas}/person.ts +1 -1
- package/src/{share/schemas → schemas}/standard-list-item.ts +1 -1
- package/src/schemas/tests/claim-records.test.ts +52 -0
- package/src/schemas/tests/claims.test.ts +23 -0
- package/src/schemas/tests/effects.test.ts +116 -0
- package/src/schemas/tests/features.test.ts +61 -0
- package/src/schemas/tests/horizontal-align.test.ts +16 -0
- package/src/schemas/tests/icon-color.test.ts +16 -0
- package/src/schemas/tests/live-photo.test.ts +40 -0
- package/src/schemas/tests/material-credit.test.ts +51 -0
- package/src/schemas/tests/media.test.ts +26 -0
- package/src/schemas/tests/navigation.test.ts +58 -0
- package/src/schemas/tests/page-base.test.ts +19 -0
- package/src/schemas/tests/participant.test.ts +26 -0
- package/src/schemas/tests/person.test.ts +12 -0
- package/src/schemas/tests/print.test.ts +30 -0
- package/src/schemas/tests/section-background.test.ts +31 -0
- package/src/schemas/tests/section-body.test.ts +16 -0
- package/src/schemas/tests/section-cards.test.ts +17 -0
- package/src/schemas/tests/section-cta.test.ts +41 -0
- package/src/schemas/tests/section-header.test.ts +31 -0
- package/src/schemas/tests/section-image.test.ts +24 -0
- package/src/schemas/tests/section-motion.test.ts +29 -0
- package/src/schemas/tests/section-shell.test.ts +42 -0
- package/src/schemas/tests/section-stats.test.ts +17 -0
- package/src/schemas/tests/site-background.test.ts +33 -0
- package/src/schemas/tests/standard-list-item.test.ts +16 -0
- package/src/{share → sections}/rfc0042-utils.ts +1 -1
- package/src/{share/semantic → semantic}/block-extractors/index.ts +20 -1
- package/src/{share/semantic → semantic}/business-projection.ts +95 -1
- package/src/semantic/canonical-uri.ts +54 -0
- package/src/{share/semantic → semantic}/extract.ts +100 -1
- package/src/semantic/fact-extraction.test.ts +47 -0
- package/src/semantic/fact-extraction.ts +46 -0
- package/src/semantic/freshness.ts +67 -0
- package/src/{share/semantic → semantic}/ids.ts +6 -1
- package/src/{share/semantic → semantic}/index.ts +9 -2
- package/src/{share/semantic → semantic}/jsonld/breadcrumb.ts +6 -2
- package/src/{share/semantic → semantic}/jsonld/context.ts +6 -2
- package/src/{share/semantic → semantic}/jsonld/faq.ts +6 -2
- package/src/{share/semantic → semantic}/jsonld/initiative.ts +6 -1
- package/src/{share/semantic → semantic}/jsonld/organization.ts +6 -1
- package/src/{share/semantic → semantic}/jsonld/person.ts +6 -2
- package/src/{share/semantic → semantic}/jsonld/service.ts +6 -2
- package/src/semantic/jsonld/shared.ts +36 -0
- package/src/semantic/jsonld/tests/article.test.ts +89 -0
- package/src/semantic/jsonld/tests/breadcrumb.test.ts +62 -0
- package/src/semantic/jsonld/tests/collection-list.test.ts +39 -0
- package/src/semantic/jsonld/tests/faq.test.ts +60 -0
- package/src/semantic/jsonld/tests/initiative.test.ts +56 -0
- package/src/semantic/jsonld/tests/organization.test.ts +123 -0
- package/src/semantic/jsonld/tests/person.test.ts +89 -0
- package/src/semantic/jsonld/tests/service.test.ts +65 -0
- package/src/semantic/jsonld/tests/shared.test.ts +41 -0
- package/src/semantic/jsonld/tests/video.test.ts +84 -0
- package/src/semantic/jsonld/tests/webpage.test.ts +93 -0
- package/src/semantic/jsonld/tests/website.test.ts +27 -0
- package/src/semantic/jsonld/types.ts +24 -0
- package/src/{share/semantic → semantic}/jsonld/webpage.ts +6 -1
- package/src/semantic/jsonld/website.ts +32 -0
- package/src/{share/semantic → semantic}/jsonld.ts +6 -1
- package/src/{share/semantic → semantic}/llms.ts +41 -3
- package/src/{share/semantic → semantic}/models.ts +27 -38
- package/src/{share/semantic → semantic}/organization-profile.ts +3 -0
- package/src/{share/semantic → semantic}/page-builders/markdown-page.ts +6 -3
- package/src/{share/semantic → semantic}/page-utils.ts +6 -3
- package/src/semantic/tests/ai.test.ts +55 -0
- package/src/semantic/tests/block-extraction.test.ts +34 -0
- package/src/{share/tests/breadcrumbs.test.ts → semantic/tests/breadcrumbs-0229.test.ts} +1 -1
- package/src/semantic/tests/breadcrumbs.test.ts +127 -0
- package/src/{share → semantic}/tests/build-page-price-markers.test.ts +2 -2
- package/src/semantic/tests/build-page.test.ts +122 -0
- package/src/semantic/tests/business-projection.test.ts +367 -0
- package/src/semantic/tests/canonical-uri.test.ts +56 -0
- package/src/semantic/tests/extract.test.ts +209 -0
- package/src/semantic/tests/feed.test.ts +113 -0
- package/src/semantic/tests/freshness.pbt.test.ts +108 -0
- package/src/semantic/tests/helpers.ts +32 -0
- package/src/semantic/tests/ids.test.ts +118 -0
- package/src/{share/tests/image-sitemap.test.ts → semantic/tests/image-sitemap-0150.test.ts} +1 -1
- package/src/semantic/tests/image-sitemap.test.ts +109 -0
- package/src/{share → semantic}/tests/jsonld-service.test.ts +2 -2
- package/src/{share → semantic}/tests/jsonld-video.test.ts +3 -3
- package/src/{share → semantic}/tests/jsonld-webpage.test.ts +3 -3
- package/src/semantic/tests/jsonld.test.ts +61 -0
- package/src/{share → semantic}/tests/llms-0789.test.ts +2 -2
- package/src/semantic/tests/llms-policy.test.ts +60 -0
- package/src/semantic/tests/llms.test.ts +164 -0
- package/src/semantic/tests/markdown-hygiene.test.ts +72 -0
- package/src/semantic/tests/markdown-page.test.ts +97 -0
- package/src/{share → semantic}/tests/organization-jsonld.test.ts +3 -3
- package/src/semantic/tests/organization-profile.test.ts +107 -0
- package/src/{share/tests/output-projection.test.ts → semantic/tests/output-projection-0143.test.ts} +1 -1
- package/src/semantic/tests/output-projection.test.ts +77 -0
- package/src/semantic/tests/page-markdown.test.ts +98 -0
- package/src/semantic/tests/page-utils.test.ts +88 -0
- package/src/{share/tests/price-marker-resolver.test.ts → semantic/tests/price-marker-resolver-0767.test.ts} +2 -2
- package/src/semantic/tests/price-marker-resolver.test.ts +90 -0
- package/src/semantic/tests/project-claims.pbt.test.ts +60 -0
- package/src/semantic/tests/robots.test.ts +70 -0
- package/src/{share/semantic → semantic}/tests/split-sentences.test.ts +1 -1
- package/src/{share → semantic}/tests/twin-path.test.ts +1 -1
- package/src/semantic/tests/update-stamp.test.ts +102 -0
- package/src/signing/index.ts +13 -0
- package/src/signing/key.ts +139 -0
- package/src/signing/sign.ts +66 -0
- package/src/signing/types.ts +29 -0
- package/src/{share/slug → slug}/slug-url.ts +4 -1
- package/src/stack/run-tool.ts +108 -0
- package/src/stack/stack-checks.ts +124 -0
- package/src/stack/tests/run-tool.test.ts +138 -0
- package/src/stack/tests/stack-checks.test.ts +141 -0
- package/src/stack/tests/walk-files.test.ts +131 -0
- package/src/stack/walk-files.ts +114 -0
- package/src/surface/blueprint.ts +342 -66
- package/src/surface/decision-composer.ts +6 -1
- package/src/surface/geo.ts +6 -1
- package/src/surface/index.ts +11 -7
- package/src/surface/types.ts +2 -2
- package/src/surface/vitest.config.ts +1 -0
- package/src/tests/signing-core.test.ts +129 -0
- package/src/{share → text}/css-value-normalize.ts +6 -1
- package/src/text/string-utils.ts +24 -0
- package/src/{share → text}/tests/text-normalize.test.ts +5 -0
- package/src/{share → text}/text-normalize.ts +4 -3
- package/src/{share → text}/wrap-inline-numbers.ts +1 -1
- package/src/types/axiom-study.d.ts +36 -0
- package/src/types/hls-js-light.d.ts +21 -0
- package/src/types/qrcode-browser.d.ts +23 -0
- package/src/typography/fix.pbt.test.ts +208 -0
- package/src/typography/fix.ts +148 -0
- package/src/typography/index.ts +54 -0
- package/src/typography/locale-defaults.ts +97 -0
- package/src/typography/rules-tier1.test.ts +459 -0
- package/src/typography/rules-tier1.ts +925 -0
- package/src/typography/rules-tier2-locale.pbt.test.ts +190 -0
- package/src/typography/rules-tier2-locale.test.ts +286 -0
- package/src/typography/rules-tier2-locale.ts +399 -0
- package/src/typography/rules-tier2-structure.test.ts +330 -0
- package/src/typography/rules-tier2-structure.ts +378 -0
- package/src/typography/rules-tier3-advisory.test.ts +290 -0
- package/src/typography/rules-tier3-advisory.ts +239 -0
- package/src/typography/text-surface.test.ts +244 -0
- package/src/typography/text-surface.ts +448 -0
- package/src/index.ts +0 -14
- package/src/integration/port-barrel.ts +0 -105
- package/src/share/content/index.ts +0 -16
- package/src/share/content-discipline/index.ts +0 -14
- package/src/share/index.ts +0 -86
- package/src/share/legal/index.ts +0 -1
- package/src/share/redirects.ts +0 -54
- package/src/share/scripts/index.ts +0 -26
- package/src/share/semantic/jsonld/shared.ts +0 -31
- package/src/share/semantic/jsonld/types.ts +0 -18
- package/src/share/semantic/jsonld/website.ts +0 -27
- package/src/share/string-utils.ts +0 -19
- package/src/share/types/axiom-study.d.ts +0 -22
- package/src/share/types/hls-js-light.d.ts +0 -16
- package/src/share/types/qrcode-browser.d.ts +0 -18
- package/src/share/utility-registry.yaml +0 -36
- package/src/share/vitest.config.ts +0 -8
- package/src/surface/blueprint-schema.ts +0 -314
- package/src/surface/blueprint-types.ts +0 -256
- /package/src/{share/agent → agent}/api-catalog.ts +0 -0
- /package/src/{share/agent → agent}/capability.ts +0 -0
- /package/src/{share/agent → agent}/dns-aid.ts +0 -0
- /package/src/{share/agent → agent}/fleet-catalog.ts +0 -0
- /package/src/{share/agent → agent}/index.ts +0 -0
- /package/src/{share/agent → agent}/knowledge.ts +0 -0
- /package/src/{share/agent → agent}/mcp-card.ts +0 -0
- /package/src/{share/agent → agent}/omit-empty.ts +0 -0
- /package/src/{share/agent → agent}/openapi.ts +0 -0
- /package/src/{share/agent → agent}/proof.ts +0 -0
- /package/src/{share/agent → agent}/search.test.ts +0 -0
- /package/src/{share → attribution}/attribution-display.ts +0 -0
- /package/src/{share/scripts → client-scripts}/gsap-mountain-journey.ts +0 -0
- /package/src/{share/scripts → client-scripts}/gsap-parallax.ts +0 -0
- /package/src/{share/scripts → client-scripts}/gsap-reveal.ts +0 -0
- /package/src/{share/scripts → client-scripts}/gsap-stagger.ts +0 -0
- /package/src/{share/scripts → client-scripts}/live-photos.ts +0 -0
- /package/src/{share/scripts → client-scripts}/video-player.ts +0 -0
- /package/src/{share/content → content}/resolve-field-path.ts +0 -0
- /package/src/{share/content → content}/substitute-deep.ts +0 -0
- /package/src/{share → content}/tests/content-ref-index.test.ts +0 -0
- /package/src/{share/content-discipline → content-discipline}/types.ts +0 -0
- /package/src/{share → image-provider}/image-provider.ts +0 -0
- /package/src/{share/knowledge → knowledge}/claim.ts +0 -0
- /package/src/{share/knowledge → knowledge}/derivation.ts +0 -0
- /package/src/{share/knowledge → knowledge}/freshness.ts +0 -0
- /package/src/{share/knowledge → knowledge}/index.ts +0 -0
- /package/src/{share/knowledge → knowledge}/ledger.ts +0 -0
- /package/src/{share/knowledge → knowledge}/plan.ts +0 -0
- /package/src/{share/knowledge → knowledge}/source.ts +0 -0
- /package/src/{share/legal → legal}/translation-policy.ts +0 -0
- /package/src/{share/middleware → middleware}/language-redirect.ts +0 -0
- /package/src/{share/middleware → middleware}/tests/access-protection.test.ts +0 -0
- /package/src/{share → node}/fs/index.ts +0 -0
- /package/src/{share/tests/markdown-twin-provenance.test.ts → node/tests/markdown-twin-provenance-0613.test.ts} +0 -0
- /package/src/{share → offers}/offer-capacity.ts +0 -0
- /package/src/{share/onboarding-yaml/index.ts → onboarding/yaml.ts} +0 -0
- /package/src/{share → ontology}/tests/ontology-role-by-cosmic-name.test.ts +0 -0
- /package/src/{share/routes → routes}/tests/template-filter.test.ts +0 -0
- /package/src/{share/schemas → schemas}/claim-records.ts +0 -0
- /package/src/{share/schemas → schemas}/horizontal-align.ts +0 -0
- /package/src/{share/schemas → schemas}/icon-color.ts +0 -0
- /package/src/{share/schemas → schemas}/live-photo.ts +0 -0
- /package/src/{share/schemas → schemas}/material-credit.ts +0 -0
- /package/src/{share/schemas → schemas}/media.ts +0 -0
- /package/src/{share/schemas → schemas}/participant.ts +0 -0
- /package/src/{share/schemas → schemas}/print.ts +0 -0
- /package/src/{share/schemas → schemas}/section-background.ts +0 -0
- /package/src/{share/schemas → schemas}/section-body.ts +0 -0
- /package/src/{share/schemas → schemas}/section-cards.ts +0 -0
- /package/src/{share/schemas → schemas}/section-cta.ts +0 -0
- /package/src/{share/schemas → schemas}/section-header.ts +0 -0
- /package/src/{share/schemas → schemas}/section-image.ts +0 -0
- /package/src/{share/schemas → schemas}/section-motion.ts +0 -0
- /package/src/{share/schemas → schemas}/section-shell.ts +0 -0
- /package/src/{share/schemas → schemas}/section-stats.ts +0 -0
- /package/src/{share/schemas → schemas}/site-background.ts +0 -0
- /package/src/{share/semantic → semantic}/ai.ts +0 -0
- /package/src/{share/semantic → semantic}/block-extraction.ts +0 -0
- /package/src/{share/semantic → semantic}/breadcrumbs.ts +0 -0
- /package/src/{share/semantic → semantic}/build-page.ts +0 -0
- /package/src/{share/semantic → semantic}/feed.ts +0 -0
- /package/src/{share/semantic → semantic}/image-sitemap.ts +0 -0
- /package/src/{share/semantic → semantic}/jsonld/article.ts +0 -0
- /package/src/{share/semantic → semantic}/jsonld/collection-list.ts +0 -0
- /package/src/{share/semantic → semantic}/jsonld/video.ts +0 -0
- /package/src/{share/semantic → semantic}/llms-policy.ts +0 -0
- /package/src/{share/semantic → semantic}/markdown-hygiene.ts +0 -0
- /package/src/{share/semantic → semantic}/output-projection.ts +0 -0
- /package/src/{share/semantic → semantic}/page-markdown.ts +0 -0
- /package/src/{share/semantic → semantic}/price-marker-resolver.ts +0 -0
- /package/src/{share/semantic → semantic}/robots.ts +0 -0
- /package/src/{share/semantic → semantic}/update-stamp.ts +0 -0
- /package/src/{share/slug → slug}/heading-slugger.ts +0 -0
- /package/src/{share/slug → slug}/index.ts +0 -0
- /package/src/{share/slug → slug}/slug-id.ts +0 -0
- /package/src/{share/slug → slug}/strategies.ts +0 -0
- /package/src/{share/slug → slug}/tests/slug.test.ts +0 -0
- /package/src/{share → text}/tests/text-normalize.pbt.test.ts +0 -0
- /package/src/{share → text}/text-position.ts +0 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<MODULE_CONTRACT>
|
|
3
|
+
<purpose>
|
|
4
|
+
RFC-0565: Zod schemas for the S/Kademlia-hardened DHT site registry and content
|
|
5
|
+
placement subsystem. Defines machine-checkable contracts for DHT site entries,
|
|
6
|
+
config, lookup results, placement results, and workshop capacity. These schemas
|
|
7
|
+
are the operations-layer contract consumed by @warpgogol/site-kernel DHT commands.
|
|
8
|
+
</purpose>
|
|
9
|
+
<non-goals>
|
|
10
|
+
<item>Do not perform file IO or network operations — pure shape only.</item>
|
|
11
|
+
<item>Do not define DHT routing protocol logic — that lives in site-kernel.</item>
|
|
12
|
+
<item>Do not define Ed25519 signing logic — that lives in @warpgogol/werkstatt-shared/passport/dht-sign.</item>
|
|
13
|
+
</non-goals>
|
|
14
|
+
</MODULE_CONTRACT>
|
|
15
|
+
<CHANGE_SUMMARY>
|
|
16
|
+
<item>RFC-0565: initial DHT schemas (DHTSiteEntry, DHTConfig, DHTLookupResult, DHTPlacementResult, WorkshopCapacity).</item>
|
|
17
|
+
</CHANGE_SUMMARY>
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import { z } from "zod";
|
|
21
|
+
|
|
22
|
+
const kebabRe = /^[a-z0-9]+(-[a-z0-9]+)*$/;
|
|
23
|
+
const didWebRe = /^did:web:[a-z0-9.-]+#.+$/;
|
|
24
|
+
const endpointRe = /^.+:\d+$/;
|
|
25
|
+
|
|
26
|
+
export const dhtSiteEntrySchema = z.object({
|
|
27
|
+
siteId: z.string().regex(kebabRe, "siteId must be kebab-case, lowercase, latin-only"),
|
|
28
|
+
owner: z
|
|
29
|
+
.string()
|
|
30
|
+
.regex(didWebRe, "owner must be a did:web identifier (did:web:<domain>#<key-version>)")
|
|
31
|
+
.describe("VC subject id of the site owner (RFC-0558, RFC-0561)"),
|
|
32
|
+
workshopEndpoint: z.string().regex(endpointRe, "workshopEndpoint must be host:port format"),
|
|
33
|
+
mirrors: z.array(z.string().url()).default([]),
|
|
34
|
+
registeredAt: z.string().datetime(),
|
|
35
|
+
lastUpdated: z.string().datetime(),
|
|
36
|
+
signature: z.string().min(1, "signature must be a non-empty Ed25519 multibase signature"),
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export const dhtConfigSchema = z.object({
|
|
40
|
+
bindAddr: z.string().regex(endpointRe, "bindAddr must be host:port format"),
|
|
41
|
+
bootstrapNodes: z
|
|
42
|
+
.array(z.string().regex(endpointRe, "each bootstrapNode must be host:port format"))
|
|
43
|
+
.default([]),
|
|
44
|
+
replicationFactor: z.number().int().min(1).max(20).default(5),
|
|
45
|
+
lookupTimeoutMs: z.number().int().min(100).default(5000),
|
|
46
|
+
cacheTtlMs: z.number().int().min(1000).default(300000),
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
export const dhtLookupResultSchema = z.object({
|
|
50
|
+
found: z.boolean(),
|
|
51
|
+
entry: dhtSiteEntrySchema.nullable(),
|
|
52
|
+
hops: z.number().int().min(0),
|
|
53
|
+
latencyMs: z.number().int().min(0),
|
|
54
|
+
cached: z.boolean().default(false),
|
|
55
|
+
signatureValid: z.boolean().default(true),
|
|
56
|
+
diagnostics: z.array(z.string()).optional(),
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
export const dhtPlacementReasonSchema = z.enum([
|
|
60
|
+
"least-loaded",
|
|
61
|
+
"nearest",
|
|
62
|
+
"owner-preference",
|
|
63
|
+
"local-fallback",
|
|
64
|
+
]);
|
|
65
|
+
|
|
66
|
+
export const workshopCapacitySchema = z.object({
|
|
67
|
+
workshopId: z.string().min(1),
|
|
68
|
+
endpoint: z.string().regex(endpointRe, "endpoint must be host:port format"),
|
|
69
|
+
availableSlots: z.number().int().min(0),
|
|
70
|
+
storageLimitMb: z.number().int().min(0).default(0),
|
|
71
|
+
bandwidthLimitMbps: z.number().int().min(0).default(0),
|
|
72
|
+
activeMissions: z.number().int().min(0).default(0),
|
|
73
|
+
maxMissions: z.number().int().min(1).default(1),
|
|
74
|
+
cpuLoad: z.number().min(0).max(1).default(0),
|
|
75
|
+
diskFree: z.number().int().min(0).default(0),
|
|
76
|
+
updatedAt: z.string().datetime(),
|
|
77
|
+
signature: z.string().min(1),
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
export const dhtPlacementResultSchema = z.object({
|
|
81
|
+
siteId: z.string().regex(kebabRe, "siteId must be kebab-case"),
|
|
82
|
+
assignedWorkshop: z.string().min(1),
|
|
83
|
+
reason: dhtPlacementReasonSchema,
|
|
84
|
+
capacity: workshopCapacitySchema.nullable(),
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
export const dhtCacheEntrySchema = dhtSiteEntrySchema.extend({
|
|
88
|
+
cachedAt: z.string().datetime(),
|
|
89
|
+
expiresAt: z.string().datetime(),
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
export type DHTSiteEntry = z.infer<typeof dhtSiteEntrySchema>;
|
|
93
|
+
export type DHTConfig = z.infer<typeof dhtConfigSchema>;
|
|
94
|
+
export type DHTLookupResult = z.infer<typeof dhtLookupResultSchema>;
|
|
95
|
+
export type DHTPlacementReason = z.infer<typeof dhtPlacementReasonSchema>;
|
|
96
|
+
export type WorkshopCapacity = z.infer<typeof workshopCapacitySchema>;
|
|
97
|
+
export type DHTPlacementResult = z.infer<typeof dhtPlacementResultSchema>;
|
|
98
|
+
export type DHTCacheEntry = z.infer<typeof dhtCacheEntrySchema>;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<MODULE_CONTRACT>
|
|
3
|
+
<purpose>
|
|
4
|
+
RFC-0221: Zod schemas for the internal site handoff bundle — the version-stamped
|
|
5
|
+
lock that makes ingest version-aware, and the authored/derived manifest partition.
|
|
6
|
+
</purpose>
|
|
7
|
+
<non-goals>
|
|
8
|
+
<item>Do not perform file IO, hashing, or version comparison — pure shape only.</item>
|
|
9
|
+
<item>Do not define migrator logic — that lives in @warpgogol/site-kernel-handoff.</item>
|
|
10
|
+
</non-goals>
|
|
11
|
+
</MODULE_CONTRACT>
|
|
12
|
+
<CHANGE_SUMMARY>
|
|
13
|
+
<item>RFC-0221: initial schemas for the site handoff bundle.</item>
|
|
14
|
+
<item>RFC-0479: migratorCursor changed from SemVer string to string[] (migrator-id list).</item>
|
|
15
|
+
</CHANGE_SUMMARY>
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { z } from "zod";
|
|
19
|
+
|
|
20
|
+
const semverRe = /^\d+\.\d+\.\d+$/;
|
|
21
|
+
const sha256Re = /^sha256:[0-9a-f]{64}$/;
|
|
22
|
+
|
|
23
|
+
/** A single consumed capability, snapshotted from uni.registry.yaml at pack time. */
|
|
24
|
+
export const handoffCapabilitySchema = z.object({
|
|
25
|
+
/** Unique uni.registry entry id (e.g. "breadcrumbs-component") — the diff key. */
|
|
26
|
+
id: z.string().min(1),
|
|
27
|
+
/** Role/semanticId — NOT unique across layers; used for intent grouping and display. */
|
|
28
|
+
semanticId: z.string().min(1),
|
|
29
|
+
/** Capability version consumed (uni.registry entry version). */
|
|
30
|
+
version: z.string().min(1),
|
|
31
|
+
/** Carried so red-tier removals can be remapped by intent rather than by name. */
|
|
32
|
+
intent: z.array(z.string()).default([]),
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
/** Ecosystem stamp: which studio monorepo state the bundle was packed against. */
|
|
36
|
+
export const handoffEcosystemSchema = z.object({
|
|
37
|
+
/** Root package.json version at pack time, e.g. "4.5.0". */
|
|
38
|
+
version: z.string().regex(semverRe, "ecosystem.version must be x.y.z"),
|
|
39
|
+
/** git SHA of the studio monorepo at pack time. */
|
|
40
|
+
commit: z.string().min(7),
|
|
41
|
+
/** Highest `implemented` RFC id at pack time, e.g. "RFC-0220". */
|
|
42
|
+
rfcHead: z.string().regex(/^RFC-\d{4}$/),
|
|
43
|
+
/** Semantic fingerprint of the packages/ tree at pack time (RFC-0364). */
|
|
44
|
+
platformSemanticHash: z.string().regex(sha256Re),
|
|
45
|
+
/** Legacy byte hash of packages/ — read-only during migration, removed in RFC-0364 step 7. */
|
|
46
|
+
packagesHash: z.string().regex(sha256Re).optional(),
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
/** Passport-derived build provenance carried with the bundle. */
|
|
50
|
+
export const handoffBuildSchema = z.object({
|
|
51
|
+
/** sha256 of system.yaml at last build. */
|
|
52
|
+
systemHash: z.string().regex(sha256Re),
|
|
53
|
+
commitSha: z.string().min(7),
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
/** handoff-lock.json — the artifact that makes ingest version-aware (RFC-0221 §2). */
|
|
57
|
+
export const handoffLockSchema = z.object({
|
|
58
|
+
/** Lock format version, independent of the ecosystem version. */
|
|
59
|
+
schemaVersion: z.string().regex(semverRe),
|
|
60
|
+
app: z.string().min(1),
|
|
61
|
+
packedAt: z.string().datetime(),
|
|
62
|
+
ecosystem: handoffEcosystemSchema,
|
|
63
|
+
/** Ecosystem version this site is "synced to" — equals ecosystem.version at pack. */
|
|
64
|
+
migratorCursor: z.array(z.string()),
|
|
65
|
+
/** The CONSUMED subset of uni.registry.yaml (not the whole registry). */
|
|
66
|
+
capabilities: z.array(handoffCapabilitySchema).default([]),
|
|
67
|
+
build: handoffBuildSchema,
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
/** One path entry in the bundle manifest: is it source of truth, or regenerated? */
|
|
71
|
+
export const handoffManifestEntrySchema = z.object({
|
|
72
|
+
/** Bundle-relative POSIX path. */
|
|
73
|
+
path: z.string().min(1),
|
|
74
|
+
/** authored = round-trips, source of truth. derived = disposable, regenerated. */
|
|
75
|
+
kind: z.enum(["authored", "derived"]),
|
|
76
|
+
/** sha256 of the file contents at pack time (integrity + derived-edit detection). */
|
|
77
|
+
hash: z.string().regex(sha256Re),
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
/** handoff-manifest.json — authored/derived partition + integrity (RFC-0221 §5). */
|
|
81
|
+
export const handoffManifestSchema = z.object({
|
|
82
|
+
schemaVersion: z.string().regex(semverRe),
|
|
83
|
+
app: z.string().min(1),
|
|
84
|
+
entries: z.array(handoffManifestEntrySchema).default([]),
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
export type HandoffCapability = z.infer<typeof handoffCapabilitySchema>;
|
|
88
|
+
export type HandoffEcosystem = z.infer<typeof handoffEcosystemSchema>;
|
|
89
|
+
export type HandoffBuild = z.infer<typeof handoffBuildSchema>;
|
|
90
|
+
export type HandoffLock = z.infer<typeof handoffLockSchema>;
|
|
91
|
+
export type HandoffManifestEntry = z.infer<typeof handoffManifestEntrySchema>;
|
|
92
|
+
export type HandoffManifest = z.infer<typeof handoffManifestSchema>;
|
|
@@ -1 +1,187 @@
|
|
|
1
|
-
|
|
1
|
+
/*
|
|
2
|
+
<MODULE_CONTRACT>
|
|
3
|
+
<purpose>
|
|
4
|
+
Barrel export for @warpgogol/werkstatt-shared/ontology/operations sub-path.
|
|
5
|
+
Re-exports platform operations schemas: handoff, sternsystem, werkstatt,
|
|
6
|
+
mission, release, leitstand, notausgang, materialization, artifact-store,
|
|
7
|
+
naming-policy, dht. These schemas have no relationship to UI structural
|
|
8
|
+
vocabulary and are consumed primarily by @warpgogol/werkstatt-engine and
|
|
9
|
+
site handoff tooling. Sunk from @warpgogol/werkstatt-engine/schemas per
|
|
10
|
+
RFC-1104.
|
|
11
|
+
</purpose>
|
|
12
|
+
<non-goals>
|
|
13
|
+
<item>Do not re-export UI ontology schemas (constellation, biome, page-entry, etc.) — those live in @warpgogol/werkstatt-shared/ontology/schemas.</item>
|
|
14
|
+
<item>Do not re-export diagnostic schemas — those live in @warpgogol/werkstatt-shared/kernel (RFC-1104).</item>
|
|
15
|
+
</non-goals>
|
|
16
|
+
</MODULE_CONTRACT>
|
|
17
|
+
<CHANGE_SUMMARY>
|
|
18
|
+
<item>RFC-1104: retargeted barrel — platform operations schemas sunk from werkstatt-engine/schemas; diagnostic schemas moved to werkstatt-shared/kernel.</item>
|
|
19
|
+
</CHANGE_SUMMARY>
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
// RFC-0221: site handoff bundle (lock + authored/derived manifest).
|
|
23
|
+
export {
|
|
24
|
+
handoffCapabilitySchema,
|
|
25
|
+
handoffEcosystemSchema,
|
|
26
|
+
handoffBuildSchema,
|
|
27
|
+
handoffLockSchema,
|
|
28
|
+
handoffManifestEntrySchema,
|
|
29
|
+
handoffManifestSchema,
|
|
30
|
+
} from "./handoff.ts";
|
|
31
|
+
export type {
|
|
32
|
+
HandoffCapability,
|
|
33
|
+
HandoffEcosystem,
|
|
34
|
+
HandoffBuild,
|
|
35
|
+
HandoffLock,
|
|
36
|
+
HandoffManifestEntry,
|
|
37
|
+
HandoffManifest,
|
|
38
|
+
} from "./handoff.ts";
|
|
39
|
+
|
|
40
|
+
// RFC-0354: Sternsystem bundle contract schemas.
|
|
41
|
+
export {
|
|
42
|
+
systemPinSchema,
|
|
43
|
+
mirrorStorageTypeSchema,
|
|
44
|
+
mirrorEntrySchema,
|
|
45
|
+
serviceSubdomainSchema,
|
|
46
|
+
serviceEntrySchema,
|
|
47
|
+
systemConfigSchema,
|
|
48
|
+
systemStateSchema,
|
|
49
|
+
servicesRegistrySchema,
|
|
50
|
+
} from "./sternsystem.ts";
|
|
51
|
+
export type {
|
|
52
|
+
SystemPin,
|
|
53
|
+
MirrorStorageType,
|
|
54
|
+
MirrorEntry,
|
|
55
|
+
ServiceSubdomain,
|
|
56
|
+
ServiceEntry,
|
|
57
|
+
SystemConfig,
|
|
58
|
+
SystemState,
|
|
59
|
+
ServicesRegistry,
|
|
60
|
+
} from "./sternsystem.ts";
|
|
61
|
+
|
|
62
|
+
// RFC-0362: Werkstatt consistency primitive schemas.
|
|
63
|
+
export { werkstattLockSchema, werkstattOperationRecordSchema } from "./werkstatt.ts";
|
|
64
|
+
export type { WerkstattLock, WerkstattOperationRecord } from "./werkstatt.ts";
|
|
65
|
+
|
|
66
|
+
// RFC-0355: Mission lifecycle and Bordbuch schemas.
|
|
67
|
+
export {
|
|
68
|
+
missionStateSchema,
|
|
69
|
+
missionManifestSchema,
|
|
70
|
+
bordbuchEntryKindSchema,
|
|
71
|
+
bordbuchEntryStatusSchema,
|
|
72
|
+
bordbuchEntrySchema,
|
|
73
|
+
} from "./mission.ts";
|
|
74
|
+
export type {
|
|
75
|
+
MissionState,
|
|
76
|
+
MissionManifest,
|
|
77
|
+
BordbuchEntryKind,
|
|
78
|
+
BordbuchEntryStatus,
|
|
79
|
+
BordbuchEntry,
|
|
80
|
+
} from "./mission.ts";
|
|
81
|
+
|
|
82
|
+
// RFC-0361: Centralized naming policy regexes and descriptors.
|
|
83
|
+
export {
|
|
84
|
+
STERNSYSTEM_ID_REGEX,
|
|
85
|
+
MISSION_ID_REGEX,
|
|
86
|
+
RELEASE_ID_REGEX,
|
|
87
|
+
BORDBUCH_EVENT_ID_REGEX,
|
|
88
|
+
NON_ASCII_REGEX,
|
|
89
|
+
KNOWN_TLDS,
|
|
90
|
+
STERNSYSTEM_ID_POLICY,
|
|
91
|
+
MISSION_ID_POLICY,
|
|
92
|
+
RELEASE_ID_POLICY,
|
|
93
|
+
BORDBUCH_EVENT_ID_POLICY,
|
|
94
|
+
isLatinOnly,
|
|
95
|
+
hasTldSuffix,
|
|
96
|
+
} from "./naming-policy.ts";
|
|
97
|
+
|
|
98
|
+
// RFC-0356: Materialization report schemas.
|
|
99
|
+
export {
|
|
100
|
+
materializationReportSchema,
|
|
101
|
+
validationReportSchema,
|
|
102
|
+
authoredDiffSchema,
|
|
103
|
+
} from "./materialization.ts";
|
|
104
|
+
export type { MaterializationReport, ValidationReport, AuthoredDiff } from "./materialization.ts";
|
|
105
|
+
|
|
106
|
+
// RFC-0363: Release artifact store schemas.
|
|
107
|
+
export { releaseArtifactManifestSchema, releaseArtifactRefSchema } from "./artifact-store.ts";
|
|
108
|
+
export type { ReleaseArtifactManifest, ReleaseArtifactRef } from "./artifact-store.ts";
|
|
109
|
+
|
|
110
|
+
// RFC-0357/RFC-0851: Release discipline and behavior snapshot schemas.
|
|
111
|
+
export {
|
|
112
|
+
releaseArtifactStateSchema,
|
|
113
|
+
releaseStateSchema,
|
|
114
|
+
legacyReleaseStateSchema,
|
|
115
|
+
legacyReleaseDiagnosticSchema,
|
|
116
|
+
releaseManifestSchema,
|
|
117
|
+
releaseArtifactRefSchema as releaseArtifactRefSchemaV2,
|
|
118
|
+
behaviorSnapshotDifferenceSchema,
|
|
119
|
+
behaviorSnapshotDiffSchema,
|
|
120
|
+
buildIdentitySchema,
|
|
121
|
+
} from "./release.ts";
|
|
122
|
+
export type {
|
|
123
|
+
ReleaseArtifactState,
|
|
124
|
+
ReleaseState,
|
|
125
|
+
LegacyReleaseState,
|
|
126
|
+
LegacyReleaseDiagnostic,
|
|
127
|
+
ReleaseManifest,
|
|
128
|
+
BuildIdentity,
|
|
129
|
+
BehaviorSnapshotDifference,
|
|
130
|
+
BehaviorSnapshotDiff,
|
|
131
|
+
} from "./release.ts";
|
|
132
|
+
|
|
133
|
+
// RFC-0358/RFC-0379: Leitstand fleet propagation schemas.
|
|
134
|
+
export {
|
|
135
|
+
deploymentAdapterNameSchema,
|
|
136
|
+
deploymentChannelSchema,
|
|
137
|
+
lastPropagatedChannelSchema,
|
|
138
|
+
purgeResultSchema,
|
|
139
|
+
deploymentStaticConfigSchema,
|
|
140
|
+
healthCheckSchema,
|
|
141
|
+
propagationResultSchema,
|
|
142
|
+
routeFactSchema,
|
|
143
|
+
} from "./leitstand.ts";
|
|
144
|
+
export type {
|
|
145
|
+
DeploymentAdapterName,
|
|
146
|
+
DeploymentChannel,
|
|
147
|
+
LastPropagatedChannel,
|
|
148
|
+
PurgeResult,
|
|
149
|
+
DeploymentStaticConfig,
|
|
150
|
+
HealthCheck,
|
|
151
|
+
PropagationResult,
|
|
152
|
+
RouteFact,
|
|
153
|
+
} from "./leitstand.ts";
|
|
154
|
+
|
|
155
|
+
// RFC-0359: Notausgang export schemas.
|
|
156
|
+
export {
|
|
157
|
+
integrationSecretLocationSchema,
|
|
158
|
+
integrationManifestSchema,
|
|
159
|
+
integrationNullingSchema,
|
|
160
|
+
notausgangManifestSchema,
|
|
161
|
+
} from "./notausgang.ts";
|
|
162
|
+
export type {
|
|
163
|
+
IntegrationSecretLocation,
|
|
164
|
+
IntegrationManifest,
|
|
165
|
+
IntegrationNulling,
|
|
166
|
+
NotausgangManifest,
|
|
167
|
+
} from "./notausgang.ts";
|
|
168
|
+
|
|
169
|
+
// RFC-0565: DHT site registry and content placement schemas.
|
|
170
|
+
export {
|
|
171
|
+
dhtSiteEntrySchema,
|
|
172
|
+
dhtConfigSchema,
|
|
173
|
+
dhtLookupResultSchema,
|
|
174
|
+
dhtPlacementReasonSchema,
|
|
175
|
+
workshopCapacitySchema,
|
|
176
|
+
dhtPlacementResultSchema,
|
|
177
|
+
dhtCacheEntrySchema,
|
|
178
|
+
} from "./dht.ts";
|
|
179
|
+
export type {
|
|
180
|
+
DHTSiteEntry,
|
|
181
|
+
DHTConfig,
|
|
182
|
+
DHTLookupResult,
|
|
183
|
+
DHTPlacementReason,
|
|
184
|
+
WorkshopCapacity,
|
|
185
|
+
DHTPlacementResult,
|
|
186
|
+
DHTCacheEntry,
|
|
187
|
+
} from "./dht.ts";
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<MODULE_CONTRACT>
|
|
3
|
+
<purpose>RFC-0358/RFC-0379/RFC-0666: Zod schemas for deployment config, channel model, and propagation results. secretsFile field kept as z.string().optional() for detection (sternsystem.validate rejects any value); secretRefSchema removed as dead code.</purpose>
|
|
4
|
+
<non-goals>
|
|
5
|
+
<item>Do not introduce app-specific runtime composition or deployment behavior into this reusable package source file.</item>
|
|
6
|
+
</non-goals>
|
|
7
|
+
</MODULE_CONTRACT>
|
|
8
|
+
<CHANGE_SUMMARY>
|
|
9
|
+
<item>RFC-0790: add deploymentStaticConfigSchema (adapter + channels only, no lastPropagated) for system-config.yaml.</item>
|
|
10
|
+
<item>RFC-0926: add optional workerVersionId to propagationResultSchema and lastPropagatedChannelSchema for release-aware rollback.</item>
|
|
11
|
+
<item>RFC-1091: add github-pages to deploymentAdapterNameSchema enum.</item>
|
|
12
|
+
<item>RFC-1097: step 6 — compass.migrate codemod run
|
|
13
|
+
|
|
14
|
+
Mechanical v1 to v2 header migration across the workspace: 942 files rewritten — CHANGE_SUMMARY windows collapsed into history, forbidden v1 blocks stripped, KEY_DECISIONS seeded from @ai-invariant comments (5 files) or TODO placeholders (103 files), blocks reordered to canonical order.</item>
|
|
15
|
+
<item>RFC-1097: sweep — werkstatt-engine clean
|
|
16
|
+
|
|
17
|
+
Sweep batch 4: 73 Compass headers on headerless engine files (certification, component-runtime, isolation, evolution, testing), real KEY_DECISIONS on 75 files (kernel, cache, dht, swim, gitmesh, runtime), ~80 purpose expansions (CONTRACT-02/PURPOSE-02), non-goals on 13 CONTRACT-03 files, CS-07 history literal fix repo-wide (253 files). Policy: .template.ts/.template.astro excludedPaths. werkstatt-engine now 0 diagnostics.</item>
|
|
18
|
+
<history>RFC-0358, RFC-0379, RFC-0595, RFC-0624, RFC-0627, RFC-0666</history>
|
|
19
|
+
</CHANGE_SUMMARY>
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
import { z } from "zod";
|
|
23
|
+
|
|
24
|
+
export const deploymentAdapterNameSchema = z.enum([
|
|
25
|
+
"cloudflare-workers",
|
|
26
|
+
"github-pages",
|
|
27
|
+
"netlify",
|
|
28
|
+
"null",
|
|
29
|
+
]);
|
|
30
|
+
|
|
31
|
+
export const deploymentChannelSchema = z.object({
|
|
32
|
+
workerName: z.string(),
|
|
33
|
+
url: z.string().url(),
|
|
34
|
+
// RFC-0666: secretsFile kept as z.string().optional() for detection — sternsystem.validate rejects any value.
|
|
35
|
+
// secretRefSchema removed (dead code — env vars were never set).
|
|
36
|
+
secretsFile: z.string().optional(),
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export const purgeResultSchema = z.object({
|
|
40
|
+
success: z.boolean(),
|
|
41
|
+
purgedUrls: z.number(),
|
|
42
|
+
error: z.string().optional(),
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
export const lastPropagatedChannelSchema = z.object({
|
|
46
|
+
releaseId: z.string(),
|
|
47
|
+
at: z.string().datetime(),
|
|
48
|
+
healthy: z.boolean(),
|
|
49
|
+
state: z.enum(["succeeded", "failed", "failed-stale", "in-progress"]),
|
|
50
|
+
operationId: z.string(),
|
|
51
|
+
leaseExpiresAt: z.string().datetime().nullable(),
|
|
52
|
+
purgeResult: purgeResultSchema.optional(),
|
|
53
|
+
workerVersionId: z.string().optional(),
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
export const healthCheckSchema = z.object({
|
|
57
|
+
name: z.string(),
|
|
58
|
+
url: z.string(),
|
|
59
|
+
status: z.number().int(),
|
|
60
|
+
passed: z.boolean(),
|
|
61
|
+
detail: z.string(),
|
|
62
|
+
expectedHash: z.string().optional(),
|
|
63
|
+
actualHash: z.string().optional(),
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
export const propagationResultSchema = z.object({
|
|
67
|
+
systemId: z.string(),
|
|
68
|
+
releaseId: z.string(),
|
|
69
|
+
state: z.enum(["succeeded", "failed", "failed-stale", "in-progress"]),
|
|
70
|
+
deploymentUrl: z.string(),
|
|
71
|
+
workerVersionId: z.string().optional(),
|
|
72
|
+
startedAt: z.string().datetime(),
|
|
73
|
+
completedAt: z.string().datetime().nullable(),
|
|
74
|
+
healthChecks: z.array(healthCheckSchema),
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
export const routeFactSchema = z.object({
|
|
78
|
+
path: z.string(),
|
|
79
|
+
contentHash: z.string().nullable(),
|
|
80
|
+
redirectTarget: z.string().optional(),
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
export type DeploymentAdapterName = z.infer<typeof deploymentAdapterNameSchema>;
|
|
84
|
+
export type DeploymentChannel = z.infer<typeof deploymentChannelSchema>;
|
|
85
|
+
export type LastPropagatedChannel = z.infer<typeof lastPropagatedChannelSchema>;
|
|
86
|
+
export type PurgeResult = z.infer<typeof purgeResultSchema>;
|
|
87
|
+
export const deploymentStaticConfigSchema = z.object({
|
|
88
|
+
adapter: deploymentAdapterNameSchema,
|
|
89
|
+
channels: z.object({
|
|
90
|
+
dev: deploymentChannelSchema,
|
|
91
|
+
alt: deploymentChannelSchema,
|
|
92
|
+
main: deploymentChannelSchema,
|
|
93
|
+
}),
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
export type DeploymentStaticConfig = z.infer<typeof deploymentStaticConfigSchema>;
|
|
97
|
+
export type HealthCheck = z.infer<typeof healthCheckSchema>;
|
|
98
|
+
export type PropagationResult = z.infer<typeof propagationResultSchema>;
|
|
99
|
+
export type RouteFact = z.infer<typeof routeFactSchema>;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<MODULE_CONTRACT>
|
|
3
|
+
<purpose>Maintains packages/ontology/src/operations/materialization.ts as an authored ontology authored module so agents can evolve it without rediscovering local boundaries.</purpose>
|
|
4
|
+
<non-goals>
|
|
5
|
+
<item>Does not define mission lifecycle — that is RFC-0355.</item>
|
|
6
|
+
<item>Does not define release discipline — that is RFC-0357.</item>
|
|
7
|
+
</non-goals>
|
|
8
|
+
</MODULE_CONTRACT>
|
|
9
|
+
<CHANGE_SUMMARY>
|
|
10
|
+
<item>RFC-0356: initial materialization report schemas.</item>
|
|
11
|
+
</CHANGE_SUMMARY>
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { z } from "zod";
|
|
15
|
+
|
|
16
|
+
export const materializationReportSchema = z.object({
|
|
17
|
+
schemaVersion: z.string().min(1),
|
|
18
|
+
missionId: z.string().min(1),
|
|
19
|
+
systemId: z.string().min(1),
|
|
20
|
+
versionComparison: z.object({
|
|
21
|
+
verdict: z.enum(["in-sync", "catch-up", "refuse-downgrade"]),
|
|
22
|
+
pinVersion: z.string(),
|
|
23
|
+
platformVersion: z.string(),
|
|
24
|
+
packagesDrift: z.boolean(),
|
|
25
|
+
message: z.string(),
|
|
26
|
+
}),
|
|
27
|
+
migratorChain: z.array(
|
|
28
|
+
z.object({
|
|
29
|
+
fromVersion: z.string(),
|
|
30
|
+
toVersion: z.string(),
|
|
31
|
+
rfc: z.string(),
|
|
32
|
+
applied: z.boolean(),
|
|
33
|
+
}),
|
|
34
|
+
),
|
|
35
|
+
capabilityDiff: z.object({
|
|
36
|
+
tier: z.enum(["green", "yellow", "red"]),
|
|
37
|
+
items: z.array(
|
|
38
|
+
z.object({
|
|
39
|
+
semanticId: z.string(),
|
|
40
|
+
status: z.enum(["unchanged", "additive", "renamed-or-bumped", "removed"]),
|
|
41
|
+
tier: z.enum(["green", "yellow", "red"]),
|
|
42
|
+
resolution: z.string().nullable(),
|
|
43
|
+
}),
|
|
44
|
+
),
|
|
45
|
+
}),
|
|
46
|
+
regeneration: z.object({
|
|
47
|
+
regeneratedFiles: z.array(z.string()),
|
|
48
|
+
success: z.boolean(),
|
|
49
|
+
}),
|
|
50
|
+
materializedAt: z.string().datetime(),
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
export const validationReportSchema = z.object({
|
|
54
|
+
schemaVersion: z.string().min(1),
|
|
55
|
+
missionId: z.string().min(1),
|
|
56
|
+
contractFull: z.object({
|
|
57
|
+
passed: z.boolean(),
|
|
58
|
+
validators: z.array(
|
|
59
|
+
z.object({
|
|
60
|
+
name: z.string(),
|
|
61
|
+
status: z.enum(["pass", "fail"]),
|
|
62
|
+
diagnostics: z.array(
|
|
63
|
+
z.object({
|
|
64
|
+
ruleId: z.string(),
|
|
65
|
+
severity: z.string(),
|
|
66
|
+
message: z.string(),
|
|
67
|
+
}),
|
|
68
|
+
),
|
|
69
|
+
}),
|
|
70
|
+
),
|
|
71
|
+
}),
|
|
72
|
+
build: z.object({
|
|
73
|
+
succeeded: z.boolean(),
|
|
74
|
+
routeCount: z.number(),
|
|
75
|
+
sitemapHash: z.string(),
|
|
76
|
+
}),
|
|
77
|
+
validatedAt: z.string().datetime(),
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
export const authoredDiffSchema = z.object({
|
|
81
|
+
schemaVersion: z.string().min(1),
|
|
82
|
+
missionId: z.string().min(1),
|
|
83
|
+
added: z.array(z.string()),
|
|
84
|
+
modified: z.array(z.string()),
|
|
85
|
+
removed: z.array(z.string()),
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
export type MaterializationReport = z.infer<typeof materializationReportSchema>;
|
|
89
|
+
export type ValidationReport = z.infer<typeof validationReportSchema>;
|
|
90
|
+
export type AuthoredDiff = z.infer<typeof authoredDiffSchema>;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<MODULE_CONTRACT>
|
|
3
|
+
<purpose>RFC-0355: Zod schemas for Mission lifecycle and Bordbuch (hash-chain logbook).</purpose>
|
|
4
|
+
<non-goals>
|
|
5
|
+
<item>Does not define materialization — that is RFC-0356.</item>
|
|
6
|
+
<item>Does not define release discipline — that is RFC-0357.</item>
|
|
7
|
+
</non-goals>
|
|
8
|
+
</MODULE_CONTRACT>
|
|
9
|
+
<CHANGE_SUMMARY>
|
|
10
|
+
<item>RFC-0517: add preflight-skipped kind for preflight gate bypass audit trail.</item>
|
|
11
|
+
<item>RFC-0706: add nachweis-record and nachweis-consent kinds for Nachweisregister trust lifecycle (ADR-0028).</item>
|
|
12
|
+
<item>RFC-0715: add nachweis-signed and nachweis-timestamped kinds for N3 cryptographic verification.</item>
|
|
13
|
+
<item>RFC-1097: step 6 — compass.migrate codemod run
|
|
14
|
+
|
|
15
|
+
Mechanical v1 to v2 header migration across the workspace: 942 files rewritten — CHANGE_SUMMARY windows collapsed into history, forbidden v1 blocks stripped, KEY_DECISIONS seeded from @ai-invariant comments (5 files) or TODO placeholders (103 files), blocks reordered to canonical order.</item>
|
|
16
|
+
<item>RFC-1097: sweep — werkstatt-engine clean
|
|
17
|
+
|
|
18
|
+
Sweep batch 4: 73 Compass headers on headerless engine files (certification, component-runtime, isolation, evolution, testing), real KEY_DECISIONS on 75 files (kernel, cache, dht, swim, gitmesh, runtime), ~80 purpose expansions (CONTRACT-02/PURPOSE-02), non-goals on 13 CONTRACT-03 files, CS-07 history literal fix repo-wide (253 files). Policy: .template.ts/.template.astro excludedPaths. werkstatt-engine now 0 diagnostics.</item>
|
|
19
|
+
<history>RFC-0355, RFC-0473, RFC-0479, RFC-0480</history>
|
|
20
|
+
</CHANGE_SUMMARY>
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
import { z } from "zod";
|
|
24
|
+
|
|
25
|
+
const missionIdRegex = /^[a-z0-9]+(-[a-z0-9]+)*-m\d{6}$/;
|
|
26
|
+
const systemIdRegex = /^[a-z0-9]+(-[a-z0-9]+)*$/;
|
|
27
|
+
const eventIdRegex = /^event-\d{6}$/;
|
|
28
|
+
|
|
29
|
+
export const missionStateSchema = z.enum(["open", "closed", "aborted"]);
|
|
30
|
+
|
|
31
|
+
export const missionManifestSchema = z.object({
|
|
32
|
+
schemaVersion: z.string().min(1),
|
|
33
|
+
missionId: z.string().regex(missionIdRegex),
|
|
34
|
+
systemId: z.string().regex(systemIdRegex),
|
|
35
|
+
state: missionStateSchema,
|
|
36
|
+
brief: z.string().min(1),
|
|
37
|
+
openedAt: z.string().datetime(),
|
|
38
|
+
openedBy: z.string().min(1),
|
|
39
|
+
closedAt: z.string().datetime().nullable(),
|
|
40
|
+
closedBy: z.string().nullable(),
|
|
41
|
+
pinAtOpen: z.string().min(1),
|
|
42
|
+
materializedAt: z.string().datetime().nullable(),
|
|
43
|
+
reconciledAt: z.string().datetime().nullable(),
|
|
44
|
+
migratedAt: z.string().datetime().nullable(),
|
|
45
|
+
releaseId: z.string().nullable(),
|
|
46
|
+
rfcId: z.string().nullable().default(null),
|
|
47
|
+
operationId: z.string().min(1),
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
// When renaming or removing a value from this enum, add the old value to
|
|
51
|
+
// DEPRECATED_KIND_MIGRATIONS in packages/os/site-kernel-handoff/src/bordbuch/bordbuch-io.ts
|
|
52
|
+
// so that existing bordbuch entries on disk are normalized during readBordbuch.
|
|
53
|
+
export const bordbuchEntryKindSchema = z.enum([
|
|
54
|
+
"mission-open",
|
|
55
|
+
"mission-close",
|
|
56
|
+
"mission-abort",
|
|
57
|
+
"mission-open-rolled-back",
|
|
58
|
+
"release-ready",
|
|
59
|
+
"release-rolled-back",
|
|
60
|
+
"pin-update",
|
|
61
|
+
"deployment",
|
|
62
|
+
"notausgang-export",
|
|
63
|
+
"operator-note",
|
|
64
|
+
"erratum",
|
|
65
|
+
"mirror-sync",
|
|
66
|
+
"pseo",
|
|
67
|
+
"indexnow.submit",
|
|
68
|
+
"mission-migrate",
|
|
69
|
+
"preflight-skipped",
|
|
70
|
+
// RFC-0706 / ADR-0028: Nachweisregister trust lifecycle
|
|
71
|
+
"nachweis-record",
|
|
72
|
+
"nachweis-consent",
|
|
73
|
+
// RFC-0715: N3 cryptographic verification (operator signature + RFC 3161 timestamp)
|
|
74
|
+
"nachweis-signed",
|
|
75
|
+
"nachweis-timestamped",
|
|
76
|
+
// RFC-0888: Sichtpass lifecycle audit trail
|
|
77
|
+
"sichtpass",
|
|
78
|
+
// RFC-0968: Sternsystem handover protocol
|
|
79
|
+
"handover",
|
|
80
|
+
// RFC-1031: Evolution controller candidate lifecycle
|
|
81
|
+
"candidate",
|
|
82
|
+
// RFC-1037: External-effect compensation verification
|
|
83
|
+
"effect",
|
|
84
|
+
// RFC-1035: Isolation controller sandbox lifecycle events
|
|
85
|
+
"isolation",
|
|
86
|
+
]);
|
|
87
|
+
|
|
88
|
+
export const bordbuchEntryStatusSchema = z.enum(["done", "failed", "waiting", "escalated"]);
|
|
89
|
+
|
|
90
|
+
export const bordbuchEntrySchema = z.object({
|
|
91
|
+
schemaVersion: z.literal("1.0.0"),
|
|
92
|
+
id: z.string().regex(eventIdRegex),
|
|
93
|
+
systemId: z.string().min(1),
|
|
94
|
+
occurredAt: z.string().datetime(),
|
|
95
|
+
kind: bordbuchEntryKindSchema,
|
|
96
|
+
status: bordbuchEntryStatusSchema,
|
|
97
|
+
missionId: z.string().nullable(),
|
|
98
|
+
releaseId: z.string().nullable(),
|
|
99
|
+
actor: z.string().min(1),
|
|
100
|
+
summary: z.string().min(1),
|
|
101
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
102
|
+
previousHash: z.string().nullable(),
|
|
103
|
+
hash: z.string().min(1),
|
|
104
|
+
erratumOf: z.string().optional(),
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
export type MissionState = z.infer<typeof missionStateSchema>;
|
|
108
|
+
export type MissionManifest = z.infer<typeof missionManifestSchema>;
|
|
109
|
+
export type BordbuchEntryKind = z.infer<typeof bordbuchEntryKindSchema>;
|
|
110
|
+
export type BordbuchEntryStatus = z.infer<typeof bordbuchEntryStatusSchema>;
|
|
111
|
+
export type BordbuchEntry = z.infer<typeof bordbuchEntrySchema>;
|