@mnstry/atelier 0.2.0-alpha.12 → 0.2.0-alpha.14

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 (531) hide show
  1. package/CHANGELOG.md +894 -0
  2. package/README.md +159 -6
  3. package/contracts/atelier-adoption-policy.v2.schema.json +55 -0
  4. package/contracts/atelier-architecture.v1.schema.json +258 -0
  5. package/contracts/atelier-boundary-delegations.v1.schema.json +161 -0
  6. package/contracts/atelier-boundary-owner-keys.v1.schema.json +98 -0
  7. package/contracts/atelier-build.v1.schema.json +1076 -0
  8. package/contracts/atelier-capability.v1.schema.json +1252 -0
  9. package/contracts/atelier-coordination.v1.schema.json +1050 -0
  10. package/contracts/atelier-evidence-navigation.v1.schema.json +603 -0
  11. package/contracts/atelier-harness.v1.schema.json +234 -0
  12. package/contracts/atelier-ingestion.v1.schema.json +806 -0
  13. package/contracts/atelier-inquiry.v1.schema.json +1772 -0
  14. package/contracts/atelier-instruction-adoption.v1.schema.json +490 -0
  15. package/contracts/atelier-interaction.v1.schema.json +553 -0
  16. package/contracts/atelier-judgment.v1.schema.json +690 -0
  17. package/contracts/atelier-knowledge.v1.schema.json +1512 -0
  18. package/contracts/atelier-learning.v1.schema.json +1095 -0
  19. package/contracts/atelier-migration.v3.schema.json +64 -0
  20. package/contracts/atelier-personal-workspace-manifest.v1.schema.json +87 -0
  21. package/contracts/atelier-personal-workspace-overlay.v1.schema.json +299 -0
  22. package/contracts/atelier-template-adoption.v1.schema.json +223 -0
  23. package/contracts/atelier-template-profile.v1.schema.json +1168 -0
  24. package/contracts/atelier-trackable.v1.schema.json +781 -0
  25. package/contracts/atelier-upgrade-plan.v3.schema.json +532 -0
  26. package/docs/architecture.md +89 -0
  27. package/docs/assurance-controls.md +2 -2
  28. package/docs/blocks/capability-stewardship.md +17 -0
  29. package/docs/blocks/claims.md +16 -3
  30. package/docs/blocks/inquiry-harnesses.md +19 -0
  31. package/docs/blocks/learning-harnesses.md +17 -0
  32. package/docs/capability-stewardship.md +267 -0
  33. package/docs/coordination.md +51 -0
  34. package/docs/decision-practices.md +111 -0
  35. package/docs/decisions.md +29 -0
  36. package/docs/evidence-navigation.md +237 -0
  37. package/docs/exact-upgrades.md +3 -2
  38. package/docs/ingestion.md +181 -0
  39. package/docs/inquiry-harnesses.md +210 -0
  40. package/docs/install.md +80 -3
  41. package/docs/intake-and-guides.md +5 -0
  42. package/docs/integration-contract-decisions.md +24 -2
  43. package/docs/interaction-and-reflection.md +72 -0
  44. package/docs/knowledge-graph.md +20 -0
  45. package/docs/knowledge-health/api.md +30 -0
  46. package/docs/knowledge-health/assessment/api.md +96 -0
  47. package/docs/knowledge-health/assessment/capabilities.md +40 -0
  48. package/docs/knowledge-health/assessment/evaluation.md +27 -0
  49. package/docs/knowledge-health/assessment/facilitator.md +30 -0
  50. package/docs/knowledge-health/assessment/quickstart.md +61 -0
  51. package/docs/knowledge-health/assessment/troubleshooting.md +23 -0
  52. package/docs/knowledge-health/devday/facilitator.md +16 -0
  53. package/docs/knowledge-health/devday/participant-response.md +22 -0
  54. package/docs/knowledge-health/devday/public-default.md +107 -0
  55. package/docs/knowledge-health/devday/quickstart.md +18 -0
  56. package/docs/knowledge-health/devday/support.md +22 -0
  57. package/docs/knowledge-health/exercise.md +17 -0
  58. package/docs/knowledge-health/facilitator.md +20 -0
  59. package/docs/knowledge-health/quickstart.md +94 -0
  60. package/docs/knowledge-health/readme.md +15 -0
  61. package/docs/knowledge-health/support.md +34 -0
  62. package/docs/knowledge-setup.md +248 -0
  63. package/docs/knowledge-workspace.md +264 -0
  64. package/docs/learning-harnesses.md +237 -0
  65. package/docs/learning.md +215 -0
  66. package/docs/local-services.md +223 -19
  67. package/docs/obsidian-contract.md +246 -15
  68. package/docs/obsidian-plugin.md +252 -7
  69. package/docs/obsidian.md +874 -52
  70. package/docs/optional-ingestion.md +83 -0
  71. package/docs/personal-workspace.md +266 -0
  72. package/docs/practical-judgment.md +92 -0
  73. package/docs/progressive-ingestion-acceptance.md +89 -0
  74. package/docs/progressive-ingestion.md +235 -0
  75. package/docs/project-command-inventory.md +1 -0
  76. package/docs/release-engineering.md +50 -0
  77. package/docs/repo-boundary-guard.md +120 -3
  78. package/docs/research-starter-quickstart.md +66 -0
  79. package/docs/research-starter.md +114 -0
  80. package/docs/semantic-ingestion.md +198 -0
  81. package/docs/semantic-operation.md +318 -0
  82. package/docs/skill-steward.md +6 -0
  83. package/docs/template-profile.md +164 -0
  84. package/docs/template-upgrades.md +114 -0
  85. package/docs/trackables.md +111 -0
  86. package/docs/upgrade.md +219 -2
  87. package/fixtures/atelier-architecture/binding/invalid/document.json +19 -0
  88. package/fixtures/atelier-architecture/binding/valid/document.json +19 -0
  89. package/fixtures/atelier-architecture/catalog/invalid/document.json +290 -0
  90. package/fixtures/atelier-architecture/catalog/valid/document.json +343 -0
  91. package/fixtures/atelier-build-contract/attempt/invalid/document.json +20 -0
  92. package/fixtures/atelier-build-contract/attempt/valid/document.json +19 -0
  93. package/fixtures/atelier-build-contract/candidate/invalid/document.json +24 -0
  94. package/fixtures/atelier-build-contract/candidate/valid/document.json +23 -0
  95. package/fixtures/atelier-build-contract/decision/invalid/document.json +31 -0
  96. package/fixtures/atelier-build-contract/decision/valid/document.json +30 -0
  97. package/fixtures/atelier-build-contract/delivery/invalid/document.json +18 -0
  98. package/fixtures/atelier-build-contract/delivery/valid/document.json +17 -0
  99. package/fixtures/atelier-build-contract/gate/invalid/document.json +22 -0
  100. package/fixtures/atelier-build-contract/gate/valid/document.json +21 -0
  101. package/fixtures/atelier-build-contract/ledger/invalid/document.json +270 -0
  102. package/fixtures/atelier-build-contract/ledger/valid/document.json +269 -0
  103. package/fixtures/atelier-build-contract/objective/invalid/document.json +73 -0
  104. package/fixtures/atelier-build-contract/objective/valid/document.json +72 -0
  105. package/fixtures/atelier-build-contract/progress/invalid/document.json +18 -0
  106. package/fixtures/atelier-build-contract/progress/valid/document.json +17 -0
  107. package/fixtures/atelier-capability-contract/adoption/invalid/document.json +71 -0
  108. package/fixtures/atelier-capability-contract/adoption/valid/document.json +70 -0
  109. package/fixtures/atelier-capability-contract/event/invalid/document.json +18 -0
  110. package/fixtures/atelier-capability-contract/event/valid/document.json +17 -0
  111. package/fixtures/atelier-capability-contract/journal/invalid/document.json +382 -0
  112. package/fixtures/atelier-capability-contract/journal/valid/document.json +381 -0
  113. package/fixtures/atelier-capability-contract/notice/invalid/document.json +8 -0
  114. package/fixtures/atelier-capability-contract/notice/valid/document.json +7 -0
  115. package/fixtures/atelier-capability-contract/package/invalid/document.json +59 -0
  116. package/fixtures/atelier-capability-contract/package/valid/document.json +58 -0
  117. package/fixtures/atelier-capability-contract/plan/invalid/document.json +107 -0
  118. package/fixtures/atelier-capability-contract/plan/valid/document.json +106 -0
  119. package/fixtures/atelier-capability-contract/release/invalid/document.json +85 -0
  120. package/fixtures/atelier-capability-contract/release/valid/document.json +84 -0
  121. package/fixtures/atelier-capability-contract/state/invalid/document.json +316 -0
  122. package/fixtures/atelier-capability-contract/state/valid/document.json +315 -0
  123. package/fixtures/atelier-coordination/dependency/invalid/document.json +37 -0
  124. package/fixtures/atelier-coordination/dependency/valid/document.json +36 -0
  125. package/fixtures/atelier-coordination/directive/invalid/document.json +25 -0
  126. package/fixtures/atelier-coordination/directive/valid/document.json +24 -0
  127. package/fixtures/atelier-coordination/disposition/invalid/document.json +34 -0
  128. package/fixtures/atelier-coordination/disposition/valid/document.json +33 -0
  129. package/fixtures/atelier-coordination/outcome/invalid/document.json +39 -0
  130. package/fixtures/atelier-coordination/outcome/valid/document.json +38 -0
  131. package/fixtures/atelier-coordination/recovery/invalid/document.json +34 -0
  132. package/fixtures/atelier-coordination/recovery/valid/document.json +33 -0
  133. package/fixtures/atelier-harness-contract/handoff/invalid/document.json +25 -0
  134. package/fixtures/atelier-harness-contract/handoff/valid/document.json +24 -0
  135. package/fixtures/atelier-ingestion/invalid/authority.json +19 -0
  136. package/fixtures/atelier-ingestion/semantic-baseline.json +26 -0
  137. package/fixtures/atelier-ingestion/semantic-operation.json +75 -0
  138. package/fixtures/atelier-ingestion/valid/plan-input.json +18 -0
  139. package/fixtures/atelier-inquiry-contract/assessment/invalid/document.json +41 -0
  140. package/fixtures/atelier-inquiry-contract/assessment/valid/document.json +40 -0
  141. package/fixtures/atelier-inquiry-contract/bundle/invalid/document.json +51 -0
  142. package/fixtures/atelier-inquiry-contract/bundle/valid/document.json +50 -0
  143. package/fixtures/atelier-inquiry-contract/campaign/invalid/document.json +17 -0
  144. package/fixtures/atelier-inquiry-contract/campaign/valid/document.json +16 -0
  145. package/fixtures/atelier-inquiry-contract/decision/invalid/document.json +22 -0
  146. package/fixtures/atelier-inquiry-contract/decision/valid/document.json +21 -0
  147. package/fixtures/atelier-inquiry-contract/feedback/invalid/document.json +19 -0
  148. package/fixtures/atelier-inquiry-contract/feedback/valid/document.json +18 -0
  149. package/fixtures/atelier-inquiry-contract/handoff/invalid/document.json +92 -0
  150. package/fixtures/atelier-inquiry-contract/handoff/valid/document.json +91 -0
  151. package/fixtures/atelier-inquiry-contract/hypothesis/invalid/document.json +20 -0
  152. package/fixtures/atelier-inquiry-contract/hypothesis/valid/document.json +19 -0
  153. package/fixtures/atelier-inquiry-contract/ledger/invalid/document.json +680 -0
  154. package/fixtures/atelier-inquiry-contract/ledger/valid/document.json +679 -0
  155. package/fixtures/atelier-inquiry-contract/legacy-assessment/invalid/document.json +19 -0
  156. package/fixtures/atelier-inquiry-contract/legacy-assessment/valid/document.json +18 -0
  157. package/fixtures/atelier-inquiry-contract/request/invalid/document.json +50 -0
  158. package/fixtures/atelier-inquiry-contract/request/valid/document.json +49 -0
  159. package/fixtures/atelier-inquiry-contract/source/invalid/document.json +18 -0
  160. package/fixtures/atelier-inquiry-contract/source/valid/document.json +17 -0
  161. package/fixtures/atelier-inquiry-contract/withdrawal/invalid/document.json +16 -0
  162. package/fixtures/atelier-inquiry-contract/withdrawal/valid/document.json +15 -0
  163. package/fixtures/atelier-instruction-adoption/context-receipt/invalid/document.json +18 -0
  164. package/fixtures/atelier-instruction-adoption/context-receipt/valid/document.json +17 -0
  165. package/fixtures/atelier-instruction-adoption/plan/invalid/document.json +63 -0
  166. package/fixtures/atelier-instruction-adoption/plan/valid/document.json +62 -0
  167. package/fixtures/atelier-instruction-adoption/receipt/invalid/document.json +22 -0
  168. package/fixtures/atelier-instruction-adoption/receipt/valid/document.json +21 -0
  169. package/fixtures/atelier-instruction-adoption/state/invalid/document.json +30 -0
  170. package/fixtures/atelier-instruction-adoption/state/valid/document.json +29 -0
  171. package/fixtures/atelier-interaction/act/invalid/document.json +25 -0
  172. package/fixtures/atelier-interaction/act/valid/document.json +24 -0
  173. package/fixtures/atelier-interaction/assessment/invalid/document.json +32 -0
  174. package/fixtures/atelier-interaction/assessment/valid/document.json +31 -0
  175. package/fixtures/atelier-interaction/observation/invalid/document.json +22 -0
  176. package/fixtures/atelier-interaction/observation/valid/document.json +21 -0
  177. package/fixtures/atelier-interaction/policy/invalid/document.json +20 -0
  178. package/fixtures/atelier-interaction/policy/valid/document.json +19 -0
  179. package/fixtures/atelier-judgment/case/invalid/document.json +76 -0
  180. package/fixtures/atelier-judgment/case/valid/document.json +75 -0
  181. package/fixtures/atelier-judgment/decision/invalid/document.json +38 -0
  182. package/fixtures/atelier-judgment/decision/valid/document.json +37 -0
  183. package/fixtures/atelier-judgment/native-decision.md +3 -0
  184. package/fixtures/atelier-judgment/practice-reconsideration/definition.json +92 -0
  185. package/fixtures/atelier-judgment/practice-reconsideration/scenario.json +435 -0
  186. package/fixtures/atelier-knowledge-contract/activation/invalid/document.json +26 -0
  187. package/fixtures/atelier-knowledge-contract/activation/valid/document.json +25 -0
  188. package/fixtures/atelier-knowledge-contract/contribution/invalid/document.json +34 -0
  189. package/fixtures/atelier-knowledge-contract/contribution/valid/document.json +33 -0
  190. package/fixtures/atelier-knowledge-contract/domain/invalid/document.json +41 -0
  191. package/fixtures/atelier-knowledge-contract/domain/valid/document.json +40 -0
  192. package/fixtures/atelier-knowledge-contract/domain-revision/invalid/document.json +46 -0
  193. package/fixtures/atelier-knowledge-contract/domain-revision/valid/document.json +45 -0
  194. package/fixtures/atelier-knowledge-contract/evaluation/invalid/document.json +21 -0
  195. package/fixtures/atelier-knowledge-contract/evaluation/valid/document.json +20 -0
  196. package/fixtures/atelier-knowledge-contract/ledger/invalid/document.json +318 -0
  197. package/fixtures/atelier-knowledge-contract/ledger/valid/document.json +317 -0
  198. package/fixtures/atelier-knowledge-contract/relation/invalid/document.json +25 -0
  199. package/fixtures/atelier-knowledge-contract/relation/valid/document.json +24 -0
  200. package/fixtures/atelier-knowledge-contract/review/invalid/document.json +18 -0
  201. package/fixtures/atelier-knowledge-contract/review/valid/document.json +17 -0
  202. package/fixtures/atelier-knowledge-contract/withdrawal/invalid/document.json +16 -0
  203. package/fixtures/atelier-knowledge-contract/withdrawal/valid/document.json +15 -0
  204. package/fixtures/atelier-learning/invalid/authority.json +14 -0
  205. package/fixtures/atelier-learning/valid/capture.json +13 -0
  206. package/fixtures/atelier-personal-workspace-contract/manifest/invalid/authority-key.json +17 -0
  207. package/fixtures/atelier-personal-workspace-contract/manifest/invalid/nonempty-ext.json +25 -0
  208. package/fixtures/atelier-personal-workspace-contract/manifest/invalid/wrong-schema.json +22 -0
  209. package/fixtures/atelier-personal-workspace-contract/manifest/valid/manifest.json +22 -0
  210. package/fixtures/atelier-personal-workspace-contract/overlay/invalid/authority-key.json +25 -0
  211. package/fixtures/atelier-personal-workspace-contract/overlay/invalid/unknown-top-level-field.json +27 -0
  212. package/fixtures/atelier-personal-workspace-contract/overlay/invalid/wrong-schema.json +24 -0
  213. package/fixtures/atelier-trackable/definition/invalid/document.json +15 -0
  214. package/fixtures/atelier-trackable/definition/valid/document.json +14 -0
  215. package/fixtures/atelier-trackable/request/invalid/document.json +23 -0
  216. package/fixtures/atelier-trackable/request/valid/document.json +22 -0
  217. package/fixtures/boundary-delegations/invalid/authority-key.v1.json +30 -0
  218. package/fixtures/boundary-delegations/invalid/push-operation.v1.json +28 -0
  219. package/fixtures/boundary-delegations/invalid/unsigned.v1.json +25 -0
  220. package/fixtures/boundary-delegations/valid/empty.v1.json +4 -0
  221. package/fixtures/boundary-delegations/valid/signed-operator.v1.json +30 -0
  222. package/fixtures/boundary-owner-keys/invalid/wrong-algorithm.v1.json +15 -0
  223. package/fixtures/boundary-owner-keys/invalid/wrong-curve.v1.json +15 -0
  224. package/fixtures/boundary-owner-keys/valid/one-owner.v1.json +17 -0
  225. package/fixtures/capability-packages/adoption.example.json +70 -0
  226. package/fixtures/capability-packages/evidence-review/capability-package.json +58 -0
  227. package/fixtures/capability-packages/evidence-review/capability-release.json +84 -0
  228. package/fixtures/capability-packages/evidence-review/evaluation.md +15 -0
  229. package/fixtures/capability-packages/evidence-review/skills/evidence-review/SKILL.md +22 -0
  230. package/fixtures/capability-packages/evidence-review/skills/evidence-review/references/ledger.md +7 -0
  231. package/fixtures/capability-packages/research/capability-package.json +88 -0
  232. package/fixtures/capability-packages/research/capability-release.json +134 -0
  233. package/fixtures/capability-packages/research/evaluation.md +15 -0
  234. package/fixtures/capability-packages/research/skills/research-integrate/SKILL.md +29 -0
  235. package/fixtures/capability-packages/research/skills/research-integrate/references/integration.md +10 -0
  236. package/fixtures/capability-packages/research/skills/research-plan/SKILL.md +27 -0
  237. package/fixtures/capability-packages/research/skills/research-plan/references/inquiries.md +26 -0
  238. package/fixtures/capability-packages/research/skills/research-synthesize/SKILL.md +23 -0
  239. package/fixtures/capability-packages/research/skills/research-synthesize/references/synthesis.md +12 -0
  240. package/fixtures/evidence-navigation/invalid/duplicate-operation.json +16 -0
  241. package/fixtures/evidence-navigation/invalid/instruction-kind.json +36 -0
  242. package/fixtures/evidence-navigation/invalid/invalid-digest.json +36 -0
  243. package/fixtures/evidence-navigation/invalid/invalid-time.json +36 -0
  244. package/fixtures/evidence-navigation/invalid/missing-attribution.json +35 -0
  245. package/fixtures/evidence-navigation/invalid/reserved-extension.json +19 -0
  246. package/fixtures/evidence-navigation/invalid/unattributed-acceptance.json +36 -0
  247. package/fixtures/evidence-navigation/invalid/uncoerced-version.json +16 -0
  248. package/fixtures/evidence-navigation/invalid/unknown-currency.json +17 -0
  249. package/fixtures/evidence-navigation/invalid/unknown-selector-field.json +37 -0
  250. package/fixtures/evidence-navigation/invalid/unsupported-operation.json +15 -0
  251. package/fixtures/evidence-navigation/valid/claim.json +36 -0
  252. package/fixtures/evidence-navigation/valid/host.json +16 -0
  253. package/fixtures/evidence-navigation/valid/profile.json +16 -0
  254. package/fixtures/evidence-navigation/valid/snapshot.json +17 -0
  255. package/fixtures/harness-packages/build-harness/capability-package.json +61 -0
  256. package/fixtures/harness-packages/build-harness/capability-release.json +82 -0
  257. package/fixtures/harness-packages/build-harness/evaluation.md +3 -0
  258. package/fixtures/harness-packages/build-harness/skills/atelier-build-harness/SKILL.md +59 -0
  259. package/fixtures/harness-packages/knowledge-harness/capability-package.json +61 -0
  260. package/fixtures/harness-packages/knowledge-harness/capability-release.json +82 -0
  261. package/fixtures/harness-packages/knowledge-harness/evaluation.md +3 -0
  262. package/fixtures/harness-packages/knowledge-harness/skills/atelier-knowledge-harness/SKILL.md +60 -0
  263. package/fixtures/harnesses/learning-cycle.json +780 -0
  264. package/fixtures/inquiry/workshop.json +675 -0
  265. package/fixtures/inquiry-packages/discovery-harness/capability-package.json +61 -0
  266. package/fixtures/inquiry-packages/discovery-harness/capability-release.json +82 -0
  267. package/fixtures/inquiry-packages/discovery-harness/evaluation.md +3 -0
  268. package/fixtures/inquiry-packages/discovery-harness/skills/atelier-discovery-harness/SKILL.md +48 -0
  269. package/fixtures/inquiry-packages/research-harness/capability-package.json +61 -0
  270. package/fixtures/inquiry-packages/research-harness/capability-release.json +82 -0
  271. package/fixtures/inquiry-packages/research-harness/evaluation.md +3 -0
  272. package/fixtures/inquiry-packages/research-harness/skills/atelier-research-harness/SKILL.md +43 -0
  273. package/fixtures/knowledge-health/calibration-suite.json +26 -0
  274. package/fixtures/knowledge-health/calibration-trial.json +37 -0
  275. package/fixtures/knowledge-health/corrected/checklist.md +18 -0
  276. package/fixtures/knowledge-health/devday/participant-record.json +19 -0
  277. package/fixtures/knowledge-health/expected-summary.json +27 -0
  278. package/fixtures/knowledge-health/workshop/README.md +20 -0
  279. package/fixtures/knowledge-health/workshop/atelier.project.json +7 -0
  280. package/fixtures/knowledge-health/workshop/knowledge-plan.json +65 -0
  281. package/fixtures/knowledge-health/workshop/records/checklist.md +18 -0
  282. package/fixtures/knowledge-health/workshop/records/workshop.md +18 -0
  283. package/fixtures/knowledge-health/workshop/repo-access.v1.json +5 -0
  284. package/fixtures/knowledge-health/workspace/atelier.project.json +18 -0
  285. package/fixtures/knowledge-health/workspace/knowledge-plan.json +74 -0
  286. package/fixtures/knowledge-health/workspace/records/checklist.md +18 -0
  287. package/fixtures/knowledge-health/workspace/records/pilot.md +16 -0
  288. package/fixtures/knowledge-health/workspace/repo-access.v1.json +9 -0
  289. package/fixtures/personal-workspace/overlay.json +24 -0
  290. package/fixtures/templates/local-library.v1.json +76 -0
  291. package/fixtures/templates/upgrade-contracts/adoption-policy.v2/invalid.json +16 -0
  292. package/fixtures/templates/upgrade-contracts/adoption-policy.v2/valid.json +13 -0
  293. package/fixtures/templates/upgrade-contracts/migration.v3/invalid.json +24 -0
  294. package/fixtures/templates/upgrade-contracts/migration.v3/valid.json +21 -0
  295. package/fixtures/templates/upgrade-contracts/template-adoption.v1/invalid.json +60 -0
  296. package/fixtures/templates/upgrade-contracts/template-adoption.v1/valid.json +57 -0
  297. package/fixtures/templates/upgrade-contracts/upgrade-plan.v3/invalid.json +85 -0
  298. package/fixtures/templates/upgrade-contracts/upgrade-plan.v3/valid.json +82 -0
  299. package/package.json +60 -5
  300. package/plugins/obsidian/main.js +57 -8
  301. package/plugins/obsidian/manifest.json +1 -1
  302. package/skills/claude/atelier-build-harness/SKILL.md +59 -0
  303. package/skills/claude/atelier-coordination/SKILL.md +32 -0
  304. package/skills/claude/atelier-discovery-harness/SKILL.md +48 -0
  305. package/skills/claude/atelier-guided-upgrade/SKILL.md +29 -0
  306. package/skills/claude/atelier-interaction/SKILL.md +34 -0
  307. package/skills/claude/atelier-knowledge-harness/SKILL.md +60 -0
  308. package/skills/claude/atelier-knowledge-setup/SKILL.md +72 -0
  309. package/skills/claude/atelier-practical-judgment/SKILL.md +64 -0
  310. package/skills/claude/atelier-research-harness/SKILL.md +43 -0
  311. package/skills/claude/atelier-skill-steward/SKILL.md +53 -0
  312. package/skills/claude/atelier-trackables/SKILL.md +40 -0
  313. package/skills/codex/atelier-build-harness/SKILL.md +59 -0
  314. package/skills/codex/atelier-coordination/SKILL.md +32 -0
  315. package/skills/codex/atelier-discovery-harness/SKILL.md +48 -0
  316. package/skills/codex/atelier-guided-upgrade/SKILL.md +29 -0
  317. package/skills/codex/atelier-interaction/SKILL.md +34 -0
  318. package/skills/codex/atelier-knowledge-harness/SKILL.md +60 -0
  319. package/skills/codex/atelier-knowledge-setup/SKILL.md +72 -0
  320. package/skills/codex/atelier-practical-judgment/SKILL.md +64 -0
  321. package/skills/codex/atelier-research-harness/SKILL.md +43 -0
  322. package/skills/codex/atelier-skill-steward/SKILL.md +53 -0
  323. package/skills/codex/atelier-trackables/SKILL.md +40 -0
  324. package/src/architecture/catalog.mjs +355 -0
  325. package/src/architecture/index.mjs +93 -0
  326. package/src/boundary/content-rules.mjs +536 -69
  327. package/src/boundary/delegation-command.mjs +158 -0
  328. package/src/boundary/delegation.mjs +396 -0
  329. package/src/boundary/policy.mjs +185 -64
  330. package/src/build/git.mjs +18 -0
  331. package/src/build/index.mjs +3 -0
  332. package/src/build/ledger.mjs +88 -0
  333. package/src/capabilities/adoption.mjs +381 -0
  334. package/src/capabilities/evidence.mjs +140 -0
  335. package/src/capabilities/files.mjs +124 -0
  336. package/src/capabilities/index.mjs +4 -0
  337. package/src/capabilities/instructions.mjs +250 -0
  338. package/src/capabilities/package.mjs +136 -0
  339. package/src/cli/command-failure.mjs +36 -0
  340. package/src/cli/execute-command.mjs +16 -2
  341. package/src/cli/run.mjs +66 -9
  342. package/src/coauthor/store.mjs +43 -2
  343. package/src/collaboration/proposals.mjs +189 -0
  344. package/src/commands/architecture.mjs +27 -0
  345. package/src/commands/boundary.mjs +3 -0
  346. package/src/commands/capability.mjs +73 -0
  347. package/src/commands/enroll.mjs +3 -0
  348. package/src/commands/harness.mjs +79 -0
  349. package/src/commands/ingest.mjs +39 -0
  350. package/src/commands/init.mjs +4 -1
  351. package/src/commands/inquiry.mjs +66 -0
  352. package/src/commands/knowledge-semantic.mjs +128 -0
  353. package/src/commands/knowledge.mjs +119 -0
  354. package/src/commands/learn.mjs +61 -0
  355. package/src/commands/obsidian.mjs +772 -65
  356. package/src/commands/practice.mjs +24 -0
  357. package/src/commands/setup.mjs +22 -2
  358. package/src/commands/trackable.mjs +19 -0
  359. package/src/contracts/corpus.mjs +30 -0
  360. package/src/coordination/index.mjs +110 -0
  361. package/src/evidence-navigation/contracts.mjs +60 -0
  362. package/src/evidence-navigation/evaluate.mjs +69 -0
  363. package/src/evidence-navigation/generation.mjs +22 -0
  364. package/src/evidence-navigation/index.mjs +2 -0
  365. package/src/evidence-navigation/local.mjs +167 -0
  366. package/src/evidence-navigation/schema.generated.mjs +604 -0
  367. package/src/evidence-navigation/types.mjs +12 -0
  368. package/src/export/atelier-export-contract.mjs +35 -8
  369. package/src/graph/enroll.mjs +248 -0
  370. package/src/graph/graph.mjs +30 -6
  371. package/src/graph/knowledge-graph.mjs +77 -9
  372. package/src/harnesses/contracts.mjs +41 -0
  373. package/src/harnesses/exchange.mjs +154 -0
  374. package/src/harnesses/feedback.mjs +16 -0
  375. package/src/harnesses/history.mjs +37 -0
  376. package/src/harnesses/index.mjs +4 -0
  377. package/src/harnesses/store.mjs +29 -0
  378. package/src/ingestion/contracts.mjs +41 -0
  379. package/src/ingestion/evaluation.mjs +119 -0
  380. package/src/ingestion/optional/composition/index.mjs +171 -0
  381. package/src/ingestion/optional/evaluation/index.mjs +219 -0
  382. package/src/ingestion/optional/graphify/composition-binding.mjs +60 -0
  383. package/src/ingestion/optional/graphify/composition_receiving.py +185 -0
  384. package/src/ingestion/optional/graphify/graphify_supplier.py +938 -0
  385. package/src/ingestion/optional/graphify/json_bridge.py +163 -0
  386. package/src/ingestion/optional/graphify/native-closure-pins.json +275 -0
  387. package/src/ingestion/optional/graphify/native-pins.json +306 -0
  388. package/src/ingestion/optional/graphify/query_receiving.py +209 -0
  389. package/src/ingestion/optional/index.mjs +9 -0
  390. package/src/ingestion/optional/jev/bridge.mjs +166 -0
  391. package/src/ingestion/optional/jev/composition-binding.mjs +116 -0
  392. package/src/ingestion/optional/jev/judgments.mjs +174 -0
  393. package/src/ingestion/optional/jev/native-translation.mjs +32 -0
  394. package/src/ingestion/optional/lightrag/atelier_lightrag_supplier/__init__.py +7 -0
  395. package/src/ingestion/optional/lightrag/atelier_lightrag_supplier/adapter.py +966 -0
  396. package/src/ingestion/optional/lightrag/atelier_lightrag_supplier/artifacts.py +101 -0
  397. package/src/ingestion/optional/lightrag/atelier_lightrag_supplier/projection.py +146 -0
  398. package/src/ingestion/optional/lightrag/composition-binding.mjs +67 -0
  399. package/src/ingestion/optional/vanilla/composition-binding.mjs +102 -0
  400. package/src/ingestion/optional/vanilla/index.mjs +218 -0
  401. package/src/ingestion/optional/vanilla/native-normalization.mjs +187 -0
  402. package/src/ingestion/processors.mjs +218 -0
  403. package/src/ingestion/semantic.mjs +203 -0
  404. package/src/ingestion/store.mjs +372 -0
  405. package/src/inquiry/beliefs.mjs +32 -0
  406. package/src/inquiry/contracts.mjs +23 -0
  407. package/src/inquiry/index.mjs +5 -0
  408. package/src/inquiry/ledger.mjs +135 -0
  409. package/src/inquiry/lenses.mjs +15 -0
  410. package/src/inquiry/projection.mjs +77 -0
  411. package/src/inquiry/store.mjs +35 -0
  412. package/src/intake/read-scope.mjs +12 -0
  413. package/src/intake/store.mjs +69 -6
  414. package/src/interaction/index.mjs +91 -0
  415. package/src/judgment/index.mjs +82 -0
  416. package/src/judgment/practice-evaluation.mjs +70 -0
  417. package/src/judgment/practice.mjs +144 -0
  418. package/src/knowledge/context.mjs +217 -0
  419. package/src/knowledge/index.mjs +5 -0
  420. package/src/knowledge/ingestion.mjs +79 -0
  421. package/src/knowledge/intake.mjs +33 -0
  422. package/src/knowledge/ledger.mjs +110 -0
  423. package/src/knowledge/participatory/guidance.mjs +36 -0
  424. package/src/knowledge/participatory/guided-contribution.mjs +44 -0
  425. package/src/knowledge/participatory/index.mjs +2 -0
  426. package/src/knowledge/participatory/installed-workshop.mjs +108 -0
  427. package/src/knowledge/plan.mjs +67 -0
  428. package/src/knowledge/projection.mjs +43 -0
  429. package/src/knowledge/semantic-operation.mjs +567 -0
  430. package/src/knowledge/sessions.mjs +467 -0
  431. package/src/knowledge/workspace.mjs +295 -0
  432. package/src/knowledge-health/assessment.mjs +165 -0
  433. package/src/knowledge-health/capabilities.mjs +350 -0
  434. package/src/knowledge-health/context.mjs +62 -0
  435. package/src/knowledge-health/example.mjs +47 -0
  436. package/src/knowledge-health/index.mjs +10 -0
  437. package/src/knowledge-health/owner-join.mjs +88 -0
  438. package/src/knowledge-health/proof/common.mjs +24 -0
  439. package/src/knowledge-health/proof/installed-check.mjs +100 -0
  440. package/src/knowledge-health/proof/native-readback.mjs +37 -0
  441. package/src/knowledge-health/proof/rehearse.mjs +68 -0
  442. package/src/knowledge-health/proof/validate-participant.mjs +17 -0
  443. package/src/knowledge-health/proof/verify-native-capture.mjs +14 -0
  444. package/src/knowledge-health/proof/workshop-check.mjs +36 -0
  445. package/src/knowledge-health/rule-identity.mjs +49 -0
  446. package/src/knowledge-health/workshop-composition.mjs +19 -0
  447. package/src/knowledge-health/workshop-profile.mjs +176 -0
  448. package/src/knowledge-health/workshop.mjs +99 -0
  449. package/src/learning/adapters.mjs +68 -0
  450. package/src/learning/assistance.mjs +127 -0
  451. package/src/learning/contracts.mjs +65 -0
  452. package/src/learning/store.mjs +272 -0
  453. package/src/personal-workspace/index.mjs +391 -0
  454. package/src/personal-workspace/selection.mjs +401 -0
  455. package/src/project/config.mjs +8 -0
  456. package/src/project/durable-state.mjs +3 -1
  457. package/src/project/file-class.mjs +1 -1
  458. package/src/project/path-match.mjs +2 -1
  459. package/src/projection/obsidian/edits/apply.mjs +55 -16
  460. package/src/projection/obsidian/materialize/prepare-view.mjs +87 -5
  461. package/src/projection/obsidian/personal-workspace.mjs +519 -0
  462. package/src/projection/obsidian/proposals/adapter.mjs +79 -17
  463. package/src/projection/obsidian/proposals/observation.mjs +50 -4
  464. package/src/projection/obsidian/publication/publisher.mjs +214 -18
  465. package/src/projection/obsidian/publication/vault-list.mjs +4 -3
  466. package/src/projection/obsidian/recovery/index.mjs +4 -1
  467. package/src/projection/obsidian/recovery/store.mjs +160 -7
  468. package/src/projection/obsidian/selection-ui/contribution.mjs +6 -5
  469. package/src/projection/project.mjs +3 -2
  470. package/src/readiness/readiness.mjs +10 -3
  471. package/src/reflection/index.mjs +56 -0
  472. package/src/runtime/obsidian/app-production-seams.mjs +48 -16
  473. package/src/runtime/obsidian/app-registration.mjs +175 -28
  474. package/src/runtime/obsidian/app-restart.mjs +154 -0
  475. package/src/runtime/obsidian/engine.mjs +437 -56
  476. package/src/runtime/obsidian/extension-points.mjs +1 -1
  477. package/src/runtime/obsidian/index.mjs +10 -7
  478. package/src/runtime/obsidian/launch-plan.mjs +7 -4
  479. package/src/runtime/obsidian/lifecycle.mjs +108 -23
  480. package/src/runtime/obsidian/login-item.mjs +335 -0
  481. package/src/runtime/obsidian/machine-settings.mjs +119 -12
  482. package/src/runtime/obsidian/observation.mjs +36 -4
  483. package/src/runtime/obsidian/opening.mjs +173 -38
  484. package/src/runtime/obsidian/personal-selection.mjs +125 -0
  485. package/src/runtime/obsidian/pipeline.mjs +115 -6
  486. package/src/runtime/obsidian/plugin-channel.mjs +11 -3
  487. package/src/runtime/obsidian/plugin-choice.mjs +16 -4
  488. package/src/runtime/obsidian/plugin-drift.mjs +59 -11
  489. package/src/runtime/obsidian/plugin-presence.mjs +14 -1
  490. package/src/runtime/obsidian/private-lock.mjs +39 -4
  491. package/src/runtime/obsidian/process-identity.mjs +20 -10
  492. package/src/runtime/obsidian/project-views.mjs +282 -0
  493. package/src/runtime/obsidian/questions.mjs +48 -0
  494. package/src/runtime/obsidian/release-watch.mjs +56 -0
  495. package/src/runtime/obsidian/service-main.mjs +148 -19
  496. package/src/runtime/obsidian/service-manager-production.mjs +61 -0
  497. package/src/runtime/obsidian/service-managers.mjs +275 -0
  498. package/src/runtime/obsidian/service-record.mjs +87 -23
  499. package/src/runtime/obsidian/service.mjs +102 -9
  500. package/src/runtime/obsidian/startup-adapters.mjs +59 -21
  501. package/src/runtime/obsidian/unheld-evidence.mjs +84 -0
  502. package/src/runtime/obsidian/vault-location.mjs +300 -0
  503. package/src/runtime/obsidian/view-counts.mjs +34 -0
  504. package/src/runtime/obsidian/view-permission.mjs +334 -0
  505. package/src/server/local-sidecar.mjs +169 -2
  506. package/src/server/server.mjs +28 -2
  507. package/src/template-bindings/project.mjs +92 -0
  508. package/src/templates/profile.mjs +225 -0
  509. package/src/trackables/domain.mjs +175 -0
  510. package/src/trackables/store.mjs +114 -0
  511. package/src/ui/control-system.mjs +201 -0
  512. package/src/ui/html-primitives.mjs +3 -0
  513. package/src/ui/knowledge-page.mjs +1388 -0
  514. package/src/upgrade/closure-diagnostics.mjs +135 -0
  515. package/src/upgrade/closure.mjs +649 -0
  516. package/src/upgrade/explanation.mjs +1 -1
  517. package/src/upgrade/template-participant.mjs +171 -0
  518. package/src/upgrade/transaction.mjs +72 -25
  519. package/src/upgrade/upgrade.mjs +20 -7
  520. package/templates/external-project-workspace/pack-lifecycle.json +7 -1
  521. package/templates/knowledge-workspace/.gitattributes +2 -0
  522. package/templates/knowledge-workspace/AGENTS.md +27 -0
  523. package/templates/knowledge-workspace/README.md +44 -0
  524. package/templates/knowledge-workspace/atelier.project.json +22 -0
  525. package/templates/knowledge-workspace/gitignore +6 -0
  526. package/templates/knowledge-workspace/knowledge-plan.json +111 -0
  527. package/templates/knowledge-workspace/knowledge-plan.schema.json +281 -0
  528. package/templates/knowledge-workspace/records/forecast.md +22 -0
  529. package/templates/knowledge-workspace/records/inspection.md +25 -0
  530. package/templates/knowledge-workspace/records/telescope.md +24 -0
  531. package/templates/knowledge-workspace/repo-access.v1.json +9 -0
