@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,229 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://mnstry.ai/schemas/atelier/atelier-readiness-run.v1.schema.json",
4
+ "$comment": "contract revision 1.1.0 (contract-stability epoch)",
5
+ "title": "MNSTRY Atelier Readiness Run v1",
6
+ "description": "Local, ignored, claim-first result of a readiness protocol run. A run can create proposed claims and draft packets, but it never grants runtime mutation, import, telemetry, egress, send-path, direct browser-write, or canonical graph/front-matter authority.",
7
+ "type": "object",
8
+ "additionalProperties": false,
9
+ "required": [
10
+ "schema",
11
+ "runId",
12
+ "protocolId",
13
+ "createdAt",
14
+ "project",
15
+ "answers",
16
+ "status",
17
+ "score",
18
+ "blockers",
19
+ "warnings",
20
+ "claims",
21
+ "safety"
22
+ ],
23
+ "allOf": [
24
+ {
25
+ "if": {
26
+ "properties": {
27
+ "status": {
28
+ "const": "ready"
29
+ }
30
+ }
31
+ },
32
+ "then": {
33
+ "properties": {
34
+ "blockers": {
35
+ "maxItems": 0
36
+ }
37
+ }
38
+ }
39
+ }
40
+ ],
41
+ "properties": {
42
+ "schema": {
43
+ "const": "atelier-readiness-run@v1"
44
+ },
45
+ "contractVersion": {
46
+ "type": "string",
47
+ "pattern": "^1\\.[0-9]+\\.[0-9]+$"
48
+ },
49
+ "runId": {
50
+ "type": "string",
51
+ "pattern": "^readiness-run-[a-f0-9]{24}$"
52
+ },
53
+ "protocolId": {
54
+ "$ref": "#/$defs/protocolId"
55
+ },
56
+ "createdAt": {
57
+ "type": "string",
58
+ "format": "date-time"
59
+ },
60
+ "project": {
61
+ "type": "string",
62
+ "minLength": 1
63
+ },
64
+ "answers": {
65
+ "type": "object"
66
+ },
67
+ "status": {
68
+ "enum": [
69
+ "missing",
70
+ "draft",
71
+ "review-needed",
72
+ "ready",
73
+ "blocked"
74
+ ]
75
+ },
76
+ "score": {
77
+ "type": "integer",
78
+ "minimum": 0,
79
+ "maximum": 100
80
+ },
81
+ "blockers": {
82
+ "$ref": "#/$defs/stringList"
83
+ },
84
+ "warnings": {
85
+ "$ref": "#/$defs/stringList"
86
+ },
87
+ "claims": {
88
+ "type": "array",
89
+ "items": {
90
+ "$ref": "#/$defs/claim"
91
+ }
92
+ },
93
+ "safety": {
94
+ "$ref": "#/$defs/safety"
95
+ },
96
+ "ext": {
97
+ "type": "object",
98
+ "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."
99
+ }
100
+ },
101
+ "$defs": {
102
+ "protocolId": {
103
+ "type": "string",
104
+ "pattern": "^[a-z][a-z0-9-]*\\.[a-z][a-z0-9-]*:[a-z][a-z0-9._-]*$"
105
+ },
106
+ "stringList": {
107
+ "type": "array",
108
+ "items": {
109
+ "type": "string",
110
+ "minLength": 1
111
+ }
112
+ },
113
+ "claim": {
114
+ "type": "object",
115
+ "additionalProperties": false,
116
+ "required": [
117
+ "schema",
118
+ "claimId",
119
+ "subject",
120
+ "predicate",
121
+ "object",
122
+ "provider",
123
+ "status",
124
+ "promoted"
125
+ ],
126
+ "properties": {
127
+ "schema": {
128
+ "const": "atelier-claim@v1"
129
+ },
130
+ "claimId": {
131
+ "type": "string",
132
+ "pattern": "^claim:[a-z0-9][a-z0-9:-]*$"
133
+ },
134
+ "subject": {
135
+ "type": "string",
136
+ "pattern": "^[a-z0-9][a-z0-9-]*:[a-z0-9][a-z0-9:-]*$"
137
+ },
138
+ "predicate": {
139
+ "enum": [
140
+ "related",
141
+ "supports",
142
+ "supersedes",
143
+ "implements",
144
+ "depends_on",
145
+ "evidences",
146
+ "contradicts",
147
+ "belongs_to"
148
+ ]
149
+ },
150
+ "object": {
151
+ "type": "string",
152
+ "pattern": "^[a-z0-9][a-z0-9-]*:[a-z0-9][a-z0-9:-]*$"
153
+ },
154
+ "provider": {
155
+ "enum": [
156
+ "atelier-readiness",
157
+ "codex",
158
+ "manual",
159
+ "analysis",
160
+ "claude",
161
+ "script"
162
+ ]
163
+ },
164
+ "status": {
165
+ "const": "proposed"
166
+ },
167
+ "promoted": {
168
+ "const": false
169
+ },
170
+ "confidence": {
171
+ "type": "number",
172
+ "minimum": 0,
173
+ "maximum": 1
174
+ },
175
+ "evidence": {
176
+ "type": "array",
177
+ "items": {
178
+ "type": "string",
179
+ "minLength": 1
180
+ },
181
+ "minItems": 1
182
+ },
183
+ "notes": {
184
+ "$ref": "#/$defs/stringList"
185
+ },
186
+ "createdAt": {
187
+ "type": "string",
188
+ "format": "date-time"
189
+ },
190
+ "ext": {
191
+ "type": "object",
192
+ "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."
193
+ }
194
+ }
195
+ },
196
+ "safety": {
197
+ "type": "object",
198
+ "additionalProperties": false,
199
+ "required": [
200
+ "runtimeMutation",
201
+ "runtimeImport",
202
+ "canonicalWrites",
203
+ "claimOnly",
204
+ "storage"
205
+ ],
206
+ "properties": {
207
+ "runtimeMutation": {
208
+ "const": false
209
+ },
210
+ "runtimeImport": {
211
+ "const": false
212
+ },
213
+ "canonicalWrites": {
214
+ "const": false
215
+ },
216
+ "claimOnly": {
217
+ "const": true
218
+ },
219
+ "storage": {
220
+ "const": "ignored-local"
221
+ },
222
+ "ext": {
223
+ "type": "object",
224
+ "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."
225
+ }
226
+ }
227
+ }
228
+ }
229
+ }
@@ -0,0 +1,457 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://mnstry.ai/schemas/atelier/atelier-readiness.v1.schema.json",
4
+ "$comment": "contract revision 1.1.0 (contract-stability epoch)",
5
+ "title": "mnstry.atelier-readiness@v1",
6
+ "description": "Live readiness report for the Atelier extractable-kit boundary. This is evidence from current checks, not source authority.",
7
+ "type": "object",
8
+ "additionalProperties": false,
9
+ "required": [
10
+ "schema",
11
+ "generatedAt",
12
+ "workspace",
13
+ "acceptedBoundary",
14
+ "ready",
15
+ "blockers",
16
+ "warnings",
17
+ "graph",
18
+ "alignment",
19
+ "contracts",
20
+ "kitManifest",
21
+ "runtimeDryRun",
22
+ "supportBundle",
23
+ "analysis",
24
+ "checks"
25
+ ],
26
+ "properties": {
27
+ "schema": {
28
+ "const": "mnstry.atelier-readiness@v1"
29
+ },
30
+ "contractVersion": {
31
+ "type": "string",
32
+ "pattern": "^1\\.[0-9]+\\.[0-9]+$"
33
+ },
34
+ "generatedAt": {
35
+ "type": "string",
36
+ "format": "date-time"
37
+ },
38
+ "workspace": {
39
+ "type": "object",
40
+ "additionalProperties": false,
41
+ "required": [
42
+ "root",
43
+ "repoOpsHead"
44
+ ],
45
+ "properties": {
46
+ "root": {
47
+ "type": "string",
48
+ "minLength": 1
49
+ },
50
+ "repoOpsHead": {
51
+ "type": [
52
+ "string",
53
+ "null"
54
+ ],
55
+ "pattern": "^[0-9a-f]{7,40}$"
56
+ },
57
+ "ext": {
58
+ "type": "object",
59
+ "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."
60
+ }
61
+ }
62
+ },
63
+ "acceptedBoundary": {
64
+ "type": "string",
65
+ "minLength": 1
66
+ },
67
+ "ready": {
68
+ "type": "boolean"
69
+ },
70
+ "blockers": {
71
+ "$ref": "#/$defs/stringList"
72
+ },
73
+ "warnings": {
74
+ "$ref": "#/$defs/stringList"
75
+ },
76
+ "graph": {
77
+ "type": "object",
78
+ "additionalProperties": false,
79
+ "required": [
80
+ "ok",
81
+ "path",
82
+ "schema",
83
+ "nodes",
84
+ "edges",
85
+ "diagnostics",
86
+ "privateRepoRecommended"
87
+ ],
88
+ "properties": {
89
+ "ok": {
90
+ "type": "boolean"
91
+ },
92
+ "path": {
93
+ "type": "string",
94
+ "minLength": 1
95
+ },
96
+ "schema": {
97
+ "type": [
98
+ "string",
99
+ "null"
100
+ ]
101
+ },
102
+ "nodes": {
103
+ "type": "integer",
104
+ "minimum": 0
105
+ },
106
+ "edges": {
107
+ "type": "integer",
108
+ "minimum": 0
109
+ },
110
+ "diagnostics": {
111
+ "type": "integer",
112
+ "minimum": 0
113
+ },
114
+ "privateRepoRecommended": {
115
+ "type": "integer",
116
+ "minimum": 0
117
+ },
118
+ "ext": {
119
+ "type": "object",
120
+ "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."
121
+ }
122
+ }
123
+ },
124
+ "alignment": {
125
+ "type": "object",
126
+ "additionalProperties": false,
127
+ "required": [
128
+ "ok",
129
+ "path",
130
+ "schema",
131
+ "generatedAt",
132
+ "graphNodes",
133
+ "graphEdges",
134
+ "alignmentNodes",
135
+ "alignmentEdges",
136
+ "gaps",
137
+ "diagnostics"
138
+ ],
139
+ "properties": {
140
+ "ok": {
141
+ "type": "boolean"
142
+ },
143
+ "path": {
144
+ "type": "string",
145
+ "minLength": 1
146
+ },
147
+ "schema": {
148
+ "type": [
149
+ "string",
150
+ "null"
151
+ ]
152
+ },
153
+ "generatedAt": {
154
+ "type": [
155
+ "string",
156
+ "null"
157
+ ],
158
+ "format": "date-time"
159
+ },
160
+ "graphNodes": {
161
+ "type": "integer",
162
+ "minimum": 0
163
+ },
164
+ "graphEdges": {
165
+ "type": "integer",
166
+ "minimum": 0
167
+ },
168
+ "alignmentNodes": {
169
+ "type": "integer",
170
+ "minimum": 0
171
+ },
172
+ "alignmentEdges": {
173
+ "type": "integer",
174
+ "minimum": 0
175
+ },
176
+ "gaps": {
177
+ "type": "integer",
178
+ "minimum": 0
179
+ },
180
+ "diagnostics": {
181
+ "type": "integer",
182
+ "minimum": 0
183
+ },
184
+ "ext": {
185
+ "type": "object",
186
+ "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."
187
+ }
188
+ }
189
+ },
190
+ "contracts": {
191
+ "type": "array",
192
+ "items": {
193
+ "type": "object",
194
+ "additionalProperties": false,
195
+ "required": [
196
+ "path",
197
+ "present"
198
+ ],
199
+ "properties": {
200
+ "path": {
201
+ "type": "string",
202
+ "minLength": 1
203
+ },
204
+ "present": {
205
+ "type": "boolean"
206
+ },
207
+ "ext": {
208
+ "type": "object",
209
+ "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."
210
+ }
211
+ }
212
+ }
213
+ },
214
+ "runtimeDryRun": {
215
+ "type": "object",
216
+ "additionalProperties": false,
217
+ "required": [
218
+ "ok",
219
+ "root",
220
+ "script",
221
+ "test",
222
+ "fixture",
223
+ "dryRunOnly"
224
+ ],
225
+ "properties": {
226
+ "ok": {
227
+ "type": "boolean"
228
+ },
229
+ "root": {
230
+ "type": "string",
231
+ "minLength": 1
232
+ },
233
+ "script": {
234
+ "type": "string",
235
+ "minLength": 1
236
+ },
237
+ "test": {
238
+ "type": "string",
239
+ "minLength": 1
240
+ },
241
+ "fixture": {
242
+ "type": "string",
243
+ "minLength": 1
244
+ },
245
+ "dryRunOnly": {
246
+ "const": true
247
+ },
248
+ "ext": {
249
+ "type": "object",
250
+ "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."
251
+ }
252
+ }
253
+ },
254
+ "kitManifest": {
255
+ "type": "object",
256
+ "additionalProperties": false,
257
+ "required": [
258
+ "ok",
259
+ "path",
260
+ "schema",
261
+ "kernel",
262
+ "sourceDialect",
263
+ "exportContract",
264
+ "extensionPacks",
265
+ "telemetry"
266
+ ],
267
+ "properties": {
268
+ "ok": {
269
+ "type": "boolean"
270
+ },
271
+ "path": {
272
+ "type": "string",
273
+ "minLength": 1
274
+ },
275
+ "schema": {
276
+ "type": [
277
+ "string",
278
+ "null"
279
+ ]
280
+ },
281
+ "kernel": {
282
+ "type": [
283
+ "string",
284
+ "null"
285
+ ]
286
+ },
287
+ "sourceDialect": {
288
+ "type": [
289
+ "string",
290
+ "null"
291
+ ]
292
+ },
293
+ "exportContract": {
294
+ "type": [
295
+ "string",
296
+ "null"
297
+ ]
298
+ },
299
+ "extensionPacks": {
300
+ "type": "integer",
301
+ "minimum": 0
302
+ },
303
+ "telemetry": {
304
+ "type": [
305
+ "object",
306
+ "null"
307
+ ]
308
+ },
309
+ "ext": {
310
+ "type": "object",
311
+ "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."
312
+ }
313
+ }
314
+ },
315
+ "supportBundle": {
316
+ "type": "object",
317
+ "additionalProperties": false,
318
+ "required": [
319
+ "states",
320
+ "sendPath",
321
+ "background",
322
+ "telemetry",
323
+ "hashableDryRun"
324
+ ],
325
+ "properties": {
326
+ "states": {
327
+ "type": "array",
328
+ "items": {
329
+ "enum": [
330
+ "none",
331
+ "support_bundle"
332
+ ]
333
+ },
334
+ "minItems": 2,
335
+ "uniqueItems": true
336
+ },
337
+ "sendPath": {
338
+ "const": false
339
+ },
340
+ "background": {
341
+ "const": false
342
+ },
343
+ "telemetry": {
344
+ "const": "none"
345
+ },
346
+ "hashableDryRun": {
347
+ "const": true
348
+ },
349
+ "ext": {
350
+ "type": "object",
351
+ "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."
352
+ }
353
+ }
354
+ },
355
+ "analysis": {
356
+ "type": "object",
357
+ "additionalProperties": false,
358
+ "required": [
359
+ "ok",
360
+ "enabled",
361
+ "defaultEnabled",
362
+ "manifestPath",
363
+ "manifestPresent",
364
+ "authority"
365
+ ],
366
+ "properties": {
367
+ "ok": {
368
+ "type": "boolean"
369
+ },
370
+ "enabled": {
371
+ "type": "boolean"
372
+ },
373
+ "defaultEnabled": {
374
+ "const": false
375
+ },
376
+ "manifestPath": {
377
+ "type": "string",
378
+ "minLength": 1
379
+ },
380
+ "manifestPresent": {
381
+ "type": "boolean"
382
+ },
383
+ "authority": {
384
+ "enum": [
385
+ "optional-local-claim-only"
386
+ ]
387
+ },
388
+ "ext": {
389
+ "type": "object",
390
+ "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."
391
+ }
392
+ }
393
+ },
394
+ "checks": {
395
+ "type": "array",
396
+ "items": {
397
+ "type": "object",
398
+ "additionalProperties": false,
399
+ "required": [
400
+ "label",
401
+ "command",
402
+ "cwd",
403
+ "ok",
404
+ "status",
405
+ "signal"
406
+ ],
407
+ "properties": {
408
+ "label": {
409
+ "type": "string",
410
+ "minLength": 1
411
+ },
412
+ "command": {
413
+ "type": "string",
414
+ "minLength": 1
415
+ },
416
+ "cwd": {
417
+ "type": "string",
418
+ "minLength": 1
419
+ },
420
+ "ok": {
421
+ "type": "boolean"
422
+ },
423
+ "status": {
424
+ "type": [
425
+ "integer",
426
+ "null"
427
+ ]
428
+ },
429
+ "signal": {
430
+ "type": [
431
+ "string",
432
+ "null"
433
+ ]
434
+ },
435
+ "ext": {
436
+ "type": "object",
437
+ "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."
438
+ }
439
+ }
440
+ }
441
+ },
442
+ "ext": {
443
+ "type": "object",
444
+ "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."
445
+ }
446
+ },
447
+ "$defs": {
448
+ "stringList": {
449
+ "type": "array",
450
+ "items": {
451
+ "type": "string",
452
+ "minLength": 1
453
+ },
454
+ "uniqueItems": true
455
+ }
456
+ }
457
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "schema": "atelier-compat-baseline@v1",
3
+ "baselineTag": "v0.2.0-alpha.0",
4
+ "preEpochTags": [
5
+ "v0.1.0-alpha.0",
6
+ "v0.1.0-alpha.1",
7
+ "v0.1.0-alpha.2"
8
+ ],
9
+ "note": "Set baselineTag to the first tag cut after the contract-stability epoch, in the same release commit as the tag. Null is inert ONLY while every existing tag is in preEpochTags; any tag beyond that set with a null baseline fails the gate."
10
+ }