@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,75 @@
1
+ #!/usr/bin/env node
2
+
3
+ import fs from 'node:fs'
4
+ import path from 'node:path'
5
+ import { fileURLToPath } from 'node:url'
6
+ import { validateAtelierExportContract } from './export/atelier-export-contract.mjs'
7
+
8
+ const __dirname = path.dirname(fileURLToPath(import.meta.url))
9
+ const packageRoot = path.resolve(__dirname, '..')
10
+ const schemaPath = path.join(packageRoot, 'contracts/atelier-export.v1.schema.json')
11
+
12
+ function readJsonFile(filePath) {
13
+ const text = fs.readFileSync(filePath, 'utf8')
14
+ return JSON.parse(text)
15
+ }
16
+
17
+ export function validateAtelierExportDryRun(doc, { schema = readJsonFile(schemaPath), graphNodes = [] } = {}) {
18
+ return validateAtelierExportContract(doc, {
19
+ schema,
20
+ graphNodes,
21
+ dryRunOnly: true,
22
+ })
23
+ }
24
+
25
+ export function validateAtelierExportDryRunFile(filePath) {
26
+ const absolutePath = path.resolve(filePath)
27
+ const doc = readJsonFile(absolutePath)
28
+ return validateAtelierExportDryRun(doc)
29
+ }
30
+
31
+ function emptyReport(message) {
32
+ return {
33
+ accepted: false,
34
+ importable: false,
35
+ worstOperationStatus: 'other',
36
+ graphProvenanceMode: 'absent',
37
+ operationSummary: {
38
+ counts: { ready: 0, warning: 0, blocked: 0, other: 0 },
39
+ worstOperationStatus: 'other',
40
+ total: 0,
41
+ },
42
+ errors: [message],
43
+ warnings: [],
44
+ objects: { total: 0, byCollection: {} },
45
+ sourceNodes: [],
46
+ runtimeTargets: [],
47
+ semanticProfileViolations: [],
48
+ }
49
+ }
50
+
51
+ function printReport(report) {
52
+ process.stdout.write(`${JSON.stringify(report, null, 2)}\n`)
53
+ }
54
+
55
+ export function main(argv) {
56
+ const [filePath, ...extra] = argv
57
+ if (!filePath || extra.length > 0) {
58
+ printReport(emptyReport('usage: node scripts/validation/validate-atelier-export-dry-run.mjs <path-to-export-json>'))
59
+ return 1
60
+ }
61
+
62
+ try {
63
+ const report = validateAtelierExportDryRunFile(filePath)
64
+ printReport(report)
65
+ return report.accepted ? 0 : 1
66
+ } catch (error) {
67
+ printReport(emptyReport(error instanceof Error ? error.message : String(error)))
68
+ return 1
69
+ }
70
+ }
71
+
72
+ const currentFile = fileURLToPath(import.meta.url)
73
+ if (process.argv[1] && path.resolve(process.argv[1]) === currentFile) {
74
+ process.exitCode = main(process.argv.slice(2))
75
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "schema": "mnstry.atelier-project-config@v1",
3
+ "name": "sample-workspace",
4
+ "roots": {
5
+ "workspace": ".",
6
+ "repoOps": "."
7
+ },
8
+ "graph": {
9
+ "repoAccessPath": "repo-access.v1.json",
10
+ "outputPath": "atelier-output/knowledge.graph.json"
11
+ },
12
+ "projection": {
13
+ "outputRoot": "atelier-output",
14
+ "readinessPath": "atelier-output/atelier-readiness.json"
15
+ },
16
+ "repos": [
17
+ {
18
+ "name": "content",
19
+ "path": "content",
20
+ "readBoundary": "private"
21
+ }
22
+ ]
23
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "version": "0.0.1",
3
+ "configurations": [
4
+ {
5
+ "name": "atelier",
6
+ "runtimeExecutable": "npx",
7
+ "runtimeArgs": ["atelier", "server"],
8
+ "port": 8137,
9
+ "autoPort": true
10
+ }
11
+ ]
12
+ }
@@ -0,0 +1,86 @@
1
+ # Distribution workspace
2
+
3
+ Starter for a MNSTRY Atelier distribution: a rebranded package that wraps the
4
+ Atelier CLI and ships its own name, projection branding, and optional extension
5
+ packs on top of the unmodified Atelier core.
6
+
7
+ The distribution invariant: add and rebrand, never alter root semantics. A
8
+ distribution may add protocols, skills, and branding, but the bundled commands,
9
+ contracts, and boundary rules keep their upstream meaning.
10
+
11
+ ## Required attribution
12
+
13
+ Every distribution package must carry the exact line below in its README:
14
+
15
+ powered by MNSTRY Atelier
16
+
17
+ `atelier distribution check` blocks on this line. See `TRADEMARKS.md`
18
+ ("Required attribution") and `docs/attestation.md` in the Atelier package for
19
+ the policy and signing details.
20
+
21
+ ## Projection branding
22
+
23
+ `atelier.project.json` in this workspace carries the extension block that
24
+ brands the local projection:
25
+
26
+ ```json
27
+ "ext": {
28
+ "mnstry.atelier": {
29
+ "distribution": {
30
+ "name": "Example Distribution",
31
+ "eyebrow": "distribution projection"
32
+ }
33
+ }
34
+ }
35
+ ```
36
+
37
+ An optional `theme` object may override the projection color tokens
38
+ `bg`, `surface`, `text`, `accent`, and `eyebrow` with hex values, for example
39
+ `"theme": { "accent": "#7a9e7e" }`. Values that are not hex colors are
40
+ rejected at build time.
41
+
42
+ ## Boundary
43
+
44
+ Shared distribution repos are readable by the project group. Do not place
45
+ private or sensitive personal domain source here. Use a private domain repo per
46
+ user for that material. `USER_GITHUB_LOGIN_PLACEHOLDER` in
47
+ `boundary-policy.v1.json` is a placeholder, not a real account; `atelier init`
48
+ personalizes it in the copied workspace.
49
+
50
+ ## Tracked config and local overlay
51
+
52
+ Track `atelier.project.json`, `repo-access.v1.json`, `boundary-policy.v1.json`,
53
+ `atelier.lock.json`, governance files, and source documents. Ignore local
54
+ operator state such as `atelier.local.json`, `atelier.workspace.local.json`,
55
+ `atelier-attestation-key.local.json` (the local attestation signing key —
56
+ never commit it), `.atelier-local/`, proposals/current/presence/nonce/grants/
57
+ audit/session/support state, support bundles, transcripts, prompts, generated
58
+ projections, `node_modules/`, and `.DS_Store`.
59
+
60
+ ## Local commands
61
+
62
+ ```bash
63
+ atelier graph --project ./atelier.project.json
64
+ atelier project --project ./atelier.project.json
65
+ atelier readiness --project ./atelier.project.json
66
+ atelier lock check --project ./atelier.project.json
67
+ atelier distribution check
68
+ ```
69
+
70
+ Atelier performs no telemetry, cloud sync, runtime mutation, or direct browser
71
+ writes for this preview.
72
+
73
+ ## Atelier lockfile
74
+
75
+ `atelier init --template distribution` writes `atelier.lock.json`.
76
+ If this template was copied manually, create the lock before the first commit:
77
+
78
+ ```bash
79
+ atelier lock write --project ./atelier.project.json
80
+ ```
81
+
82
+ ## Learn more
83
+
84
+ - `docs/distributions.md` in the Atelier package — the full distribution guide.
85
+ - `examples/loomworks-studio/` in the Atelier repository — a complete
86
+ reference distribution with a branded wrapper binary and extension pack.
@@ -0,0 +1,36 @@
1
+ {
2
+ "schema": "mnstry.atelier-project-config@v1",
3
+ "name": "project-alpha",
4
+ "roots": {
5
+ "workspace": ".",
6
+ "repoOps": "."
7
+ },
8
+ "graph": {
9
+ "repoAccessPath": "repo-access.v1.json",
10
+ "outputPath": "atelier-output/knowledge.graph.json"
11
+ },
12
+ "projection": {
13
+ "outputRoot": "atelier-output",
14
+ "readinessPath": "atelier-output/atelier-readiness.json"
15
+ },
16
+ "boundaries": {
17
+ "policyPath": "boundary-policy.v1.json",
18
+ "governanceLedgerPath": "governance/repo-boundary-ledger.md",
19
+ "strictNewRepos": true
20
+ },
21
+ "repos": [
22
+ {
23
+ "name": "project-alpha",
24
+ "path": "project",
25
+ "readBoundary": "team"
26
+ }
27
+ ],
28
+ "ext": {
29
+ "mnstry.atelier": {
30
+ "distribution": {
31
+ "name": "Example Distribution",
32
+ "eyebrow": "distribution projection"
33
+ }
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "schema": "mnstry.atelier-boundary-policy@v1",
3
+ "mode": "strict",
4
+ "actors": {
5
+ "owner": {
6
+ "githubLogin": "USER_GITHUB_LOGIN_PLACEHOLDER",
7
+ "gitEmails": ["owner@example.invalid"],
8
+ "privateDomainRepo": "tenant-private-domain"
9
+ }
10
+ },
11
+ "repos": {
12
+ "tenant-private-domain": {
13
+ "kind": "private_domain",
14
+ "ownerActor": "owner",
15
+ "readBoundary": "private",
16
+ "allowedAudiences": ["private", "sensitive", "team", "operator", "staff", "public"],
17
+ "forbiddenAudiences": [],
18
+ "autoCommit": "guarded"
19
+ },
20
+ "project-alpha": {
21
+ "kind": "shared",
22
+ "readBoundary": "team",
23
+ "allowedAudiences": ["team", "operator", "staff", "public"],
24
+ "forbiddenAudiences": ["private", "sensitive"],
25
+ "autoCommit": "guarded"
26
+ }
27
+ },
28
+ "promotion": {
29
+ "requiresGitPromote": true,
30
+ "recordsPath": "governance/git-promote-events.jsonl"
31
+ },
32
+ "forbiddenPaths": [
33
+ ".atelier-local/**",
34
+ "atelier.local.json",
35
+ "atelier.workspace.local.json",
36
+ ".mnstry-local/**",
37
+ ".atelier-proposals/**",
38
+ ".atelier-current",
39
+ ".atelier-current.json",
40
+ ".atelier-presence.json",
41
+ ".atelier-nonce",
42
+ ".atelier-capability-grants.json",
43
+ ".atelier-grants/**",
44
+ ".atelier-events.jsonl",
45
+ ".atelier-audit.jsonl",
46
+ ".atelier-audit/**",
47
+ ".atelier-session.json",
48
+ ".atelier-session.jsonl",
49
+ ".atelier-session/**",
50
+ ".atelier-sessions/**",
51
+ ".atelier-support/**",
52
+ ".atelier-support.json",
53
+ "support-bundle*",
54
+ "support-bundles/**",
55
+ "prompts/**",
56
+ "transcripts/**",
57
+ "node_modules/**",
58
+ ".DS_Store"
59
+ ],
60
+ "governanceLedgerPath": "governance/repo-boundary-ledger.md"
61
+ }
@@ -0,0 +1,29 @@
1
+ .atelier-local/
2
+ atelier.local.json
3
+ atelier.workspace.local.json
4
+ atelier-attestation-key.local.json
5
+ .mnstry-local/
6
+ .atelier-proposals/
7
+ .atelier-current
8
+ .atelier-current.json
9
+ .atelier-presence.json
10
+ .atelier-nonce
11
+ .atelier-capability-grants.json
12
+ .atelier-grants/
13
+ .atelier-events.jsonl
14
+ .atelier-audit.jsonl
15
+ .atelier-audit/
16
+ .atelier-session.json
17
+ .atelier-session.jsonl
18
+ .atelier-session/
19
+ .atelier-sessions/
20
+ .atelier-support/
21
+ .atelier-support.json
22
+ atelier-output/
23
+ support-bundle*
24
+ support-bundles/
25
+ transcripts/
26
+ prompts/
27
+ node_modules/
28
+ npm-debug.log*
29
+ .DS_Store
@@ -0,0 +1,5 @@
1
+ # Repo Boundary Governance Ledger
2
+
3
+ This shared project workspace is strict. Private and sensitive material must
4
+ stay in each user's private domain repo unless intentionally promoted into this
5
+ repo through `git.promote`.
@@ -0,0 +1,19 @@
1
+ ---
2
+ title: "Shared Project Seed"
3
+ kg:
4
+ id: "project-alpha:seed"
5
+ type: "project-note"
6
+ domain: "project"
7
+ lifecycle: "draft"
8
+ status: "seed"
9
+ audience: "team"
10
+ relations: []
11
+ ---
12
+
13
+ # Shared Project Seed
14
+
15
+ Shared project source starts here.
16
+
17
+ This repo is for team-readable project material. Keep private-domain source in
18
+ the relevant user's private domain repo and bring only reviewed summaries here
19
+ through Git review.
@@ -0,0 +1,9 @@
1
+ {
2
+ "schema": "mnstry.repo-access@v1",
3
+ "defaultReadBoundary": "team",
4
+ "repos": {
5
+ "project-alpha": {
6
+ "readBoundary": "team"
7
+ }
8
+ }
9
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "version": "0.0.1",
3
+ "configurations": [
4
+ {
5
+ "name": "atelier",
6
+ "runtimeExecutable": "npx",
7
+ "runtimeArgs": ["atelier", "server"],
8
+ "port": 8137,
9
+ "autoPort": true
10
+ }
11
+ ]
12
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "version": "0.0.1",
3
+ "configurations": [
4
+ {
5
+ "name": "atelier",
6
+ "runtimeExecutable": "npx",
7
+ "runtimeArgs": ["atelier", "server"],
8
+ "port": 8137,
9
+ "autoPort": true
10
+ }
11
+ ]
12
+ }
@@ -0,0 +1,50 @@
1
+ # Private Domain Workspace
2
+
3
+ Starter for one user's private domain repository.
4
+
5
+ Default example user:
6
+
7
+ - Name: `Owner`
8
+ - GitHub login placeholder: `USER_GITHUB_LOGIN_PLACEHOLDER`
9
+ - Repo: `github.com/<org>/tenant-private-domain`
10
+
11
+ `USER_GITHUB_LOGIN_PLACEHOLDER` is a placeholder, not a real account. Keep
12
+ committed starter files placeholder-only; set a real login or email only in the
13
+ copied private workspace.
14
+
15
+ ## Boundary
16
+
17
+ This repo is the Git read boundary for the user's private source. Do not place
18
+ private domain source in a shared project repository and rely on projection
19
+ filters to hide it.
20
+
21
+ ## Tracked Config And Local Overlay
22
+
23
+ Track `atelier.project.json`, `repo-access.v1.json`, `boundary-policy.v1.json`,
24
+ `atelier.lock.json`, governance files, and source documents. Ignore local
25
+ operator state such as `atelier.local.json`, `atelier.workspace.local.json`,
26
+ `.atelier-local/`, proposals/current/presence/nonce/grants/audit/session/support
27
+ state, support bundles, transcripts, prompts, generated projections,
28
+ `node_modules/`, and `.DS_Store`.
29
+
30
+ ## Local Commands
31
+
32
+ ```bash
33
+ atelier graph --project ./atelier.project.json
34
+ atelier project --project ./atelier.project.json
35
+ atelier readiness --project ./atelier.project.json
36
+ atelier lock check --project ./atelier.project.json
37
+ atelier upgrade --dry-run --project ./atelier.project.json
38
+ ```
39
+
40
+ Atelier performs no telemetry, cloud sync, runtime mutation, or direct browser
41
+ writes for this preview.
42
+
43
+ ## Atelier Lockfile
44
+
45
+ `atelier init --template private-domain` writes `atelier.lock.json`.
46
+ If this template was copied manually, create the lock before the first commit:
47
+
48
+ ```bash
49
+ atelier lock write --project ./atelier.project.json
50
+ ```
@@ -0,0 +1,28 @@
1
+ {
2
+ "schema": "mnstry.atelier-project-config@v1",
3
+ "name": "tenant-private-domain",
4
+ "roots": {
5
+ "workspace": ".",
6
+ "repoOps": "."
7
+ },
8
+ "graph": {
9
+ "repoAccessPath": "repo-access.v1.json",
10
+ "outputPath": "atelier-output/knowledge.graph.json"
11
+ },
12
+ "projection": {
13
+ "outputRoot": "atelier-output",
14
+ "readinessPath": "atelier-output/atelier-readiness.json"
15
+ },
16
+ "boundaries": {
17
+ "policyPath": "boundary-policy.v1.json",
18
+ "governanceLedgerPath": "governance/repo-boundary-ledger.md",
19
+ "strictNewRepos": true
20
+ },
21
+ "repos": [
22
+ {
23
+ "name": "tenant-private-domain",
24
+ "path": "domain",
25
+ "readBoundary": "private"
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "schema": "mnstry.atelier-boundary-policy@v1",
3
+ "mode": "strict",
4
+ "actors": {
5
+ "owner": {
6
+ "githubLogin": "USER_GITHUB_LOGIN_PLACEHOLDER",
7
+ "gitEmails": ["owner@example.invalid"],
8
+ "privateDomainRepo": "tenant-private-domain"
9
+ }
10
+ },
11
+ "repos": {
12
+ "tenant-private-domain": {
13
+ "kind": "private_domain",
14
+ "ownerActor": "owner",
15
+ "readBoundary": "private",
16
+ "allowedAudiences": ["private", "sensitive", "team", "operator", "staff", "public"],
17
+ "forbiddenAudiences": [],
18
+ "autoCommit": "guarded"
19
+ }
20
+ },
21
+ "promotion": {
22
+ "requiresGitPromote": true,
23
+ "recordsPath": "governance/git-promote-events.jsonl"
24
+ },
25
+ "forbiddenPaths": [
26
+ ".atelier-local/**",
27
+ "atelier.local.json",
28
+ "atelier.workspace.local.json",
29
+ ".mnstry-local/**",
30
+ ".atelier-proposals/**",
31
+ ".atelier-current",
32
+ ".atelier-current.json",
33
+ ".atelier-presence.json",
34
+ ".atelier-nonce",
35
+ ".atelier-capability-grants.json",
36
+ ".atelier-grants/**",
37
+ ".atelier-events.jsonl",
38
+ ".atelier-audit.jsonl",
39
+ ".atelier-audit/**",
40
+ ".atelier-session.json",
41
+ ".atelier-session.jsonl",
42
+ ".atelier-session/**",
43
+ ".atelier-sessions/**",
44
+ ".atelier-support/**",
45
+ ".atelier-support.json",
46
+ "support-bundle*",
47
+ "support-bundles/**",
48
+ "prompts/**",
49
+ "transcripts/**",
50
+ "node_modules/**",
51
+ ".DS_Store"
52
+ ],
53
+ "governanceLedgerPath": "governance/repo-boundary-ledger.md"
54
+ }
@@ -0,0 +1,19 @@
1
+ ---
2
+ title: "Private Domain Seed"
3
+ kg:
4
+ id: "tenant-private-domain:seed"
5
+ type: "domain-note"
6
+ domain: "example-domain"
7
+ lifecycle: "draft"
8
+ status: "seed"
9
+ audience: "private"
10
+ relations: []
11
+ ---
12
+
13
+ # Private Domain Seed
14
+
15
+ Private domain source starts here.
16
+
17
+ Keep only owner-controlled private material in this repository. Promote reviewed
18
+ summaries into shared project repos through ordinary Git review, not through
19
+ browser writes or runtime mutation.
@@ -0,0 +1,29 @@
1
+ .atelier-local/
2
+ atelier.local.json
3
+ atelier.workspace.local.json
4
+ atelier-attestation-key.local.json
5
+ .mnstry-local/
6
+ .atelier-proposals/
7
+ .atelier-current
8
+ .atelier-current.json
9
+ .atelier-presence.json
10
+ .atelier-nonce
11
+ .atelier-capability-grants.json
12
+ .atelier-grants/
13
+ .atelier-events.jsonl
14
+ .atelier-audit.jsonl
15
+ .atelier-audit/
16
+ .atelier-session.json
17
+ .atelier-session.jsonl
18
+ .atelier-session/
19
+ .atelier-sessions/
20
+ .atelier-support/
21
+ .atelier-support.json
22
+ atelier-output/
23
+ support-bundle*
24
+ support-bundles/
25
+ transcripts/
26
+ prompts/
27
+ node_modules/
28
+ npm-debug.log*
29
+ .DS_Store
@@ -0,0 +1,4 @@
1
+ # Repo Boundary Governance Ledger
2
+
3
+ This private domain workspace is strict. Private and sensitive material belongs
4
+ here unless intentionally promoted into a shared repo through `git.promote`.
@@ -0,0 +1,9 @@
1
+ {
2
+ "schema": "mnstry.repo-access@v1",
3
+ "defaultReadBoundary": "private",
4
+ "repos": {
5
+ "tenant-private-domain": {
6
+ "readBoundary": "private"
7
+ }
8
+ }
9
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "version": "0.0.1",
3
+ "configurations": [
4
+ {
5
+ "name": "atelier",
6
+ "runtimeExecutable": "npx",
7
+ "runtimeArgs": ["atelier", "server"],
8
+ "port": 8137,
9
+ "autoPort": true
10
+ }
11
+ ]
12
+ }
@@ -0,0 +1,51 @@
1
+ # Shared Project Workspace
2
+
3
+ Starter for shared project repositories.
4
+
5
+ Default example:
6
+
7
+ - Project: `project-alpha`
8
+ - Shared repo: `github.com/<org>/project-alpha`
9
+ - Example collaborator: `Owner`
10
+ - Example collaborator login placeholder: `USER_GITHUB_LOGIN_PLACEHOLDER`
11
+
12
+ `USER_GITHUB_LOGIN_PLACEHOLDER` is a placeholder, not a real account. Keep
13
+ committed starter files placeholder-only; set a real login or email only in the
14
+ copied private workspace.
15
+
16
+ ## Boundary
17
+
18
+ Shared project repos are readable by the project group. Do not place
19
+ private or sensitive personal domain source here. Use a private domain repo per
20
+ user for that material.
21
+
22
+ ## Tracked Config And Local Overlay
23
+
24
+ Track `atelier.project.json`, `repo-access.v1.json`, `boundary-policy.v1.json`,
25
+ `atelier.lock.json`, governance files, and source documents. Ignore local
26
+ operator state such as `atelier.local.json`, `atelier.workspace.local.json`,
27
+ `.atelier-local/`, proposals/current/presence/nonce/grants/audit/session/support
28
+ state, support bundles, transcripts, prompts, generated projections,
29
+ `node_modules/`, and `.DS_Store`.
30
+
31
+ ## Local Commands
32
+
33
+ ```bash
34
+ atelier graph --project ./atelier.project.json
35
+ atelier project --project ./atelier.project.json
36
+ atelier readiness --project ./atelier.project.json
37
+ atelier lock check --project ./atelier.project.json
38
+ atelier upgrade --dry-run --project ./atelier.project.json
39
+ ```
40
+
41
+ Atelier performs no telemetry, cloud sync, runtime mutation, or direct browser
42
+ writes for this preview.
43
+
44
+ ## Atelier Lockfile
45
+
46
+ `atelier init --template shared-project` writes `atelier.lock.json`.
47
+ If this template was copied manually, create the lock before the first commit:
48
+
49
+ ```bash
50
+ atelier lock write --project ./atelier.project.json
51
+ ```