@@ -0,0 +1,164 @@
1
+ # Portable template profiles
2
+
3
+ Status: Next-release package API. Import validators from
4
+ `@mnstry/atelier/templates` and canonical project binding from
5
+ `@mnstry/atelier/template-bindings`. The versioned schema is exported at
6
+ `@mnstry/atelier/contracts/atelier-template-profile.v1.schema.json`.
7
+ These APIs do not establish installed product-host acceptance.
8
+
9
+ A template profile names semantic roles, surface roles, supported carriers,
10
+ compatibility and limits. An adopter binds those roles to its own source. The
11
+ profile carries no project content, renderer, runtime handler or permission.
12
+
13
+ ## Four independent grammars
14
+
15
+ - Semantic roles describe resource, relation, facet, asset, collection, sequence,
16
+ occurrence, offer and action-descriptor structure. Profiles choose a subset.
17
+ - Surface roles describe composition: Shell, region, collection, card, detail,
18
+ graph, filter, offer, status, refusal and receipt views. They reference semantic
19
+ role identifiers, not executable components.
20
+ - Runtime meaning is an optional opaque `RuntimeProfileRef`. A host must supply
21
+ the exact profile for runtime participation; ordinary local authoring needs
22
+ no runtime connection. The profile never creates an operation or receipt.
23
+ - Governance and release identities are typed digest-bound references. A
24
+ `TemplateRef` is not interchangeable with a source, policy, authority decision,
25
+ project binding, projection or release reference.
26
+
27
+ ## Validation stages
28
+
29
+ | Entry point | Checks | Does not prove |
30
+ | --- | --- | --- |
31
+ | `validateTemplateDefinition(profile)` | Closed grammar, bounded data, unique roles, surface references and supported extension behavior | Adoption, content or host availability |
32
+ | `validateTemplateBinding(profile, binding, records)` | Exact template, role cardinality, required roles, resolved source digests | Source ownership or content truth |
33
+ | `validateTemplateRelease(profile, binding, release, records)` | Exact binding, projection/source/policy/decision/payload references, required carriers | Publication acceptance, rights or distribution |
34
+ | `validateTemplateHost(profile, host)` | Exact version/pack/runtime requirements, primitives and optional decision observations | Host authentication, actual renderer behavior or operation permission |
35
+
36
+ Every result includes `authority: structural-only`, `executionAuthority: false`
37
+ and `publicationAuthority: false`. No result authorizes a write, network request,
38
+ installation or publication. The implementation does not mutate inputs.
39
+
40
+ Reference inventories contain `{ ref, document }` entries. All entries are
41
+ bounded plain JSON; duplicate `(kind, id, version)` identities refuse even if
42
+ their digests differ. References must resolve to exact supplied bytes. No URL
43
+ fetching, path loading, provider call or dynamic extension code occurs.
44
+
45
+ `templateReference(kind, id, version, document)` hashes the existing Atelier
46
+ canonical JSON serialization of:
47
+
48
+ ```json
49
+ { "schema": "atelier-template-digest@v1", "kind": "SourceRef", "id": "sample", "version": "v1", "document": {} }
50
+ ```
51
+
52
+ The digest is `sha256:` plus lowercase hexadecimal. Kind, identifier and version
53
+ belong to the digest domain. Template, binding and release versions use SemVer;
54
+ other source-owned versions remain opaque strings. Pack versions retain their
55
+ existing `vN` contract. None of these digests is a signature or an authenticated
56
+ authority decision. This new domain does not reinterpret older artifact digests.
57
+
58
+ ## Extensions and evolution
59
+
60
+ This is a separate versioned artifact; the closed extension-pack v1 schema is
61
+ unchanged. Profiles may link optional namespaced schema/payload references.
62
+ Their bytes must resolve at binding/release validation, but their meanings stay
63
+ opaque and inert. This version registers no required extension handlers and
64
+ refuses every required extension. Do not place required behavior in optional
65
+ annotations to evade admission.
66
+
67
+ Exact compatible Atelier versions and pack digests are explicit. There is no
68
+ automatic version coercion, range admission, migration or upgrade apply in this
69
+ module. A new contract version and the existing owner-controlled upgrade path
70
+ must govern changes. Keep prior source and profile artifacts for recovery.
71
+
72
+ The schema follows the contract epoch's optional `contractVersion` and `ext`
73
+ conventions. Its `ext` containers are reserved and permit no properties in this
74
+ revision. Optional extension data must use the explicit digest-bound namespaced
75
+ `extensions` list; required behavior cannot be smuggled through an ignored bag.
76
+
77
+ ## Optional advisory decisions
78
+
79
+ `optionalDecisions` declares named tasks using `atelier-decision-request@v1`.
80
+ Each is explicitly optional; the schema refuses a required provider and provides
81
+ no vendor selector. `validateTemplateDecision` consumes the existing request and
82
+ result validators, checks the task binding, and retains proposal-only semantics.
83
+ It does not decide whether the answer is true or should influence the graph.
84
+
85
+ A host may report `absent`, `disabled`, `unqualified` or `available`. Available
86
+ requires an exact `CapabilityRef`; it remains an untrusted structural observation
87
+ until the host's existing capability and authority checks qualify it. Absence
88
+ leaves local reading and authoring usable. Every diagnostic retains a
89
+ deterministic/manual fallback and `invocationAuthorized: false`.
90
+
91
+ No decision SDK, credential, network access, provider selection or automatic
92
+ substitution is required. Actual consent, disclosure, execution, budgets,
93
+ revocation and qualification remain with the existing host/capability owners.
94
+ This module adds neither a capability registry nor a second decision ontology.
95
+
96
+ ## Synthetic proof and remaining integration
97
+
98
+ ```sh
99
+ node --test test/template-profile.test.mjs
100
+ ```
101
+
102
+ The invented reading-shelf fixture exercises structural positive cases and
103
+ refusals. It is not a real publication, owner approval, visual baseline or
104
+ conformance certificate. Software/definition licensing never supplies content
105
+ rights or paid-service entitlement.
106
+
107
+ ## Canonical project binding
108
+
109
+ `@mnstry/atelier/template-bindings` exports `createTemplateProjectView(project,
110
+ requestJson)`. Supply an existing loaded Atelier project and bounded JSON text
111
+ with `profile`, `projectRef`, `roleNodeIds`, `target` and optional `theme`.
112
+ For example, `roleNodeIds: { items: ['library:paper', 'library:thread'] }` binds
113
+ the synthetic shelf's role to existing source identities. The adapter calls the
114
+ canonical graph builder with its fresh file cache; each SourceRef binds the
115
+ exact Markdown byte digest used by that census, not metadata alone.
116
+
117
+ The initial adapter supports classified active Markdown sources bound as
118
+ Resource, with CollectionView/StatusView presentation. CollectionView is a view
119
+ of selected resources, not proof of a semantic Collection. An unused optional
120
+ Collection role reports unsupported without closing local Resource authoring;
121
+ binding it or requiring it refuses until an explicit canonical mapping exists.
122
+ Unknown targets,
123
+ missing or withheld selected sources, audience/repository-boundary widening,
124
+ unsupported views, missing required roles and runtime-profile requirements
125
+ refuse. Draft/archived sources do not appear. Local archival is not a governed
126
+ withdrawal receipt, and old exported copies are not remotely erased.
127
+
128
+ Presentation models, escaping, themes and static HTML come from the existing
129
+ presentation package. Web and document preview are the same read-only bytes;
130
+ no inert control pretends to be an implemented action. The adapter writes no
131
+ source, projection, lock or release and performs no provider call. Optional
132
+ decisions report absent with the deterministic/manual fallback.
133
+
134
+ `textPreview` provides the same selected titles, summaries, self-description
135
+ and status as plain text without CSS, script or media. It is a local low-bandwidth
136
+ preview, not an email/chat adapter, portable document package or publication.
137
+
138
+ ```sh
139
+ node --test test/template-profile.test.mjs test/template-journey.test.mjs
140
+ ```
141
+
142
+ The journey test uses disposable synthetic repositories, the actual local
143
+ maintenance engine and production `createSourceApply`, not an alternate source
144
+ writer. A simulated person's edit is held, applied to canonical source,
145
+ rebuilt and rendered; the old binding refuses against the new source, duplicate
146
+ apply is idempotent and an unrelated resource remains byte-identical. The test
147
+ does not open the desktop application, accept a release or prove accessibility
148
+ with assistive technology. On platforms without production atomic exchange,
149
+ the apply journey explicitly skips and must not count as platform acceptance.
150
+
151
+ `npm run consumer:smoke` installs the exact tarball offline and exercises the
152
+ template APIs by package name. Its synthetic journey binds canonical source,
153
+ checks provider absence and audience refusal, applies an edit through the
154
+ installed source-apply owner, rejects the stale binding, and checks idempotence
155
+ and preservation of an unrelated source. Atomic exchange is required for the
156
+ write portion; other platforms retain the read-only checks.
157
+
158
+ The built-in [template adoption participant](template-upgrades.md) connects local
159
+ profile adoption, exact locks, retained history and read-only projections to the
160
+ existing upgrade transaction engine. External packs, runtime extensions and
161
+ automatic restoration remain unsupported.
162
+
163
+ Remaining integration includes interactive host wiring, all-carrier conformance,
164
+ actual host/accessibility/visual proof, and receiving-owner acceptance.
@@ -0,0 +1,114 @@
1
+ # Local template adoption
2
+
3
+ The built-in `local-template-profile@1` participant prepares an inert template
4
+ profile, graph selection and read-only projection in the existing exact-plan
5
+ upgrade engine. It uses the same exclusive writer, exact preimages, saved bytes,
6
+ append-only private journal, backups, commit hooks and commit verification.
7
+ It is not a plugin registry or a second transaction engine.
8
+
9
+ ## Prepare and inspect
10
+
11
+ Use an isolated linked worktree with one managed root repository. Commit the
12
+ profile and selection JSON inputs before preparing. Both paths must be literal,
13
+ distinct, root-relative regular non-executable files outside managed output.
14
+ The selection has exactly `projectRef`, `roleNodeIds`, `target`, and optional
15
+ `theme`. Source selection and disclosure are enforced by the existing canonical
16
+ graph, projection policy and template composition adapter.
17
+
18
+ Explicit enrollment uses `atelier.adoption-policy.json`:
19
+
20
+ ```json
21
+ {
22
+ "schema": "mnstry.atelier-adoption-policy@v2",
23
+ "enabled": true,
24
+ "participant": "local-template-profile@1",
25
+ "mode": "manual-exact-plan",
26
+ "maxAgeSeconds": 86400,
27
+ "recoveryCoverage": "local-only",
28
+ "allowedEffects": ["template-adoption", "lock-and-projections", "git-commit"]
29
+ }
30
+ ```
31
+
32
+ The API is exported through the existing `@mnstry/atelier/upgrade` subpath:
33
+
34
+ ```js
35
+ import { prepareTemplateUpgrade, explainSavedUpgrade, applySavedUpgrade }
36
+ from '@mnstry/atelier/upgrade'
37
+
38
+ const prepared = prepareTemplateUpgrade({
39
+ project,
40
+ profileFile: 'next-profile.json',
41
+ selectionFile: 'next-selection.json',
42
+ })
43
+ const explanation = explainSavedUpgrade({ project, planFile: prepared.savedPlan })
44
+ // Inspect the exact changes and obtain the owner's selection before applying.
45
+ // A digest identifies bytes; it does not authenticate a human decision.
46
+ const result = applySavedUpgrade({
47
+ project,
48
+ planFile: prepared.savedPlan,
49
+ confirm: prepared.plan.digest,
50
+ })
51
+ ```
52
+
53
+ There is no new CLI command family. The existing saved-plan apply, explain,
54
+ status and recovery entry points understand the new v3 plan. Existing v2 plans
55
+ remain supported and still refuse execution when their pinned executor changes.
56
+ Policies are never silently converted.
57
+
58
+ ## Installed state
59
+
60
+ The engine owns only these template paths:
61
+
62
+ - `atelier-template/profile.json` and `selection.json`: Exact inert input bytes.
63
+ - `atelier-template/adoption.json`: Validated installed state with typed refs,
64
+ raw input digests and the four managed-content digests/modes.
65
+ - `atelier-template/history/<digest>.json`: Exact immutable prior adoption
66
+ manifest on subsequent adoption.
67
+ - `atelier-output/template.html` and `template-binding.json`: Read-only
68
+ rendering and its validated source binding.
69
+
70
+ The existing lock and normal four graph/projection/readiness files are refreshed
71
+ through their original builders. The v1 lock keeps unrelated fields, provenance,
72
+ migration history, historical success metadata, and the complete workspace
73
+ template lineage in `lock.template`. Only package and generated information
74
+ are refreshed. The separate adoption document owns the profile's typed identity,
75
+ version, and digest. A profile adoption never replaces the workspace template
76
+ identity or version. The adoption document does not hash itself recursively.
77
+
78
+ First adoption refuses orphan reserved state. Later adoption verifies every
79
+ managed preimage and the complete prior-manifest chain. Committed local changes
80
+ to managed files refuse rather than being overwritten. Source documents and
81
+ ordinary local configuration are never template write targets.
82
+
83
+ Repeating the same valid inputs is another explicit adoption, not an implicit
84
+ no-op: it appends a new adoption manifest linked to the previous one. Identical
85
+ profile, selection and projection bytes are not rewritten. Existing history is
86
+ verified and retained. Empty reserved root/history directories are harmless;
87
+ unknown reserved child directories are refused, including empty ones.
88
+
89
+ Before mutation the engine recomputes the template output using current canonical
90
+ source and compares it to the saved bytes. After writes it verifies the installed
91
+ profile, selection, binding and rendering against that same source. A partial or
92
+ failed operation never reports completed adoption.
93
+
94
+ ## Limits and recovery
95
+
96
+ External packs, runtime profiles, extension handlers, local overlays, custom
97
+ callbacks, package installation, network retrieval, source migrations and
98
+ automatic consent remain unsupported. This first participant does not claim
99
+ full template migration or all-carrier conformance.
100
+
101
+ The exact-plan POSIX, clean-worktree, path, Git, hook, expiry, bounded-inventory
102
+ and local-evidence controls still apply. Only regular create/update writes are
103
+ supported; no deletion, rename, executable mode change or arbitrary scaffolding
104
+ is added. An accepted attempt consumes its plan, including an interrupted attempt.
105
+
106
+ Use the existing operation status and recovery dry-run API. Recovery describes
107
+ verified backups and conflicts; it never restores files, resets history, clears
108
+ a lease, resumes a consumed plan or supplies new consent automatically. A later
109
+ restoration needs a separately reviewed operation. Corrupted or missing evidence
110
+ cannot become success.
111
+
112
+ A completed transaction means a local candidate commit only. Independent review,
113
+ CI, merge, publisher authentication, package release, recipient adoption,
114
+ runtime activation and human acceptance remain separate.
@@ -0,0 +1,111 @@
1
+ # Trackables: one definition, one domain writer
2
+
3
+ A Trackable follows an identifiable subject or pursuit over time. Its adopted
4
+ definition, instance, occurrences, evidence and qualified views retain separate
5
+ meanings. Following a practice, completing a milestone and recording a reflection
6
+ use different profiles. A recorded result does not establish independent ability.
7
+
8
+ The portable `@mnstry/atelier/trackables` API exports one domain reducer used by
9
+ `previewTrackable` and the private `createTrackableStore` reference adapter.
10
+ Product hosts adapt this reducer through their existing authenticated domain
11
+ writer. They must not copy member state into a Witness-specific store.
12
+
13
+ ## Supported reference profile
14
+
15
+ | Profile | Occurrence | Evidence | Domain fulfillment |
16
+ | --- | --- | --- | --- |
17
+ | Recurring practice | Local calendar day in an explicit IANA timezone | Completed, partial, skipped, waived, not applicable | Separate from completing an occurrence |
18
+ | Milestone | One opportunity for the adopted definition | Same explicit result states | Explicit open, fulfilled or released disposition |
19
+ | Qualitative series | Unscheduled source event | Attributed text observation | Unscored |
20
+
21
+ Missing evidence is `unobserved`, never zero or automatic failure. Several
22
+ matching reports of one occurrence count once; conflicting reports remain
23
+ `disputed`. Manual and session records retain separate source identities and
24
+ assistance. A source event cannot be recaptured under another evidence ID for the
25
+ same instance. Different instances and days remain distinct.
26
+
27
+ This bounded profile supports daily calendars, not arbitrary recurrence,
28
+ quantitative meters, streaks or a universal progress score. It uses the host's
29
+ installed IANA timezone data for new records, previews and current windows.
30
+ Journal replay preserves each recorded occurrence's original local day. Native
31
+ schedulers retain calendar ownership and
32
+ must qualify their mappings, including timezone database version where needed.
33
+
34
+ `releaseTrackable` validates and hashes a definition. Releasing new bytes does
35
+ not change existing instances. `adopt` requires a later compatible revision and
36
+ an explicit effective instant; it refuses changes that reinterpret recorded
37
+ occurrences. Late reports resolve the definition applicable at occurrence time.
38
+ DST changes preserve local-day identity. A timezone change uses a new definition.
39
+
40
+ The immutable journal records every command, actor assertion, recording time,
41
+ source time and resulting state digest. New events use `atelier-trackable-event@v2`;
42
+ record events also pin the resolved occurrence, source instant/reference and host
43
+ timezone-data version (`null` if unavailable). Replay checks these against the
44
+ adopted definition, scope, instance and command, without recalculating the stored
45
+ local day. Event-chain and resulting-state digest checks still apply. This is
46
+ local integrity checking, not authentication of the host calendar or recorder.
47
+ Corrections preserve original events and
48
+ invalidate dependent fulfillment evidence. Lifecycle, domain fulfillment,
49
+ evidence quality and attention remain independent. Pausing prevents new capture;
50
+ retirement is terminal. Views describe current corrected knowledge about the
51
+ selected occurrence time, not historical knowledge as it was then understood.
52
+
53
+ ## Local use and ownership
54
+
55
+ Run `atelier trackable preview|release|execute|snapshot|view|export` with JSON stdin.
56
+ The existing workspace must ignore `.atelier-local/`. Local identity is asserted,
57
+ not authenticated. `scope` selects a private store; operating-system access is
58
+ its trust boundary, so this is not multi-tenant access control. Exports are
59
+ private and require deliberate handling. Withdrawal and correction retain
60
+ history; this adapter does not claim secure erasure or automated retention.
61
+
62
+ A command has `schema: "atelier-trackable-command@v1"`, `requestId`,
63
+ `expectedRevision`, `operation` and `input`. Operations are `release`,
64
+ `instantiate`, `adopt`, `record`, `correct`, `lifecycle` and `disposition`.
65
+ The exported [schema](../contracts/atelier-trackable.v1.schema.json) and
66
+ [fixtures](../fixtures/atelier-trackable) specify exact fields.
67
+
68
+ `execute` locks the selected scope, verifies history, applies the shared reducer,
69
+ atomically publishes one event and reads it back. Replaying the same request and
70
+ actor returns the original receipt; changed input under that identity refuses.
71
+ A lost response can therefore be reconciled by retrying the original command.
72
+ Dead process locks use the existing private-state custody mechanism. Journal
73
+ capacity reserves room for correction and retirement; full histories remain
74
+ available for explicit export. No automatic archive or compaction is performed.
75
+
76
+ Older `atelier-trackable-event@v1` events remain readable and can precede new v2
77
+ events without rewriting history. They lack the original calendar observation,
78
+ so replay still needs compatible timezone data. If replay of a legacy record
79
+ produces a different state digest, snapshot, view and execute refuse.
80
+ `exportHistory()` remains available after verifying the full event chain and
81
+ returns `stateVerified: false` plus `replayError`; these raw events are not a
82
+ verified reconstructed state. Restore the original calendar environment before
83
+ resuming that store. Do not infer a timezone change from this diagnostic alone,
84
+ or rewrite old digests to make them pass. Other replay and integrity failures
85
+ still refuse; a valid reconstruction exports `stateVerified: true`.
86
+
87
+ ## Authoring and host adoption
88
+
89
+ Definition fields `profile` and `schedule` are enforced by the reducer and
90
+ occurrence resolver. `id` and `revision` pin meaning; `purpose` is rationale;
91
+ `interpretationLimits` are surfaced guidance. The engine revision appears in
92
+ release and view outputs. Host binding must additionally name immutable source
93
+ resolution, authentication, operation authorization, evidence-source validation,
94
+ storage and rendering. Caller-supplied source digests are provenance assertions,
95
+ not proof that a session or instrument reported them.
96
+
97
+ The reducer's optional `occurrenceResolution` context is for replay of a
98
+ previously verified journal, never user-authored command input. Native writers
99
+ that use it must persist and verify the command, complete resolution and state
100
+ digest together. The local adapter derives it from the new state and never
101
+ accepts a caller override. Existing recorded evidence keeps its occurrence when
102
+ current rules change; new evidence and the current-window view can consequently
103
+ resolve the same instant to a different day. The API does not silently merge or
104
+ reinterpret those occurrences.
105
+
106
+ Reference tests exercise preview/runtime parity, durable reload, scoped stores,
107
+ correction, duplicate transport/source events, same-day instances, late evidence,
108
+ DST, timezone adoption, simulated timezone-data drift, legacy export-only
109
+ recovery and refusal of inconsistent replay metadata. These establish the portable subset. Authenticated
110
+ member-host adoption, actual UI refresh and broader calendar profiles require
111
+ separate receiving-host evidence.
package/docs/upgrade.md CHANGED
@@ -9,6 +9,104 @@ workspace between Atelier package releases. The flow is local-only: it does not
9
9
  provision repositories, contact a Git host, mutate the MNSTRY runtime, or write
