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

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 (516) hide show
  1. package/CHANGELOG.md +661 -0
  2. package/README.md +142 -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 +269 -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 +211 -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 +238 -0
  65. package/docs/learning.md +215 -0
  66. package/docs/local-services.md +181 -16
  67. package/docs/obsidian-contract.md +223 -15
  68. package/docs/obsidian-plugin.md +38 -4
  69. package/docs/obsidian.md +613 -51
  70. package/docs/optional-ingestion.md +83 -0
  71. package/docs/personal-workspace.md +257 -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 +49 -0
  77. package/docs/repo-boundary-guard.md +94 -0
  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 +317 -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 +47 -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 +75 -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 +59 -5
  300. package/skills/claude/atelier-build-harness/SKILL.md +59 -0
  301. package/skills/claude/atelier-coordination/SKILL.md +32 -0
  302. package/skills/claude/atelier-discovery-harness/SKILL.md +48 -0
  303. package/skills/claude/atelier-guided-upgrade/SKILL.md +29 -0
  304. package/skills/claude/atelier-interaction/SKILL.md +34 -0
  305. package/skills/claude/atelier-knowledge-harness/SKILL.md +60 -0
  306. package/skills/claude/atelier-knowledge-setup/SKILL.md +72 -0
  307. package/skills/claude/atelier-practical-judgment/SKILL.md +64 -0
  308. package/skills/claude/atelier-research-harness/SKILL.md +43 -0
  309. package/skills/claude/atelier-skill-steward/SKILL.md +53 -0
  310. package/skills/claude/atelier-trackables/SKILL.md +40 -0
  311. package/skills/codex/atelier-build-harness/SKILL.md +59 -0
  312. package/skills/codex/atelier-coordination/SKILL.md +32 -0
  313. package/skills/codex/atelier-discovery-harness/SKILL.md +48 -0
  314. package/skills/codex/atelier-guided-upgrade/SKILL.md +29 -0
  315. package/skills/codex/atelier-interaction/SKILL.md +34 -0
  316. package/skills/codex/atelier-knowledge-harness/SKILL.md +60 -0
  317. package/skills/codex/atelier-knowledge-setup/SKILL.md +72 -0
  318. package/skills/codex/atelier-practical-judgment/SKILL.md +64 -0
  319. package/skills/codex/atelier-research-harness/SKILL.md +43 -0
  320. package/skills/codex/atelier-skill-steward/SKILL.md +53 -0
  321. package/skills/codex/atelier-trackables/SKILL.md +40 -0
  322. package/src/architecture/catalog.mjs +355 -0
  323. package/src/architecture/index.mjs +93 -0
  324. package/src/boundary/content-rules.mjs +4 -2
  325. package/src/boundary/delegation-command.mjs +158 -0
  326. package/src/boundary/delegation.mjs +396 -0
  327. package/src/boundary/policy.mjs +52 -10
  328. package/src/build/git.mjs +18 -0
  329. package/src/build/index.mjs +3 -0
  330. package/src/build/ledger.mjs +88 -0
  331. package/src/capabilities/adoption.mjs +381 -0
  332. package/src/capabilities/evidence.mjs +140 -0
  333. package/src/capabilities/files.mjs +124 -0
  334. package/src/capabilities/index.mjs +4 -0
  335. package/src/capabilities/instructions.mjs +250 -0
  336. package/src/capabilities/package.mjs +136 -0
  337. package/src/cli/command-failure.mjs +36 -0
  338. package/src/cli/execute-command.mjs +16 -2
  339. package/src/cli/run.mjs +65 -9
  340. package/src/coauthor/store.mjs +43 -2
  341. package/src/collaboration/proposals.mjs +189 -0
  342. package/src/commands/architecture.mjs +27 -0
  343. package/src/commands/boundary.mjs +3 -0
  344. package/src/commands/capability.mjs +73 -0
  345. package/src/commands/enroll.mjs +3 -0
  346. package/src/commands/harness.mjs +79 -0
  347. package/src/commands/ingest.mjs +39 -0
  348. package/src/commands/init.mjs +4 -1
  349. package/src/commands/inquiry.mjs +66 -0
  350. package/src/commands/knowledge-semantic.mjs +128 -0
  351. package/src/commands/knowledge.mjs +119 -0
  352. package/src/commands/learn.mjs +61 -0
  353. package/src/commands/obsidian.mjs +754 -63
  354. package/src/commands/practice.mjs +24 -0
  355. package/src/commands/setup.mjs +22 -2
  356. package/src/commands/trackable.mjs +19 -0
  357. package/src/contracts/corpus.mjs +30 -0
  358. package/src/coordination/index.mjs +110 -0
  359. package/src/evidence-navigation/contracts.mjs +60 -0
  360. package/src/evidence-navigation/evaluate.mjs +69 -0
  361. package/src/evidence-navigation/generation.mjs +22 -0
  362. package/src/evidence-navigation/index.mjs +2 -0
  363. package/src/evidence-navigation/local.mjs +167 -0
  364. package/src/evidence-navigation/schema.generated.mjs +604 -0
  365. package/src/evidence-navigation/types.mjs +12 -0
  366. package/src/export/atelier-export-contract.mjs +35 -8
  367. package/src/graph/enroll.mjs +248 -0
  368. package/src/graph/graph.mjs +17 -1
  369. package/src/graph/knowledge-graph.mjs +58 -8
  370. package/src/harnesses/contracts.mjs +41 -0
  371. package/src/harnesses/exchange.mjs +154 -0
  372. package/src/harnesses/feedback.mjs +16 -0
  373. package/src/harnesses/history.mjs +37 -0
  374. package/src/harnesses/index.mjs +4 -0
  375. package/src/harnesses/store.mjs +29 -0
  376. package/src/ingestion/contracts.mjs +41 -0
  377. package/src/ingestion/evaluation.mjs +119 -0
  378. package/src/ingestion/optional/composition/index.mjs +171 -0
  379. package/src/ingestion/optional/evaluation/index.mjs +219 -0
  380. package/src/ingestion/optional/graphify/composition-binding.mjs +60 -0
  381. package/src/ingestion/optional/graphify/composition_receiving.py +185 -0
  382. package/src/ingestion/optional/graphify/graphify_supplier.py +933 -0
  383. package/src/ingestion/optional/graphify/json_bridge.py +163 -0
  384. package/src/ingestion/optional/graphify/query_receiving.py +209 -0
  385. package/src/ingestion/optional/index.mjs +9 -0
  386. package/src/ingestion/optional/jev/bridge.mjs +166 -0
  387. package/src/ingestion/optional/jev/composition-binding.mjs +116 -0
  388. package/src/ingestion/optional/jev/judgments.mjs +174 -0
  389. package/src/ingestion/optional/jev/native-translation.mjs +32 -0
  390. package/src/ingestion/optional/lightrag/atelier_lightrag_supplier/__init__.py +7 -0
  391. package/src/ingestion/optional/lightrag/atelier_lightrag_supplier/adapter.py +966 -0
  392. package/src/ingestion/optional/lightrag/atelier_lightrag_supplier/artifacts.py +101 -0
  393. package/src/ingestion/optional/lightrag/atelier_lightrag_supplier/projection.py +146 -0
  394. package/src/ingestion/optional/lightrag/composition-binding.mjs +67 -0
  395. package/src/ingestion/optional/vanilla/composition-binding.mjs +102 -0
  396. package/src/ingestion/optional/vanilla/index.mjs +218 -0
  397. package/src/ingestion/optional/vanilla/native-normalization.mjs +187 -0
  398. package/src/ingestion/processors.mjs +218 -0
  399. package/src/ingestion/semantic.mjs +203 -0
  400. package/src/ingestion/store.mjs +372 -0
  401. package/src/inquiry/beliefs.mjs +32 -0
  402. package/src/inquiry/contracts.mjs +23 -0
  403. package/src/inquiry/index.mjs +5 -0
  404. package/src/inquiry/ledger.mjs +135 -0
  405. package/src/inquiry/lenses.mjs +15 -0
  406. package/src/inquiry/projection.mjs +77 -0
  407. package/src/inquiry/store.mjs +35 -0
  408. package/src/intake/read-scope.mjs +12 -0
  409. package/src/intake/store.mjs +69 -6
  410. package/src/interaction/index.mjs +91 -0
  411. package/src/judgment/index.mjs +82 -0
  412. package/src/judgment/practice-evaluation.mjs +70 -0
  413. package/src/judgment/practice.mjs +144 -0
  414. package/src/knowledge/context.mjs +217 -0
  415. package/src/knowledge/index.mjs +5 -0
  416. package/src/knowledge/ingestion.mjs +79 -0
  417. package/src/knowledge/intake.mjs +33 -0
  418. package/src/knowledge/ledger.mjs +110 -0
  419. package/src/knowledge/participatory/guidance.mjs +36 -0
  420. package/src/knowledge/participatory/guided-contribution.mjs +44 -0
  421. package/src/knowledge/participatory/index.mjs +2 -0
  422. package/src/knowledge/participatory/installed-workshop.mjs +108 -0
  423. package/src/knowledge/plan.mjs +67 -0
  424. package/src/knowledge/projection.mjs +43 -0
  425. package/src/knowledge/semantic-operation.mjs +567 -0
  426. package/src/knowledge/sessions.mjs +467 -0
  427. package/src/knowledge/workspace.mjs +295 -0
  428. package/src/knowledge-health/assessment.mjs +165 -0
  429. package/src/knowledge-health/capabilities.mjs +350 -0
  430. package/src/knowledge-health/context.mjs +62 -0
  431. package/src/knowledge-health/example.mjs +47 -0
  432. package/src/knowledge-health/index.mjs +10 -0
  433. package/src/knowledge-health/owner-join.mjs +88 -0
  434. package/src/knowledge-health/proof/common.mjs +24 -0
  435. package/src/knowledge-health/proof/installed-check.mjs +100 -0
  436. package/src/knowledge-health/proof/native-readback.mjs +37 -0
  437. package/src/knowledge-health/proof/rehearse.mjs +68 -0
  438. package/src/knowledge-health/proof/validate-participant.mjs +17 -0
  439. package/src/knowledge-health/proof/verify-native-capture.mjs +14 -0
  440. package/src/knowledge-health/proof/workshop-check.mjs +36 -0
  441. package/src/knowledge-health/rule-identity.mjs +44 -0
  442. package/src/knowledge-health/workshop-composition.mjs +19 -0
  443. package/src/knowledge-health/workshop-profile.mjs +176 -0
  444. package/src/knowledge-health/workshop.mjs +99 -0
  445. package/src/learning/adapters.mjs +68 -0
  446. package/src/learning/assistance.mjs +127 -0
  447. package/src/learning/contracts.mjs +65 -0
  448. package/src/learning/store.mjs +272 -0
  449. package/src/personal-workspace/index.mjs +391 -0
  450. package/src/personal-workspace/selection.mjs +385 -0
  451. package/src/project/config.mjs +8 -0
  452. package/src/project/durable-state.mjs +3 -1
  453. package/src/project/file-class.mjs +1 -1
  454. package/src/projection/obsidian/edits/apply.mjs +55 -16
  455. package/src/projection/obsidian/personal-workspace.mjs +436 -0
  456. package/src/projection/obsidian/proposals/adapter.mjs +47 -8
  457. package/src/projection/obsidian/proposals/observation.mjs +10 -2
  458. package/src/projection/obsidian/publication/publisher.mjs +142 -13
  459. package/src/projection/obsidian/publication/vault-list.mjs +4 -3
  460. package/src/projection/obsidian/recovery/index.mjs +4 -1
  461. package/src/projection/obsidian/recovery/store.mjs +160 -7
  462. package/src/projection/obsidian/selection-ui/contribution.mjs +6 -5
  463. package/src/readiness/readiness.mjs +10 -3
  464. package/src/reflection/index.mjs +56 -0
  465. package/src/runtime/obsidian/app-production-seams.mjs +48 -16
  466. package/src/runtime/obsidian/app-registration.mjs +175 -28
  467. package/src/runtime/obsidian/app-restart.mjs +154 -0
  468. package/src/runtime/obsidian/engine.mjs +163 -20
  469. package/src/runtime/obsidian/extension-points.mjs +1 -1
  470. package/src/runtime/obsidian/index.mjs +10 -7
  471. package/src/runtime/obsidian/launch-plan.mjs +7 -4
  472. package/src/runtime/obsidian/lifecycle.mjs +92 -12
  473. package/src/runtime/obsidian/login-item.mjs +332 -0
  474. package/src/runtime/obsidian/machine-settings.mjs +119 -12
  475. package/src/runtime/obsidian/opening.mjs +171 -37
  476. package/src/runtime/obsidian/pipeline.mjs +71 -3
  477. package/src/runtime/obsidian/plugin-channel.mjs +11 -3
  478. package/src/runtime/obsidian/plugin-choice.mjs +16 -4
  479. package/src/runtime/obsidian/plugin-drift.mjs +59 -11
  480. package/src/runtime/obsidian/plugin-presence.mjs +14 -1
  481. package/src/runtime/obsidian/process-identity.mjs +20 -10
  482. package/src/runtime/obsidian/project-views.mjs +282 -0
  483. package/src/runtime/obsidian/questions.mjs +48 -0
  484. package/src/runtime/obsidian/release-watch.mjs +56 -0
  485. package/src/runtime/obsidian/service-main.mjs +99 -16
  486. package/src/runtime/obsidian/service-manager-production.mjs +61 -0
  487. package/src/runtime/obsidian/service-managers.mjs +275 -0
  488. package/src/runtime/obsidian/service-record.mjs +87 -23
  489. package/src/runtime/obsidian/service.mjs +36 -3
  490. package/src/runtime/obsidian/startup-adapters.mjs +59 -21
  491. package/src/runtime/obsidian/unheld-evidence.mjs +84 -0
  492. package/src/runtime/obsidian/vault-location.mjs +300 -0
  493. package/src/runtime/obsidian/view-counts.mjs +34 -0
  494. package/src/server/local-sidecar.mjs +169 -2
  495. package/src/server/server.mjs +28 -2
  496. package/src/template-bindings/project.mjs +92 -0
  497. package/src/templates/profile.mjs +225 -0
  498. package/src/trackables/domain.mjs +175 -0
  499. package/src/trackables/store.mjs +114 -0
  500. package/src/ui/knowledge-page.mjs +1388 -0
  501. package/src/upgrade/explanation.mjs +1 -1
  502. package/src/upgrade/template-participant.mjs +171 -0
  503. package/src/upgrade/transaction.mjs +72 -25
  504. package/src/upgrade/upgrade.mjs +1 -0
  505. package/templates/external-project-workspace/pack-lifecycle.json +6 -1
  506. package/templates/knowledge-workspace/.gitattributes +2 -0
  507. package/templates/knowledge-workspace/AGENTS.md +27 -0
  508. package/templates/knowledge-workspace/README.md +44 -0
  509. package/templates/knowledge-workspace/atelier.project.json +22 -0
  510. package/templates/knowledge-workspace/gitignore +6 -0
  511. package/templates/knowledge-workspace/knowledge-plan.json +111 -0
  512. package/templates/knowledge-workspace/knowledge-plan.schema.json +281 -0
  513. package/templates/knowledge-workspace/records/forecast.md +22 -0
  514. package/templates/knowledge-workspace/records/inspection.md +25 -0
  515. package/templates/knowledge-workspace/records/telescope.md +24 -0
  516. package/templates/knowledge-workspace/repo-access.v1.json +9 -0
