@warpgogol/werkstatt-shared 0.14.1 → 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 +23 -15
- package/README.uk.md +1 -1
- package/package.json +517 -766
- 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/{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 +2 -2
- package/src/checks/tests/remediation-auto-populate.test.ts +1 -1
- 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/orchestrator.test.ts +47 -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 +1 -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/{share/semantic → node}/tests/derived-prices-loader.test.ts +14 -1
- package/src/{share/semantic → node}/tests/markdown-twin-provenance.test.ts +1 -1
- 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 +7 -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/text.ts +15 -0
- package/src/ontology/schemas/system.ts +6 -2
- 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/{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/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 +26 -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/{share/tests/breadcrumbs.test.ts → semantic/tests/breadcrumbs-0229.test.ts} +1 -1
- package/src/{share → semantic}/tests/build-page-price-markers.test.ts +2 -2
- package/src/{share/semantic → semantic}/tests/business-projection.test.ts +179 -0
- package/src/semantic/tests/canonical-uri.test.ts +56 -0
- package/src/{share/semantic → semantic}/tests/extract.test.ts +83 -0
- package/src/semantic/tests/freshness.pbt.test.ts +108 -0
- package/src/{share/tests/image-sitemap.test.ts → semantic/tests/image-sitemap-0150.test.ts} +1 -1
- 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/{share → semantic}/tests/llms-0789.test.ts +2 -2
- package/src/{share/semantic → semantic}/tests/llms.test.ts +46 -0
- package/src/{share → semantic}/tests/organization-jsonld.test.ts +3 -3
- package/src/{share/tests/output-projection.test.ts → semantic/tests/output-projection-0143.test.ts} +1 -1
- package/src/{share/tests/price-marker-resolver.test.ts → semantic/tests/price-marker-resolver-0767.test.ts} +2 -2
- package/src/{share/semantic → semantic}/tests/price-marker-resolver.test.ts +4 -2
- package/src/semantic/tests/project-claims.pbt.test.ts +60 -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/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/agent/tests/api-catalog.test.ts +0 -8
- package/src/share/agent/tests/ard-catalog.test.ts +0 -8
- package/src/share/agent/tests/capability.test.ts +0 -14
- package/src/share/agent/tests/fleet-catalog.test.ts +0 -15
- package/src/share/agent/tests/knowledge.test.ts +0 -20
- package/src/share/agent/tests/manifest.test.ts +0 -9
- package/src/share/agent/tests/mcp-card.test.ts +0 -8
- package/src/share/agent/tests/openapi.test.ts +0 -8
- package/src/share/agent/tests/proof.test.ts +0 -15
- 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/knowledge/tests/claim.test.ts +0 -11
- package/src/share/knowledge/tests/derivation.test.ts +0 -30
- package/src/share/knowledge/tests/freshness.test.ts +0 -18
- package/src/share/knowledge/tests/ledger.test.ts +0 -35
- package/src/share/knowledge/tests/plan.test.ts +0 -19
- package/src/share/knowledge/tests/source.test.ts +0 -19
- package/src/share/legal/index.ts +0 -1
- package/src/share/redirects.ts +0 -54
- package/src/share/remediation/remediation-catalog.ts +0 -196
- package/src/share/scripts/index.ts +0 -26
- package/src/share/scripts/tests/orchestrator.test.ts +0 -8
- package/src/share/semantic/jsonld/shared.ts +0 -31
- package/src/share/semantic/jsonld/types.ts +0 -19
- 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 -50
- 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/agent → agent}/tests/omit-empty.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}/tests/external-link-qr.test.ts +0 -0
- /package/src/{share/scripts → client-scripts}/tests/external-links.test.ts +0 -0
- /package/src/{share/scripts → client-scripts}/tests/gsap-counter.test.ts +0 -0
- /package/src/{share/scripts → client-scripts}/tests/gsap-mountain-journey.test.ts +0 -0
- /package/src/{share/scripts → client-scripts}/tests/gsap-parallax.test.ts +0 -0
- /package/src/{share/scripts → client-scripts}/tests/gsap-reveal.test.ts +0 -0
- /package/src/{share/scripts → client-scripts}/tests/gsap-stagger.test.ts +0 -0
- /package/src/{share/scripts → client-scripts}/tests/inline-number-animation.test.ts +0 -0
- /package/src/{share/scripts → client-scripts}/tests/lenis.test.ts +0 -0
- /package/src/{share/scripts → client-scripts}/tests/live-photos.test.ts +0 -0
- /package/src/{share/scripts → client-scripts}/tests/lordicon.test.ts +0 -0
- /package/src/{share/scripts → client-scripts}/tests/scheduler.test.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/schemas → schemas}/tests/claim-records.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/claims.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/effects.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/features.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/horizontal-align.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/icon-color.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/live-photo.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/material-credit.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/media.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/navigation.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/page-base.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/participant.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/person.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/print.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/section-background.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/section-body.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/section-cards.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/section-cta.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/section-header.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/section-image.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/section-motion.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/section-shell.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/section-stats.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/site-background.test.ts +0 -0
- /package/src/{share/schemas → schemas}/tests/standard-list-item.test.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/tests/article.test.ts +0 -0
- /package/src/{share/semantic → semantic}/jsonld/tests/breadcrumb.test.ts +0 -0
- /package/src/{share/semantic → semantic}/jsonld/tests/collection-list.test.ts +0 -0
- /package/src/{share/semantic → semantic}/jsonld/tests/faq.test.ts +0 -0
- /package/src/{share/semantic → semantic}/jsonld/tests/initiative.test.ts +0 -0
- /package/src/{share/semantic → semantic}/jsonld/tests/organization.test.ts +0 -0
- /package/src/{share/semantic → semantic}/jsonld/tests/person.test.ts +0 -0
- /package/src/{share/semantic → semantic}/jsonld/tests/service.test.ts +0 -0
- /package/src/{share/semantic → semantic}/jsonld/tests/shared.test.ts +0 -0
- /package/src/{share/semantic → semantic}/jsonld/tests/video.test.ts +0 -0
- /package/src/{share/semantic → semantic}/jsonld/tests/webpage.test.ts +0 -0
- /package/src/{share/semantic → semantic}/jsonld/tests/website.test.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}/tests/ai.test.ts +0 -0
- /package/src/{share/semantic → semantic}/tests/block-extraction.test.ts +0 -0
- /package/src/{share/semantic → semantic}/tests/breadcrumbs.test.ts +0 -0
- /package/src/{share/semantic → semantic}/tests/build-page.test.ts +0 -0
- /package/src/{share/semantic → semantic}/tests/feed.test.ts +0 -0
- /package/src/{share/semantic → semantic}/tests/helpers.ts +0 -0
- /package/src/{share/semantic → semantic}/tests/ids.test.ts +0 -0
- /package/src/{share/semantic → semantic}/tests/image-sitemap.test.ts +0 -0
- /package/src/{share/semantic → semantic}/tests/jsonld.test.ts +0 -0
- /package/src/{share/semantic → semantic}/tests/llms-policy.test.ts +0 -0
- /package/src/{share/semantic → semantic}/tests/markdown-hygiene.test.ts +0 -0
- /package/src/{share/semantic → semantic}/tests/markdown-page.test.ts +0 -0
- /package/src/{share/semantic → semantic}/tests/organization-profile.test.ts +0 -0
- /package/src/{share/semantic → semantic}/tests/output-projection.test.ts +0 -0
- /package/src/{share/semantic → semantic}/tests/page-markdown.test.ts +0 -0
- /package/src/{share/semantic → semantic}/tests/page-utils.test.ts +0 -0
- /package/src/{share/semantic → semantic}/tests/robots.test.ts +0 -0
- /package/src/{share/semantic → semantic}/tests/update-stamp.test.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
|
@@ -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>;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<MODULE_CONTRACT>
|
|
3
|
+
<purpose>RFC-0361: Centralized naming policy regexes and policy descriptors for Sternsystem, Mission, Release, and Bordbuch ids. RFC-0902: add KNOWN_TLDS and hasTldSuffix() for TLD-suffix detection.</purpose>
|
|
4
|
+
<non-goals>
|
|
5
|
+
<item>Does not define filename policies — that is DNA-6 / RFC-0360.</item>
|
|
6
|
+
<item>Does not define content-level naming — that is RFC-0047.</item>
|
|
7
|
+
</non-goals>
|
|
8
|
+
</MODULE_CONTRACT>
|
|
9
|
+
<CHANGE_SUMMARY>
|
|
10
|
+
<item>RFC-0361: initial centralized naming policy regexes and descriptors.</item>
|
|
11
|
+
<item>RFC-0902: add KNOWN_TLDS set and hasTldSuffix() function; update examples to TLD-free IDs.</item>
|
|
12
|
+
</CHANGE_SUMMARY>
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
export const STERNSYSTEM_ID_REGEX = /^[a-z0-9]+(-[a-z0-9]+)*$/;
|
|
16
|
+
export const MISSION_ID_REGEX = /^[a-z0-9]+(-[a-z0-9]+)*-m\d{6}$/;
|
|
17
|
+
export const RELEASE_ID_REGEX = /^[a-z0-9]+(-[a-z0-9]+)*-r\d{6}$/;
|
|
18
|
+
export const BORDBUCH_EVENT_ID_REGEX = /^event-\d{6}$/;
|
|
19
|
+
|
|
20
|
+
export const NON_ASCII_REGEX = /[^\x00-\x7F]/;
|
|
21
|
+
|
|
22
|
+
// RFC-0902: Known TLD suffixes that must not appear as the last segment of a Sternsystem ID.
|
|
23
|
+
// Conservative list — add TLDs as needed. Removing a TLD from this set is a code change, not an RFC.
|
|
24
|
+
export const KNOWN_TLDS: ReadonlySet<string> = new Set([
|
|
25
|
+
"com",
|
|
26
|
+
"org",
|
|
27
|
+
"net",
|
|
28
|
+
"de",
|
|
29
|
+
"at",
|
|
30
|
+
"ch",
|
|
31
|
+
"it",
|
|
32
|
+
"fr",
|
|
33
|
+
"es",
|
|
34
|
+
"nl",
|
|
35
|
+
"be",
|
|
36
|
+
"pl",
|
|
37
|
+
"se",
|
|
38
|
+
"no",
|
|
39
|
+
"dk",
|
|
40
|
+
"fi",
|
|
41
|
+
"pt",
|
|
42
|
+
"cz",
|
|
43
|
+
"sk",
|
|
44
|
+
"hu",
|
|
45
|
+
"ro",
|
|
46
|
+
"bg",
|
|
47
|
+
"hr",
|
|
48
|
+
"si",
|
|
49
|
+
"lt",
|
|
50
|
+
"lv",
|
|
51
|
+
"ee",
|
|
52
|
+
"ie",
|
|
53
|
+
"lu",
|
|
54
|
+
"mt",
|
|
55
|
+
"cy",
|
|
56
|
+
"gr",
|
|
57
|
+
"uk",
|
|
58
|
+
"us",
|
|
59
|
+
"ca",
|
|
60
|
+
"au",
|
|
61
|
+
"nz",
|
|
62
|
+
"io",
|
|
63
|
+
"co",
|
|
64
|
+
"ai",
|
|
65
|
+
"dev",
|
|
66
|
+
"app",
|
|
67
|
+
"eu",
|
|
68
|
+
"info",
|
|
69
|
+
"biz",
|
|
70
|
+
"me",
|
|
71
|
+
"tv",
|
|
72
|
+
"gg",
|
|
73
|
+
"to",
|
|
74
|
+
"xyz",
|
|
75
|
+
"site",
|
|
76
|
+
"online",
|
|
77
|
+
"store",
|
|
78
|
+
"shop",
|
|
79
|
+
"blog",
|
|
80
|
+
"cloud",
|
|
81
|
+
]);
|
|
82
|
+
|
|
83
|
+
// RFC-0902: Returns true if the last hyphen-separated segment of the id is a known TLD.
|
|
84
|
+
// Single-segment IDs (e.g. "com", "warpgogol") return false — the concern is suffix segments.
|
|
85
|
+
export function hasTldSuffix(id: string): boolean {
|
|
86
|
+
const segments = id.split("-");
|
|
87
|
+
if (segments.length < 2) return false;
|
|
88
|
+
return KNOWN_TLDS.has(segments[segments.length - 1]);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export const STERNSYSTEM_ID_POLICY = {
|
|
92
|
+
regex: STERNSYSTEM_ID_REGEX,
|
|
93
|
+
charset: "ASCII lowercase letters (a-z), digits (0-9), hyphens (-)",
|
|
94
|
+
description: "kebab-case, lowercase, latin-only",
|
|
95
|
+
examples: ["warpgogol", "nicaragua-projekt"],
|
|
96
|
+
counterExamples: [
|
|
97
|
+
"Warpgogol-Com",
|
|
98
|
+
"nicaragüa-projekt",
|
|
99
|
+
"warpgogol--com",
|
|
100
|
+
"-warpgogol",
|
|
101
|
+
"warpgogol-",
|
|
102
|
+
],
|
|
103
|
+
tldCounterExamples: ["warpgogol-com", "nicaragua-projekt-org", "example-de"],
|
|
104
|
+
} as const;
|
|
105
|
+
|
|
106
|
+
export const MISSION_ID_POLICY = {
|
|
107
|
+
regex: MISSION_ID_REGEX,
|
|
108
|
+
format: "<system-id>-m<NNNNNN>",
|
|
109
|
+
description: "system id + literal -m + zero-padded six-digit sequence",
|
|
110
|
+
examples: ["warpgogol-m000001", "nicaragua-projekt-m000042"],
|
|
111
|
+
counterExamples: ["warpgogol-com-m1", "warpgogol-com-M000001", "warpgogol-com-m0000001"],
|
|
112
|
+
} as const;
|
|
113
|
+
|
|
114
|
+
export const RELEASE_ID_POLICY = {
|
|
115
|
+
regex: RELEASE_ID_REGEX,
|
|
116
|
+
format: "<system-id>-r<NNNNNN>",
|
|
117
|
+
description: "system id + literal -r + zero-padded six-digit sequence",
|
|
118
|
+
examples: ["warpgogol-r000001", "nicaragua-projekt-r000042"],
|
|
119
|
+
counterExamples: ["warpgogol-com-r1", "warpgogol-com-R000001", "warpgogol-com-r0000001"],
|
|
120
|
+
} as const;
|
|
121
|
+
|
|
122
|
+
export const BORDBUCH_EVENT_ID_POLICY = {
|
|
123
|
+
regex: BORDBUCH_EVENT_ID_REGEX,
|
|
124
|
+
format: "event-<NNNNNN>",
|
|
125
|
+
description: "literal 'event-' + zero-padded six-digit sequence",
|
|
126
|
+
examples: ["event-000001", "event-000042"],
|
|
127
|
+
counterExamples: ["event-1", "event-0000001", "EVENT-000001"],
|
|
128
|
+
} as const;
|
|
129
|
+
|
|
130
|
+
export function isLatinOnly(value: string): boolean {
|
|
131
|
+
return !NON_ASCII_REGEX.test(value);
|
|
132
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<MODULE_CONTRACT>
|
|
3
|
+
<purpose>RFC-0359 + RFC-0380: Zod schemas for Notausgang export manifest and integration manifest. RFC-0380 deepens the manifest schema for deep integrity verification by notausgang.validate.</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-0359: initial notausgang and integration manifest schemas.</item>
|
|
10
|
+
<item>RFC-0380: schema validated by notausgang.validate for deep integrity verification (schema shape unchanged, already uses STERNSYSTEM_ID_REGEX and RELEASE_ID_REGEX).</item>
|
|
11
|
+
</CHANGE_SUMMARY>
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { z } from "zod";
|
|
15
|
+
import { STERNSYSTEM_ID_REGEX, RELEASE_ID_REGEX } from "./naming-policy.ts";
|
|
16
|
+
import { starNameSchema } from "@warpgogol/werkstatt-shared/ontology/cosmic";
|
|
17
|
+
|
|
18
|
+
export const integrationSecretLocationSchema = z.object({
|
|
19
|
+
file: z.string(),
|
|
20
|
+
jsonPath: z.string(),
|
|
21
|
+
envVar: z.string().optional(),
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
export const integrationManifestSchema = z.object({
|
|
25
|
+
schemaVersion: z.string().min(1),
|
|
26
|
+
integrations: z.record(z.string(), z.array(integrationSecretLocationSchema)),
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
export const integrationNullingSchema = z.object({
|
|
30
|
+
nulled: z.array(z.string()),
|
|
31
|
+
exceptions: z.array(
|
|
32
|
+
z.object({
|
|
33
|
+
name: z.string(),
|
|
34
|
+
reason: z.string(),
|
|
35
|
+
}),
|
|
36
|
+
),
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export const notausgangManifestSchema = z.object({
|
|
40
|
+
schemaVersion: z.string().min(1),
|
|
41
|
+
systemId: z.string().regex(STERNSYSTEM_ID_REGEX),
|
|
42
|
+
cosmicStar: starNameSchema,
|
|
43
|
+
releaseId: z.string().regex(RELEASE_ID_REGEX),
|
|
44
|
+
exportedAt: z.string().datetime(),
|
|
45
|
+
platformVersion: z.string(),
|
|
46
|
+
platformSemanticHash: z.string(),
|
|
47
|
+
semver: z.string(),
|
|
48
|
+
source: z.object({
|
|
49
|
+
releaseManifestHash: z.string(),
|
|
50
|
+
artifactManifestHash: z.string(),
|
|
51
|
+
distArtifactHash: z.string(),
|
|
52
|
+
siteContentHash: z.string(),
|
|
53
|
+
behaviorSnapshotHash: z.string(),
|
|
54
|
+
}),
|
|
55
|
+
integrationNulling: integrationNullingSchema,
|
|
56
|
+
distHash: z.string(),
|
|
57
|
+
siteHash: z.string(),
|
|
58
|
+
bordbuchHash: z.string(),
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
export type IntegrationSecretLocation = z.infer<typeof integrationSecretLocationSchema>;
|
|
62
|
+
export type IntegrationManifest = z.infer<typeof integrationManifestSchema>;
|
|
63
|
+
export type IntegrationNulling = z.infer<typeof integrationNullingSchema>;
|
|
64
|
+
export type NotausgangManifest = z.infer<typeof notausgangManifestSchema>;
|