10
10
  through a browser view.
11
11
 
12
+ ## Upgrading to 0.2.0-alpha.14
13
+
14
+ `atelier upgrade closure --npm-root ABSOLUTE_NPM_ROOT` plans a check of a staged
15
+ candidate's own dependency closure before an upgrade. It reads the candidate's
16
+ lockfile and manifests only and runs no npm command. Exit code 3 is a completed
17
+ plan and exit code 2 a refusal; the command never exits 0, because a plan is not
18
+ proof of an offline reinstall. It refuses `--__proto__` as an unsupported flag.
19
+ See [Consumer dependency closure plan](#consumer-dependency-closure-plan).
20
+
21
+ This release also introduces `@mnstry/atelier/ui`, a tenant-neutral control
22
+ grammar for local Atelier tooling and compatible downstream interfaces. Existing
23
+ consumers do not need to change. Consumers that adopt it map the
24
+ `--system-control-*` custom properties to their own theme.
25
+
26
+ No schema or stored record format changes in this release. The boundary checks
27
+ now judge work they used to miss, so a commit or push that passed on
28
+ 0.2.0-alpha.13 can be refused, and a few other results change:
29
+
30
+ - Reinstall the boundary hooks with `atelier boundary install-hooks`. The new
31
+ pre-push hook passes the remote Git names, so history held only by another
32
+ remote is judged on its way to a new one. The push check judges every commit
33
+ the remote's tracking refs do not hold, each against its parent, binaries
34
+ included. A push carrying more than 1000 such commits or more than the
35
+ evidence budget is refused with `content-scan-incomplete`; push it in
36
+ smaller parts.
37
+ - The pre-commit check reads the index and work tree Git names, so
38
+ `git commit -a`, `git commit <paths>` and commits from a linked worktree are
39
+ judged. It blocks with `pre-commit-repo-unresolved` when no single declared
40
+ repository is being committed, as the push check does.
41
+ - The content scan pins its diff format, so an external diff, a textconv
42
+ driver, changed prefixes or quoted paths no longer leave a change unscanned.
43
+ A staged or pushed deletion of a binary file no longer blocks.
44
+ - The semantic-field review takes only an added review marker as approval; a
45
+ removed marker, or one in a file name, approves nothing. `atelier upgrade`
46
+ applies the same rule.
47
+ - `extract-structure` refuses `parallel: true` with `NATIVE_WORKERS_UNATTESTED`.
48
+ - Knowledge Health regenerates its rule identity for the two graph files: the
49
+ `check` each assessment carries names a new `version`, `sourceTree` and
50
+ `graphBlob`. The rule it applies is unchanged. A workshop contribution
51
+ started on 0.2.0-alpha.13, completed or not, cannot start Review on this
52
+ release (`finding changed; refresh before selecting a new draft`); start
53
+ Review before upgrading, or record a new contribution.
54
+ - `runMaintenanceService` from `@mnstry/atelier/obsidian` refuses a project
55
+ loader that answers with a promise when no `locateProject` is given
56
+ (`service-loader-not-synchronous`); on 0.2.0-alpha.13 such a service
57
+ protected no repository. Pass a synchronous `locateProject`, which answers
58
+ a project naming its folder, to keep an asynchronous loader (see
59
+ [Obsidian](obsidian.md)).
60
+
61
+ A package update supplies no interpretation approval, source-write permission,
62
+ publication authority or runtime activation. Rehearse this exact installed
63
+ version in a disposable workspace before client use.
64
+
65
+ ## Upgrading to 0.2.0-alpha.13
66
+
67
+ The public [Knowledge Health workshop](knowledge-health/devday/public-default.md)
68
+ uses an invented local workspace. Participants can retain their original words,
69
+ a separate interpretation and a `note`, `perspective-only`, `disagreement` or
70
+ `pause` response. Review is a separate optional session. A selected draft can
71
+ produce one retained copy-only source-owner proposal; retries and reopen read
72
+ back its original receipt instead of appending another proposal. A source owner
73
+ reviews the proposal and edits the declaration with normal repository tools,
74
+ then reads it back and reassesses. The browser host grants no source-apply route.
75
+
76
+ `atelier knowledge semantic` exposes the existing semantic runner's eleven
77
+ operations through JSON stdin. It retains the runner's refusal codes and saved
78
+ failure details. The [semantic operation contract](semantic-operation.md)
79
+ remains authoritative; this release adds no schema or package export.
80
+
81
+ Existing source and local history remain owned by their original repositories.
82
+ A package update supplies no interpretation approval, source-write permission,
83
+ Obsidian host qualification, publication authority or runtime activation. Rehearse
84
+ this exact installed version in a disposable workspace before client use.
85
+
86
+ ## Unreleased
87
+
88
+ The bundled readiness pack retains its original v1 content and digest. Existing
89
+ locks, including the prior alpha.10 release fixture, can prepare and apply both
90
+ ordinary v2 and template v3 exact plans without first rewriting the lock.
91
+ Discovery Harness is the architecture name; the persisted readiness entry still
92
+ uses Discovery Engine. Actual external pack changes still require their own
93
+ adoption procedure and are not accepted by either participant.
94
+
95
+ The next release adds the responsibility workflows, source-current ingestion,
96
+ Trackables, governed instruction adoption and local template profiles. Template
97
+ adoption uses the existing exact-plan transaction engine with explicit v2 policy
98
+ and v3 plans; existing policies are never converted automatically. See
99
+ [template profiles](template-profile.md) and [template adoption](template-upgrades.md).
100
+ Optional advisory decisions require no provider installation or activation.
101
+
102
+ New Trackable journals retain resolved calendar occurrences and byte-bound state.
103
+ Legacy v1 journals remain available as chain-verified exports when state replay
104
+ cannot be established. Preserve historical records and use the documented
105
+ [Trackables](trackables.md) host limits before adopting a new profile.
106
+ Regenerate local graph/projection artifacts through the ordinary upgrade process
107
+ and qualify each consuming host independently. A package update supplies no
108
+ publication permission or runtime activation.
109
+
12
110
  ## Upgrading to 0.2.0-alpha.12
13
111
 
14
112
  This release makes the first open of an Obsidian view automatic and ships
@@ -205,7 +303,7 @@ For registry installs, pin the exact version and record the resolved version
205
303
  in the lockfile:
206
304
 
207
305
  ```bash
208
- npm install --save-dev @mnstry/atelier@0.2.0-alpha.12
306
+ npm install --save-dev @mnstry/atelier@0.2.0-alpha.14
209
307
  npx mnstry-atelier lock write --project ./atelier.project.json
210
308
  ```
211
309
 
@@ -213,7 +311,7 @@ For Git installs, pin the release tag rather than a branch, so the lock file
213
311
  records exactly what was reviewed:
214
312
 
215
313
  ```bash
216
- npm install --save-dev "git+https://github.com/MNSTRY/atelier.git#v0.2.0-alpha.12"
314
+ npm install --save-dev "git+https://github.com/MNSTRY/atelier.git#v0.2.0-alpha.14"
217
315
  npx mnstry-atelier lock write --project ./atelier.project.json
218
316
  ```
219
317
 
@@ -292,3 +390,122 @@ For the bounded, manually confirmed single-repository workflow, see
292
390
  commands are separate from the legacy flag-based migration workflow above.
293
391
  They preserve history and honor existing commit hooks; they do not install a
294
392
  new package or activate a runtime.
393
+
394
+ ## Consumer dependency closure plan
395
+
396
+ `atelier upgrade closure --npm-root ABSOLUTE_NPM_ROOT` plans a check of a staged
397
+ candidate's own dependency closure. A consumer does not inherit a dependency
398
+ publisher's npm `overrides`, so the candidate's own lockfile is what counts.
399
+
400
+ The command reads these files and no others:
401
+
402
+ - the candidate's `package.json` and `package-lock.json`;
403
+ - the installed `package.json` of every lockfile copy of the selected package;
404
+ - `package.json` in each directory above the npm root, up to the filesystem
405
+ root, to refuse a parent that declares workspaces. When the npm root is under
406
+ your home directory, that includes a `package.json` in the home directory;
407
+ - Atelier's own `package.json`. The CLI reads it on every run for its version;
408
+ this plan also takes the default package name from it when `--package` is
409
+ not given.
410
+
411
+ It does not run npm, use the network, read npm configuration or credentials, or
412
+ write anything. The directory need not be an Atelier workspace, and `--npm-root`
413
+ has no default.
414
+
415
+ Every run prints exactly one JSON document with `"proof": "not-run"`, including
416
+ a run whose arguments are refused. A completed plan holds:
417
+
418
+ - the lockfile's SHA-256, version and entry count;
419
+ - entries by source (`npm`, `git`, `local_path`, `link`, `bundled` and
420
+ `unclassified`, an installed entry with no `resolved`); the counts add up to
421
+ the entry count;
422
+ - the registry hosts the lockfile names, and separately the URL schemes (`http`,
423
+ `https`) it uses;
424
+ - the number of registry tarballs an offline proof would need;
425
+ - lockfile entries whose `os`, `cpu` or `libc` excludes this host;
426
+ - the selected package's lockfile copies, and under `manifests` the path, name,
427
+ version and SHA-256 of each installed manifest that was read;
428
+ - the selected package's exact `overrides` that were checked against every
429
+ installed copy, the ones with no copy, and the ones left unchecked: a
430
+ version-selector key, a nested override, a value that is not an exact
431
+ version, or a package that a link provides (`link-only`, or `linked-copy`
432
+ when a registry copy is installed beside the link);
433
+ - every refusal, with its code, one `reason`, a message and a next step.
434
+
435
+ A refused plan holds its refusals and whatever else was established. A refusal
436
+ of the arguments, the npm root or the shape of the lockfile stops the plan
437
+ there, so it holds nothing about the lockfile's entries; any other refusal is
438
+ listed beside the rest of the classification.
439
+
440
+ Exit code 3 means a completed plan. Exit code 2 means a refusal: the JSON
441
+ document, then `[code] message` with a `Next:` step on standard error. The
442
+ command never exits 0: a plan is not a pass, and this command does not prove an
443
+ offline reinstall.
444
+
445
+ Overrides are taken from the installed manifest only when it is the package the
446
+ lockfile records: each copy's manifest must declare the selected name and the
447
+ version of its own lockfile entry, and all copies must be at one version with
448
+ the same overrides. Otherwise the plan is refused and no override is reported
449
+ as checked.
450
+
451
+ Refusals reuse existing codes:
452
+
453
+ - `usage`: the input is not supported. Reasons: `npm-root-required`,
454
+ `npm-root-not-absolute`, `npm-root-not-directory`, `npm-root-linked` (the
455
+ path is a link or passes through one; the refusal prints the directory's
456
+ `realPath` to pass instead), `argument-unsupported` (an unknown flag, an
457
+ extra argument, a flag with no value, an empty `--package` or
458
+ `--registry-host`, or a flag given more than once; an empty value after
459
+ `--npm-root=` is `npm-root-required`), `manifest-missing`, `lockfile-missing`,
460
+ `lockfile-invalid` (not a JSON object, or a `packages` entry that is not an
461
+ object), `lockfile-version` (version 1, or no `packages` map), `workspaces`,
462
+ `prefix-mismatch` (a parent directory declares workspaces) and
463
+ `linked-node-modules`.
464
+ - `consumer-closure-incomplete`: an offline reinstall could not be proven for a
465
+ lockfile entry. Reasons: `missing-integrity`, `git-source`, `other-host`,
466
+ `outside-project`, `link-target-missing` (a link that names no folder),
467
+ `zero-copies`, `selected-package-unreadable`, `selected-package-mismatch`
468
+ (an installed manifest that is not the package its lockfile entry records)
469
+ and `selected-copies-differ`.
470
+ - `override-not-inherited`: reason `copy-off-pin`. A copy is installed at a
471
+ version other than the selected package's exact pin. More than one copy, all
472
+ at the pin, is reported and not refused.
473
+
474
+ Options:
475
+
476
+ - `--package NAME` selects the package whose overrides are checked. It defaults
477
+ to `@mnstry/atelier`.
478
+ - `--registry-host HOST[,HOST]` names the approved registry hosts. A tarball on
479
+ any other host, or at a URL with no readable host, is then refused. Without
480
+ it, hosts are reported and `approvedRegistryVerified` is `false`, because the
481
+ plan does not read npm configuration.
482
+
483
+ Give each option once, with a value, after the word `closure`. An option with
484
+ an empty value is refused; leave the option out to use its default.
485
+
486
+ Limits:
487
+
488
+ - The plan cannot run `npm prefix`, so `prefixVerified` is always `false`.
489
+ Instead it requires `--npm-root` to be the directory's real path and refuses
490
+ any parent directory of it that declares workspaces, whether or not that
491
+ parent's workspaces include the candidate. A path that is a link, or passes
492
+ through one, is refused, with its `realPath` in the JSON result. On macOS,
493
+ `/tmp` is a link into `/private` and `$TMPDIR` passes through `/var`, another
494
+ such link, so a candidate staged there needs its real path (for example
495
+ `pwd -P` from inside it).
496
+ - Containment of links and local files is checked by path, without following
497
+ links. The folder a link points to is not opened: an override for a package
498
+ that a link provides is listed as unchecked, never as checked.
499
+ - Approving a host does not verify the transport. A host is matched by its
500
+ exact name and port, whatever the scheme; `registrySchemes` counts `http`
501
+ and `https` separately.
502
+ - The manifest binding compares the name and version the installed manifest
503
+ declares. It does not verify the installed files against the lockfile's
504
+ `integrity`.
505
+ - Platform evidence uses this process's `os` and `cpu`; `libc` is unknown
506
+ unless a caller of `planConsumerClosure` supplies it.
507
+ - A flag with no value placed before the word `closure` (for example
508
+ `atelier upgrade --package closure`) takes `closure` as its value, so the
509
+ ordinary upgrade command runs instead of this one.
510
+ - `lockTreeDifferences`, the comparison of two `npm ls` trees, is in the source
511
+ but is not exported from the package and no command uses it.
@@ -0,0 +1,19 @@
1
+ {
2
+ "schema": "atelier-behavior-binding@v1",
3
+ "definition": {
4
+ "ref": "definitions/weekly-note.json",
5
+ "digest": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
6
+ },
7
+ "fields": [
8
+ {
9
+ "pointer": "/question",
10
+ "classification": "implicit",
11
+ "required": true,
12
+ "consumer": {
13
+ "id": "reference-note",
14
+ "profile": "note-v1",
15
+ "revision": "1"
16
+ }
17
+ }
18
+ ]
19
+ }