@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
package/CHANGELOG.md ADDED
@@ -0,0 +1,383 @@
1
+ # Changelog
2
+
3
+ ## 0.2.0-alpha.1
4
+
5
+ First release published to the npm registry, under `@mnstry/atelier` with
6
+ public access. Prior versions were installable only from the repository.
7
+
8
+ - **Removed `docs/format-ontologies.md`.** It documented mnstry.org's
9
+ editorial composition system rather than the Atelier, and named a private
10
+ repository, an unpublished package with a version pin, and dated internal
11
+ review decisions. Nothing referenced it. No private repository content was
12
+ exposed by it.
13
+ - **A request can no longer end the local sidecar.** An unusable proposal id
14
+ or an unreadable proposal file used to throw out of the request handler and
15
+ exit the process; both are now answered with a response, and a busy port is
16
+ reported instead of crashing. Regression tests cover both shapes.
17
+ - **Claims narrowed to what the gates enforce.** `boundary check` and `doctor`
18
+ may call the `gh` CLI to resolve a GitHub login when no actor is configured;
19
+ the egress gate scans `src/`, `bin/`, `scripts/` and `examples/` and does not
20
+ model `child_process`; the compatibility differ does not resolve `$ref`
21
+ pointers. All three are stated in the README rather than implied away.
22
+ - **Install path corrected.** The registry is now the channel of record.
23
+ `v0.2.0-alpha.0` remains the contract epoch marker that
24
+ `contracts/compat-baseline.json` pins to, and is not an install target.
25
+ - **Agent skills no longer suggest `npx atelier`**, which resolves to an
26
+ unrelated third-party package on npm.
27
+ - **Removed the undocumented bare `mnstry` bin alias.** The package installs
28
+ `atelier` (primary) and `mnstry-atelier` (legacy alias). It no longer claims
29
+ the bare `mnstry` command name, which no documentation mentioned and nothing
30
+ used, and which belongs to whatever MNSTRY ships under that name in the
31
+ future rather than to this authoring kit.
32
+
33
+ This release also carries the open-source readiness work that landed between
34
+ the epoch tag and the public flip, previously listed as unreleased:
35
+
36
+ - `SECURITY.md` states the vulnerability reporting
37
+ channel, what counts as a vulnerability against this package's claims
38
+ (egress, boundary guard, disclosure scanners, audience/visibility,
39
+ attestation, upgrade, contract compatibility), and what is deliberately out
40
+ of scope — the loopback sidecar's on-host trust boundary is the design, not
41
+ a finding. It ships in the tarball alongside `NOTICE` and `TRADEMARKS.md`,
42
+ so a consumer who only has the package still has a reporting path.
43
+ - `CODE_OF_CONDUCT.md` (Contributor Covenant 2.1) governs conduct;
44
+ `CONTRIBUTING.md` continues to govern contributions, and boundary
45
+ violations stay an operational matter handled there rather than a conduct
46
+ dispute.
47
+ - The DCO sign-off that `CONTRIBUTING.md` requires is now enforced by a `dco`
48
+ workflow instead of being documentation only. Merge commits are exempt —
49
+ a contributor cannot sign a merge a maintainer made.
50
+ - Issue forms and a pull-request template carry the disclosure rules to the
51
+ point of submission: no client material, no private methodology, no key
52
+ material, no absolute home paths. The issue chooser routes vulnerabilities
53
+ to private reporting and routes contract, dependency, guard, and network
54
+ changes to the conversation-first proposal form. Blank issues are off.
55
+ - Dependabot watches npm and the SHA-pinned actions weekly. Its pull requests
56
+ receive Dependabot-scoped secrets rather than Actions secrets, so the
57
+ denylist must also be stored as a Dependabot secret or every Dependabot
58
+ pull request blocks on `secret-sweep` exactly as a fork does.
59
+
60
+ ## 0.2.0-alpha.0
61
+
62
+ - **Breaking:** the internal analysis-engine codename is fully removed from
63
+ the contract surface. The adapter contract is `analysis-adapter@v1`
64
+ (schema const `analysis-adapter-manifest@v1`, provider const `analysis`,
65
+ output root `.mnstry/atelier/analysis`); the lock and migration schemas
66
+ say `analysisExecution`; the readiness contract's section and the claim
67
+ proposer enum value are `analysis`; the package export is
68
+ `./analysis/adapter`; the CLI command is `analysis` (alias `analyze`).
69
+ The `v0.2.0-alpha.0` baseline tag is re-cut at this commit — it was hours
70
+ old, unpublished, and had no external consumer.
71
+ - **Security:** an independent external audit deleted both enforcement sites
72
+ of the public-projectability boundary with every gate green — the invalid
73
+ fixtures named for the property fail earlier, at resolution, so the branch
74
+ had no witness. Resolved-private and resolved-sensitive fixtures now assert
75
+ the registered `is not public-projectable` reason, and the export path uses
76
+ the tested projection-policy verdict instead of a near-copy that could
77
+ drift.
78
+ - **Security:** the served CSP authorized two Google Fonts origins nothing in
79
+ the kit uses. Workspace HTML is author-controlled, so the dead permission
80
+ was an exfiltration channel; it is removed and the security test refuses
81
+ any external origin in the policy.
82
+ - The egress gate detects the shapes the same audit showed it missed —
83
+ `https.get`, `http2.connect`, dynamic import of a URL, beacons, XHR/Image,
84
+ third-party HTTP client imports, CSP directives naming external origins,
85
+ and markup resource attributes — and its scan-path list names directories
86
+ that exist (eight of eleven were `src/` subdirectories listed as top level,
87
+ silently scanning nothing). Every previously-missed probe is pinned in a
88
+ permanent test.
89
+ - `LICENSE` ships the full Apache-2.0 text instead of the 18-line short-form
90
+ notice, so the section 6 that `TRADEMARKS.md` cites exists. CI actions are
91
+ pinned to commit SHAs, the `fast-uri` advisory is closed with an override,
92
+ and `portableText` scrubs Linux and Windows home paths, not only macOS.
93
+ - The `typecheck` script is renamed `syntax:check` — it runs `node --check`
94
+ and never was a type system. The quickstart's boundary check step works on
95
+ the sample workspace it creates, the fresh-clone denylist skip is
96
+ documented, and the unread `#atelier-data` script block is gone.
97
+ - Every attacker-reachable label is sanitized, including the key path: a key
98
+ file whose *name* carried an escape sequence could erase the key-identity
99
+ line and rewrite it, and an over-long basename wrapped the header so the
100
+ true provenance landed on a later visual line.
101
+ - The key-material patterns match material rather than prose. A document may
102
+ discuss `privateKeyJwk` or show a redacted example and still be attachable
103
+ to a feedback report; the scalar floor is the length of a real key, so a
104
+ short identifier under a member named `d` no longer fires. A JSON
105
+ attachment is scanned as the structure it decodes to as well as the text it
106
+ is, so escaped member names cannot smuggle a key past the scan.
107
+ - **Security:** the widened private-key pattern repeated a repeated group,
108
+ which is quadratic — 256 KiB of header-shaped text took about ten seconds
109
+ to reject, reachable through `--message`, a capped `--context`, and the
110
+ release audit. The repetition is bounded at four algorithm words, which
111
+ still matches every real header, and a timing guard pins it.
112
+ - **Security:** JWK private key material had no coverage anywhere, though it
113
+ is the only key format the kit writes. The private scalar and the
114
+ `privateKeyJwk` wrapper are now banned values, the repo sweep looks for the
115
+ scalar, and the release audit rejects any packed JSON that carries one —
116
+ not only announcements documents.
117
+ - Attacker-controlled labels are sanitized before they reach a terminal. A
118
+ keyId carrying an escape sequence could erase the `!! UNVERIFIED` warning
119
+ above it and print a forged listing in its place; keyIds, algorithms, and
120
+ announcement filenames are now capped and stripped of control characters.
121
+ - `announcements verify` and `show` name the key that vouched for a document,
122
+ as `list` already did — `show` prints it before any attacker-authored
123
+ content, and `verify --json` carries the key path, keyId, and whether the
124
+ anchor was explicit.
125
+ - `atelier feedback` refuses a `--context` that is not a regular file (a FIFO
126
+ or character device never returned from the read, so the size cap could not
127
+ fire) and bounds `--message` the way file inputs were already bounded.
128
+ - The release audit decodes packed files strictly: a NUL-free binary used to
129
+ scan as harmless text through a lossy decode while still carrying
130
+ recoverable content.
131
+ - **Security:** the private-key disclosure pattern matched only the bare
132
+ PKCS#8 header, so an ssh-keygen OPENSSH private key — and the RSA, EC, DSA,
133
+ ENCRYPTED, and PGP block headers — passed the support-bundle scan, the
134
+ repo-wide sweep, and the tarball audit untouched. It now matches any PEM
135
+ private-key header. The banned-value email pattern also backtracked for
136
+ about a minute on large non-email input and is bounded to the RFC 5321
137
+ local-part and domain limits.
138
+ - `atelier feedback create` refuses `--context` and `--message-file` input
139
+ over 262144 bytes or that is not valid UTF-8 rather than embedding it, and
140
+ warns when the report lands where `.atelier-local/` is not git-ignored. The
141
+ success message states that the scan is a backstop, not clearance to share.
142
+ - `atelier announcements list` takes its trust anchor from the committed
143
+ MNSTRY key, never from the directory being listed: `--dir` relocates only
144
+ where documents are read. Every run names the key and keyId it verified
145
+ against. A tree carrying its own key can no longer present forged
146
+ announcements as verified.
147
+ - A git-ignored `.kg.json` sidecar can no longer enroll a file in the census
148
+ or describe one. Membership is a function of tracked state alone, so a
149
+ clean checkout and a working tree build the same graph.
150
+ - The announcements documents and public key now ship in the package, so
151
+ `announcements verify` works for consumers; the release audit asserts the
152
+ key is present, rejects any announcements document carrying a private key
153
+ member, and refuses to pack a binary file it cannot content-scan.
154
+ - The knowledge-graph census is now sidecar-first: a `.kg.json` sidecar
155
+ attaches any sibling file — JSON, YAML, CSV, binaries — as a first-class
156
+ node with its own audience, without atelier ever parsing the foreign
157
+ format. Document extensions keep their existing semantics, and non-Markdown
158
+ documents still fail closed without a sidecar.
159
+ - Adds `atelier feedback` — a local, never-sent feedback report on the
160
+ support-bundle chassis: assembled under ignored `.atelier-local/feedback/`,
161
+ scanned against the banned key and value patterns before writing, refused
162
+ on any match. The kit has no send path; sharing is always the user's act.
163
+ - Adds the signed announcements channel: pull-only JSON documents under
164
+ `announcements/`, signed with the published MNSTRY announcements key and
165
+ verified by `atelier announcements list|verify|show`. The kit never
166
+ fetches them; receiving an announcement is the `git pull` you chose to
167
+ run. Generic detached document signing joins `@mnstry/atelier/attestation`.
168
+ - `TRADEMARKS.md` gains the quiet-software clause (no commercially motivated
169
+ interruptions for anything carrying the MNSTRY marks, MNSTRY bound to the same
170
+ standard) and the applications attribution rule for apps without a CLI.
171
+ A `NOTICE` file ships in the tarball; Apache-2.0 section 4(d) makes its
172
+ reproduction a license obligation in every derivative redistribution.
173
+ - **Breaking:** the `atelier-export@v1` runtime owner vocabulary is now
174
+ vendor-neutral. The closed `runtimeOwnerName` enum, the `RUNTIME_OWNERS`
175
+ constant, the bundled readiness protocols, and the fixtures all move to the
176
+ domain terms `identity`, `catalog`, `commitments`, `events`, `projection`,
177
+ `consent`, `messaging`, `providers`, `audit` (see `docs/ontology.md`).
178
+ Documents and validators from earlier tags do not interoperate across this
179
+ change; regenerate exports rather than hand-editing owner values.
180
+ - **Breaking:** `protocol.outputs` on bundled readiness protocols is now the
181
+ contract's object shape (`{ runSchema, artifacts }`) instead of an informal
182
+ array of artifact slugs, and the undeclared `outputArtifacts` key is gone.
183
+ All twelve bundled protocols now validate against
184
+ `atelier-readiness-protocol@v1`.
185
+ - **Breaking:** every document contract enters the contract-stability epoch:
186
+ each schema declares an optional root `contractVersion` and a reserved
187
+ optional `ext` extension container on every closed object, and bundled
188
+ readiness protocols emit `contractVersion: "1.0.0"`. Validators pinned to
189
+ earlier tags reject documents that carry the new fields. See
190
+ `docs/contract-stability.md`.
191
+ - **Breaking:** the `atelier-claim@v1` provider enum gains
192
+ `atelier-readiness`, so claims emitted by readiness runs validate against
193
+ the standalone claim contract. Claim validators pinned to earlier tags
194
+ reject the new provider.
195
+ - **Breaking:** the analysis adapter manifest schema const is now
196
+ `analysis-adapter-manifest@v1` (was
197
+ `mnstry.atelier-analysis-adapter-manifest@v1`), matching the published
198
+ contract and fixtures. Local manifests emitted before this change must
199
+ update their `schema` field.
200
+ - **Breaking:** boundary promote events are now recorded with schema
201
+ `git-promote-event@v1` (was `mnstry.git-promote-event@v1`), matching the
202
+ published contract. Previously recorded ledger lines carrying the old
203
+ const are not rewritten.
204
+ - **Breaking:** the agent-harness context envelope schema const is now
205
+ `atelier-context@v1` (was `mnstry.atelier-context@v1`), matching the local
206
+ sidecar contract.
207
+ - **Breaking:** the alignment projection ships no default root-graph name
208
+ list; the default is empty and workspaces supply their own via
209
+ `sduiMap.rootGraphs` in project configuration. Nodes previously classified
210
+ by the built-in name list no longer match without configuration.
211
+ - **Breaking:** every command that resolves a project now
212
+ validates loaded config files fail-closed. Unknown keys that earlier
213
+ releases silently ignored are rejected, `ext` must be an object whose
214
+ members are namespaced objects, and the closed sub-objects (`roots`,
215
+ `graph`, `projection`, `alignment`, `runtime`, `boundaries`, `setup`)
216
+ reject additional properties. A config with a misspelled or stray key now
217
+ fails at CLI entry with the offending key named, instead of running with
218
+ that key quietly dropped.
219
+ - Adds `atelier-attestation@v1`, a contract for recording admission
220
+ decisions: issuer, attested payload with an RFC 8785 (JCS) + SHA-256
221
+ payload hash, an admission-scoped verdict (a conformance-scoped verdict is
222
+ structurally unexpressible), and a required-but-nullable signature where
223
+ null means advisory and non-authoritative. See `docs/attestation.md`.
224
+ - Adds the contract compatibility gate: `scripts/check-contract-compat.mjs`
225
+ (`npm run contract:compat`) validates the current fixture and
226
+ generated-document corpus against validators from the baseline tag recorded
227
+ in `contracts/compat-baseline.json`. The gate is inert until the first
228
+ post-epoch tag is recorded as the baseline.
229
+ - Adds `docs/ontology.md` — the public export vocabulary: the nine runtime
230
+ owners, the object classes and collections they govern, the six runtime
231
+ targets, and the audience/visibility boundary — and
232
+ `docs/contract-stability.md` — the stability epoch, `contractVersion`,
233
+ `ext` and must-ignore rules, the widening ban, the deprecation policy, and
234
+ the compatibility gate.
235
+ - Expunges client-zero-identifying names from tests, fixtures, docs, and the
236
+ release audit. Name-based scrub patterns now load from the gitignored
237
+ `release-denylist.local.json`; when that file is absent the audit warns and
238
+ applies structural checks only, and the readiness-pack neutrality test skips
239
+ the name assertions.
240
+
241
+ - Staged boundary guard now separates boundary-field *initialization* from
242
+ *change*. A field added with no prior value, set to a non-disclosing default,
243
+ commits without a review marker; widening, narrowing, and removal still
244
+ require one. This removes the deadlock where the kit's own front-matter
245
+ tooling produced changes the kit's own gate refused.
246
+ - `semantic-field-change-needs-review` findings now name the file and the exact
247
+ field transition instead of failing a whole repo with one opaque message.
248
+ - Review markers are now scoped to the file they appear in. A marker in a
249
+ sibling file no longer approves an unrelated boundary change.
250
+ - Graph and sidecar walks now skip git-ignored paths via one batched
251
+ `git ls-files --others --ignored --exclude-standard --directory` per repo
252
+ root, so committed graph artifacts describe the repository rather than one
253
+ machine's working tree. Multi-machine workspaces no longer churn.
254
+ - Adds `test/graph-determinism.test.mjs`, a mutation-tested regression guard
255
+ that builds twice with git-ignored junk planted in between and fails on any
256
+ byte change to a committed artifact.
257
+ - Adds the reserved repo kind `external` for git folders a workspace
258
+ acknowledges but does not manage. External repos imply no read boundary, are
259
+ excluded from graph walking, sidecar requirements, projection, the staged
260
+ guard, and hook installation, and must not appear in repo-access or boundary
261
+ policy. Undeclared git folders remain an error, and the message now names
262
+ `external` as the resolution.
263
+ - `atelier graph` prints the remote host of each external repo so a workspace
264
+ surfaces where its unmanaged folders push.
265
+ - **Breaking:** `fileClasses` is now required in the kit manifest. Every file
266
+ the kit ships or generates is classified `source`, `generated-projection`, or
267
+ `distributed-runtime-copy`, and a runtime copy must declare the repo role in
268
+ which it is canonical. Adds `classifyPath(path, { repoRole })` so sync loops,
269
+ merge policies, upgrade tooling, and CI guards read one declaration instead of
270
+ each keeping a list that drifts.
271
+ - The graph walker's generated-file skip list and the boundary policy's glob
272
+ matcher are now derived from shared modules rather than restated inline, with
273
+ a drift test asserting the kit keeps no second copy of either.
274
+ - Repo entries accept `identity` (provider + stable id) and `aliases` (former
275
+ names), so a repository survives a rename. Adds
276
+ `resolveRepoIdentity(cloneDir)`, which resolves from the provider's stable id,
277
+ then a recorded identity, then declared aliases — and never from a root commit
278
+ or a folder name.
279
+ - `atelier doctor` now audits repo identity: upstream renames, stale config
280
+ names, deprecated aliases, clones that are secretly the same repository, and
281
+ repos with no recorded id or no origin remote.
282
+ - Adds boundary-policy `contentRules` and `contentRuleExceptions`. Rules judge
283
+ added lines and added file paths rather than the whole tree, so a pre-existing
284
+ accepted usage no longer blocks every push of everything in a repo. Exceptions
285
+ are reviewable policy config — per repo, per path, per rule, each requiring a
286
+ reason — instead of hardcoded pathspecs inside a fleet-wide guard script.
287
+ Blanket wildcards are rejected.
288
+ - Adds `atelier boundary push-check`, which reads pre-push ref updates from
289
+ stdin and judges only the pushed range (new branches diff against the empty
290
+ tree), and `atelier boundary audit`, the whole-tree view that reports without
291
+ blocking. The installed `pre-push` hook now uses `push-check`.
292
+ - The push guard fails closed when it cannot identify the repo it is running in,
293
+ and matches its repo through symlinked paths and subdirectories.
294
+ - Adds extension packs. A project declares namespaced protocol packs under
295
+ `ext["mnstry.atelier"].extensionPacks`, and the loader admits each one
296
+ through a fixed fail-closed pipeline: entry shape, enablement, schema
297
+ validation, identity, reserved-namespace rules, fixture and protocol path
298
+ guards confined to the pack directory, the nine-point protocol safety
299
+ posture, collision rules against the bundled pack, and lock pin-and-verify.
300
+ Enablement is disable-only: the machine-local overlay can switch a declared
301
+ pack off but can never switch an undeclared one on. Protocol resolution runs
302
+ through an explicit registry — bundled protocols keep resolving by id, slug,
303
+ or namespaced id, while pack protocols resolve by full namespaced id only,
304
+ so a pack can never shadow or squat a bundled slug.
305
+ - Adds `atelier extension-pack validate` and `atelier extension-pack list`,
306
+ which report per pack with version, resolved path, digest, protocol count,
307
+ and lock status. Exit 0 means every enabled pack loaded clean, 1 that one
308
+ failed, 2 a usage or project resolution error.
309
+ - Readiness composes pack protocols alongside the bundled twelve.
310
+ `readiness protocols --project`, `readiness journey`, and `readiness run`
311
+ resolve pack protocols through the project registry, and the tenant packet
312
+ carries a generic per-pack contribution under `ext` built from run fields
313
+ alone, where only `required`-gate pack protocols can block export and
314
+ `advisory` ones report without blocking.
315
+ - `atelier lock write` and `lock check` now cover extension packs. The lock
316
+ records each pack's version and content digest, `lock check` reports drift
317
+ in both directions (declared but unlocked, locked but changed), and the new
318
+ `sync-extension-packs` upgrade migration re-verifies and re-pins declared
319
+ packs. Locking loads packs in throwing mode, so a broken pack cannot be
320
+ recorded.
321
+ - Adds attestation signing: `atelier attestation hash|sign|verify|keygen`,
322
+ with RFC 8785 (JCS) canonicalization, sha-256 payload hashes, and ed25519 or
323
+ es256 keys. `keygen` writes the signing key file at mode 0600, refuses to
324
+ overwrite an existing one, and prints only the public key document; the
325
+ default signing key file is gitignored. Adds `TRADEMARKS.md`, the normative
326
+ home of the required attribution string, the naming rules for distributions,
327
+ the sanctioned compatibility claim, and the reservation of "certified" and
328
+ "admitted" to holders of a verifying signed attestation. `TRADEMARKS.md`
329
+ ships in the published tarball and the release audit fails without it.
330
+ - The workspace projection reads `ext["mnstry.atelier"].distribution` for
331
+ branding: `name` and `eyebrow` feed the title and eyebrow line, and `theme`
332
+ overrides five CSS custom properties. Theme values must be hex colors —
333
+ they are interpolated into a style block, so a non-hex value fails the build
334
+ rather than reaching the page. Default output is unchanged, and the
335
+ "MNSTRY Tenant Readiness" heading stays as it is because it names the
336
+ bundled pack.
337
+ - Adds the `distribution` workspace template
338
+ (`atelier init --template distribution`), which scaffolds a workspace
339
+ carrying the branding block and the attribution line. Fixes a bug where an
340
+ unrecognized `--template` silently produced a blank scaffold: init now exits
341
+ 1, names the valid templates, and writes nothing. The blank scaffold is
342
+ reached by omitting `--template`.
343
+ - Adds `atelier distribution check`, which verifies a distribution package's
344
+ attribution markers mechanically: the root `README.md` must contain the
345
+ exact byte string `powered by MNSTRY Atelier` (blocking), and each
346
+ extension-pack manifest is reported for the advisory
347
+ `ext["mnstry.atelier/attribution"]` key. Its messages point at
348
+ `TRADEMARKS.md` and `docs/attestation.md` rather than restating policy.
349
+ - Adds the exported CLI entry `@mnstry/atelier/cli`. `runCli({ argv, brand })`
350
+ returns an exit code instead of calling `process.exit`, so a distribution
351
+ wrapper is a brand object and one line of dispatch. Attribution is derived,
352
+ not configurable: `runCli` renders `powered by MNSTRY Atelier <version>` in
353
+ `--version` and help output whenever the brand is not the default, and the
354
+ brand object has no field that could omit or reword it. Default-brand output
355
+ is byte-identical apart from the new commands listed in help.
356
+ - Adds `docs/distributions.md` — the three-tier model, the invariant that a
357
+ distribution adds and rebrands but never alters root semantics, the three
358
+ attribution surfaces, a build walkthrough, and the
359
+ `ext["mnstry.atelier"].distribution` field reference — plus
360
+ `examples/loomworks-studio/`, a complete reference distribution exercised by
361
+ the new `distribution:smoke` publish gate.
362
+
363
+ ## 0.1.0-alpha.2
364
+
365
+ - Adds bundled `mnstry-readiness-pack@v1` with twelve claim-first readiness
366
+ protocols for MNSTRY tenant preparation.
367
+ - Adds readiness protocol and readiness run contracts with AJV fixtures.
368
+ - Adds `atelier readiness protocols`, `journey`, `run`, `packet`, and
369
+ `export --dry-run` commands.
370
+ - Adds tenant-readiness journey data to generated local projections.
371
+ - Adds neutral Codex and Claude readiness skill wrappers.
372
+ - Keeps readiness output local, proposal-first, non-importing, non-mutating,
373
+ no-send, and free of project-specific package content.
374
+
375
+ ## 0.1.0-alpha.0
376
+
377
+ - Introduces the alpha `@mnstry/atelier` package.
378
+ - Adds the `mnstry atelier ...` and `mnstry-atelier ...` local CLI entrypoints.
379
+ - Adds `atelier-export@v1` schema validation.
380
+ - Adds dry-run validation for export artifacts.
381
+ - Adds fictional sample fixtures and fail-closed negative fixtures.
382
+ - Keeps runtime import, runtime mutation, telemetry, and external egress out of
383
+ scope.
package/LICENSE ADDED
@@ -0,0 +1,202 @@
1
+
2
+ Apache License
3
+ Version 2.0, January 2004
4
+ http://www.apache.org/licenses/
5
+
6
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
+
8
+ 1. Definitions.
9
+
10
+ "License" shall mean the terms and conditions for use, reproduction,
11
+ and distribution as defined by Sections 1 through 9 of this document.
12
+
13
+ "Licensor" shall mean the copyright owner or entity authorized by
14
+ the copyright owner that is granting the License.
15
+
16
+ "Legal Entity" shall mean the union of the acting entity and all
17
+ other entities that control, are controlled by, or are under common
18
+ control with that entity. For the purposes of this definition,
19
+ "control" means (i) the power, direct or indirect, to cause the
20
+ direction or management of such entity, whether by contract or
21
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
+ outstanding shares, or (iii) beneficial ownership of such entity.
23
+
24
+ "You" (or "Your") shall mean an individual or Legal Entity
25
+ exercising permissions granted by this License.
26
+
27
+ "Source" form shall mean the preferred form for making modifications,
28
+ including but not limited to software source code, documentation
29
+ source, and configuration files.
30
+
31
+ "Object" form shall mean any form resulting from mechanical
32
+ transformation or translation of a Source form, including but
33
+ not limited to compiled object code, generated documentation,
34
+ and conversions to other media types.
35
+
36
+ "Work" shall mean the work of authorship, whether in Source or
37
+ Object form, made available under the License, as indicated by a
38
+ copyright notice that is included in or attached to the work
39
+ (an example is provided in the Appendix below).
40
+
41
+ "Derivative Works" shall mean any work, whether in Source or Object
42
+ form, that is based on (or derived from) the Work and for which the
43
+ editorial revisions, annotations, elaborations, or other modifications
44
+ represent, as a whole, an original work of authorship. For the purposes
45
+ of this License, Derivative Works shall not include works that remain
46
+ separable from, or merely link (or bind by name) to the interfaces of,
47
+ the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including
50
+ the original version of the Work and any modifications or additions
51
+ to that Work or Derivative Works thereof, that is intentionally
52
+ submitted to Licensor for inclusion in the Work by the copyright owner
53
+ or by an individual or Legal Entity authorized to submit on behalf of
54
+ the copyright owner. For the purposes of this definition, "submitted"
55
+ means any form of electronic, verbal, or written communication sent
56
+ to the Licensor or its representatives, including but not limited to
57
+ communication on electronic mailing lists, source code control systems,
58
+ and issue tracking systems that are managed by, or on behalf of, the
59
+ Licensor for the purpose of discussing and improving the Work, but
60
+ excluding communication that is conspicuously marked or otherwise
61
+ designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+ "Contributor" shall mean Licensor and any individual or Legal Entity
64
+ on behalf of whom a Contribution has been received by Licensor and
65
+ subsequently incorporated within the Work.
66
+
67
+ 2. Grant of Copyright License. Subject to the terms and conditions of
68
+ this License, each Contributor hereby grants to You a perpetual,
69
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
+ copyright license to reproduce, prepare Derivative Works of,
71
+ publicly display, publicly perform, sublicense, and distribute the
72
+ Work and such Derivative Works in Source or Object form.
73
+
74
+ 3. Grant of Patent License. Subject to the terms and conditions of
75
+ this License, each Contributor hereby grants to You a perpetual,
76
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
+ (except as stated in this section) patent license to make, have made,
78
+ use, offer to sell, sell, import, and otherwise transfer the Work,
79
+ where such license applies only to those patent claims licensable
80
+ by such Contributor that are necessarily infringed by their
81
+ Contribution(s) alone or by combination of their Contribution(s)
82
+ with the Work to which such Contribution(s) was submitted. If You
83
+ institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+ or a Contribution incorporated within the Work constitutes direct
86
+ or contributory patent infringement, then any patent licenses
87
+ granted to You under this License for that Work shall terminate
88
+ as of the date such litigation is filed.
89
+
90
+ 4. Redistribution. You may reproduce and distribute copies of the
91
+ Work or Derivative Works thereof in any medium, with or without
92
+ modifications, and in Source or Object form, provided that You
93
+ meet the following conditions:
94
+
95
+ (a) You must give any other recipients of the Work or
96
+ Derivative Works a copy of this License; and
97
+
98
+ (b) You must cause any modified files to carry prominent notices
99
+ stating that You changed the files; and
100
+
101
+ (c) You must retain, in the Source form of any Derivative Works
102
+ that You distribute, all copyright, patent, trademark, and
103
+ attribution notices from the Source form of the Work,
104
+ excluding those notices that do not pertain to any part of
105
+ the Derivative Works; and
106
+
107
+ (d) If the Work includes a "NOTICE" text file as part of its
108
+ distribution, then any Derivative Works that You distribute must
109
+ include a readable copy of the attribution notices contained
110
+ within such NOTICE file, excluding those notices that do not
111
+ pertain to any part of the Derivative Works, in at least one
112
+ of the following places: within a NOTICE text file distributed
113
+ as part of the Derivative Works; within the Source form or
114
+ documentation, if provided along with the Derivative Works; or,
115
+ within a display generated by the Derivative Works, if and
116
+ wherever such third-party notices normally appear. The contents
117
+ of the NOTICE file are for informational purposes only and
118
+ do not modify the License. You may add Your own attribution
119
+ notices within Derivative Works that You distribute, alongside
120
+ or as an addendum to the NOTICE text from the Work, provided
121
+ that such additional attribution notices cannot be construed
122
+ as modifying the License.
123
+
124
+ You may add Your own copyright statement to Your modifications and
125
+ may provide additional or different license terms and conditions
126
+ for use, reproduction, or distribution of Your modifications, or
127
+ for any such Derivative Works as a whole, provided Your use,
128
+ reproduction, and distribution of the Work otherwise complies with
129
+ the conditions stated in this License.
130
+
131
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
132
+ any Contribution intentionally submitted for inclusion in the Work
133
+ by You to the Licensor shall be under the terms and conditions of
134
+ this License, without any additional terms or conditions.
135
+ Notwithstanding the above, nothing herein shall supersede or modify
136
+ the terms of any separate license agreement you may have executed
137
+ with Licensor regarding such Contributions.
138
+
139
+ 6. Trademarks. This License does not grant permission to use the trade
140
+ names, trademarks, service marks, or product names of the Licensor,
141
+ except as required for reasonable and customary use in describing the
142
+ origin of the Work and reproducing the content of the NOTICE file.
143
+
144
+ 7. Disclaimer of Warranty. Unless required by applicable law or
145
+ agreed to in writing, Licensor provides the Work (and each
146
+ Contributor provides its Contributions) on an "AS IS" BASIS,
147
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
+ implied, including, without limitation, any warranties or conditions
149
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
+ PARTICULAR PURPOSE. You are solely responsible for determining the
151
+ appropriateness of using or redistributing the Work and assume any
152
+ risks associated with Your exercise of permissions under this License.
153
+
154
+ 8. Limitation of Liability. In no event and under no legal theory,
155
+ whether in tort (including negligence), contract, or otherwise,
156
+ unless required by applicable law (such as deliberate and grossly
157
+ negligent acts) or agreed to in writing, shall any Contributor be
158
+ liable to You for damages, including any direct, indirect, special,
159
+ incidental, or consequential damages of any character arising as a
160
+ result of this License or out of the use or inability to use the
161
+ Work (including but not limited to damages for loss of goodwill,
162
+ work stoppage, computer failure or malfunction, or any and all
163
+ other commercial damages or losses), even if such Contributor
164
+ has been advised of the possibility of such damages.
165
+
166
+ 9. Accepting Warranty or Additional Liability. While redistributing
167
+ the Work or Derivative Works thereof, You may choose to offer,
168
+ and charge a fee for, acceptance of support, warranty, indemnity,
169
+ or other liability obligations and/or rights consistent with this
170
+ License. However, in accepting such obligations, You may act only
171
+ on Your own behalf and on Your sole responsibility, not on behalf
172
+ of any other Contributor, and only if You agree to indemnify,
173
+ defend, and hold each Contributor harmless for any liability
174
+ incurred by, or claims asserted against, such Contributor by reason
175
+ of your accepting any such warranty or additional liability.
176
+
177
+ END OF TERMS AND CONDITIONS
178
+
179
+ APPENDIX: How to apply the Apache License to your work.
180
+
181
+ To apply the Apache License to your work, attach the following
182
+ boilerplate notice, with the fields enclosed by brackets "[]"
183
+ replaced with your own identifying information. (Don't include
184
+ the brackets!) The text should be enclosed in the appropriate
185
+ comment syntax for the file format. We also recommend that a
186
+ file or class name and description of purpose be included on the
187
+ same "printed page" as the copyright notice for easier
188
+ identification within third-party archives.
189
+
190
+ Copyright 2026 MNSTRY
191
+
192
+ Licensed under the Apache License, Version 2.0 (the "License");
193
+ you may not use this file except in compliance with the License.
194
+ You may obtain a copy of the License at
195
+
196
+ http://www.apache.org/licenses/LICENSE-2.0
197
+
198
+ Unless required by applicable law or agreed to in writing, software
199
+ distributed under the License is distributed on an "AS IS" BASIS,
200
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
+ See the License for the specific language governing permissions and
202
+ limitations under the License.
package/NOTICE ADDED
@@ -0,0 +1,5 @@
1
+ MNSTRY Atelier
2
+ Copyright 2026 MNSTRY
3
+
4
+ This product includes MNSTRY Atelier (https://github.com/MNSTRY/atelier),
5
+ developed by MNSTRY.