@mnstry/atelier 0.2.0-alpha.1

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.
Files changed (260) hide show
  1. package/CHANGELOG.md +383 -0
  2. package/LICENSE +202 -0
  3. package/NOTICE +5 -0
  4. package/README.md +262 -0
  5. package/SECURITY.md +93 -0
  6. package/TRADEMARKS.md +88 -0
  7. package/announcements/2026-08-06-announcements-channel.v1.json +12 -0
  8. package/announcements/keys/mnstry-announcements.public.v1.json +9 -0
  9. package/bin/atelier.mjs +2 -0
  10. package/bin/mnstry-atelier.mjs +3 -0
  11. package/contracts/analysis-adapter.v1.schema.json +248 -0
  12. package/contracts/atelier-action-intent.v1.schema.json +143 -0
  13. package/contracts/atelier-analysis-adapter.v1.schema.json +360 -0
  14. package/contracts/atelier-attestation.v1.schema.json +239 -0
  15. package/contracts/atelier-boundary-policy.v1.schema.json +339 -0
  16. package/contracts/atelier-claim.v1.schema.json +97 -0
  17. package/contracts/atelier-export.v1.schema.json +1015 -0
  18. package/contracts/atelier-extension-pack.v1.schema.json +290 -0
  19. package/contracts/atelier-kit-manifest.v1.schema.json +273 -0
  20. package/contracts/atelier-lock.v1.schema.json +364 -0
  21. package/contracts/atelier-migration.v1.schema.json +162 -0
  22. package/contracts/atelier-project-config.v1.schema.json +352 -0
  23. package/contracts/atelier-readiness-protocol.v1.schema.json +517 -0
  24. package/contracts/atelier-readiness-run.v1.schema.json +229 -0
  25. package/contracts/atelier-readiness.v1.schema.json +457 -0
  26. package/contracts/compat-baseline.json +10 -0
  27. package/contracts/git-promote-event.v1.schema.json +145 -0
  28. package/contracts/knowledge-source-sidecar.v1.schema.json +157 -0
  29. package/contracts/mnstry-atelier-semantic-profile.v1.json +254 -0
  30. package/docs/announcements.md +101 -0
  31. package/docs/atelier-runtime.md +34 -0
  32. package/docs/attestation.md +201 -0
  33. package/docs/continuity.md +55 -0
  34. package/docs/contract-stability.md +111 -0
  35. package/docs/distributions.md +220 -0
  36. package/docs/install.md +140 -0
  37. package/docs/knowledge-graph.md +140 -0
  38. package/docs/ontology.md +206 -0
  39. package/docs/release-engineering.md +151 -0
  40. package/docs/repo-boundary-guard.md +199 -0
  41. package/docs/tenant-readiness.md +64 -0
  42. package/docs/upgrade.md +124 -0
  43. package/fixtures/analysis/invalid/native-graph.v1.json +4 -0
  44. package/fixtures/analysis/invalid/promoted-claim.v1.json +17 -0
  45. package/fixtures/analysis/invalid/runtime-import.v1.json +20 -0
  46. package/fixtures/analysis/valid/output.claims.v1.json +17 -0
  47. package/fixtures/analysis-adapter/invalid/manifest-hidden-provider.v1.json +24 -0
  48. package/fixtures/analysis-adapter/invalid/output-frontmatter-mutation.v1.json +21 -0
  49. package/fixtures/analysis-adapter/invalid/output-native-graph.v1.json +14 -0
  50. package/fixtures/analysis-adapter/manifest.disabled.v1.json +22 -0
  51. package/fixtures/analysis-adapter/manifest.enabled-local.v1.json +23 -0
  52. package/fixtures/analysis-adapter/output.claims.v1.json +21 -0
  53. package/fixtures/atelier-action-intent/invalid/runtime-mutation-authority.v1.json +16 -0
  54. package/fixtures/atelier-action-intent/invalid/unknown-top-level-field.v1.json +17 -0
  55. package/fixtures/atelier-action-intent/invalid/writes-beyond-clipboard.v1.json +16 -0
  56. package/fixtures/atelier-action-intent/valid/copy-agent-prompt.v1.json +16 -0
  57. package/fixtures/atelier-action-intent/valid/copy-repo-path.v1.json +22 -0
  58. package/fixtures/atelier-analysis-adapter/invalid/hidden-model-provider.v1.json +24 -0
  59. package/fixtures/atelier-analysis-adapter/invalid/inert-with-execute-command.v1.json +24 -0
  60. package/fixtures/atelier-analysis-adapter/invalid/proposals-with-runtime-import.v1.json +30 -0
  61. package/fixtures/atelier-analysis-adapter/valid/manifest-inert.v1.json +24 -0
  62. package/fixtures/atelier-analysis-adapter/valid/proposals-claim-only.v1.json +27 -0
  63. package/fixtures/atelier-attestation/invalid/bad-digest.v1.json +23 -0
  64. package/fixtures/atelier-attestation/invalid/conformance-scope.v1.json +23 -0
  65. package/fixtures/atelier-attestation/invalid/missing-signature.v1.json +22 -0
  66. package/fixtures/atelier-attestation/invalid/unknown-root-field.v1.json +24 -0
  67. package/fixtures/atelier-attestation/keys/roundtrip-issuer.public.v1.json +9 -0
  68. package/fixtures/atelier-attestation/valid/rejected-with-reasons.v1.json +49 -0
  69. package/fixtures/atelier-attestation/valid/signed-admitted.v1.json +35 -0
  70. package/fixtures/atelier-attestation/valid/signed-roundtrip.v1.json +29 -0
  71. package/fixtures/atelier-attestation/valid/unsigned-advisory.v1.json +23 -0
  72. package/fixtures/atelier-claim/invalid/unknown-provider.v1.json +15 -0
  73. package/fixtures/atelier-claim/invalid/unknown-top-level-field.v1.json +16 -0
  74. package/fixtures/atelier-claim/invalid/wrong-schema-const.v1.json +15 -0
  75. package/fixtures/atelier-claim/valid/adapter-style-proposed-relation.v1.json +19 -0
  76. package/fixtures/atelier-claim/valid/codex-proposed-relation.v1.json +16 -0
  77. package/fixtures/atelier-claim/valid/manual-proposed-relation.v1.json +16 -0
  78. package/fixtures/atelier-claim/valid/readiness-proposed-relation.v1.json +18 -0
  79. package/fixtures/atelier-export/invalid/dirty-unforced-empty-taint.v1.json +19 -0
  80. package/fixtures/atelier-export/invalid/object-local-audience-visibility.v1.json +11 -0
  81. package/fixtures/atelier-export/invalid/open-object-class-owner.v1.json +23 -0
  82. package/fixtures/atelier-export/invalid/pricing-legacy-amount.v1.json +23 -0
  83. package/fixtures/atelier-export/invalid/public-disguised-internal-source-ref.v1.json +11 -0
  84. package/fixtures/atelier-export/invalid/public-nested-private-source-ref.v1.json +17 -0
  85. package/fixtures/atelier-export/invalid/public-resolved-private-source-ref.v1.json +13 -0
  86. package/fixtures/atelier-export/invalid/public-resolved-sensitive-source-ref.v1.json +13 -0
  87. package/fixtures/atelier-export/invalid/public-source-ref-missing-provenance.v1.json +20 -0
  88. package/fixtures/atelier-export/invalid/public-source-team-kg.json +12 -0
  89. package/fixtures/atelier-export/invalid/source-node-legacy-visibility.v1.json +21 -0
  90. package/fixtures/atelier-export/invalid/source-node-unknown-field.v1.json +18 -0
  91. package/fixtures/atelier-export/invalid/unresolved-public-source-ref.v1.json +11 -0
  92. package/fixtures/atelier-export/sample-studio-offer.v1.json +397 -0
  93. package/fixtures/atelier-extension-pack/invalid/bundled-slug-collision.v1.json +22 -0
  94. package/fixtures/atelier-extension-pack/invalid/escapes-root.v1.json +22 -0
  95. package/fixtures/atelier-extension-pack/invalid/posture-tampered.v1.json +22 -0
  96. package/fixtures/atelier-extension-pack/invalid/protocols/autonomous-authority.v1.json +118 -0
  97. package/fixtures/atelier-extension-pack/invalid/protocols/offer-map.v1.json +109 -0
  98. package/fixtures/atelier-extension-pack/invalid/redefines-runtime-term.v1.json +19 -0
  99. package/fixtures/atelier-extension-pack/invalid/wrong-namespace.v1.json +19 -0
  100. package/fixtures/atelier-extension-pack/valid/protocols/contract-gate.v1.json +109 -0
  101. package/fixtures/atelier-extension-pack/valid/sample-pack.v1.json +48 -0
  102. package/fixtures/atelier-kit-manifest/invalid/runtime-copy-without-canonical-role.v1.json +53 -0
  103. package/fixtures/atelier-kit-manifest/invalid/telemetry-send-path.v1.json +21 -0
  104. package/fixtures/atelier-kit-manifest/valid/mnstry-atelier.valid.v1.json +76 -0
  105. package/fixtures/atelier-lock/invalid/absolute-contract-path.v1.json +40 -0
  106. package/fixtures/atelier-lock/invalid/runtime-mutation-enabled.v1.json +41 -0
  107. package/fixtures/atelier-lock/invalid/unknown-top-level-field.v1.json +42 -0
  108. package/fixtures/atelier-lock/valid/extension-pack.v1.json +55 -0
  109. package/fixtures/atelier-lock/valid/minimal.v1.json +44 -0
  110. package/fixtures/atelier-migration/invalid/live-apply-mode.v1.json +21 -0
  111. package/fixtures/atelier-migration/invalid/missing-review-evidence.v1.json +20 -0
  112. package/fixtures/atelier-migration/invalid/runtime-mutation-enabled.v1.json +21 -0
  113. package/fixtures/atelier-migration/valid/minimal.v1.json +32 -0
  114. package/fixtures/atelier-project-config/invalid/absolute-repo-path.v1.json +11 -0
  115. package/fixtures/atelier-project-config/invalid/ext-not-object.v1.json +12 -0
  116. package/fixtures/atelier-project-config/invalid/external-kind-read-boundary.v1.json +12 -0
  117. package/fixtures/atelier-project-config/invalid/missing-repos-and-alignment.v1.json +7 -0
  118. package/fixtures/atelier-project-config/invalid/unknown-top-level-field.v1.json +14 -0
  119. package/fixtures/atelier-project-config/valid/alignment-scaffold.v1.json +15 -0
  120. package/fixtures/atelier-project-config/valid/ext-extension-packs.v1.json +36 -0
  121. package/fixtures/atelier-project-config/valid/repo-workspace.v1.json +23 -0
  122. package/fixtures/atelier-project-config/validator-only/ext-member-not-object.v1.json +14 -0
  123. package/fixtures/atelier-readiness/invalid/dry-run-only-false.v1.json +87 -0
  124. package/fixtures/atelier-readiness/invalid/support-bundle-send-path.v1.json +87 -0
  125. package/fixtures/atelier-readiness/invalid/unknown-top-level-field.v1.json +88 -0
  126. package/fixtures/atelier-readiness/valid/ready-workspace.v1.json +84 -0
  127. package/fixtures/boundary-policy/invalid/content-rule-exception-blanket-path.v1.json +67 -0
  128. package/fixtures/boundary-policy/invalid/invalid-actor-private-repo-mapping.v1.json +20 -0
  129. package/fixtures/boundary-policy/invalid/legacy-warning-missing-warning.v1.json +20 -0
  130. package/fixtures/boundary-policy/invalid/missing-repo-coverage.v1.json +19 -0
  131. package/fixtures/boundary-policy/invalid/unknown-key.v1.json +12 -0
  132. package/fixtures/boundary-policy/valid/content-rule-exception.v1.json +67 -0
  133. package/fixtures/boundary-policy/valid/legacy-warning.v1.json +33 -0
  134. package/fixtures/boundary-policy/valid/strict-private-shared.v1.json +40 -0
  135. package/fixtures/git-promote/invalid/provision-named-revocable.v1.json +29 -0
  136. package/fixtures/git-promote/private-to-team.v1.json +29 -0
  137. package/fixtures/knowledge-source-sidecar/invalid/legacy-visibility-field.v1.json +17 -0
  138. package/fixtures/knowledge-source-sidecar/invalid/missing-audience.v1.json +15 -0
  139. package/fixtures/knowledge-source-sidecar/invalid/unknown-relation-kind.v1.json +18 -0
  140. package/fixtures/knowledge-source-sidecar/valid/html-source.v1.json +18 -0
  141. package/fixtures/knowledge-source-sidecar/valid/pdf-evidence.v1.json +18 -0
  142. package/fixtures/projects/neutral-project/atelier.project.json +15 -0
  143. package/fixtures/projects/neutral-project/ops/config/repo-access.v1.json +12 -0
  144. package/fixtures/projects/neutral-project/project-knowledge.graph.json +69 -0
  145. package/fixtures/projects/sample-workspace/atelier.project.json +23 -0
  146. package/fixtures/projects/sample-workspace/boundary-policy.v1.json +59 -0
  147. package/fixtures/projects/sample-workspace/content/README.md +16 -0
  148. package/fixtures/projects/sample-workspace/content/source.html +5 -0
  149. package/fixtures/projects/sample-workspace/content/source.html.kg.json +15 -0
  150. package/fixtures/projects/sample-workspace/repo-access.v1.json +9 -0
  151. package/fixtures/projects/source-formats-workspace/atelier.project.json +23 -0
  152. package/fixtures/projects/source-formats-workspace/content/README.md +17 -0
  153. package/fixtures/projects/source-formats-workspace/content/data.json +7 -0
  154. package/fixtures/projects/source-formats-workspace/content/data.json.kg.json +15 -0
  155. package/fixtures/projects/source-formats-workspace/content/logo.png.kg.json +15 -0
  156. package/fixtures/projects/source-formats-workspace/content/metrics.csv +3 -0
  157. package/fixtures/projects/source-formats-workspace/content/metrics.csv.kg.json +15 -0
  158. package/fixtures/projects/source-formats-workspace/content/pipeline.yaml +4 -0
  159. package/fixtures/projects/source-formats-workspace/content/pipeline.yaml.kg.json +15 -0
  160. package/fixtures/projects/source-formats-workspace/repo-access.v1.json +9 -0
  161. package/fixtures/readiness-protocols/extension-pack/invalid/protocol-missing-path.v1.json +20 -0
  162. package/fixtures/readiness-protocols/extension-pack/valid/with-protocol.v1.json +24 -0
  163. package/fixtures/readiness-protocols/protocol/invalid/missing-check-target.v1.json +103 -0
  164. package/fixtures/readiness-protocols/protocol/invalid/runtime-mutation-enabled.v1.json +107 -0
  165. package/fixtures/readiness-protocols/protocol/valid/minimal.v1.json +100 -0
  166. package/fixtures/readiness-protocols/run/invalid/missing-evidence.v1.json +37 -0
  167. package/fixtures/readiness-protocols/run/invalid/pass-with-blocker.v1.json +22 -0
  168. package/fixtures/readiness-protocols/run/invalid/runtime-mutation-enabled.v1.json +22 -0
  169. package/fixtures/readiness-protocols/run/valid/pass.v1.json +44 -0
  170. package/fixtures/support/invalid/leaky-support.v1.json +13 -0
  171. package/fixtures/support/valid/minimal-safe.v1.json +20 -0
  172. package/package.json +98 -0
  173. package/skills/claude/atelier-open/SKILL.md +68 -0
  174. package/skills/claude/mnstry-readiness/SKILL.md +41 -0
  175. package/skills/codex/atelier-open/SKILL.md +68 -0
  176. package/skills/codex/mnstry-readiness/SKILL.md +41 -0
  177. package/src/analysis/adapter.mjs +20 -0
  178. package/src/analysis/analysis-claim-contract.mjs +335 -0
  179. package/src/attestation/jcs.mjs +64 -0
  180. package/src/attestation/sign.mjs +305 -0
  181. package/src/boundary/content-rules.mjs +262 -0
  182. package/src/boundary/policy.mjs +806 -0
  183. package/src/check-atelier-export-contract.mjs +116 -0
  184. package/src/cli/run.mjs +283 -0
  185. package/src/collaboration/proposals.mjs +262 -0
  186. package/src/commands/analysis.mjs +8 -0
  187. package/src/commands/announcements.mjs +308 -0
  188. package/src/commands/attestation.mjs +198 -0
  189. package/src/commands/boundary.mjs +25 -0
  190. package/src/commands/config.mjs +4 -0
  191. package/src/commands/context.mjs +3 -0
  192. package/src/commands/distribution.mjs +224 -0
  193. package/src/commands/egress.mjs +11 -0
  194. package/src/commands/extension-pack.mjs +209 -0
  195. package/src/commands/feedback.mjs +3 -0
  196. package/src/commands/graph.mjs +3 -0
  197. package/src/commands/init.mjs +130 -0
  198. package/src/commands/lock.mjs +3 -0
  199. package/src/commands/project.mjs +3 -0
  200. package/src/commands/promote.mjs +4 -0
  201. package/src/commands/readiness.mjs +3 -0
  202. package/src/commands/server.mjs +6 -0
  203. package/src/commands/setup.mjs +250 -0
  204. package/src/commands/support.mjs +3 -0
  205. package/src/commands/upgrade.mjs +3 -0
  206. package/src/contracts/corpus.mjs +171 -0
  207. package/src/egress/check.mjs +45 -0
  208. package/src/egress/forbidden-egress.mjs +323 -0
  209. package/src/export/atelier-export-contract.mjs +722 -0
  210. package/src/extension-packs/loader.mjs +491 -0
  211. package/src/graph/graph.mjs +370 -0
  212. package/src/graph/knowledge-graph.mjs +887 -0
  213. package/src/harness/context-client.mjs +144 -0
  214. package/src/harness/context.mjs +27 -0
  215. package/src/index.mjs +88 -0
  216. package/src/project/config.mjs +557 -0
  217. package/src/project/file-class.mjs +113 -0
  218. package/src/project/git-ignore.mjs +31 -0
  219. package/src/project/path-match.mjs +30 -0
  220. package/src/project/repo-identity.mjs +176 -0
  221. package/src/projection/alignment-projection.mjs +169 -0
  222. package/src/projection/policy.mjs +90 -0
  223. package/src/projection/project.mjs +152 -0
  224. package/src/readiness/readiness.mjs +312 -0
  225. package/src/readiness-protocols/bundled-pack.mjs +766 -0
  226. package/src/readiness-protocols/runtime.mjs +419 -0
  227. package/src/server/local-sidecar.mjs +640 -0
  228. package/src/server/security.mjs +229 -0
  229. package/src/server/server.mjs +42 -0
  230. package/src/support/feedback-report.mjs +414 -0
  231. package/src/support/support-bundle.mjs +226 -0
  232. package/src/ui/html-primitives.mjs +104 -0
  233. package/src/upgrade/upgrade.mjs +701 -0
  234. package/src/validate-atelier-export-dry-run.mjs +75 -0
  235. package/templates/atelier.project.example.json +23 -0
  236. package/templates/distribution-workspace/.claude/launch.json +12 -0
  237. package/templates/distribution-workspace/README.md +86 -0
  238. package/templates/distribution-workspace/atelier.project.json +36 -0
  239. package/templates/distribution-workspace/boundary-policy.v1.json +61 -0
  240. package/templates/distribution-workspace/gitignore +29 -0
  241. package/templates/distribution-workspace/governance/repo-boundary-ledger.md +5 -0
  242. package/templates/distribution-workspace/project/README.md +19 -0
  243. package/templates/distribution-workspace/repo-access.v1.json +9 -0
  244. package/templates/launch.json +12 -0
  245. package/templates/private-domain-workspace/.claude/launch.json +12 -0
  246. package/templates/private-domain-workspace/README.md +50 -0
  247. package/templates/private-domain-workspace/atelier.project.json +28 -0
  248. package/templates/private-domain-workspace/boundary-policy.v1.json +54 -0
  249. package/templates/private-domain-workspace/domain/README.md +19 -0
  250. package/templates/private-domain-workspace/gitignore +29 -0
  251. package/templates/private-domain-workspace/governance/repo-boundary-ledger.md +4 -0
  252. package/templates/private-domain-workspace/repo-access.v1.json +9 -0
  253. package/templates/shared-project-workspace/.claude/launch.json +12 -0
  254. package/templates/shared-project-workspace/README.md +51 -0
  255. package/templates/shared-project-workspace/atelier.project.json +28 -0
  256. package/templates/shared-project-workspace/boundary-policy.v1.json +61 -0
  257. package/templates/shared-project-workspace/gitignore +29 -0
  258. package/templates/shared-project-workspace/governance/repo-boundary-ledger.md +5 -0
  259. package/templates/shared-project-workspace/project/README.md +19 -0
  260. package/templates/shared-project-workspace/repo-access.v1.json +9 -0