@@ -0,0 +1,83 @@
1
+ # Optional ingestion suppliers
2
+
3
+ Atelier's semantic runner remains the source of truth for ingestion attempts,
4
+ captured output and proposed knowledge. The optional supplier APIs compose an
5
+ ordinary host-selected extractor with Jev judgments, Graphify operations and
6
+ LightRAG extraction or retrieval. No tool, account or Python SDK is required to
7
+ import the JavaScript APIs. Importing them performs no extraction or network call.
8
+
9
+ ```js
10
+ import {
11
+ createComposition,
12
+ createVanillaCompositionBinding,
13
+ createCompositionJudgmentBinding,
14
+ createGraphifyCompositionBinding,
15
+ createLightRAGCompositionBinding,
16
+ PRESENCE_PROFILES,
17
+ } from '@mnstry/atelier/ingestion/optional'
18
+ ```
19
+
20
+ Each binding accepts the consuming host's existing ports. The vanilla binding
21
+ receives the semantic runner, the same-workspace intake capture callback and the
22
+ host's selected extractor. Jev receives the existing decision contracts and
23
+ prepared-request transport. Graphify and LightRAG receive an explicitly supplied
24
+ native dispatcher. A dispatcher must preserve the original operation receipt,
25
+ source bindings, artifacts, generation and retry-inclusive usage; an artifact
26
+ digest alone is not an authenticated operation receipt.
27
+
28
+ `createComposition` receives `bindings`, `operationRoles`, `invoke`,
29
+ `readKnowledgeView` and `eligible`. These are the existing capability, knowledge
30
+ and evidence owners' ports. The returned `execute` method accepts an explicit
31
+ route, input and question. Every supported presence profile retains vanilla;
32
+ select one extractor and one answerer for a route. Jev adds judgments rather
33
+ than a second extraction pass. LightRAG's coupled native answer is a distinct
34
+ route from retrieval followed by the ordinary answerer. Mere tool presence
35
+ never invokes it or selects a fallback.
36
+
37
+ The eight profiles are exposed by `PRESENCE_PROFILES`: vanilla alone, each single
38
+ optional tool, each pair and all three tools. Missing selected operations refuse
39
+ before execution. Accepted, current, located evidence can serve an answer;
40
+ native labels and scores do not create canonical identities or accepted claims.
41
+ Qualifiers, direction, time, negation and unresolved mappings survive ingestion.
42
+ Partial failures retain their original outputs and unknown costs. Retrying,
43
+ accepting knowledge, enabling a provider and publishing a projection remain
44
+ decisions of their existing owners.
45
+
46
+ ## Native Python adapters
47
+
48
+ The package includes the authored adapter source under
49
+ `src/ingestion/optional/graphify/` and
50
+ `src/ingestion/optional/lightrag/atelier_lightrag_supplier/`. It does not bundle
51
+ the third-party SDKs or download them. A consuming host supplies its compatible
52
+ Python runtime, separately installed SDK, pinned source, isolated storage and
53
+ existing operation lifecycle.
54
+
55
+ Graphify's `json_bridge.py` supports a host-owned persistent process so dependent
56
+ operations share one supplier and generation. Preserve its separate source,
57
+ cache and artifact roots. Its operations include extraction, query, topology,
58
+ diagnostics, incremental updates and exports. The adapter uses POSIX filesystem
59
+ locking; a host must qualify its actual platform before selecting this route.
60
+
61
+ LightRAG's `LightRAGSupplier` accepts a native factory and role instrumentation
62
+ before initialization, with one event loop per workspace and generation. It
63
+ supports native insertion, custom knowledge projections, retrieval, coupled
64
+ answers and storage lifecycle. Accepted canonical projections and editable
65
+ native exploration use distinct workspaces. Native embeddings and model calls
66
+ remain explicitly configured host capabilities.
67
+
68
+ Source replacement, withdrawal, tool removal and recovery must use the current
69
+ source/evidence owners and the host's existing lifecycle. Unknown native cleanup
70
+ or provider execution is retained as unknown and grants no implicit replay.
71
+
72
+ ## Qualification
73
+
74
+ `@mnstry/atelier/ingestion/qualification` exports the trial executor, accounting
75
+ and independent-assessment receiving helpers. They preserve failed attempts,
76
+ retries, shared costs and unknown accounting. Useful-answer scoring requires a
77
+ separate verified assessor receipt; a task's own success claim does not count.
78
+
79
+ The repository tests cover portable composition, all eight presence profiles,
80
+ invented judgments, receipt boundaries and failure custody. These establish
81
+ source behavior. Actual installed native workflows, provider authorization,
82
+ independent semantic quality and measured time or cost improvements require
83
+ qualification by the consuming host.
@@ -0,0 +1,257 @@
1
+ # Personal workspace composition
2
+
3
+ This module composes enrolled local repositories and private interpretation in
4
+ one Atelier graph. The person supplies a private home outside every enrolled
5
+ repository. Shared source files are never changed. Private authored inputs change
6
+ only through an explicit, confirmed restore (see below).
7
+ This is a local composition module. Host integration and release require
8
+ separate acceptance.
9
+
10
+ A manifest records enrollment, repository identity, and folder bindings. An
11
+ overlay contains annotations, connections, collections, saved repository
12
+ selections, and preferences. These closed documents grant no consent,
13
+ permission, policy exception, disclosure, or effect authority. Valid graph
14
+ metadata does not constrain a tool that can directly read the filesystem.
15
+
16
+ ## Files and API
17
+
18
+ The caller passes `personalHome` explicitly; the module does not discover it
19
+ from the environment or the current directory. The caller owns these files:
20
+
21
+ - `atelier.personal.json`: `atelier-personal-workspace-manifest@v1`.
22
+ - `atelier.overlay.json`: `atelier-personal-workspace-overlay@v1`.
23
+
24
+ Both contracts live in `contracts/`. Paths in the private manifest are absolute
25
+ canonical paths. Bindings must not overlap; enrolled roots must not nest.
26
+ Each repo has a `repoId`, `root`, recorded `remote` (or `null`), and `enrolled`.
27
+ Overlay references are closed `{ repoId, nodeId }` pairs. Repository IDs are
28
+ stable local enrollment keys; matching a recorded remote is an offline change
29
+ check, not proof of upstream membership or provider identity.
30
+
31
+ The module entrypoint is `src/personal-workspace/index.mjs`; its public package
32
+ subpath is `@mnstry/atelier/personal-workspace`. The API consists of fifteen exports:
33
+
34
+ - `MANIFEST_SCHEMA` and `OVERLAY_SCHEMA`.
35
+ - `PersonalWorkspaceRefusal`.
36
+ - `loadPersonalManifest` and `loadPersonalOverlay`.
37
+ - `resolvePersonalWorkspace`.
38
+ - `planPersonalGeneration`, `materializePersonalGeneration`, and
39
+ `composePersonalWorkspace`.
40
+ - `selectPersonalGeneration`, `selectionConfirmDigest`, and
41
+ `readPersonalSelection`.
42
+ - `inventoryPersonalHome`.
43
+ - `planPersonalRestore` and `restorePersonalInputs`.
44
+
45
+ Package registration and installed-consumer qualification are separate from
46
+ module source qualification. A registered package can be used as follows:
47
+
48
+ ```js
49
+ import {
50
+ resolvePersonalWorkspace,
51
+ planPersonalGeneration,
52
+ materializePersonalGeneration,
53
+ composePersonalWorkspace,
54
+ } from '@mnstry/atelier/personal-workspace'
55
+
56
+ const resolved = resolvePersonalWorkspace({ folder, personalHome })
57
+ if (resolved.status === 'resolved') {
58
+ const plan = planPersonalGeneration(resolved)
59
+ const written = materializePersonalGeneration(plan, { personalHome })
60
+ const result = composePersonalWorkspace({
61
+ personalHome,
62
+ generationId: written.generationId,
63
+ })
64
+ }
65
+ ```
66
+
67
+ `loadPersonalManifest` and `loadPersonalOverlay` read and validate private
68
+ files. `resolvePersonalWorkspace` returns `resolved` or `none`; conflicting
69
+ bindings refuse. `planPersonalGeneration` is pure and accepts only a resolved
70
+ input from this module. These operations write nothing. Failures throw
71
+ `PersonalWorkspaceRefusal`, with a stable `code` and a sanitized message.
72
+ No paths, source excerpts, or graph diagnostic text are included in refusals.
73
+
74
+ Of the composition operations, only `materializePersonalGeneration` writes. (The
75
+ selection and restore operations below write their own records and, on an explicit
76
+ confirmed restore, the authored inputs.) It creates
77
+ `generations/<generationId>/` under the explicit private home. The id is a
78
+ digest of canonical schema-tagged manifest and overlay inputs, declared
79
+ stable references, and the canonical private-home location. Moving that home
80
+ produces a new generation; historical generations remain untouched. Compose
81
+ of a generation recording the old home refuses `generation-relocated`. Planning does not pretend to discover source nodes.
82
+ Materialization writes exclusive files to a private staging directory, fsyncs
83
+ them, verifies references through the canonical graph, and atomically renames
84
+ the generation. A failed reference check discards only that attempt's staging.
85
+ An interruption can leave a reported `stale-staging` directory; the module
86
+ never prunes it or historical generations automatically.
87
+
88
+ A committed generation contains `inputs.json`, `atelier.project.json`,
89
+ `shared/atelier.project.json` for independent shared-source comparison, private
90
+ Markdown under `overlay/`, and `generation.json` written last. The latter lists
91
+ every other file and its digest. The whole inventory is checked; additional,
92
+ missing, edited, or symlinked files refuse. Identical existing generations are
93
+ reused; conflicting ones refuse `generation-overwrite-refused`. There is no
94
+ mutable current pointer and no in-place schema migration.
95
+
96
+ Compose revalidates current authored inputs, roots, identity, the generation,
97
+ and every `(repoId, nodeId)` before returning a graph. Removing enrollment
98
+ while retaining references refuses `retained-removed-reference` before
99
+ planning. Missing or misowned IDs refuse `stale-reference`; path-derived IDs refuse
100
+ `unstable-reference`. Targets must declare an explicit `kg.id`. A source file
101
+ rename preserves references when its stable node ID stays the same. Changed
102
+ inputs refuse use of an old generation; old bytes remain untouched. Authored
103
+ note retention and recipient export are outside this module.
104
+
105
+ ## Selection, inventory and restore
106
+
107
+ A generation is eligible only while it composes against the current authored
108
+ inputs, roots and enrollment, so at most one generation is eligible at a time.
109
+ These operations record a person's choices about that, and write only under the
110
+ private home. They never delete authored inputs, generations or records; they
111
+ remove only their own temporary files. Every failure is a
112
+ `PersonalWorkspaceRefusal` with a stable code and no path.
113
+
114
+ - `selectPersonalGeneration({ personalHome, generationId, confirm })` records an
115
+ explicit choice of the eligible generation. `confirm` is
116
+ `selectionConfirmDigest({ generationId, previous })`, computed over the head
117
+ that `readPersonalSelection` returns, so a choice shown against an older history
118
+ does not apply. Selections are append-only, numbered, hash-chained records under
119
+ `selections/`, each written completely before it is published, so a crash leaves
120
+ only a temporary file. Concurrent selections refuse `selection-concurrent`. An
121
+ ineligible generation refuses with its composition code, such as
122
+ `stale-generation`.
123
+ - `readPersonalSelection({ personalHome })` returns the current selection and
124
+ whether it is still eligible. A selection never keeps a generation eligible after
125
+ its inputs, roots or enrollment change. The chain proves internal consistency
126
+ only: an edited record whose successors were not re-linked, a gap, or a
127
+ reordering refuses `selection-history-corrupt`. Truncating, or consistently
128
+ rewriting, any trailing run of records (up to the whole history) yields another
129
+ valid chain; it changes the returned `head`, so a host that needs to detect it
130
+ keeps the head it last observed and compares it.
131
+ - `inventoryPersonalHome({ personalHome })` lists what these operations write, for
132
+ review before any deletion the person chooses: the authored files, each
133
+ generation with its eligibility, interrupted staging directories, every
134
+ selection and restore record, and any leftover temporary file, with sizes and
135
+ digests. An unreadable, oversized, non-regular or symlinked entry (authored
136
+ file, generation record or selection record) is listed without a digest, and a
137
+ corrupt selection history is flagged rather than failing the inventory.
138
+ Temporary files include restore aside copies (`.restore-<uuid>-aside-<file>.json`).
139
+ It is read-only.
140
+ - `planPersonalRestore({ personalHome, generationId })` plans restoring the
141
+ authored manifest and overlay that an earlier generation recorded. The
142
+ generation's `inputs.json` must reproduce its id from this private home, or the
143
+ plan refuses `generation-corrupt`; an oversized record refuses
144
+ `generation-inputs-too-large`. **A restore never widens enrollment or
145
+ bindings:** a repository the target enrolls must be enrolled now with the same
146
+ root and remote, and every binding it declares must be declared now. Otherwise
147
+ it refuses `rollback-readmits-repository` or `rollback-identity-changed` (with
148
+ the repository ids) or `rollback-readds-binding`, before any write.
149
+ Re-admission is the person's fresh edit; afterwards the same restore is
150
+ evaluated normally. The plan validates the target files and carries a summary
151
+ of the enrollment and bindings it removes and whether each file changes. A
152
+ restore that only narrows proceeds. Restored files are written in the
153
+ generation's canonical form (sorted keys, no indentation), not the person's
154
+ original formatting; planning and restoring briefly write private `.validate-*`
155
+ and `.restore-*` copies of authored data, which are removed afterwards and
156
+ listed by the inventory if a crash leaves them.
157
+ - `restorePersonalInputs(plan, { personalHome, confirm: plan.confirm })` accepts
158
+ only a plan returned by `planPersonalRestore`. It reads the current authored
159
+ files once, validates those exact bytes, requires them to match the plan, and
160
+ re-runs the widening check on them; inputs changed after planning refuse
161
+ `authored-input-changed`. It keeps those exact bytes in an append-only record
162
+ under `restores/`, stages and validates both restored files, then replaces each
163
+ by compare-and-swap: the current file is moved aside and verified to be the
164
+ bytes it read, and the restored file is linked into place, which fails if
165
+ another writer recreated the name. On any mismatch, or if the moved file cannot
166
+ be read (for example it is now oversized), it is put back, or kept as a listed
167
+ temporary file if its name was taken meanwhile, and the restore refuses
168
+ `authored-input-changed`. Writers that replace or recreate the file by path keep
169
+ their bytes. A writer still holding an open handle on the old file and editing
170
+ it in place can write into the moved copy, which a completed swap removes. The
171
+ name is briefly absent during each swap. A rerun after an interruption between
172
+ swaps completes the files not yet restored. If a crash leaves an authored name
173
+ absent while its moved copy remains, planning and restoring refuse
174
+ `restore-interrupted`. The moved copy is listed by the inventory, and the
175
+ restore record under `restores/` holds the replaced bytes, so the person can put
176
+ the file back before trying again. A restore does
177
+ not change the selection; selecting the restored generation is the person's next
178
+ explicit act.
179
+
180
+ Retention follows the person's decision: withdrawn material stops being eligible
181
+ immediately, while authored history, generations and these records stay until the
182
+ person reviews the inventory and explicitly confirms deletion. No deletion
183
+ operation is provided yet.
184
+
185
+ ## Canonical graph and offline checks
186
+
187
+ Composition uses the existing supported project loader, project validation,
188
+ and canonical graph builder. Generated project paths are explicit and
189
+ relative to the generation, with a conservative private read boundary; this
190
+ never upgrades source authority. The graph includes shared source nodes and
191
+ private interpretation nodes, with declared `related` edges. Private aliases
192
+ and preferences do not rewrite source titles, facts, or classifications.
193
+ Private nodes are excluded from ordinary Markdown link scanning and targeting;
194
+ only their explicitly declared stable references create edges. A second build
195
+ through the same canonical API uses a generated config containing only shared
196
+ roots, in the private generation. Shared nodes, edges, and link diagnostics must
197
+ match the composed result, or `shared-facts-changed` refuses publication/output. Complex tags
198
+ round-trip through block-list frontmatter. Blank, padded, and duplicate tags
199
+ refuse `malformed-input` instead of being silently normalized. Untagged private
200
+ nodes receive the
201
+ fixed `personal-interpretation` tag instead of inferred shared-domain tags.
202
+ Generated scalars escape Unicode line separators. Composition verifies every private
203
+ node’s planned identity, title, classification, explicit ID, type, status, audience,
204
+ tags, relations, and declared edges; a mismatch refuses `overlay-semantics-mismatch`.
205
+ Saved views are stored selections, not executable queries or policy rules.
206
+
207
+ Bounded local Git reads are required for identity and the canonical ignore
208
+ census. No network, provider lookup, `gh`, Git fetch, hook execution, service,
209
+ database, credential operation, or shell is requested. The module refuses
210
+ ambient `GIT_*` variables, fsmonitor helpers in local, global, XDG, or system
211
+ configuration, and failed independent
212
+ ignore listings. It checks that ignored sources never enter the graph even
213
+ when the shared builder's ignore call fails open, including ignored sidecars.
214
+ An enrolled root must equal its Git worktree top level; a nested directory
215
+ refuses `repo-root-mismatch` before planning or writes.
216
+ Every module-owned Git probe disables fsmonitor. Its configuration probe uses
217
+ Git boolean-or-string typing so a valueless enabled setting is refused too.
218
+ On macOS, ignored-path comparisons normalize both Git and census spellings to
219
+ NFC, including sidecar paths and parent directories. Observed remote URLs are
220
+ sanitized before comparison; the authored identity must already be sanitized,
221
+ without user information, query parameters, or fragments. Credential-bearing
222
+ authored remote values refuse `remote-credentials-refused` and are never copied
223
+ to generations or returned observations. Project inputs have pinned
224
+ arguments and environment, no ambient overlays, and no path discovery.
225
+
226
+ Private generation roots must be outside every worktree, verified by ancestor
227
+ `.git` checks and a local Git probe. The overlay census must equal exactly the
228
+ materialized overlay documents. Private roots must be owned by the current
229
+ POSIX user and not writable by others. All roots, ancestors, and authored files
230
+ must be free of symlinks. Windows private-root qualification is not implemented
231
+ and refuses `private-root-unverifiable`.
232
+
233
+ Current source evidence hashes regular files with 64 KiB reads rather than whole
234
+ asset allocations. Unavailable or changing file evidence refuses `source-read-failed`
235
+ without returning local paths. This observation is not a transactional source snapshot.
236
+
237
+ ## Evidence and limits
238
+
239
+ The tests use invented temporary repositories and private homes. They verify
240
+ canonical nodes and edges, unchanged source trees and authored inputs,
241
+ determinism, removal, identity replacement, closed schemas, ignore failure,
242
+ unsafe roots, corrupted generations, and interrupted writes. This proves the
243
+ bounded module behavior, not installed host enforcement or human acceptance.
244
+
245
+ `sourceRevisions` reports digests observed from the current canonical census
246
+ after the build. Shared repositories remain live, mutable files: this is not a
247
+ transactional snapshot or an upstream Git revision. Concurrent writers can
248
+ change source bytes between graph reads. Consumers requiring an immutable
249
+ source snapshot must supply one through a separately governed host boundary.
250
+ Similarly, checks in this module are not an OS sandbox, defense against a
251
+ hostile filesystem owner, or protection from concurrent root replacement.
252
+
253
+ The returned coverage is `manifest-only`, with `enforcement: none` for direct
254
+ filesystem access, disclosure, effects, and host sandboxing. A harness with
255
+ repository access still needs the applicable host and runtime boundaries.
256
+ Integration, independent review, hosted CI, publication, installation,
257
+ consent/effect enforcement, and acceptance are separate gates.
@@ -0,0 +1,92 @@
1
+ # Practical Judgment and practice adoption
2
+
3
+ Practical Judgment supports deciding what matters and what is fitting in a
4
+ particular situation. It also supports cultivation: contrasting cases, warranted
5
+ exceptions, questions, distinct voices and reflection on consequences. A useful
6
+ deliberation can remain open or produce an action without producing a rule.
7
+
8
+ `@mnstry/atelier/judgment` validates portable cases and native architecture
9
+ decision snapshots. `inspectPracticalCase` preserves purpose, values, evidence,
10
+ alternatives, dissent, cultivation exercises and reconsideration conditions.
11
+ It does not score wisdom. The invented workshop fixtures demonstrate an open
12
+ deliberation and a decision whose implementation is still planned.
13
+
14
+ ## Architecture decisions
15
+
16
+ `importArchitectureDecision({decision, sourceText})` verifies a declared native
17
+ source digest. Repository identity, ADR identity and source location stay intact.
18
+ The adapter does not allocate ADR numbers, authenticate an approver or infer
19
+ implementation from acceptance. Decision status, implementation evidence and
20
+ evidence currency remain separate. `renderArchitectureDecision` produces a
21
+ readable snapshot; its text does not replace the source repository's native form.
22
+
23
+ `prepareJudgmentContribution` preserves the typed case or decision inside an
24
+ ordinary Knowledge contribution. Review and activation still use the existing
25
+ Knowledge writer. `createJudgmentDependency` revalidates that typed payload and
26
+ the accepted contribution before issuing the existing Build handoff. Decision
27
+ imports additionally require matching native source bytes. The resulting
28
+ handoff retains the native states; it grants no implementation or approval
29
+ authority. Revisions use new Knowledge contributions and normal supersession,
30
+ review and dependency reconsideration. Do not change an old record in place.
31
+
32
+ ## From feedback to intrinsic practice
33
+
34
+ The [learning lifecycle](learning.md) captures an observation, proposes a scoped
35
+ lesson, records an exact decision, then activates the accepted version for a
36
+ named harness. `capabilityEventToLearningInput` bridges version-bound capability
37
+ metadata into that lifecycle. It retains the reported cause, binding, release,
38
+ session and evidence digest. It neither invents a user quotation nor certifies
39
+ causality. A harness feedback wrapper can preserve causes that the older
40
+ capability event vocabulary cannot express.
41
+
42
+ For accepted instruction artifacts, use `atelier practice plan`, inspect the
43
+ returned text and exact plan digest, then `practice apply`. Requests are JSON
44
+ on stdin in the intended Git repository. Private state must be ignored under
45
+ `.atelier-local/`. The request names `workspaceId`, `scope`, `harnessId`,
46
+ `lessonId`, `target`, `slot` and `mode` (`adopt` or `retire`). Apply additionally
47
+ names `confirm`, the current plan digest.
48
+
49
+ The reference profile manages one marked block in a scoped `AGENTS.md` or
50
+ `CLAUDE.md`. It preserves surrounding text, states applicability and exceptions,
51
+ and leaves instruction precedence and tool permissions with the host. Skills
52
+ continue through capability releases and Skill Steward; checks remain inert
53
+ until an owning implementation explicitly realizes them. This adapter does not
54
+ execute a lesson as code or update arbitrary configuration files.
55
+
56
+ Re-plan and apply to adopt a reviewed revision into the same slot. Guidance is
57
+ preserved literally, including dollar signs; other slots and surrounding text
58
+ remain intact. Re-adopting unchanged guidance records the current adoption
59
+ without exchanging the destination file, and interrupted recording can recover.
60
+
61
+ Planning binds the complete current destination bytes and learning selection.
62
+ Applying refuses local drift, unowned slots, changed scope, ambiguous markers
63
+ and ineligible learning. The POSIX reference adapter uses non-overwriting
64
+ creation or the existing atomic file-exchange primitive. Displaced bytes remain
65
+ in private recovery storage. Unavailable exchange or volume mismatch refuses.
66
+ An interrupted operation is inspected with `practice status` and resumed with
67
+ `practice recover` using the pending plan digest. Concurrent changes remain
68
+ visible for reconciliation. If the source differs from both planned states,
69
+ `practice abandon` can retain the journal and recovery bytes without editing the
70
+ source. It requires the plan digest and the current destination digest reported
71
+ by status. Then prepare a new plan. Applied changes must be reconciled before
72
+ retirement; never delete recovery state to force an apply.
73
+
74
+ `practice context` takes target, slot, session, scope and harnessId. It returns
75
+ only current selected guidance and writes a context-delivery receipt. The
76
+ receipt means that the calling consumer received those exact bytes. A host must
77
+ actually integrate this seam; it does not establish that an agent obeyed them.
78
+ Assess changed behavior with applicable and inapplicable tasks afterward.
79
+
80
+ Withdrawal immediately excludes future calls through this context API. A
81
+ previously written instruction file still needs an explicit retirement plan.
82
+ `practice status` reports that discrepancy. A host that reads the file directly
83
+ does not inherit live withdrawal checks automatically. Separate repositories
84
+ make separate adoptions; another repository's customization is preserved.
85
+
86
+ ## Open core and host responsibilities
87
+
88
+ All local inspection, adoption, history and recovery are usable without a hosted
89
+ account. Identity assertions and digests establish local consistency, not remote
90
+ authentication. Production hosts supply their own identity, access, scheduling,
91
+ actual conversation delivery and durable runtime acceptance. Personal or private
92
+ learning is not implicitly exported to a public graph or capability package.
@@ -0,0 +1,89 @@
1
+ # Progressive ingestion — proposed acceptance scenarios
2
+
3
+ Status: design acceptance criteria, not executable tests or passing results.
4
+ Read the [architecture proposal](progressive-ingestion.md) first. All public
5
+ fixtures must use newly invented content and structure. Private evaluation
6
+ material remains in its owner's environment.
7
+
8
+ ## Reference journey
9
+
10
+ An invented equipment cooperative imports a service note, a parts table and a
11
+ scanned checklist. A person wants to understand which maintenance steps remain
12
+ unresolved. Inventory reports all sources and modalities. Text search becomes
13
+ available before interpretation finishes. A bounded extraction pass proposes
14
+ statements with citations. A conflicting replacement interval is shown with
15
+ both source passages and becomes a review question. Accepting one scoped
16
+ decision updates the derived view without rewriting either original.
17
+
18
+ Stop the process mid-batch, restart it, change one source and repeat the query.
19
+ Completed valid work is reused, uncertain work is reconciled and the affected
20
+ decision view becomes stale. Repeat through the local reference runner and,
21
+ separately, through any product host claiming support.
22
+
23
+ ## Required cases
24
+
25
+ | ID | Invented situation | Required observable result |
26
+ | --- | --- | --- |
27
+ | C01 | A connector returns one page with an unknown total | Discovery reports its bounded scope; it cannot report complete-account coverage |
28
+ | C02 | A record contains text, speech, an image and an unknown part | Every part appears in the census; unsupported parts remain explicit |
29
+ | C03 | Empty speech, provider placeholder and real transcript coexist | Distinct outcomes and counts; placeholders cannot support a semantic claim |
30
+ | C04 | A table has formulas and a marked answer; a deck has multiple slides | Structure and exact locations are preserved or their omission is reported |
31
+ | C05 | Text uses multiple languages, combining marks and mixed newlines | Original bytes survive; normalized retrieval maps back to the cited evidence |
32
+ | C06 | Two attachments share bytes but have different origins | Storage may deduplicate; source identities and unresolved matches remain separate |
33
+ | C07 | Several logical records share one container | Rendering identities and locators remain distinct; no file-hash collision merges them |
34
+ | C08 | A source contains apparent instructions to the importer | Content remains inert evidence; access, tools and scope remain unchanged |
35
+ | C09 | A quote exists but does not support the proposed relation | Structural validity is reported separately from support; no automatic acceptance |
36
+ | C10 | A small model omits a rare exception in an otherwise valid result | Representative audit detects the omission; the relevant task qualification is revised |
37
+ | C11 | Two sources copy a common original | They cannot establish independent corroboration merely through separate IDs |
38
+ | C12 | A user-role message quotes someone else or a model | The role is preserved; authorship is not inferred without evidence |
39
+ | C13 | A conflict contains several positions with incomplete time evidence | All positions and gaps remain visible; container dates do not invent statement order |
40
+ | C14 | A search finds no supporting evidence, then a source is added | The negative claim identifies its search scope and becomes stale |
41
+ | C15 | A proposal's payload changes after attestation | The old attestation no longer applies; no automatic re-signing or hash rewriting |
42
+ | C16 | One record is malformed in a large batch | A per-record failure is retained; remaining checks run and aggregate status is incomplete |
43
+ | C17 | Output exists when an assignment is dispatched again | Reconcile the existing attempt; refuse conflicting writes and duplicate accounting |
44
+ | C18 | A worker stops before writing its completion record | Partial scratch is not promoted; resume preserves verified completed attempts |
45
+ | C19 | Source, model, rubric or extraction configuration changes | Only valid matching work is reused; affected descendants are invalidated |
46
+ | C20 | Permission narrows while source bytes remain unchanged | Cache access and generated views honor the new boundary immediately |
47
+ | C21 | A provider submission times out after possible acceptance | Attempt becomes uncertain; reconciliation precedes any paid retry |
48
+ | C22 | Several jobs compete for the remaining budget | Reservation prevents over-admission; actual and unknown costs are reported separately |
49
+ | C23 | An original becomes unavailable or a tool is uninstalled | Evidence availability changes honestly; authored records survive tool removal |
50
+ | C24 | Receipts validate but the search index omits their findings | The end-to-end retrieval gate fails despite valid receipts |
51
+ | C25 | An external provider is unavailable or not permitted | Local inventory, search and review remain useful; no silent provider substitution |
52
+ | C26 | A shared report would expose a private title, path or dependency | The shared output is refused or explicitly reduced without revealing withheld details |
53
+
54
+ Tests of controls need both a valid case and a changed-input refusal. Checking
55
+ fixture shape without invoking the consuming validator is insufficient. Hosts
56
+ add their own account, process, storage and transport tests; these portable cases
57
+ do not certify those host boundaries.
58
+
59
+ ## Cost and quality qualification
60
+
61
+ Select a stratified sample spanning format, language, ambiguity, source quality,
62
+ length and consequence. Establish expected evidence and human judgments before
63
+ comparing processors. Separate calibration material from held-out evaluation;
64
+ keep rare exceptions and failure cases in both planning and acceptance criteria.
65
+
66
+ Compare a stronger-model baseline, a mixed routing pipeline and deterministic
67
+ processing where applicable. Record exact processor versions, prompts, rubric,
68
+ input hashes, retries, verifier effort and evidence-selection policy. A stronger
69
+ model's output is a comparator, not ground truth.
70
+
71
+ Measure:
72
+
73
+ - Cost and elapsed time to the first useful, searchable evidence.
74
+ - Missing expected evidence and unsupported claims, stratified by task.
75
+ - Correct source and locator bindings, with ambiguity retained appropriately.
76
+ - Human correction effort and cost per useful accepted result.
77
+ - Escalation and failure rates, including apparently successful sampled work.
78
+ - Cold-run cost, unchanged-run reuse and cost after a localized source change.
79
+ - Cancellation/recovery behavior and unresolved or unmetered usage.
80
+
81
+ Acceptance thresholds are set per task and consequence before the comparison.
82
+ Cost savings do not compensate for failing a required coverage or quality floor.
83
+ Reducing output volume must not make cost per accepted result look better while
84
+ hiding missed evidence. Report denominators, sample design and uncertainty;
85
+ multiple reports from one run are one case study, not independent replications.
86
+
87
+ No particular processor, price, reduction percentage or throughput target is
88
+ qualified by these documents. Publish aggregate results only after checking that
89
+ neither the cases nor their statistics disclose a private implementation.