@mnstry/atelier 0.2.0-alpha.1 → 0.2.0-alpha.10

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 (414) hide show
  1. package/CHANGELOG.md +372 -0
  2. package/README.md +402 -205
  3. package/SECURITY.md +6 -1
  4. package/contracts/atelier-adoption-policy.v1.schema.json +49 -0
  5. package/contracts/atelier-coauthor.v1.schema.json +163 -0
  6. package/contracts/atelier-decision-request.v1.schema.json +476 -0
  7. package/contracts/atelier-decision-result.v1.schema.json +500 -0
  8. package/contracts/atelier-guide.v1.schema.json +227 -0
  9. package/contracts/atelier-intake.v1.schema.json +151 -0
  10. package/contracts/atelier-migration.v2.schema.json +61 -0
  11. package/contracts/atelier-obsidian-acceptance-receipt.v1.schema.json +211 -0
  12. package/contracts/atelier-obsidian-apply-policy.v1.schema.json +298 -0
  13. package/contracts/atelier-obsidian-corpus-profile.v1.schema.json +98 -0
  14. package/contracts/atelier-obsidian-edit-operation.v1.schema.json +138 -0
  15. package/contracts/atelier-obsidian-ext-settings.v1.schema.json +287 -0
  16. package/contracts/atelier-obsidian-generation-manifest.v1.schema.json +353 -0
  17. package/contracts/atelier-obsidian-proposal-receipt.v1.schema.json +110 -0
  18. package/contracts/atelier-obsidian-publication-journal.v1.schema.json +167 -0
  19. package/contracts/atelier-obsidian-scope.v1.schema.json +264 -0
  20. package/contracts/atelier-obsidian-service-state.v1.schema.json +149 -0
  21. package/contracts/atelier-obsidian-source-snapshot.v1.schema.json +179 -0
  22. package/contracts/atelier-pane-presentation.v1.schema.json +76 -0
  23. package/contracts/atelier-presentation.v1.schema.json +1293 -0
  24. package/contracts/atelier-repository-observation.v1.schema.json +163 -0
  25. package/contracts/atelier-review.v1.schema.json +1601 -0
  26. package/contracts/atelier-skill-steward.v1.schema.json +692 -0
  27. package/contracts/atelier-upgrade-plan.v2.schema.json +398 -0
  28. package/contracts/atelier-upgrade-receipt.v1.schema.json +99 -0
  29. package/contracts/atelier-vault-publication.v1.schema.json +58 -0
  30. package/contracts/public-api-baseline.json +57 -0
  31. package/docs/assurance-controls.md +49 -0
  32. package/docs/atelier-runtime.md +28 -2
  33. package/docs/atelier-sync.md +172 -0
  34. package/docs/blocks/audience-visibility.md +9 -0
  35. package/docs/blocks/claims.md +61 -0
  36. package/docs/blocks/conformance-admission.md +15 -0
  37. package/docs/blocks/will-not-do.md +18 -0
  38. package/docs/coauthor-session.md +57 -0
  39. package/docs/connected-composition.md +75 -0
  40. package/docs/continuity.md +3 -4
  41. package/docs/decisions.md +167 -0
  42. package/docs/design.md +167 -0
  43. package/docs/exact-upgrades.md +159 -0
  44. package/docs/extension-pack-lifecycle.md +33 -0
  45. package/docs/guided-upgrades.md +99 -0
  46. package/docs/install.md +99 -16
  47. package/docs/intake-and-guides.md +65 -0
  48. package/docs/integration-and-review-plan.md +409 -0
  49. package/docs/integration-contract-decisions.md +22 -0
  50. package/docs/knowledge-graph.md +8 -4
  51. package/docs/local-review.md +84 -0
  52. package/docs/local-services.md +328 -0
  53. package/docs/local-state.md +107 -0
  54. package/docs/obsidian-contract.md +690 -0
  55. package/docs/obsidian.md +423 -0
  56. package/docs/portable-presentation.md +328 -0
  57. package/docs/presentation-consumer-boundaries.md +75 -0
  58. package/docs/presentation-review-disposition.md +47 -0
  59. package/docs/project-command-inventory.md +38 -0
  60. package/docs/project-options.md +53 -0
  61. package/docs/release-engineering.md +174 -12
  62. package/docs/repo-boundary-guard.md +12 -2
  63. package/docs/review-portability.md +55 -0
  64. package/docs/skill-steward.md +156 -0
  65. package/docs/upgrade.md +146 -5
  66. package/docs/vault-service.md +292 -0
  67. package/fixtures/atelier-coauthor/invalid/authority.v1.json +5 -0
  68. package/fixtures/atelier-coauthor/valid/config.v1.json +12 -0
  69. package/fixtures/atelier-guide/invalid/authority.v1.json +11 -0
  70. package/fixtures/atelier-guide/valid/capability.v1.json +10 -0
  71. package/fixtures/atelier-guide/valid/consent.v1.json +11 -0
  72. package/fixtures/atelier-guide/valid/engagement.v1.json +7 -0
  73. package/fixtures/atelier-guide/valid/offer.v1.json +10 -0
  74. package/fixtures/atelier-intake/invalid/authority.v1.json +9 -0
  75. package/fixtures/atelier-intake/valid/attempt.v1.json +8 -0
  76. package/fixtures/atelier-intake/valid/completion.v1.json +9 -0
  77. package/fixtures/atelier-intake/valid/source.v1.json +7 -0
  78. package/fixtures/atelier-repository-observation/invalid/complete-with-blocker.v1.json +18 -0
  79. package/fixtures/atelier-repository-observation/valid/complete-local.v1.json +48 -0
  80. package/fixtures/atelier-review/invalid/authenticated-identity.v1.json +22 -0
  81. package/fixtures/atelier-review/valid/bound.v1.json +229 -0
  82. package/fixtures/atelier-review/valid/bundle.v1.json +267 -0
  83. package/fixtures/atelier-review/valid/contribution.v1.json +22 -0
  84. package/fixtures/atelier-review/valid/lifecycle.v1.json +14 -0
  85. package/fixtures/atelier-skill-steward/audit/invalid/source-mutation.v1.json +26 -0
  86. package/fixtures/atelier-skill-steward/audit/valid/clean.v1.json +26 -0
  87. package/fixtures/atelier-skill-steward/candidates/invalid/workflow-key.v1.json +37 -0
  88. package/fixtures/atelier-skill-steward/candidates/valid/create.v1.json +37 -0
  89. package/fixtures/atelier-skill-steward/lock/invalid/bad-digest.v1.json +18 -0
  90. package/fixtures/atelier-skill-steward/lock/valid/installed.v1.json +23 -0
  91. package/fixtures/atelier-skill-steward/plan/invalid/delete-action.v1.json +33 -0
  92. package/fixtures/atelier-skill-steward/plan/valid/add.v1.json +33 -0
  93. package/fixtures/atelier-upgrade-transaction/adoption-policy/invalid/example.json +12 -0
  94. package/fixtures/atelier-upgrade-transaction/adoption-policy/valid/example.json +11 -0
  95. package/fixtures/atelier-upgrade-transaction/migration/invalid/example.json +20 -0
  96. package/fixtures/atelier-upgrade-transaction/migration/valid/example.json +19 -0
  97. package/fixtures/atelier-upgrade-transaction/upgrade-plan/invalid/example.json +58 -0
  98. package/fixtures/atelier-upgrade-transaction/upgrade-plan/valid/example.json +57 -0
  99. package/fixtures/atelier-upgrade-transaction/upgrade-receipt/invalid/example.json +15 -0
  100. package/fixtures/atelier-upgrade-transaction/upgrade-receipt/valid/example.json +14 -0
  101. package/fixtures/atelier-vault-publication/invalid/publication.json +5 -0
  102. package/fixtures/atelier-vault-publication/valid/publication.json +11 -0
  103. package/fixtures/decisions/request/invalid/unknown-authority.v1.json +61 -0
  104. package/fixtures/decisions/request/valid/triage.v1.json +60 -0
  105. package/fixtures/decisions/result/invalid/execution-authority.v1.json +50 -0
  106. package/fixtures/decisions/result/valid/abstained.v1.json +23 -0
  107. package/fixtures/decisions/result/valid/assessed.v1.json +50 -0
  108. package/fixtures/obsidian/acceptance/ap05-extra-notes.json +14 -0
  109. package/fixtures/obsidian/acceptance/receipts/G07.valid.v1.json +63 -0
  110. package/fixtures/obsidian/acceptance/receipts/G13.valid.v1.json +69 -0
  111. package/fixtures/obsidian/acceptance/receipts/G14.valid.v1.json +62 -0
  112. package/fixtures/obsidian/acceptance/receipts/G15.valid.v1.json +56 -0
  113. package/fixtures/obsidian/acceptance/receipts/G16.valid.v1.json +73 -0
  114. package/fixtures/obsidian/acceptance/receipts/G17.valid.v1.json +75 -0
  115. package/fixtures/obsidian/acceptance/receipts/G18.valid.v1.json +64 -0
  116. package/fixtures/obsidian/acceptance/service-sentinels.json +10 -0
  117. package/fixtures/obsidian/contracts/acceptance-receipt/invalid/duplicate-evidence-name.v1.json +39 -0
  118. package/fixtures/obsidian/contracts/acceptance-receipt/invalid/evidence-by-absolute-path.v1.json +34 -0
  119. package/fixtures/obsidian/contracts/acceptance-receipt/invalid/missing-candidate-tree.v1.json +33 -0
  120. package/fixtures/obsidian/contracts/acceptance-receipt/invalid/no-evidence.v1.json +28 -0
  121. package/fixtures/obsidian/contracts/acceptance-receipt/invalid/unknown-outcome.v1.json +34 -0
  122. package/fixtures/obsidian/contracts/acceptance-receipt/invalid/unknown-top-level-field.v1.json +35 -0
  123. package/fixtures/obsidian/contracts/acceptance-receipt/valid/node-gate.v1.json +34 -0
  124. package/fixtures/obsidian/contracts/apply-policy/invalid/automatic-without-edit-class.v1.json +27 -0
  125. package/fixtures/obsidian/contracts/apply-policy/invalid/conflict-overwrite.v1.json +29 -0
  126. package/fixtures/obsidian/contracts/apply-policy/invalid/missing-policy-digest.v1.json +28 -0
  127. package/fixtures/obsidian/contracts/apply-policy/invalid/unbounded-batch.v1.json +29 -0
  128. package/fixtures/obsidian/contracts/apply-policy/invalid/unimplemented-edit-class.v1.json +30 -0
  129. package/fixtures/obsidian/contracts/apply-policy/invalid/unknown-mode.v1.json +29 -0
  130. package/fixtures/obsidian/contracts/apply-policy/invalid/unknown-selector-operator.v1.json +22 -0
  131. package/fixtures/obsidian/contracts/apply-policy/invalid/unknown-top-level-field.v1.json +30 -0
  132. package/fixtures/obsidian/contracts/apply-policy/valid/automatic-scoped.v1.json +29 -0
  133. package/fixtures/obsidian/contracts/apply-policy/valid/manual-default.v1.json +20 -0
  134. package/fixtures/obsidian/contracts/corpus-profile/invalid/absolute-path-in-ext.v1.json +30 -0
  135. package/fixtures/obsidian/contracts/corpus-profile/invalid/absolute-repository-root.v1.json +27 -0
  136. package/fixtures/obsidian/contracts/corpus-profile/invalid/duplicate-repository-id.v1.json +27 -0
  137. package/fixtures/obsidian/contracts/corpus-profile/invalid/overlapping-managed-roots.v1.json +27 -0
  138. package/fixtures/obsidian/contracts/corpus-profile/invalid/unknown-enrollment.v1.json +27 -0
  139. package/fixtures/obsidian/contracts/corpus-profile/invalid/unknown-top-level-field.v1.json +28 -0
  140. package/fixtures/obsidian/contracts/corpus-profile/valid/three-repositories.v1.json +27 -0
  141. package/fixtures/obsidian/contracts/edit-operation/invalid/absolute-recovery-ref.v1.json +21 -0
  142. package/fixtures/obsidian/contracts/edit-operation/invalid/inline-observed-bytes.v1.json +22 -0
  143. package/fixtures/obsidian/contracts/edit-operation/invalid/missing-base-digest.v1.json +20 -0
  144. package/fixtures/obsidian/contracts/edit-operation/invalid/short-idempotency-key.v1.json +21 -0
  145. package/fixtures/obsidian/contracts/edit-operation/invalid/unknown-kind.v1.json +21 -0
  146. package/fixtures/obsidian/contracts/edit-operation/valid/pending-body-replacement.v1.json +21 -0
  147. package/fixtures/obsidian/contracts/ext-settings/invalid/absolute-path-prefix.v1.json +28 -0
  148. package/fixtures/obsidian/contracts/ext-settings/invalid/apply-policy-in-portable-settings.v1.json +30 -0
  149. package/fixtures/obsidian/contracts/ext-settings/invalid/duplicate-scope-id.v1.json +27 -0
  150. package/fixtures/obsidian/contracts/ext-settings/invalid/machine-local-vault-path.v1.json +28 -0
  151. package/fixtures/obsidian/contracts/ext-settings/invalid/service-port-in-portable-settings.v1.json +28 -0
  152. package/fixtures/obsidian/contracts/ext-settings/invalid/unknown-default-scope.v1.json +27 -0
  153. package/fixtures/obsidian/contracts/ext-settings/valid/disabled.v1.json +5 -0
  154. package/fixtures/obsidian/contracts/ext-settings/valid/enabled-with-scopes.v1.json +27 -0
  155. package/fixtures/obsidian/contracts/generation-manifest/invalid/absolute-note-path.v1.json +114 -0
  156. package/fixtures/obsidian/contracts/generation-manifest/invalid/complete-with-unwritten-notes.v1.json +114 -0
  157. package/fixtures/obsidian/contracts/generation-manifest/invalid/derived-link-claimed-declared.v1.json +114 -0
  158. package/fixtures/obsidian/contracts/generation-manifest/invalid/duplicate-note-identity.v1.json +114 -0
  159. package/fixtures/obsidian/contracts/generation-manifest/invalid/in-scope-endpoint-missing.v1.json +114 -0
  160. package/fixtures/obsidian/contracts/generation-manifest/invalid/title-only-note-path.v1.json +114 -0
  161. package/fixtures/obsidian/contracts/generation-manifest/invalid/unknown-note-field.v1.json +115 -0
  162. package/fixtures/obsidian/contracts/generation-manifest/invalid/unknown-relation-type.v1.json +114 -0
  163. package/fixtures/obsidian/contracts/generation-manifest/invalid/withheld-endpoint.v1.json +114 -0
  164. package/fixtures/obsidian/contracts/generation-manifest/valid/two-notes.v1.json +114 -0
  165. package/fixtures/obsidian/contracts/oracles/scope-cases.json +412 -0
  166. package/fixtures/obsidian/contracts/proposal-receipt/invalid/accepted-without-proposal-id.v1.json +12 -0
  167. package/fixtures/obsidian/contracts/proposal-receipt/invalid/missing-adapter-operation-id.v1.json +11 -0
  168. package/fixtures/obsidian/contracts/proposal-receipt/invalid/unknown-backpressure-outcome.v1.json +12 -0
  169. package/fixtures/obsidian/contracts/proposal-receipt/invalid/unknown-top-level-field.v1.json +13 -0
  170. package/fixtures/obsidian/contracts/proposal-receipt/valid/accepted-new.v1.json +12 -0
  171. package/fixtures/obsidian/contracts/proposal-receipt/valid/deferred.v1.json +12 -0
  172. package/fixtures/obsidian/contracts/publication-journal/invalid/absolute-recovery-ref.v1.json +47 -0
  173. package/fixtures/obsidian/contracts/publication-journal/invalid/duplicate-sequence.v1.json +47 -0
  174. package/fixtures/obsidian/contracts/publication-journal/invalid/empty-protocol-id.v1.json +47 -0
  175. package/fixtures/obsidian/contracts/publication-journal/invalid/missing-protocol-id.v1.json +46 -0
  176. package/fixtures/obsidian/contracts/publication-journal/invalid/unknown-entry-field.v1.json +48 -0
  177. package/fixtures/obsidian/contracts/publication-journal/invalid/unknown-state.v1.json +47 -0
  178. package/fixtures/obsidian/contracts/publication-journal/valid/committed.v1.json +47 -0
  179. package/fixtures/obsidian/contracts/publication-journal/valid/updating-after-restart.v1.json +22 -0
  180. package/fixtures/obsidian/contracts/scope/invalid/absolute-path-prefix.v1.json +15 -0
  181. package/fixtures/obsidian/contracts/scope/invalid/duplicate-ids.v1.json +18 -0
  182. package/fixtures/obsidian/contracts/scope/invalid/expansion-without-node-budget.v1.json +40 -0
  183. package/fixtures/obsidian/contracts/scope/invalid/full-mode-with-subset.v1.json +8 -0
  184. package/fixtures/obsidian/contracts/scope/invalid/unknown-mode.v1.json +41 -0
  185. package/fixtures/obsidian/contracts/scope/invalid/unknown-selector-key.v1.json +15 -0
  186. package/fixtures/obsidian/contracts/scope/invalid/unknown-selector-operator.v1.json +14 -0
  187. package/fixtures/obsidian/contracts/scope/invalid/unknown-top-level-field.v1.json +42 -0
  188. package/fixtures/obsidian/contracts/scope/valid/explicit-empty.v1.json +8 -0
  189. package/fixtures/obsidian/contracts/scope/valid/focus.v1.json +11 -0
  190. package/fixtures/obsidian/contracts/scope/valid/full.v1.json +8 -0
  191. package/fixtures/obsidian/contracts/scope/valid/scoped-set-expression.v1.json +41 -0
  192. package/fixtures/obsidian/contracts/service-state/invalid/hostname-instead-of-literal-loopback.v1.json +23 -0
  193. package/fixtures/obsidian/contracts/service-state/invalid/missing-consent.v1.json +18 -0
  194. package/fixtures/obsidian/contracts/service-state/invalid/privileged-port.v1.json +23 -0
  195. package/fixtures/obsidian/contracts/service-state/invalid/unknown-top-level-field.v1.json +24 -0
  196. package/fixtures/obsidian/contracts/service-state/invalid/wildcard-bind.v1.json +23 -0
  197. package/fixtures/obsidian/contracts/service-state/valid/healthy.v1.json +23 -0
  198. package/fixtures/obsidian/contracts/source-snapshot/invalid/absolute-file-path.v1.json +48 -0
  199. package/fixtures/obsidian/contracts/source-snapshot/invalid/duplicate-repository-id.v1.json +48 -0
  200. package/fixtures/obsidian/contracts/source-snapshot/invalid/mixed-read.v1.json +48 -0
  201. package/fixtures/obsidian/contracts/source-snapshot/invalid/parent-traversal-path.v1.json +48 -0
  202. package/fixtures/obsidian/contracts/source-snapshot/invalid/unknown-file-field.v1.json +49 -0
  203. package/fixtures/obsidian/contracts/source-snapshot/valid/two-repositories.v1.json +48 -0
  204. package/fixtures/obsidian/edits/workspace.json +65 -0
  205. package/fixtures/obsidian/materialization/expected-full.json +99 -0
  206. package/fixtures/obsidian/materialization/expected-scoped.json +39 -0
  207. package/fixtures/obsidian/materialization/workspace.json +54 -0
  208. package/fixtures/obsidian/proposals/expected-shapes.json +11 -0
  209. package/fixtures/projects/sample-workspace/content/source.html.kg.json +4 -1
  210. package/fixtures/projects/source-formats-workspace/content/data.json.kg.json +4 -1
  211. package/fixtures/projects/source-formats-workspace/content/logo.png.kg.json +4 -1
  212. package/fixtures/projects/source-formats-workspace/content/metrics.csv.kg.json +4 -1
  213. package/fixtures/projects/source-formats-workspace/content/pipeline.yaml.kg.json +4 -1
  214. package/fixtures/ui/presentation/pane.v1.json +7 -0
  215. package/fixtures/ui/presentation/reference.v1.json +293 -0
  216. package/package.json +86 -10
  217. package/skills/claude/atelier-guided-coauthor/SKILL.md +49 -0
  218. package/skills/claude/atelier-guided-upgrade/SKILL.md +97 -0
  219. package/skills/claude/atelier-local-service/SKILL.md +47 -0
  220. package/skills/claude/atelier-open/SKILL.md +11 -5
  221. package/skills/claude/atelier-public-boundary/SKILL.md +31 -0
  222. package/skills/claude/atelier-skill-steward/SKILL.md +62 -0
  223. package/skills/claude/mnstry-readiness/SKILL.md +5 -0
  224. package/skills/codex/atelier-guided-coauthor/SKILL.md +49 -0
  225. package/skills/codex/atelier-guided-upgrade/SKILL.md +97 -0
  226. package/skills/codex/atelier-local-service/SKILL.md +47 -0
  227. package/skills/codex/atelier-open/SKILL.md +11 -5
  228. package/skills/codex/atelier-public-boundary/SKILL.md +31 -0
  229. package/skills/codex/atelier-skill-steward/SKILL.md +62 -0
  230. package/skills/codex/mnstry-readiness/SKILL.md +5 -0
  231. package/src/access/preview-enforcer.mjs +84 -0
  232. package/src/boundary/content-rules.mjs +283 -20
  233. package/src/boundary/policy.mjs +213 -91
  234. package/src/cli/execute-command.mjs +36 -0
  235. package/src/cli/project-options.mjs +58 -0
  236. package/src/cli/run.mjs +78 -10
  237. package/src/coauthor/session.mjs +161 -0
  238. package/src/coauthor/store.mjs +173 -0
  239. package/src/collaboration/event-ledger.mjs +348 -0
  240. package/src/collaboration/index.mjs +17 -0
  241. package/src/collaboration/inspection-bundle.mjs +223 -0
  242. package/src/collaboration/proposals.mjs +265 -65
  243. package/src/collaboration/review-contracts.mjs +25 -0
  244. package/src/collaboration/review-store.mjs +305 -0
  245. package/src/commands/attestation.mjs +20 -6
  246. package/src/commands/coauthor.mjs +26 -0
  247. package/src/commands/config.mjs +6 -1
  248. package/src/commands/disclosure.mjs +133 -0
  249. package/src/commands/distribution.mjs +2 -1
  250. package/src/commands/extension-pack.mjs +17 -9
  251. package/src/commands/init.mjs +46 -6
  252. package/src/commands/obsidian.mjs +371 -0
  253. package/src/commands/review.mjs +147 -0
  254. package/src/commands/server.mjs +1 -4
  255. package/src/commands/setup.mjs +51 -14
  256. package/src/commands/skills.mjs +199 -0
  257. package/src/commands/sync.mjs +107 -0
  258. package/src/composition/registry.mjs +27 -0
  259. package/src/composition/wire.mjs +122 -0
  260. package/src/contracts/corpus.mjs +35 -0
  261. package/src/decisions/contracts.d.mts +96 -0
  262. package/src/decisions/contracts.mjs +321 -0
  263. package/src/disclosure/content-scan.mjs +206 -0
  264. package/src/egress/check.mjs +7 -38
  265. package/src/egress/forbidden-egress.mjs +32 -18
  266. package/src/export/atelier-export-contract.mjs +16 -1
  267. package/src/extension-packs/lifecycle.mjs +154 -0
  268. package/src/graph/graph.mjs +176 -316
  269. package/src/graph/knowledge-graph.mjs +643 -43
  270. package/src/guides/contracts.mjs +54 -0
  271. package/src/harness/context-client.mjs +9 -1
  272. package/src/index.mjs +41 -0
  273. package/src/intake/store.mjs +119 -0
  274. package/src/preview/channel.mjs +89 -0
  275. package/src/project/config.mjs +112 -52
  276. package/src/project/durable-state.mjs +161 -0
  277. package/src/project/file-class.mjs +180 -0
  278. package/src/project/package-root.mjs +10 -0
  279. package/src/project/path-match.mjs +38 -15
  280. package/src/project/private-state.mjs +120 -0
  281. package/src/projection/obsidian/contracts.mjs +571 -0
  282. package/src/projection/obsidian/edits/align.mjs +169 -0
  283. package/src/projection/obsidian/edits/apply.mjs +889 -0
  284. package/src/projection/obsidian/edits/arbitrate.mjs +414 -0
  285. package/src/projection/obsidian/edits/contribution.mjs +108 -0
  286. package/src/projection/obsidian/edits/index.mjs +19 -0
  287. package/src/projection/obsidian/edits/object-identity.mjs +61 -0
  288. package/src/projection/obsidian/edits/object-store.mjs +517 -0
  289. package/src/projection/obsidian/edits/observe.mjs +123 -0
  290. package/src/projection/obsidian/edits/policy.mjs +123 -0
  291. package/src/projection/obsidian/edits/regions.mjs +648 -0
  292. package/src/projection/obsidian/materialize/byte-lens.mjs +98 -0
  293. package/src/projection/obsidian/materialize/index.mjs +7 -0
  294. package/src/projection/obsidian/materialize/path-registry.mjs +105 -0
  295. package/src/projection/obsidian/materialize/prepare-view.mjs +746 -0
  296. package/src/projection/obsidian/materialize/settings.mjs +57 -0
  297. package/src/projection/obsidian/materialize/stage.mjs +27 -0
  298. package/src/projection/obsidian/proposals/adapter.mjs +572 -0
  299. package/src/projection/obsidian/proposals/backpressure.mjs +113 -0
  300. package/src/projection/obsidian/proposals/contribution.mjs +55 -0
  301. package/src/projection/obsidian/proposals/index.mjs +23 -0
  302. package/src/projection/obsidian/proposals/observation.mjs +216 -0
  303. package/src/projection/obsidian/proposals/queue.mjs +277 -0
  304. package/src/projection/obsidian/proposals/router.mjs +168 -0
  305. package/src/projection/obsidian/publication/bridge-script.mjs +266 -0
  306. package/src/projection/obsidian/publication/exchange.mjs +117 -0
  307. package/src/projection/obsidian/publication/index.mjs +5 -0
  308. package/src/projection/obsidian/publication/publisher.mjs +588 -0
  309. package/src/projection/obsidian/publication/test-seam.mjs +16 -0
  310. package/src/projection/obsidian/publication/transport.mjs +160 -0
  311. package/src/projection/obsidian/recovery/index.mjs +6 -0
  312. package/src/projection/obsidian/recovery/journal.mjs +134 -0
  313. package/src/projection/obsidian/recovery/late-writer.mjs +46 -0
  314. package/src/projection/obsidian/recovery/restart.mjs +316 -0
  315. package/src/projection/obsidian/recovery/store.mjs +234 -0
  316. package/src/projection/obsidian/selection-ui/conflict-view.mjs +91 -0
  317. package/src/projection/obsidian/selection-ui/contribution.mjs +141 -0
  318. package/src/projection/obsidian/selection-ui/focus.mjs +82 -0
  319. package/src/projection/obsidian/selection-ui/index.mjs +12 -0
  320. package/src/projection/obsidian/selection-ui/policy-setup.mjs +107 -0
  321. package/src/projection/obsidian/selection-ui/receipt.mjs +173 -0
  322. package/src/projection/obsidian/selection-ui/selection-state.mjs +122 -0
  323. package/src/projection/obsidian/selection-ui/selection.mjs +109 -0
  324. package/src/projection/project.mjs +28 -19
  325. package/src/readiness-protocols/evidence.mjs +282 -0
  326. package/src/readiness-protocols/runtime.mjs +4 -3
  327. package/src/readiness-protocols/source-read.mjs +39 -0
  328. package/src/runtime/git-adapter.mjs +189 -0
  329. package/src/runtime/local-state.mjs +439 -0
  330. package/src/runtime/obsidian/app-capability.mjs +129 -0
  331. package/src/runtime/obsidian/app-production-seams.mjs +105 -0
  332. package/src/runtime/obsidian/contributions/proposal-adapter.mjs +4 -0
  333. package/src/runtime/obsidian/contributions/selection-ui.mjs +4 -0
  334. package/src/runtime/obsidian/contributions/source-apply.mjs +4 -0
  335. package/src/runtime/obsidian/contributions.mjs +27 -0
  336. package/src/runtime/obsidian/documents.mjs +37 -0
  337. package/src/runtime/obsidian/enablement.mjs +53 -0
  338. package/src/runtime/obsidian/engine.mjs +532 -0
  339. package/src/runtime/obsidian/errors.mjs +14 -0
  340. package/src/runtime/obsidian/extension-points.mjs +103 -0
  341. package/src/runtime/obsidian/index.mjs +34 -0
  342. package/src/runtime/obsidian/lifecycle.mjs +258 -0
  343. package/src/runtime/obsidian/machine-settings.mjs +260 -0
  344. package/src/runtime/obsidian/observation.mjs +158 -0
  345. package/src/runtime/obsidian/opening.mjs +263 -0
  346. package/src/runtime/obsidian/pending-edits.mjs +141 -0
  347. package/src/runtime/obsidian/pipeline.mjs +122 -0
  348. package/src/runtime/obsidian/private-lock.mjs +156 -0
  349. package/src/runtime/obsidian/process-identity.mjs +58 -0
  350. package/src/runtime/obsidian/service-client.mjs +66 -0
  351. package/src/runtime/obsidian/service-entry-path.mjs +9 -0
  352. package/src/runtime/obsidian/service-main.mjs +91 -0
  353. package/src/runtime/obsidian/service-record.mjs +169 -0
  354. package/src/runtime/obsidian/service-server.mjs +121 -0
  355. package/src/runtime/obsidian/service.mjs +216 -0
  356. package/src/runtime/obsidian/startup-adapters.mjs +87 -0
  357. package/src/runtime/obsidian/state-store.mjs +180 -0
  358. package/src/runtime/obsidian/sync-notice.mjs +33 -0
  359. package/src/runtime/obsidian/tick-loop.mjs +84 -0
  360. package/src/runtime/obsidian/watchers.mjs +36 -0
  361. package/src/runtime/repository-observation.mjs +491 -0
  362. package/src/runtime/supervisor.mjs +803 -0
  363. package/src/server/local-sidecar.mjs +125 -59
  364. package/src/server/security.mjs +89 -4
  365. package/src/server/server.mjs +4 -2
  366. package/src/skills/steward.mjs +780 -0
  367. package/src/support/feedback-report.mjs +4 -3
  368. package/src/ui/presentation/browser.mjs +278 -0
  369. package/src/ui/presentation/contract.mjs +116 -0
  370. package/src/ui/presentation/index.mjs +7 -0
  371. package/src/ui/presentation/native.mjs +153 -0
  372. package/src/ui/presentation/proof.mjs +57 -0
  373. package/src/ui/presentation/schema-check.mjs +30 -0
  374. package/src/ui/presentation/schema.generated.mjs +1371 -0
  375. package/src/ui/presentation/state.mjs +43 -0
  376. package/src/ui/presentation/styles.mjs +67 -0
  377. package/src/ui/presentation/tokens.mjs +74 -0
  378. package/src/ui/presentation/web.mjs +85 -0
  379. package/src/ui/review-page.mjs +32 -0
  380. package/src/upgrade/explanation.mjs +33 -0
  381. package/src/upgrade/provenance.mjs +338 -0
  382. package/src/upgrade/transaction-files.mjs +103 -0
  383. package/src/upgrade/transaction.mjs +475 -0
  384. package/src/upgrade/upgrade.mjs +65 -29
  385. package/src/vault/hosts.mjs +21 -0
  386. package/src/vault/identity.mjs +19 -0
  387. package/src/vault/index.mjs +7 -0
  388. package/src/vault/interface.mjs +11 -0
  389. package/src/vault/metadata.mjs +31 -0
  390. package/src/vault/privacy.mjs +148 -0
  391. package/src/vault/probe.mjs +89 -0
  392. package/src/vault/service.mjs +131 -0
  393. package/src/vault/source.mjs +45 -0
  394. package/src/vault/storage.mjs +23 -0
  395. package/templates/distribution-workspace/.claude/launch.json +6 -2
  396. package/templates/distribution-workspace/gitignore +1 -0
  397. package/templates/distribution-workspace/project/README.md +2 -2
  398. package/templates/external-project-workspace/README.md +45 -0
  399. package/templates/external-project-workspace/answers.example.json +4 -0
  400. package/templates/external-project-workspace/atelier.project.json +40 -0
  401. package/templates/external-project-workspace/boundary-policy.v1.json +60 -0
  402. package/templates/external-project-workspace/gitignore +8 -0
  403. package/templates/external-project-workspace/pack-lifecycle.json +14 -0
  404. package/templates/external-project-workspace/packs/protocols/contract-gate.v1.json +109 -0
  405. package/templates/external-project-workspace/packs/sample-pack.v1.json +48 -0
  406. package/templates/external-project-workspace/repo-access.v1.json +9 -0
  407. package/templates/external-project-workspace/source/README.md +11 -0
  408. package/templates/launch.json +6 -2
  409. package/templates/private-domain-workspace/.claude/launch.json +6 -2
  410. package/templates/private-domain-workspace/domain/README.md +2 -2
  411. package/templates/private-domain-workspace/gitignore +1 -0
  412. package/templates/shared-project-workspace/.claude/launch.json +6 -2
  413. package/templates/shared-project-workspace/gitignore +1 -0
  414. package/templates/shared-project-workspace/project/README.md +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,377 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.0-alpha.10