@@ -0,0 +1,517 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://mnstry.ai/schemas/atelier/atelier-readiness-protocol.v1.schema.json",
4
+ "$comment": "contract revision 1.1.0 (contract-stability epoch)",
5
+ "title": "MNSTRY Atelier Readiness Protocol v1",
6
+ "description": "Claim-first protocol contract for guided MNSTRY tenant readiness. Protocols collect local answers, generate proposed claims and draft packets, and never grant runtime mutation, import, telemetry, egress, send-path, direct browser-write, or canonical front-matter authority.",
7
+ "type": "object",
8
+ "additionalProperties": false,
9
+ "required": [
10
+ "schema",
11
+ "id",
12
+ "version",
13
+ "stage",
14
+ "title",
15
+ "purpose",
16
+ "questions",
17
+ "inputFields",
18
+ "outputs",
19
+ "claimMappings",
20
+ "readinessRules",
21
+ "graphLenses",
22
+ "exportMappings",
23
+ "ui",
24
+ "safety"
25
+ ],
26
+ "properties": {
27
+ "schema": {
28
+ "const": "atelier-readiness-protocol@v1"
29
+ },
30
+ "contractVersion": {
31
+ "type": "string",
32
+ "pattern": "^1\\.[0-9]+\\.[0-9]+$"
33
+ },
34
+ "id": {
35
+ "$ref": "#/$defs/protocolId"
36
+ },
37
+ "slug": {
38
+ "$ref": "#/$defs/slug"
39
+ },
40
+ "version": {
41
+ "type": "string",
42
+ "pattern": "^v[0-9]+$"
43
+ },
44
+ "stage": {
45
+ "type": "string",
46
+ "minLength": 1
47
+ },
48
+ "title": {
49
+ "type": "string",
50
+ "minLength": 1
51
+ },
52
+ "purpose": {
53
+ "type": "string",
54
+ "minLength": 1
55
+ },
56
+ "questions": {
57
+ "type": "array",
58
+ "items": {
59
+ "$ref": "#/$defs/question"
60
+ },
61
+ "minItems": 1
62
+ },
63
+ "inputFields": {
64
+ "type": "array",
65
+ "items": {
66
+ "$ref": "#/$defs/inputField"
67
+ },
68
+ "minItems": 1
69
+ },
70
+ "outputHints": {
71
+ "type": "array",
72
+ "items": {
73
+ "$ref": "#/$defs/outputHint"
74
+ }
75
+ },
76
+ "outputs": {
77
+ "type": "object",
78
+ "additionalProperties": false,
79
+ "required": [
80
+ "runSchema",
81
+ "artifacts"
82
+ ],
83
+ "properties": {
84
+ "runSchema": {
85
+ "const": "atelier-readiness-run@v1"
86
+ },
87
+ "artifacts": {
88
+ "type": "array",
89
+ "items": {
90
+ "$ref": "#/$defs/outputArtifact"
91
+ }
92
+ },
93
+ "ext": {
94
+ "type": "object",
95
+ "description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
96
+ }
97
+ }
98
+ },
99
+ "claimMappings": {
100
+ "type": "array",
101
+ "items": {
102
+ "$ref": "#/$defs/claimMapping"
103
+ },
104
+ "minItems": 1
105
+ },
106
+ "readinessRules": {
107
+ "type": "array",
108
+ "items": {
109
+ "$ref": "#/$defs/readinessRule"
110
+ },
111
+ "minItems": 1
112
+ },
113
+ "graphLenses": {
114
+ "type": "array",
115
+ "items": {
116
+ "$ref": "#/$defs/graphLens"
117
+ },
118
+ "minItems": 1
119
+ },
120
+ "exportMappings": {
121
+ "type": "array",
122
+ "items": {
123
+ "$ref": "#/$defs/exportMapping"
124
+ },
125
+ "minItems": 1
126
+ },
127
+ "ui": {
128
+ "type": "object",
129
+ "additionalProperties": false,
130
+ "required": [
131
+ "section",
132
+ "title",
133
+ "agentPrompt"
134
+ ],
135
+ "properties": {
136
+ "section": {
137
+ "const": "readiness-journey"
138
+ },
139
+ "title": {
140
+ "type": "string",
141
+ "minLength": 1
142
+ },
143
+ "description": {
144
+ "type": "string"
145
+ },
146
+ "agentPrompt": {
147
+ "type": "string",
148
+ "minLength": 1
149
+ },
150
+ "ext": {
151
+ "type": "object",
152
+ "description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
153
+ }
154
+ }
155
+ },
156
+ "safety": {
157
+ "$ref": "#/$defs/safety"
158
+ },
159
+ "safetyPosture": {
160
+ "type": "object"
161
+ },
162
+ "ext": {
163
+ "type": "object",
164
+ "description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
165
+ }
166
+ },
167
+ "$defs": {
168
+ "protocolId": {
169
+ "type": "string",
170
+ "pattern": "^[a-z][a-z0-9-]*\\.[a-z][a-z0-9-]*:[a-z][a-z0-9._-]*$"
171
+ },
172
+ "termId": {
173
+ "type": "string",
174
+ "pattern": "^[a-z][a-z0-9-]*\\.[a-z][a-z0-9-]*:[a-z][a-z0-9._-]*(\\.[a-z0-9._-]+)?$"
175
+ },
176
+ "slug": {
177
+ "type": "string",
178
+ "pattern": "^[a-z][a-z0-9._-]*$"
179
+ },
180
+ "stringList": {
181
+ "type": "array",
182
+ "items": {
183
+ "type": "string",
184
+ "minLength": 1
185
+ }
186
+ },
187
+ "question": {
188
+ "type": "object",
189
+ "additionalProperties": false,
190
+ "required": [
191
+ "id",
192
+ "prompt",
193
+ "inputFields",
194
+ "required"
195
+ ],
196
+ "properties": {
197
+ "id": {
198
+ "type": "string",
199
+ "minLength": 1
200
+ },
201
+ "prompt": {
202
+ "type": "string",
203
+ "minLength": 1
204
+ },
205
+ "inputFields": {
206
+ "$ref": "#/$defs/stringList"
207
+ },
208
+ "required": {
209
+ "type": "boolean"
210
+ },
211
+ "ext": {
212
+ "type": "object",
213
+ "description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
214
+ }
215
+ }
216
+ },
217
+ "inputField": {
218
+ "type": "object",
219
+ "additionalProperties": false,
220
+ "required": [
221
+ "id",
222
+ "type",
223
+ "required",
224
+ "description"
225
+ ],
226
+ "properties": {
227
+ "id": {
228
+ "type": "string",
229
+ "minLength": 1
230
+ },
231
+ "type": {
232
+ "enum": [
233
+ "array",
234
+ "boolean",
235
+ "enum",
236
+ "number",
237
+ "string",
238
+ "text"
239
+ ]
240
+ },
241
+ "required": {
242
+ "type": "boolean"
243
+ },
244
+ "description": {
245
+ "type": "string",
246
+ "minLength": 1
247
+ },
248
+ "values": {
249
+ "$ref": "#/$defs/stringList"
250
+ },
251
+ "ext": {
252
+ "type": "object",
253
+ "description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
254
+ }
255
+ }
256
+ },
257
+ "outputHint": {
258
+ "type": "object",
259
+ "additionalProperties": false,
260
+ "required": [
261
+ "id",
262
+ "text"
263
+ ],
264
+ "properties": {
265
+ "id": {
266
+ "type": "string",
267
+ "minLength": 1
268
+ },
269
+ "text": {
270
+ "type": "string",
271
+ "minLength": 1
272
+ },
273
+ "schema": {
274
+ "type": "string"
275
+ },
276
+ "ext": {
277
+ "type": "object",
278
+ "description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
279
+ }
280
+ }
281
+ },
282
+ "outputArtifact": {
283
+ "type": "object",
284
+ "additionalProperties": false,
285
+ "required": [
286
+ "id",
287
+ "kind",
288
+ "schema",
289
+ "description"
290
+ ],
291
+ "properties": {
292
+ "id": {
293
+ "$ref": "#/$defs/termId"
294
+ },
295
+ "kind": {
296
+ "enum": [
297
+ "claim",
298
+ "draft",
299
+ "packet",
300
+ "projection"
301
+ ]
302
+ },
303
+ "schema": {
304
+ "type": "string",
305
+ "minLength": 1
306
+ },
307
+ "description": {
308
+ "type": "string",
309
+ "minLength": 1
310
+ },
311
+ "ext": {
312
+ "type": "object",
313
+ "description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
314
+ }
315
+ }
316
+ },
317
+ "claimMapping": {
318
+ "type": "object",
319
+ "additionalProperties": false,
320
+ "required": [
321
+ "id",
322
+ "claimPredicate",
323
+ "sourceFields",
324
+ "target",
325
+ "evidence"
326
+ ],
327
+ "properties": {
328
+ "id": {
329
+ "$ref": "#/$defs/termId"
330
+ },
331
+ "claimPredicate": {
332
+ "enum": [
333
+ "related",
334
+ "supports",
335
+ "supersedes",
336
+ "implements",
337
+ "depends_on",
338
+ "evidences",
339
+ "contradicts",
340
+ "belongs_to"
341
+ ]
342
+ },
343
+ "sourceFields": {
344
+ "$ref": "#/$defs/stringList"
345
+ },
346
+ "target": {
347
+ "const": "atelier-claim@v1"
348
+ },
349
+ "evidence": {
350
+ "type": "string",
351
+ "minLength": 1
352
+ },
353
+ "ext": {
354
+ "type": "object",
355
+ "description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
356
+ }
357
+ }
358
+ },
359
+ "readinessRule": {
360
+ "type": "object",
361
+ "additionalProperties": false,
362
+ "required": [
363
+ "id",
364
+ "severity",
365
+ "condition",
366
+ "remediation",
367
+ "failClosed"
368
+ ],
369
+ "properties": {
370
+ "id": {
371
+ "$ref": "#/$defs/termId"
372
+ },
373
+ "severity": {
374
+ "enum": [
375
+ "info",
376
+ "warning",
377
+ "blocker"
378
+ ]
379
+ },
380
+ "condition": {
381
+ "type": "string",
382
+ "minLength": 1
383
+ },
384
+ "remediation": {
385
+ "type": "string",
386
+ "minLength": 1
387
+ },
388
+ "failClosed": {
389
+ "type": "boolean"
390
+ },
391
+ "ext": {
392
+ "type": "object",
393
+ "description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
394
+ }
395
+ }
396
+ },
397
+ "graphLens": {
398
+ "type": "object",
399
+ "additionalProperties": false,
400
+ "required": [
401
+ "id",
402
+ "title",
403
+ "query"
404
+ ],
405
+ "properties": {
406
+ "id": {
407
+ "$ref": "#/$defs/termId"
408
+ },
409
+ "title": {
410
+ "type": "string",
411
+ "minLength": 1
412
+ },
413
+ "query": {
414
+ "type": "object"
415
+ },
416
+ "ext": {
417
+ "type": "object",
418
+ "description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
419
+ }
420
+ }
421
+ },
422
+ "exportMapping": {
423
+ "type": "object",
424
+ "additionalProperties": false,
425
+ "required": [
426
+ "id",
427
+ "sourceField",
428
+ "sourceTerm",
429
+ "target",
430
+ "runtimeOwner",
431
+ "targetCollection"
432
+ ],
433
+ "properties": {
434
+ "id": {
435
+ "$ref": "#/$defs/termId"
436
+ },
437
+ "sourceField": {
438
+ "type": "string",
439
+ "minLength": 1
440
+ },
441
+ "sourceTerm": {
442
+ "$ref": "#/$defs/termId"
443
+ },
444
+ "target": {
445
+ "enum": [
446
+ "content.material",
447
+ "core.artifact",
448
+ "core.trackable",
449
+ "scheduling.commitment",
450
+ "space.space",
451
+ "space.provision"
452
+ ]
453
+ },
454
+ "runtimeOwner": {
455
+ "type": "string",
456
+ "minLength": 1
457
+ },
458
+ "targetCollection": {
459
+ "type": "string",
460
+ "minLength": 1
461
+ },
462
+ "ext": {
463
+ "type": "object",
464
+ "description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
465
+ }
466
+ }
467
+ },
468
+ "safety": {
469
+ "type": "object",
470
+ "additionalProperties": false,
471
+ "required": [
472
+ "runtimeMutation",
473
+ "runtimeImport",
474
+ "canonicalWrites",
475
+ "claimOnly",
476
+ "telemetry",
477
+ "egress",
478
+ "sendPath",
479
+ "browserApply",
480
+ "dryRunOnly"
481
+ ],
482
+ "properties": {
483
+ "runtimeMutation": {
484
+ "const": false
485
+ },
486
+ "runtimeImport": {
487
+ "const": false
488
+ },
489
+ "canonicalWrites": {
490
+ "const": false
491
+ },
492
+ "claimOnly": {
493
+ "const": true
494
+ },
495
+ "telemetry": {
496
+ "const": false
497
+ },
498
+ "egress": {
499
+ "const": false
500
+ },
501
+ "sendPath": {
502
+ "const": false
503
+ },
504
+ "browserApply": {
505
+ "const": false
506
+ },
507
+ "dryRunOnly": {
508
+ "const": true
509
+ },
510
+ "ext": {
511
+ "type": "object",
512
+ "description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
513
+ }
514
+ }
515
+ }
516
+ }
517
+ }