4
+
5
+ ### Fixed
6
+
7
+ - A first publication refused because Obsidian runs without that vault open
8
+ (`publisher-conflict`, reason `editor-uncoordinated`) now advises quitting
9
+ Obsidian so the view publishes directly, instead of waiting for "the other
10
+ publisher", which does not exist.
11
+ - The Obsidian process probe matched Atelier's own maintenance service: it
12
+ searched every argument of every process for an `obsidian` path segment, so
13
+ the service (`…/src/runtime/obsidian/service-main.mjs`) and anything naming
14
+ the private data root read as a running app. With the app quit, the service
15
+ reported `app-version-unsupported` and never published, and the app-free
16
+ publication path was blocked. The probe now reads `ps -A -o comm=` and
17
+ recognises the app by its executable: `Obsidian` and `Obsidian Helper…` on
18
+ macOS, `obsidian` on Linux. On Linux a system Electron process makes the
19
+ reading `unknown`, which is treated as a running app.
20
+ - An app running with no vault open answers every command-line call with
21
+ `Vault not found.`, which was read as a version and reported as
22
+ `version-unknown` or `version-unreadable`. It is now the reason
23
+ `no-vault-open` under the existing outcome `app-version-unsupported`, still
24
+ not qualified, and `status` and `open` say to open any vault in Obsidian or
25
+ quit it. `open` waits for an app it launched that is still opening the vault.
26
+
27
+ ## 0.2.0-alpha.9
28
+
29
+ ### Fixed
30
+
31
+ - The maintenance service process could not start from the shipped package:
32
+ its entry awaits the command contributions at top level, and the selection
33
+ contribution shipped in 0.2.0-alpha.8 reaches the entry again through
34
+ `opening.mjs` → `lifecycle.mjs`, so the process deadlocked on its own await
35
+ and exited 13 before it listened. `SERVICE_ENTRY_PATH` now lives in its own
36
+ module that nothing else depends on, and a test spawns the real entry.
37
+
38
+ ## 0.2.0-alpha.8
39
+
40
+ ### Added
41
+
42
+ - Add portable, typed advisory decision requests and results under
43
+ `@mnstry/atelier/decisions`, with versioned schemas, invented fixtures and
44
+ offline validation of evidence bindings, distributions and abstention.
45
+ Provider execution, credentials, budgets and authorization stay with the
46
+ host. See `docs/decisions.md`.
47
+ - Add an experimental, opt-in Obsidian projection. A project that enables
48
+ `ext["mnstry.atelier.obsidian"]` and declares views (`full`, `scoped` or
49
+ `focus`, with an optional bounded expansion) gets readable, linked notes of
50
+ the enrolled workspace in a vault outside every repository, under private
51
+ per-workspace storage. Nothing is published for a project that does not
52
+ enable it. See `docs/obsidian.md`, `docs/obsidian-contract.md` and
53
+ `docs/local-services.md`.
54
+ - Add eleven closed `atelier-obsidian-*.v1` schemas with valid and invalid
55
+ fixtures, each exported under its own `./contracts/` path.
56
+ - Add deterministic materialization: note paths made of a readable title and a
57
+ stable identity suffix, exact byte regions that invert to their source,
58
+ embedded assets, and audience and eligibility rules that fail closed. No
59
+ audience is admitted by default, which publishes an empty view.
60
+ - Add publication that coordinates with a running editor through conditional
61
+ operations, with journals, restart recovery and late-writer rechecks, so
62
+ that a concurrent write by a person or the app is retained rather than
63
+ overwritten. It depends on an atomic file exchange and is proven on macOS
64
+ arm64 with one app version; see the contract for what is open.
65
+ - Add a per-workspace loopback maintenance service and the noninteractive
66
+ `atelier obsidian` command (`status`, `scope`, `audience`, `mode`, `policy`,
67
+ `service`, `open`, `apply`, `proposals`, `conflicts`, `apply-policy`,
68
+ `selection`). Reaching the installed app or the operating system is never a
69
+ default: it needs `--adapter=obsidian-cli`. The app must be version 1.13.7
70
+ or later.
71
+ - Ship the selection contribution on the command: the one-line loader module
72
+ `src/runtime/obsidian/contributions/selection-ui.mjs` puts `selection`,
73
+ `conflicts` and `apply-policy` on `atelier obsidian`, beside `apply` and
74
+ `proposals`. The usage text names every contributed operation, and a
75
+ contributed operation declares under `options` which shared options it
76
+ takes, so `--actor` is refused everywhere but `apply run`.
77
+ - Preserve every edit made in the vault before anything is republished. A
78
+ body replacement is applied to its source manually, or automatically under
79
+ a scoped policy the user installs and can revoke; revocation is read again
80
+ before every write. An edit that is not a body replacement becomes a
81
+ copy-only proposal in the owning repository's proposal store and is never
82
+ applied. Atelier makes no Git commit for any of it.
83
+ - Add selection binding, apply-policy setup, a read-only conflict view and an
84
+ acceptance-receipt validator that is labelled schema validation only and
85
+ closes no gate.
86
+ - Add the package subpaths `./obsidian`, `./obsidian/contracts`,
87
+ `./obsidian/materialize`, `./obsidian/publication`, `./obsidian/recovery`,
88
+ `./obsidian/edits`, `./obsidian/proposals` and `./obsidian/selection`. The
89
+ package root exports nothing of the projection. Names ending
90
+ `ForOracleTests` are test mutation controls, not a supported API.
91
+ - `release:audit` now requires the Obsidian runtime, schemas and documents in
92
+ the tarball, requires every declared export to name a packed file, and
93
+ refuses scripts, tests, experiments, receipt directories, application
94
+ archives, receipts that name a real host or operator, and fixtures above 262,144
95
+ bytes. The path allowlist is unchanged. A package proof packs the tarball,
96
+ imports the subpaths from a bare consumer and publishes a synthetic
97
+ workspace into a temporary vault with no app.
98
+ - Known limits: Windows refuses publication and source apply because no atomic
99
+ exchange is known; the real-app suite has not been run on Linux, and x86_64
100
+ has not been run anywhere; macOS publication needs the stock system perl;
101
+ the app version has a floor and no ceiling; a vault body edit to a note
102
+ whose source uses CRLF becomes a proposal rather than an apply. No adopter
103
+ acceptance is recorded.
104
+
105
+ ### Changed
106
+
107
+ - The resolver that produces `links_to` edges is now shared by the graph and
108
+ the projection, and its behaviour changed in five classes. Graph artifacts a
109
+ consumer has committed may differ after upgrading in exactly these classes
110
+ and no others; each is pinned in `test/graph-knowledge-graph.test.mjs` and
111
+ listed in `docs/obsidian-contract.md`. Regenerate committed graph artifacts
112
+ after upgrading and review the difference.
113
+ 1. Links inside fenced code (backtick or tilde, any info string, up to three
114
+ spaces of indent, CRLF, CommonMark fence-length rules), inside inline
115
+ code and inside front matter no longer produce edges. Two stray backticks
116
+ that happen to pair across a link count as inline code, and links after
117
+ an unbalanced fence that runs to the end of the file are inside code.
118
+ 2. A link to a directory resolves to that directory's `README.md`, then
119
+ `index.md`, testing eligibility per candidate. A link to a parent
120
+ directory now resolves where the earlier reader missed it.
121
+ 3. A link that climbs above its own repository root and re-enters through
122
+ the checkout's directory name is reported as leaving the enrolled roots,
123
+ as before. It is never turned into a repository-local edge.
124
+ 4. Malformed percent-encoding in a link is a `link-href-malformed` finding.
125
+ It no longer throws out of the graph build.
126
+ 5. The workspace graph, not repository artifacts, additionally carries
127
+ wikilink edges and cross-repository Markdown-link edges, de-duplicated.
128
+
129
+ ## 0.2.0-alpha.7
130
+
131
+ - Add a guided owner-agent upgrade skill and read-only `upgrade explain`
132
+ reports derived from saved plans. Retain consent and provenance limits,
133
+ distinguish staged installation from adoption, and route unsupported
134
+ workspaces through their existing operator procedure.
135
+
136
+ - Add explicit saved-plan local upgrade transactions with private receipts,
137
+ existing commit hooks and recovery inspection. Refuse unsupported Git
138
+ attributes before generated writes and explain abandoned preparation state.
139
+ - `lock write` now preserves valid migration and template history and refuses
140
+ a malformed previous lock. Inspect and repair or separately archive the
141
+ invalid lock before retrying; history is no longer silently overwritten.
142
+
143
+ - Add a source-only Astro reference consumer for build-time presentation tokens,
144
+ no-script reading/navigation, local-only form validation and cross-browser proof.
145
+ Keep public-page mechanics consumer-owned; add no Astro runtime dependency.
146
+ - Patch the existing fast-uri dependency and override to 3.1.7. Clarify ordinary
147
+ web-link navigation versus native host navigation requests.
148
+
149
+ - Validate proposed and retained adoption configurations together with their
150
+ policy before writing; refuse an existing default policy during blank init.
151
+ Compare manifests using their serialized JSON representation so omitted
152
+ optional fields do not make freshly generated output stale.
153
+ - Migration: unset or correct globally exported `MNSTRY_ATELIER_ACTOR` values
154
+ that are not declared in the current policy. Invalid explicit selectors now
155
+ refuse even shared-only and legacy-warning checks.
156
+
157
+ - Correct shared-only attribution so ambient platform identities cannot invent
158
+ an ownership requirement or trigger a network lookup. Preserve legacy-warning
159
+ semantics for derived identities; Sync remains strict. Match platform logins
160
+ only to declared logins, refuse prototype-name omissions and duplicate repos.
161
+ - Share manifest generation between project and upgrade, store a relative graph
162
+ path, and compare parsed content independently of object-key order.
163
+ - Resolve preview commands through the scoped package from root or parent installs;
164
+ qualify both layouts with installed health/page smoke tests. Existing preview
165
+ configs require an explicit user update.
166
+ - Validate retained adoption policy/lock state before writing, refuse implicit
167
+ drift acceptance, detect null-digest policy drift, and refuse init collisions
168
+ so retries cannot overwrite authored files or reset the lock.
169
+
170
+ - Repair starter document classifications, shared adoption policy validity and
171
+ initial adoption locks. Existing locks are retained so adoption cannot accept
172
+ managed-file drift implicitly.
173
+ - Resolve template previews through the locally installed scoped package.
174
+ - Refuse unknown or ambiguous actor declarations, prioritize platform login over
175
+ Git metadata, and never infer the current operator from commit history. Shared
176
+ policy declarations do not require ownership of private repos outside the
177
+ configured workspace. These checks remain attribution, not authentication.
178
+ - Check the generated projection manifest as well as its HTML for staleness.
179
+
180
+ - Add evidence-thresholded skill stewardship and exact-plan local projections;
181
+ refuse unmanaged collisions, managed drift and cross-workspace confirmations.
182
+ - Add bounded immutable source copies and extraction attempt receipts, retaining
183
+ originals and separating byte integrity from semantic acceptance.
184
+ - Add inert guide offers, revocable engagement and exact-payload consent contracts.
185
+ No remote execution, commercial authority or proprietary implementation ships.
186
+ See issues #33 and #34 and the skill stewardship and intake/guide documentation.
187
+
188
+ - Add experimental source-bound coauthor sessions, a private draft store, JSON
189
+ stdin CLI and portable guided-coauthor skill. Preserve original answers,
190
+ confirmation, durable receipts, bounded recovery and source-change refusal;
191
+ no canonical source edits or publication authority are introduced.
192
+ - Add an external-project adapter starter with declared source boundaries,
193
+ namespaced synthetic protocols, local-state exclusions and compatibility policy.
194
+ - Add evidence-bound local review runs, per-claim decisions, source-owner
195
+ handoffs, passage responses and reading-position recovery. Current decisions
196
+ refuse changed evidence and stale versions; local typed names remain asserted
197
+ identities and no source edits are applied automatically.
198
+ - Report installed provenance as declared origin, observed bytes or verified
199
+ checkout binding. Compare working bytes with commit objects, including Git
200
+ index hints, sanitize remote metadata, and fail exact-source checks when the
201
+ binding is unresolved. Piped provenance output is no longer truncated.
202
+ - Remove unsupported numeric claim confidence and explain legacy readiness
203
+ scores as input completeness. Supply the required run import-safety field.
204
+ - Add pack lifecycle qualification and dry-run migration guidance plus explicit,
205
+ disclosure-checked historical inspection bundles that never transfer approval.
206
+ - Extend the existing installed consumer gate across moved source layouts,
207
+ durable contributions, stale refusal and inspection-only portability.
208
+
209
+ ## 0.2.0-alpha.6
210
+
211
+ - Share project-location parsing with extension-pack commands, including
212
+ repeated `--repo-path NAME=PATH` overrides and both argument forms. Malformed
213
+ shared options now fail before local-state creation. Add path-free resolution
214
+ diagnostics with `config check --explain`; read boundaries remain declared
215
+ by the project.
216
+ - Add Deliverable Zero for Atelier Sync: explicit single-repository
217
+ enrollment, a pinned direct-process Git adapter, executable repository
218
+ completeness observations, fast-forward-only reconciliation, per-repository
219
+ locking, hash-chained local operation traces, pause/resume control, and a
220
+ two-phase user-confirmed commit-and-publish path. No desktop shell, watcher
221
+ dependency, semantic conflict resolution, force operation, browser apply
222
+ endpoint, telemetry, or hidden upload is introduced.
223
+ - Raise the Sync Git floor to 2.40 so default global and system attributes can
224
+ be observed, bind publication to the single resolved push URL, refuse URL
225
+ rewrite ambiguity, strip every inherited `GIT_*` process control, keep
226
+ read-only commands mutation-free, and return non-zero exits for paused status
227
+ and failed publication.
228
+
229
+ ## 0.2.0-alpha.5
230
+
231
+ - Harden boundary enforcement so path globs use segment-aware matching, an
232
+ explicitly empty or malformed content-rule policy is invalid, staged and
233
+ pushed binary evidence is scanned within bounded budgets, incomplete Git
234
+ reads fail closed, linked worktrees install hooks in the correct Git common
235
+ directory, and `boundary audit` defaults to the current working tree with an
236
+ explicit `--head` snapshot mode.
237
+ - Consolidate graph classification in one canonical engine. Markdown without a
238
+ `kg` block is now represented as `unclassified` with a private audience and
239
+ diagnostics; empty, partial, or malformed declarations remain blocking.
240
+ Generated projection directories remain derived from the file-class manifest
241
+ so graph validation and generated-only upgrade recovery cannot drift apart.
242
+ - Bind release egress verification to the exact `npm pack` inventory, including
243
+ test-shaped paths that are actually published, and make the legacy egress
244
+ checker a thin delegate to the canonical scanner. Packed fixture-suppression
245
+ markers are refused and reviewed local-computed suppressions are counted.
246
+ - Harden `atelier dev` so it binds only to loopback, requires a generated
247
+ `atelier.manifest.json`, serves only enrolled safe static files after
248
+ realpath validation, and applies host, fetch-site, origin, method, and nonce
249
+ checks to the relevant read and mutation routes.
250
+ - Make collaboration records fail closed with typed corrupt-record results,
251
+ bounded ledger reads, POSIX no-follow and cross-platform state-leaf identity
252
+ validation, content-bound event identifiers, write locking, explicit
253
+ compaction, and one-pass proposal-list materialization. Compatibility
254
+ snapshots are best-effort projections of committed events rather than a
255
+ second authority. Proposal authority now follows declared capabilities and
256
+ apply endpoints rather than action-like words, and the never-released
257
+ provider-analysis experiment was removed before it became part of a
258
+ published API.
259
+ - Render expected project and JSON failures as typed, actionable CLI messages
260
+ without stacks by default; set `ATELIER_DEBUG=1` to include diagnostic stacks.
261
+ - Strengthen release proof with negative-control mutations and a bare consumer
262
+ that installs without publisher overrides, validates its dependency tree,
263
+ and imports every declared package export. A candidate is packed once, bound
264
+ by SHA-256, and passed unchanged through tarball audit, consumer, and branded
265
+ distribution gates. The trusted-publishing workflow publishes that same
266
+ retained, audited tarball rather than repacking the source directory.
267
+ - Pin every JavaScript subpath and named export from `v0.2.0-alpha.4` in a
268
+ registry-verified compatibility baseline with immutable tag-commit and
269
+ public-artifact provenance. Release tooling refuses removals, provenance
270
+ drift, and binding modified source to an already-tagged package version.
271
+ - Add a portable `atelier disclosure check` command that scans tracked or
272
+ staged consumer content, requires private denylist coverage by default, and
273
+ refuses tracked repository-local denylist files. Portable and repository
274
+ sweeps now detect the full bounded family of private-key headers and refuse
275
+ binary or invalid-UTF-8 evidence instead of omitting it. Fork sweeps require
276
+ the trusted denylist secret and cannot fall back to the untrusted checkout.
277
+ Repository release sweeps also inspect every bounded blob introduced by the
278
+ commit range, so content added and deleted before the final tree cannot
279
+ become public history unseen.
280
+ - Add public agent instructions and mirrored skills for extracting reusable
281
+ mechanisms from private implementations without carrying tenant material
282
+ into Atelier, plus a managed local-service contract for durable loopback
283
+ authoring and review tools.
284
+ - Document the client-zero adapter rule that exact package identity, installed
285
+ dependency resolution, CLI version, and `atelier.lock.json` must agree. This
286
+ prevents a stale sibling checkout from satisfying a current adapter proof.
287
+ - Declare the audited `fast-uri` pin as a direct runtime dependency so packed
288
+ offline consumer installs resolve the same dependency closure as the source
289
+ checkout.
290
+
291
+ ## 0.2.0-alpha.4
292
+
293
+ Presentation release. No contract changes and no runtime behaviour changes:
294
+ documents valid against `0.2.0-alpha.0` remain valid.
295
+
296
+ - **The README now explains the system before the package.** It begins with
297
+ the repository as a durable substrate, then shows how ontology, enforcement,
298
+ governed projections, and a local runtime make the same work usable by
299
+ people, teams, agents, and tools.
300
+ - **The story progresses with the reader.** Stewards and collaborators get the
301
+ purpose and working loop first; builders get the graph and library surfaces;
302
+ technical readers retain the exact, test-gated claims, limitations, and
303
+ conformance boundaries.
304
+ - **Methodology authoring is presented as the proving ground, not the
305
+ category.** The package can support any file-based body of work whose
306
+ structure, relationships, disclosure, and readiness must remain portable and
307
+ enforceable.
308
+ - **Package and installation metadata match the new public presentation.** The
309
+ prerelease remains explicitly pinned, and the coordinated MNSTRY developer
310
+ documentation carries the same conceptual spine.
311
+ - **Bundled client instructions match the released CLI.** The Codex and Claude
312
+ open-Atelier skills use `atelier dev` and point registry users to the scoped,
313
+ collision-free install path.
314
+
315
+ ## 0.2.0-alpha.3
316
+
317
+ Documentation and metadata release. No contract changes and no runtime
318
+ behaviour changes: documents valid against `0.2.0-alpha.0` remain valid.
319
+
320
+ - **The package's promises are now under a gate.** The checkable claims,
321
+ the will-not-do list, the conformance/admission separation, and the
322
+ audience/visibility rule live canonically in `docs/blocks/`, the README
323
+ embeds them verbatim between markers, and a test fails when they drift.
324
+ Promises converge by machinery; framing diverges by audience.
325
+ - **The README is restructured as a depth ramp** — category and trust
326
+ posture first, the working loop with its visible result second, the
327
+ checkable claims third, boundaries fourth, architecture fifth, reference
328
+ last — and a new "Where the Atelier stops" section states the boundary
329
+ with MNSTRY's managed platform as a literal table.
330
+ - **Overbroad claims are corrected.** "Trustworthy enough for whatever you
331
+ govern with it" is gone from the README and `docs/design.md` — controls
332
+ shaped for one demanding case do not establish adequacy everywhere; the
333
+ agent-runtime passage now states the narrow, testable control rather
334
+ than a general safety claim; "does not contact external services" now
335
+ carries its documented `gh` exception inline; contract and test counts
336
+ are stated by command, not by number; the contributions text now matches
337
+ `CONTRIBUTING.md`'s outside-PRs-not-open-yet posture; and
338
+ `docs/continuity.md` speaks of npm publication in the present tense.
339
+ - **`npx` examples use the collision-free `mnstry-atelier` form.** The
340
+ unscoped npm name `atelier` belongs to an unrelated third-party package,
341
+ so a bare `npx atelier` outside an installed workspace runs someone
342
+ else's code. Every `npx` example on every surface now uses the branded
343
+ binary, `atelier` remains the documented command inside installed
344
+ workspaces, and `docs/install.md` no longer calls `mnstry-atelier` a
345
+ legacy alias — it is the safe form.
346
+ - **npm metadata describes the package from the outside.** A concrete
347
+ description, registry keywords, and a homepage that resolves to the
348
+ published documentation page.
349
+
350
+ ## 0.2.0-alpha.2
351
+
352
+ Documentation and release-lane release. No contract changes and no runtime
353
+ behaviour changes: documents valid against `0.2.0-alpha.0` remain valid.
354
+
355
+ - **The README is rebuilt around the system rather than its first
356
+ application.** New `docs/design.md` states the design in five movements —
357
+ a repository with an ontology, rules that refuse, collaboration as governed
358
+ disclosure, a local runtime for humans and for agents, and a platform for
359
+ your own tool — each ending with the command that proves it. Methodology
360
+ authoring is stated as the first application, not the ceiling.
361
+ - **Publishing is automated on tag push** via npm trusted publishing (OIDC),
362
+ so releases carry a provenance attestation and no registry token is stored
363
+ anywhere. Two fail-closed guards: the tagged commit must be an ancestor of
364
+ `main`, and the tag must equal `package.json`'s version.
365
+ - **The disclosure scanner no longer flags the OIDC permission key.**
366
+ `id-token` is a GitHub Actions permission, not a credential; the exemption
367
+ is the literal `id-` prefix only, and every other compound still matches.
368
+ - **`0.2.0` was published in error and unpublished the same day.** A
369
+ `npm version patch` against an alpha resolves the prerelease to `0.2.0`
370
+ rather than advancing it, and `git push --follow-tags` delivered the tag
371
+ even though branch protection rejected the commit, so a release published
372
+ from a commit that never landed on `main`. That number is permanently
373
+ retired on npm. The ancestry guard above exists so this cannot recur.
374
+
3
375
  ## 0.2.0-alpha.1
4
376
 
5
377
  First release published to the npm registry, under `@mnstry/atelier` with