@mnstry/atelier 0.2.0-alpha.11 → 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 (560) hide show
  1. package/CHANGELOG.md +1005 -0
  2. package/README.md +149 -9
  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-obsidian-generation-manifest.v2.schema.json +372 -0
  21. package/contracts/atelier-personal-workspace-manifest.v1.schema.json +87 -0
  22. package/contracts/atelier-personal-workspace-overlay.v1.schema.json +299 -0
  23. package/contracts/atelier-template-adoption.v1.schema.json +223 -0
  24. package/contracts/atelier-template-profile.v1.schema.json +1168 -0
  25. package/contracts/atelier-trackable.v1.schema.json +781 -0
  26. package/contracts/atelier-upgrade-plan.v3.schema.json +532 -0
  27. package/contracts/compat-baseline.json +1 -1
  28. package/docs/architecture.md +89 -0
  29. package/docs/assurance-controls.md +4 -3
  30. package/docs/blocks/capability-stewardship.md +17 -0
  31. package/docs/blocks/claims.md +16 -3
  32. package/docs/blocks/inquiry-harnesses.md +19 -0
  33. package/docs/blocks/learning-harnesses.md +17 -0
  34. package/docs/capability-stewardship.md +269 -0
  35. package/docs/coordination.md +51 -0
  36. package/docs/decision-practices.md +111 -0
  37. package/docs/decisions.md +29 -0
  38. package/docs/evidence-navigation.md +237 -0
  39. package/docs/exact-upgrades.md +3 -2
  40. package/docs/ingestion.md +181 -0
  41. package/docs/inquiry-harnesses.md +211 -0
  42. package/docs/install.md +80 -3
  43. package/docs/intake-and-guides.md +5 -0
  44. package/docs/integration-contract-decisions.md +24 -2
  45. package/docs/interaction-and-reflection.md +72 -0
  46. package/docs/knowledge-graph.md +20 -0
  47. package/docs/knowledge-health/api.md +30 -0
  48. package/docs/knowledge-health/assessment/api.md +96 -0
  49. package/docs/knowledge-health/assessment/capabilities.md +40 -0
  50. package/docs/knowledge-health/assessment/evaluation.md +27 -0
  51. package/docs/knowledge-health/assessment/facilitator.md +30 -0
  52. package/docs/knowledge-health/assessment/quickstart.md +61 -0
  53. package/docs/knowledge-health/assessment/troubleshooting.md +23 -0
  54. package/docs/knowledge-health/devday/facilitator.md +16 -0
  55. package/docs/knowledge-health/devday/participant-response.md +22 -0
  56. package/docs/knowledge-health/devday/public-default.md +107 -0
  57. package/docs/knowledge-health/devday/quickstart.md +18 -0
  58. package/docs/knowledge-health/devday/support.md +22 -0
  59. package/docs/knowledge-health/exercise.md +17 -0
  60. package/docs/knowledge-health/facilitator.md +20 -0
  61. package/docs/knowledge-health/quickstart.md +94 -0
  62. package/docs/knowledge-health/readme.md +15 -0
  63. package/docs/knowledge-health/support.md +34 -0
  64. package/docs/knowledge-setup.md +248 -0
  65. package/docs/knowledge-workspace.md +264 -0
  66. package/docs/learning-harnesses.md +238 -0
  67. package/docs/learning.md +215 -0
  68. package/docs/local-services.md +242 -26
  69. package/docs/obsidian-contract.md +878 -36
  70. package/docs/obsidian-plugin.md +619 -0
  71. package/docs/obsidian.md +809 -64
  72. package/docs/optional-ingestion.md +83 -0
  73. package/docs/personal-workspace.md +257 -0
  74. package/docs/practical-judgment.md +92 -0
  75. package/docs/progressive-ingestion-acceptance.md +89 -0
  76. package/docs/progressive-ingestion.md +235 -0
  77. package/docs/project-command-inventory.md +1 -0
  78. package/docs/release-engineering.md +56 -1
  79. package/docs/repo-boundary-guard.md +94 -0
  80. package/docs/research-starter-quickstart.md +66 -0
  81. package/docs/research-starter.md +114 -0
  82. package/docs/semantic-ingestion.md +198 -0
  83. package/docs/semantic-operation.md +317 -0
  84. package/docs/skill-steward.md +6 -0
  85. package/docs/template-profile.md +164 -0
  86. package/docs/template-upgrades.md +114 -0
  87. package/docs/trackables.md +111 -0
  88. package/docs/upgrade.md +68 -3
  89. package/fixtures/atelier-architecture/binding/invalid/document.json +19 -0
  90. package/fixtures/atelier-architecture/binding/valid/document.json +19 -0
  91. package/fixtures/atelier-architecture/catalog/invalid/document.json +290 -0
  92. package/fixtures/atelier-architecture/catalog/valid/document.json +343 -0
  93. package/fixtures/atelier-build-contract/attempt/invalid/document.json +20 -0
  94. package/fixtures/atelier-build-contract/attempt/valid/document.json +19 -0
  95. package/fixtures/atelier-build-contract/candidate/invalid/document.json +24 -0
  96. package/fixtures/atelier-build-contract/candidate/valid/document.json +23 -0
  97. package/fixtures/atelier-build-contract/decision/invalid/document.json +31 -0
  98. package/fixtures/atelier-build-contract/decision/valid/document.json +30 -0
  99. package/fixtures/atelier-build-contract/delivery/invalid/document.json +18 -0
  100. package/fixtures/atelier-build-contract/delivery/valid/document.json +17 -0
  101. package/fixtures/atelier-build-contract/gate/invalid/document.json +22 -0
  102. package/fixtures/atelier-build-contract/gate/valid/document.json +21 -0
  103. package/fixtures/atelier-build-contract/ledger/invalid/document.json +270 -0
  104. package/fixtures/atelier-build-contract/ledger/valid/document.json +269 -0
  105. package/fixtures/atelier-build-contract/objective/invalid/document.json +73 -0
  106. package/fixtures/atelier-build-contract/objective/valid/document.json +72 -0
  107. package/fixtures/atelier-build-contract/progress/invalid/document.json +18 -0
  108. package/fixtures/atelier-build-contract/progress/valid/document.json +17 -0
  109. package/fixtures/atelier-capability-contract/adoption/invalid/document.json +71 -0
  110. package/fixtures/atelier-capability-contract/adoption/valid/document.json +70 -0
  111. package/fixtures/atelier-capability-contract/event/invalid/document.json +18 -0
  112. package/fixtures/atelier-capability-contract/event/valid/document.json +17 -0
  113. package/fixtures/atelier-capability-contract/journal/invalid/document.json +382 -0
  114. package/fixtures/atelier-capability-contract/journal/valid/document.json +381 -0
  115. package/fixtures/atelier-capability-contract/notice/invalid/document.json +8 -0
  116. package/fixtures/atelier-capability-contract/notice/valid/document.json +7 -0
  117. package/fixtures/atelier-capability-contract/package/invalid/document.json +59 -0
  118. package/fixtures/atelier-capability-contract/package/valid/document.json +58 -0
  119. package/fixtures/atelier-capability-contract/plan/invalid/document.json +107 -0
  120. package/fixtures/atelier-capability-contract/plan/valid/document.json +106 -0
  121. package/fixtures/atelier-capability-contract/release/invalid/document.json +85 -0
  122. package/fixtures/atelier-capability-contract/release/valid/document.json +84 -0
  123. package/fixtures/atelier-capability-contract/state/invalid/document.json +316 -0
  124. package/fixtures/atelier-capability-contract/state/valid/document.json +315 -0
  125. package/fixtures/atelier-coordination/dependency/invalid/document.json +37 -0
  126. package/fixtures/atelier-coordination/dependency/valid/document.json +36 -0
  127. package/fixtures/atelier-coordination/directive/invalid/document.json +25 -0
  128. package/fixtures/atelier-coordination/directive/valid/document.json +24 -0
  129. package/fixtures/atelier-coordination/disposition/invalid/document.json +34 -0
  130. package/fixtures/atelier-coordination/disposition/valid/document.json +33 -0
  131. package/fixtures/atelier-coordination/outcome/invalid/document.json +39 -0
  132. package/fixtures/atelier-coordination/outcome/valid/document.json +38 -0
  133. package/fixtures/atelier-coordination/recovery/invalid/document.json +34 -0
  134. package/fixtures/atelier-coordination/recovery/valid/document.json +33 -0
  135. package/fixtures/atelier-harness-contract/handoff/invalid/document.json +25 -0
  136. package/fixtures/atelier-harness-contract/handoff/valid/document.json +24 -0
  137. package/fixtures/atelier-ingestion/invalid/authority.json +19 -0
  138. package/fixtures/atelier-ingestion/semantic-baseline.json +26 -0
  139. package/fixtures/atelier-ingestion/semantic-operation.json +75 -0
  140. package/fixtures/atelier-ingestion/valid/plan-input.json +18 -0
  141. package/fixtures/atelier-inquiry-contract/assessment/invalid/document.json +41 -0
  142. package/fixtures/atelier-inquiry-contract/assessment/valid/document.json +40 -0
  143. package/fixtures/atelier-inquiry-contract/bundle/invalid/document.json +51 -0
  144. package/fixtures/atelier-inquiry-contract/bundle/valid/document.json +50 -0
  145. package/fixtures/atelier-inquiry-contract/campaign/invalid/document.json +17 -0
  146. package/fixtures/atelier-inquiry-contract/campaign/valid/document.json +16 -0
  147. package/fixtures/atelier-inquiry-contract/decision/invalid/document.json +22 -0
  148. package/fixtures/atelier-inquiry-contract/decision/valid/document.json +21 -0
  149. package/fixtures/atelier-inquiry-contract/feedback/invalid/document.json +19 -0
  150. package/fixtures/atelier-inquiry-contract/feedback/valid/document.json +18 -0
  151. package/fixtures/atelier-inquiry-contract/handoff/invalid/document.json +92 -0
  152. package/fixtures/atelier-inquiry-contract/handoff/valid/document.json +91 -0
  153. package/fixtures/atelier-inquiry-contract/hypothesis/invalid/document.json +20 -0
  154. package/fixtures/atelier-inquiry-contract/hypothesis/valid/document.json +19 -0
  155. package/fixtures/atelier-inquiry-contract/ledger/invalid/document.json +680 -0
  156. package/fixtures/atelier-inquiry-contract/ledger/valid/document.json +679 -0
  157. package/fixtures/atelier-inquiry-contract/legacy-assessment/invalid/document.json +19 -0
  158. package/fixtures/atelier-inquiry-contract/legacy-assessment/valid/document.json +18 -0
  159. package/fixtures/atelier-inquiry-contract/request/invalid/document.json +50 -0
  160. package/fixtures/atelier-inquiry-contract/request/valid/document.json +49 -0
  161. package/fixtures/atelier-inquiry-contract/source/invalid/document.json +18 -0
  162. package/fixtures/atelier-inquiry-contract/source/valid/document.json +17 -0
  163. package/fixtures/atelier-inquiry-contract/withdrawal/invalid/document.json +16 -0
  164. package/fixtures/atelier-inquiry-contract/withdrawal/valid/document.json +15 -0
  165. package/fixtures/atelier-instruction-adoption/context-receipt/invalid/document.json +18 -0
  166. package/fixtures/atelier-instruction-adoption/context-receipt/valid/document.json +17 -0
  167. package/fixtures/atelier-instruction-adoption/plan/invalid/document.json +63 -0
  168. package/fixtures/atelier-instruction-adoption/plan/valid/document.json +62 -0
  169. package/fixtures/atelier-instruction-adoption/receipt/invalid/document.json +22 -0
  170. package/fixtures/atelier-instruction-adoption/receipt/valid/document.json +21 -0
  171. package/fixtures/atelier-instruction-adoption/state/invalid/document.json +30 -0
  172. package/fixtures/atelier-instruction-adoption/state/valid/document.json +29 -0
  173. package/fixtures/atelier-interaction/act/invalid/document.json +25 -0
  174. package/fixtures/atelier-interaction/act/valid/document.json +24 -0
  175. package/fixtures/atelier-interaction/assessment/invalid/document.json +32 -0
  176. package/fixtures/atelier-interaction/assessment/valid/document.json +31 -0
  177. package/fixtures/atelier-interaction/observation/invalid/document.json +22 -0
  178. package/fixtures/atelier-interaction/observation/valid/document.json +21 -0
  179. package/fixtures/atelier-interaction/policy/invalid/document.json +20 -0
  180. package/fixtures/atelier-interaction/policy/valid/document.json +19 -0
  181. package/fixtures/atelier-judgment/case/invalid/document.json +76 -0
  182. package/fixtures/atelier-judgment/case/valid/document.json +75 -0
  183. package/fixtures/atelier-judgment/decision/invalid/document.json +38 -0
  184. package/fixtures/atelier-judgment/decision/valid/document.json +37 -0
  185. package/fixtures/atelier-judgment/native-decision.md +3 -0
  186. package/fixtures/atelier-judgment/practice-reconsideration/definition.json +92 -0
  187. package/fixtures/atelier-judgment/practice-reconsideration/scenario.json +435 -0
  188. package/fixtures/atelier-knowledge-contract/activation/invalid/document.json +26 -0
  189. package/fixtures/atelier-knowledge-contract/activation/valid/document.json +25 -0
  190. package/fixtures/atelier-knowledge-contract/contribution/invalid/document.json +34 -0
  191. package/fixtures/atelier-knowledge-contract/contribution/valid/document.json +33 -0
  192. package/fixtures/atelier-knowledge-contract/domain/invalid/document.json +41 -0
  193. package/fixtures/atelier-knowledge-contract/domain/valid/document.json +40 -0
  194. package/fixtures/atelier-knowledge-contract/domain-revision/invalid/document.json +46 -0
  195. package/fixtures/atelier-knowledge-contract/domain-revision/valid/document.json +45 -0
  196. package/fixtures/atelier-knowledge-contract/evaluation/invalid/document.json +21 -0
  197. package/fixtures/atelier-knowledge-contract/evaluation/valid/document.json +20 -0
  198. package/fixtures/atelier-knowledge-contract/ledger/invalid/document.json +318 -0
  199. package/fixtures/atelier-knowledge-contract/ledger/valid/document.json +317 -0
  200. package/fixtures/atelier-knowledge-contract/relation/invalid/document.json +25 -0
  201. package/fixtures/atelier-knowledge-contract/relation/valid/document.json +24 -0
  202. package/fixtures/atelier-knowledge-contract/review/invalid/document.json +18 -0
  203. package/fixtures/atelier-knowledge-contract/review/valid/document.json +17 -0
  204. package/fixtures/atelier-knowledge-contract/withdrawal/invalid/document.json +16 -0
  205. package/fixtures/atelier-knowledge-contract/withdrawal/valid/document.json +15 -0
  206. package/fixtures/atelier-learning/invalid/authority.json +14 -0
  207. package/fixtures/atelier-learning/valid/capture.json +13 -0
  208. package/fixtures/atelier-personal-workspace-contract/manifest/invalid/authority-key.json +17 -0
  209. package/fixtures/atelier-personal-workspace-contract/manifest/invalid/nonempty-ext.json +25 -0
  210. package/fixtures/atelier-personal-workspace-contract/manifest/invalid/wrong-schema.json +22 -0
  211. package/fixtures/atelier-personal-workspace-contract/manifest/valid/manifest.json +22 -0
  212. package/fixtures/atelier-personal-workspace-contract/overlay/invalid/authority-key.json +25 -0
  213. package/fixtures/atelier-personal-workspace-contract/overlay/invalid/unknown-top-level-field.json +27 -0
  214. package/fixtures/atelier-personal-workspace-contract/overlay/invalid/wrong-schema.json +24 -0
  215. package/fixtures/atelier-trackable/definition/invalid/document.json +15 -0
  216. package/fixtures/atelier-trackable/definition/valid/document.json +14 -0
  217. package/fixtures/atelier-trackable/request/invalid/document.json +23 -0
  218. package/fixtures/atelier-trackable/request/valid/document.json +22 -0
  219. package/fixtures/boundary-delegations/invalid/authority-key.v1.json +30 -0
  220. package/fixtures/boundary-delegations/invalid/push-operation.v1.json +28 -0
  221. package/fixtures/boundary-delegations/invalid/unsigned.v1.json +25 -0
  222. package/fixtures/boundary-delegations/valid/empty.v1.json +4 -0
  223. package/fixtures/boundary-delegations/valid/signed-operator.v1.json +30 -0
  224. package/fixtures/boundary-owner-keys/invalid/wrong-algorithm.v1.json +15 -0
  225. package/fixtures/boundary-owner-keys/invalid/wrong-curve.v1.json +15 -0
  226. package/fixtures/boundary-owner-keys/valid/one-owner.v1.json +17 -0
  227. package/fixtures/capability-packages/adoption.example.json +70 -0
  228. package/fixtures/capability-packages/evidence-review/capability-package.json +58 -0
  229. package/fixtures/capability-packages/evidence-review/capability-release.json +84 -0
  230. package/fixtures/capability-packages/evidence-review/evaluation.md +15 -0
  231. package/fixtures/capability-packages/evidence-review/skills/evidence-review/SKILL.md +22 -0
  232. package/fixtures/capability-packages/evidence-review/skills/evidence-review/references/ledger.md +7 -0
  233. package/fixtures/capability-packages/research/capability-package.json +88 -0
  234. package/fixtures/capability-packages/research/capability-release.json +134 -0
  235. package/fixtures/capability-packages/research/evaluation.md +15 -0
  236. package/fixtures/capability-packages/research/skills/research-integrate/SKILL.md +29 -0
  237. package/fixtures/capability-packages/research/skills/research-integrate/references/integration.md +10 -0
  238. package/fixtures/capability-packages/research/skills/research-plan/SKILL.md +27 -0
  239. package/fixtures/capability-packages/research/skills/research-plan/references/inquiries.md +26 -0
  240. package/fixtures/capability-packages/research/skills/research-synthesize/SKILL.md +23 -0
  241. package/fixtures/capability-packages/research/skills/research-synthesize/references/synthesis.md +12 -0
  242. package/fixtures/evidence-navigation/invalid/duplicate-operation.json +16 -0
  243. package/fixtures/evidence-navigation/invalid/instruction-kind.json +36 -0
  244. package/fixtures/evidence-navigation/invalid/invalid-digest.json +36 -0
  245. package/fixtures/evidence-navigation/invalid/invalid-time.json +36 -0
  246. package/fixtures/evidence-navigation/invalid/missing-attribution.json +35 -0
  247. package/fixtures/evidence-navigation/invalid/reserved-extension.json +19 -0
  248. package/fixtures/evidence-navigation/invalid/unattributed-acceptance.json +36 -0
  249. package/fixtures/evidence-navigation/invalid/uncoerced-version.json +16 -0
  250. package/fixtures/evidence-navigation/invalid/unknown-currency.json +17 -0
  251. package/fixtures/evidence-navigation/invalid/unknown-selector-field.json +37 -0
  252. package/fixtures/evidence-navigation/invalid/unsupported-operation.json +15 -0
  253. package/fixtures/evidence-navigation/valid/claim.json +36 -0
  254. package/fixtures/evidence-navigation/valid/host.json +16 -0
  255. package/fixtures/evidence-navigation/valid/profile.json +16 -0
  256. package/fixtures/evidence-navigation/valid/snapshot.json +17 -0
  257. package/fixtures/harness-packages/build-harness/capability-package.json +61 -0
  258. package/fixtures/harness-packages/build-harness/capability-release.json +82 -0
  259. package/fixtures/harness-packages/build-harness/evaluation.md +3 -0
  260. package/fixtures/harness-packages/build-harness/skills/atelier-build-harness/SKILL.md +59 -0
  261. package/fixtures/harness-packages/knowledge-harness/capability-package.json +61 -0
  262. package/fixtures/harness-packages/knowledge-harness/capability-release.json +82 -0
  263. package/fixtures/harness-packages/knowledge-harness/evaluation.md +3 -0
  264. package/fixtures/harness-packages/knowledge-harness/skills/atelier-knowledge-harness/SKILL.md +60 -0
  265. package/fixtures/harnesses/learning-cycle.json +780 -0
  266. package/fixtures/inquiry/workshop.json +675 -0
  267. package/fixtures/inquiry-packages/discovery-harness/capability-package.json +61 -0
  268. package/fixtures/inquiry-packages/discovery-harness/capability-release.json +82 -0
  269. package/fixtures/inquiry-packages/discovery-harness/evaluation.md +3 -0
  270. package/fixtures/inquiry-packages/discovery-harness/skills/atelier-discovery-harness/SKILL.md +48 -0
  271. package/fixtures/inquiry-packages/research-harness/capability-package.json +61 -0
  272. package/fixtures/inquiry-packages/research-harness/capability-release.json +82 -0
  273. package/fixtures/inquiry-packages/research-harness/evaluation.md +3 -0
  274. package/fixtures/inquiry-packages/research-harness/skills/atelier-research-harness/SKILL.md +43 -0
  275. package/fixtures/knowledge-health/calibration-suite.json +26 -0
  276. package/fixtures/knowledge-health/calibration-trial.json +37 -0
  277. package/fixtures/knowledge-health/corrected/checklist.md +18 -0
  278. package/fixtures/knowledge-health/devday/participant-record.json +19 -0
  279. package/fixtures/knowledge-health/expected-summary.json +27 -0
  280. package/fixtures/knowledge-health/workshop/README.md +20 -0
  281. package/fixtures/knowledge-health/workshop/atelier.project.json +7 -0
  282. package/fixtures/knowledge-health/workshop/knowledge-plan.json +65 -0
  283. package/fixtures/knowledge-health/workshop/records/checklist.md +18 -0
  284. package/fixtures/knowledge-health/workshop/records/workshop.md +18 -0
  285. package/fixtures/knowledge-health/workshop/repo-access.v1.json +5 -0
  286. package/fixtures/knowledge-health/workspace/atelier.project.json +18 -0
  287. package/fixtures/knowledge-health/workspace/knowledge-plan.json +74 -0
  288. package/fixtures/knowledge-health/workspace/records/checklist.md +18 -0
  289. package/fixtures/knowledge-health/workspace/records/pilot.md +16 -0
  290. package/fixtures/knowledge-health/workspace/repo-access.v1.json +9 -0
  291. package/fixtures/obsidian/contracts/generation-manifest-v2/invalid/case-only-collision.v2.json +160 -0
  292. package/fixtures/obsidian/contracts/generation-manifest-v2/invalid/flat-note-path.v2.json +160 -0
  293. package/fixtures/obsidian/contracts/generation-manifest-v2/invalid/hidden-folder.v2.json +160 -0
  294. package/fixtures/obsidian/contracts/generation-manifest-v2/invalid/identity-in-the-body.v2.json +160 -0
  295. package/fixtures/obsidian/contracts/generation-manifest-v2/invalid/link-breaking-name.v2.json +160 -0
  296. package/fixtures/obsidian/contracts/generation-manifest-v2/invalid/missing-identity-region.v2.json +156 -0
  297. package/fixtures/obsidian/contracts/generation-manifest-v2/invalid/missing-layout-version.v2.json +159 -0
  298. package/fixtures/obsidian/contracts/generation-manifest-v2/invalid/note-named-like-a-folder.v2.json +160 -0
  299. package/fixtures/obsidian/contracts/generation-manifest-v2/invalid/unknown-region-kind.v2.json +160 -0
  300. package/fixtures/obsidian/contracts/generation-manifest-v2/invalid/v1-contract-version.v2.json +161 -0
  301. package/fixtures/obsidian/contracts/generation-manifest-v2/valid/three-notes.v2.json +160 -0
  302. package/fixtures/obsidian/edits/workspace.json +1 -1
  303. package/fixtures/obsidian/materialization/expected-full.json +21 -21
  304. package/fixtures/obsidian/materialization/expected-full.layout-1.json +99 -0
  305. package/fixtures/obsidian/materialization/expected-scoped.json +7 -7
  306. package/fixtures/obsidian/materialization/expected-scoped.layout-1.json +39 -0
  307. package/fixtures/personal-workspace/overlay.json +24 -0
  308. package/fixtures/templates/local-library.v1.json +75 -0
  309. package/fixtures/templates/upgrade-contracts/adoption-policy.v2/invalid.json +16 -0
  310. package/fixtures/templates/upgrade-contracts/adoption-policy.v2/valid.json +13 -0
  311. package/fixtures/templates/upgrade-contracts/migration.v3/invalid.json +24 -0
  312. package/fixtures/templates/upgrade-contracts/migration.v3/valid.json +21 -0
  313. package/fixtures/templates/upgrade-contracts/template-adoption.v1/invalid.json +60 -0
  314. package/fixtures/templates/upgrade-contracts/template-adoption.v1/valid.json +57 -0
  315. package/fixtures/templates/upgrade-contracts/upgrade-plan.v3/invalid.json +85 -0
  316. package/fixtures/templates/upgrade-contracts/upgrade-plan.v3/valid.json +82 -0
  317. package/package.json +64 -6
  318. package/plugins/obsidian/main.js +444 -0
  319. package/plugins/obsidian/manifest.json +9 -0
  320. package/plugins/obsidian/styles.css +22 -0
  321. package/skills/claude/atelier-build-harness/SKILL.md +59 -0
  322. package/skills/claude/atelier-coordination/SKILL.md +32 -0
  323. package/skills/claude/atelier-discovery-harness/SKILL.md +48 -0
  324. package/skills/claude/atelier-guided-upgrade/SKILL.md +29 -0
  325. package/skills/claude/atelier-interaction/SKILL.md +34 -0
  326. package/skills/claude/atelier-knowledge-harness/SKILL.md +60 -0
  327. package/skills/claude/atelier-knowledge-setup/SKILL.md +72 -0
  328. package/skills/claude/atelier-practical-judgment/SKILL.md +64 -0
  329. package/skills/claude/atelier-research-harness/SKILL.md +43 -0
  330. package/skills/claude/atelier-skill-steward/SKILL.md +53 -0
  331. package/skills/claude/atelier-trackables/SKILL.md +40 -0
  332. package/skills/codex/atelier-build-harness/SKILL.md +59 -0
  333. package/skills/codex/atelier-coordination/SKILL.md +32 -0
  334. package/skills/codex/atelier-discovery-harness/SKILL.md +48 -0
  335. package/skills/codex/atelier-guided-upgrade/SKILL.md +29 -0
  336. package/skills/codex/atelier-interaction/SKILL.md +34 -0
  337. package/skills/codex/atelier-knowledge-harness/SKILL.md +60 -0
  338. package/skills/codex/atelier-knowledge-setup/SKILL.md +72 -0
  339. package/skills/codex/atelier-practical-judgment/SKILL.md +64 -0
  340. package/skills/codex/atelier-research-harness/SKILL.md +43 -0
  341. package/skills/codex/atelier-skill-steward/SKILL.md +53 -0
  342. package/skills/codex/atelier-trackables/SKILL.md +40 -0
  343. package/src/architecture/catalog.mjs +355 -0
  344. package/src/architecture/index.mjs +93 -0
  345. package/src/boundary/content-rules.mjs +4 -2
  346. package/src/boundary/delegation-command.mjs +158 -0
  347. package/src/boundary/delegation.mjs +396 -0
  348. package/src/boundary/policy.mjs +52 -10
  349. package/src/build/git.mjs +18 -0
  350. package/src/build/index.mjs +3 -0
  351. package/src/build/ledger.mjs +88 -0
  352. package/src/capabilities/adoption.mjs +381 -0
  353. package/src/capabilities/evidence.mjs +140 -0
  354. package/src/capabilities/files.mjs +124 -0
  355. package/src/capabilities/index.mjs +4 -0
  356. package/src/capabilities/instructions.mjs +250 -0
  357. package/src/capabilities/package.mjs +136 -0
  358. package/src/cli/command-failure.mjs +36 -0
  359. package/src/cli/execute-command.mjs +16 -2
  360. package/src/cli/run.mjs +65 -9
  361. package/src/coauthor/store.mjs +43 -2
  362. package/src/collaboration/proposals.mjs +189 -0
  363. package/src/commands/architecture.mjs +27 -0
  364. package/src/commands/boundary.mjs +3 -0
  365. package/src/commands/capability.mjs +73 -0
  366. package/src/commands/enroll.mjs +3 -0
  367. package/src/commands/harness.mjs +79 -0
  368. package/src/commands/ingest.mjs +39 -0
  369. package/src/commands/init.mjs +4 -1
  370. package/src/commands/inquiry.mjs +66 -0
  371. package/src/commands/knowledge-semantic.mjs +128 -0
  372. package/src/commands/knowledge.mjs +119 -0
  373. package/src/commands/learn.mjs +61 -0
  374. package/src/commands/obsidian.mjs +832 -62
  375. package/src/commands/practice.mjs +24 -0
  376. package/src/commands/setup.mjs +22 -2
  377. package/src/commands/trackable.mjs +19 -0
  378. package/src/contracts/corpus.mjs +36 -0
  379. package/src/coordination/index.mjs +110 -0
  380. package/src/egress/forbidden-egress.mjs +2 -0
  381. package/src/evidence-navigation/contracts.mjs +60 -0
  382. package/src/evidence-navigation/evaluate.mjs +69 -0
  383. package/src/evidence-navigation/generation.mjs +22 -0
  384. package/src/evidence-navigation/index.mjs +2 -0
  385. package/src/evidence-navigation/local.mjs +167 -0
  386. package/src/evidence-navigation/schema.generated.mjs +604 -0
  387. package/src/evidence-navigation/types.mjs +12 -0
  388. package/src/export/atelier-export-contract.mjs +35 -8
  389. package/src/graph/enroll.mjs +248 -0
  390. package/src/graph/graph.mjs +17 -1
  391. package/src/graph/knowledge-graph.mjs +58 -8
  392. package/src/harnesses/contracts.mjs +41 -0
  393. package/src/harnesses/exchange.mjs +154 -0
  394. package/src/harnesses/feedback.mjs +16 -0
  395. package/src/harnesses/history.mjs +37 -0
  396. package/src/harnesses/index.mjs +4 -0
  397. package/src/harnesses/store.mjs +29 -0
  398. package/src/ingestion/contracts.mjs +41 -0
  399. package/src/ingestion/evaluation.mjs +119 -0
  400. package/src/ingestion/optional/composition/index.mjs +171 -0
  401. package/src/ingestion/optional/evaluation/index.mjs +219 -0
  402. package/src/ingestion/optional/graphify/composition-binding.mjs +60 -0
  403. package/src/ingestion/optional/graphify/composition_receiving.py +185 -0
  404. package/src/ingestion/optional/graphify/graphify_supplier.py +933 -0
  405. package/src/ingestion/optional/graphify/json_bridge.py +163 -0
  406. package/src/ingestion/optional/graphify/query_receiving.py +209 -0
  407. package/src/ingestion/optional/index.mjs +9 -0
  408. package/src/ingestion/optional/jev/bridge.mjs +166 -0
  409. package/src/ingestion/optional/jev/composition-binding.mjs +116 -0
  410. package/src/ingestion/optional/jev/judgments.mjs +174 -0
  411. package/src/ingestion/optional/jev/native-translation.mjs +32 -0
  412. package/src/ingestion/optional/lightrag/atelier_lightrag_supplier/__init__.py +7 -0
  413. package/src/ingestion/optional/lightrag/atelier_lightrag_supplier/adapter.py +966 -0
  414. package/src/ingestion/optional/lightrag/atelier_lightrag_supplier/artifacts.py +101 -0
  415. package/src/ingestion/optional/lightrag/atelier_lightrag_supplier/projection.py +146 -0
  416. package/src/ingestion/optional/lightrag/composition-binding.mjs +67 -0
  417. package/src/ingestion/optional/vanilla/composition-binding.mjs +102 -0
  418. package/src/ingestion/optional/vanilla/index.mjs +218 -0
  419. package/src/ingestion/optional/vanilla/native-normalization.mjs +187 -0
  420. package/src/ingestion/processors.mjs +218 -0
  421. package/src/ingestion/semantic.mjs +203 -0
  422. package/src/ingestion/store.mjs +372 -0
  423. package/src/inquiry/beliefs.mjs +32 -0
  424. package/src/inquiry/contracts.mjs +23 -0
  425. package/src/inquiry/index.mjs +5 -0
  426. package/src/inquiry/ledger.mjs +135 -0
  427. package/src/inquiry/lenses.mjs +15 -0
  428. package/src/inquiry/projection.mjs +77 -0
  429. package/src/inquiry/store.mjs +35 -0
  430. package/src/intake/read-scope.mjs +12 -0
  431. package/src/intake/store.mjs +69 -6
  432. package/src/interaction/index.mjs +91 -0
  433. package/src/judgment/index.mjs +82 -0
  434. package/src/judgment/practice-evaluation.mjs +70 -0
  435. package/src/judgment/practice.mjs +144 -0
  436. package/src/knowledge/context.mjs +217 -0
  437. package/src/knowledge/index.mjs +5 -0
  438. package/src/knowledge/ingestion.mjs +79 -0
  439. package/src/knowledge/intake.mjs +33 -0
  440. package/src/knowledge/ledger.mjs +110 -0
  441. package/src/knowledge/participatory/guidance.mjs +36 -0
  442. package/src/knowledge/participatory/guided-contribution.mjs +44 -0
  443. package/src/knowledge/participatory/index.mjs +2 -0
  444. package/src/knowledge/participatory/installed-workshop.mjs +108 -0
  445. package/src/knowledge/plan.mjs +67 -0
  446. package/src/knowledge/projection.mjs +43 -0
  447. package/src/knowledge/semantic-operation.mjs +567 -0
  448. package/src/knowledge/sessions.mjs +467 -0
  449. package/src/knowledge/workspace.mjs +295 -0
  450. package/src/knowledge-health/assessment.mjs +165 -0
  451. package/src/knowledge-health/capabilities.mjs +350 -0
  452. package/src/knowledge-health/context.mjs +62 -0
  453. package/src/knowledge-health/example.mjs +47 -0
  454. package/src/knowledge-health/index.mjs +10 -0
  455. package/src/knowledge-health/owner-join.mjs +88 -0
  456. package/src/knowledge-health/proof/common.mjs +24 -0
  457. package/src/knowledge-health/proof/installed-check.mjs +100 -0
  458. package/src/knowledge-health/proof/native-readback.mjs +37 -0
  459. package/src/knowledge-health/proof/rehearse.mjs +68 -0
  460. package/src/knowledge-health/proof/validate-participant.mjs +17 -0
  461. package/src/knowledge-health/proof/verify-native-capture.mjs +14 -0
  462. package/src/knowledge-health/proof/workshop-check.mjs +36 -0
  463. package/src/knowledge-health/rule-identity.mjs +44 -0
  464. package/src/knowledge-health/workshop-composition.mjs +19 -0
  465. package/src/knowledge-health/workshop-profile.mjs +176 -0
  466. package/src/knowledge-health/workshop.mjs +99 -0
  467. package/src/learning/adapters.mjs +68 -0
  468. package/src/learning/assistance.mjs +127 -0
  469. package/src/learning/contracts.mjs +65 -0
  470. package/src/learning/store.mjs +272 -0
  471. package/src/personal-workspace/index.mjs +391 -0
  472. package/src/personal-workspace/selection.mjs +385 -0
  473. package/src/project/config.mjs +8 -0
  474. package/src/project/durable-state.mjs +3 -1
  475. package/src/project/file-class.mjs +1 -1
  476. package/src/project/private-state.mjs +10 -1
  477. package/src/projection/obsidian/contracts.mjs +224 -18
  478. package/src/projection/obsidian/edits/apply.mjs +63 -19
  479. package/src/projection/obsidian/edits/regions.mjs +137 -42
  480. package/src/projection/obsidian/materialize/index.mjs +6 -3
  481. package/src/projection/obsidian/materialize/path-registry.mjs +443 -57
  482. package/src/projection/obsidian/materialize/prepare-view.mjs +382 -131
  483. package/src/projection/obsidian/materialize/redaction.mjs +327 -0
  484. package/src/projection/obsidian/materialize/settings.mjs +113 -34
  485. package/src/projection/obsidian/personal-workspace.mjs +436 -0
  486. package/src/projection/obsidian/plugin-bridge/bundle.mjs +50 -0
  487. package/src/projection/obsidian/plugin-bridge/channel.mjs +174 -0
  488. package/src/projection/obsidian/plugin-bridge/index.mjs +10 -0
  489. package/src/projection/obsidian/proposals/adapter.mjs +47 -8
  490. package/src/projection/obsidian/proposals/observation.mjs +20 -7
  491. package/src/projection/obsidian/publication/bridge-script.mjs +11 -5
  492. package/src/projection/obsidian/publication/index.mjs +2 -1
  493. package/src/projection/obsidian/publication/publisher.mjs +312 -36
  494. package/src/projection/obsidian/publication/transport.mjs +63 -8
  495. package/src/projection/obsidian/publication/vault-list.mjs +200 -0
  496. package/src/projection/obsidian/recovery/index.mjs +4 -1
  497. package/src/projection/obsidian/recovery/restart.mjs +3 -1
  498. package/src/projection/obsidian/recovery/store.mjs +168 -8
  499. package/src/projection/obsidian/selection-ui/contribution.mjs +6 -5
  500. package/src/projection/obsidian/selection-ui/focus.mjs +14 -7
  501. package/src/projection/obsidian/selection-ui/selection-state.mjs +2 -2
  502. package/src/projection/obsidian/selection-ui/selection.mjs +8 -3
  503. package/src/readiness/readiness.mjs +10 -3
  504. package/src/reflection/index.mjs +56 -0
  505. package/src/runtime/obsidian/app-capability.mjs +104 -12
  506. package/src/runtime/obsidian/app-production-seams.mjs +161 -42
  507. package/src/runtime/obsidian/app-registration.mjs +313 -0
  508. package/src/runtime/obsidian/app-restart.mjs +154 -0
  509. package/src/runtime/obsidian/engine.mjs +288 -29
  510. package/src/runtime/obsidian/extension-points.mjs +1 -1
  511. package/src/runtime/obsidian/index.mjs +15 -8
  512. package/src/runtime/obsidian/launch-plan.mjs +91 -0
  513. package/src/runtime/obsidian/lifecycle.mjs +193 -22
  514. package/src/runtime/obsidian/login-item.mjs +332 -0
  515. package/src/runtime/obsidian/machine-settings.mjs +119 -12
  516. package/src/runtime/obsidian/opening.mjs +369 -63
  517. package/src/runtime/obsidian/pending-edits.mjs +10 -0
  518. package/src/runtime/obsidian/pipeline.mjs +71 -3
  519. package/src/runtime/obsidian/plugin-channel.mjs +289 -0
  520. package/src/runtime/obsidian/plugin-choice.mjs +182 -0
  521. package/src/runtime/obsidian/plugin-drift.mjs +124 -0
  522. package/src/runtime/obsidian/plugin-presence.mjs +61 -0
  523. package/src/runtime/obsidian/process-identity.mjs +20 -10
  524. package/src/runtime/obsidian/project-views.mjs +282 -0
  525. package/src/runtime/obsidian/questions.mjs +48 -0
  526. package/src/runtime/obsidian/release-watch.mjs +56 -0
  527. package/src/runtime/obsidian/service-main.mjs +113 -17
  528. package/src/runtime/obsidian/service-manager-production.mjs +61 -0
  529. package/src/runtime/obsidian/service-managers.mjs +275 -0
  530. package/src/runtime/obsidian/service-record.mjs +105 -5
  531. package/src/runtime/obsidian/service-server.mjs +50 -12
  532. package/src/runtime/obsidian/service.mjs +134 -7
  533. package/src/runtime/obsidian/startup-adapters.mjs +59 -21
  534. package/src/runtime/obsidian/state-store.mjs +13 -1
  535. package/src/runtime/obsidian/unheld-evidence.mjs +84 -0
  536. package/src/runtime/obsidian/vault-location.mjs +300 -0
  537. package/src/runtime/obsidian/view-counts.mjs +34 -0
  538. package/src/server/local-sidecar.mjs +193 -7
  539. package/src/server/server.mjs +45 -6
  540. package/src/template-bindings/project.mjs +92 -0
  541. package/src/templates/profile.mjs +225 -0
  542. package/src/trackables/domain.mjs +175 -0
  543. package/src/trackables/store.mjs +114 -0
  544. package/src/ui/knowledge-page.mjs +1388 -0
  545. package/src/upgrade/explanation.mjs +1 -1
  546. package/src/upgrade/template-participant.mjs +171 -0
  547. package/src/upgrade/transaction.mjs +72 -25
  548. package/src/upgrade/upgrade.mjs +2 -1
  549. package/templates/external-project-workspace/pack-lifecycle.json +6 -1
  550. package/templates/knowledge-workspace/.gitattributes +2 -0
  551. package/templates/knowledge-workspace/AGENTS.md +27 -0
  552. package/templates/knowledge-workspace/README.md +44 -0
  553. package/templates/knowledge-workspace/atelier.project.json +22 -0
  554. package/templates/knowledge-workspace/gitignore +6 -0
  555. package/templates/knowledge-workspace/knowledge-plan.json +111 -0
  556. package/templates/knowledge-workspace/knowledge-plan.schema.json +281 -0
  557. package/templates/knowledge-workspace/records/forecast.md +22 -0
  558. package/templates/knowledge-workspace/records/inspection.md +25 -0
  559. package/templates/knowledge-workspace/records/telescope.md +24 -0
  560. package/templates/knowledge-workspace/repo-access.v1.json +9 -0
@@ -0,0 +1,237 @@
1
+ # Evidence navigation
2
+
3
+ The portable evidence contract describes exact source references, attributed
4
+ claims, declared host capabilities, and dependency snapshots. It sits under
5
+ Knowledge Stewardship and can be composed by inquiry harnesses. The pure
6
+ assessments are exported as `@mnstry/atelier/evidence-navigation` and the Node
7
+ local reader as `@mnstry/atelier/evidence-navigation/local`. There is no CLI
8
+ command.
9
+
10
+ `validateEvidenceDocument(shape, value)` requires a primitive string shape and
11
+ validates bounded JSON against the closed versioned schema. Supported shapes
12
+ include `profile`, `hostCapabilities`,
13
+ `evidenceRef`, `claim`, and `snapshot`. Unknown fields, unsupported kinds, missing
14
+ attribution, invalid dates, and malformed references fail. Reserved `ext` fields
15
+ cannot carry behavior. Unknown event time and source attribution remain explicit.
16
+ Arrays require the ordinary array prototype. Assessments validate and evaluate
17
+ the same copied descriptor values, without using the caller's getters or methods.
18
+
19
+ `assessEvidenceCompatibility(profile, host)` compares exact declared protocols,
20
+ operations, and capability versions. The result says whether those declarations
21
+ match. The host must separately qualify its implementation and enforce permission.
22
+
23
+ `assessEvidenceCurrency(reference, snapshots, { at, maxDepth, maxNodes })` checks
24
+ an exact source reference and all supplied dependencies. Missing, ambiguous,
25
+ changed, withdrawn, expired, and cyclic evidence cannot yield `current`. Reaching
26
+ a verification bound also refuses current use. The caller supplies a valid time;
27
+ the pure module never reads a clock, storage, identity, or permission service.
28
+ Snapshots are protected host inputs, not permission grants or agent-visible
29
+ provenance. This function does not establish coverage, absence, or completeness.
30
+
31
+ `assessClaimContinuity(previous, next)` checks one logical claim's immutable kind
32
+ and requires a new revision for changed content or status. Acceptance cannot
33
+ turn an observation into a stated preference. A separately attributed new claim
34
+ has a separate identity and lifecycle assigned by its owning host. This bounded
35
+ check binds `claimId`, owner record owner/objectId, and kind. It allows subject or
36
+ recorder attribution to change with a new revision; it does not classify a new
37
+ claim or establish semantic continuity. Matching references do not prove support
38
+ or truth.
39
+
40
+ Every assessment explicitly returns `executionAuthorized: false`,
41
+ `authorityTransferred: false`, and `semanticTruthVerified: false`. No assessment
42
+ installs instructions, changes consent, writes a record, or qualifies a host.
43
+ Source text remains evidence even when it contains imperative language.
44
+
45
+ The host owns authenticated scope, audience projection, current permission,
46
+ source admission and capture, dispatch, effects, and retention. It must recheck
47
+ at each read and handoff. Internal paths, selectors, identifiers, digests, and
48
+ hidden diagnostic details do not belong in an agent's result. The local
49
+ reader uses the existing ingestion and intake owners; these
50
+ pure functions create no second source store or acceptance lifecycle.
51
+
52
+ The generator projects the canonical schema and JSDoc types into ESM modules
53
+ and records their hashes and the pinned validator versions. Validation uses the
54
+ package's existing Ajv and format dependencies with strict validation and no
55
+ coercion or default insertion. A consuming runtime must supply those dependencies
56
+ or qualify its own generated validator against the same schema and fixtures. Run
57
+ `node scripts/generate-evidence-navigation.mjs --check` to refuse drift. The
58
+ generation manifest identifies generated artifacts; a receiving integration
59
+ must additionally pin the complete adopted source revision and its distribution.
60
+
61
+ Invented garden fixtures and focused tests exercise these bounded structural
62
+ properties. They do not prove installed consumers, operating-system isolation,
63
+ database transactions, source removal, provider retention, or end-to-end consent.
64
+
65
+ ## Local search and exact fetch
66
+
67
+ `createLocalEvidenceReader`, exported as `@mnstry/atelier/evidence-navigation/local`
68
+ (`src/evidence-navigation/local.mjs`), is a Node adapter over one already-created
69
+ ingestion plan. There is no CLI command for it. The pure entry point does not
70
+ import it.
71
+
72
+ Trusted host construction supplies `workspaceRoot`, `workspaceId`, exact
73
+ `plan: { planId, planDigest }`, and synchronous `admit`. The callback receives the
74
+ operation (`search` or `get`) and exact plan binding. Hosts map these callback
75
+ strings to the profile operations `searchEvidence` and `getEvidence`. Only precisely
76
+ `{ disposition: 'permit', revision, readScope: 'all-plan' }` proceeds. The revision
77
+ is a nonempty, bounded identifier from current host authority. It changes whenever
78
+ relevant scope, audience, destination, or permission changes, including withdrawal
79
+ and regrant. Unknown scope, promises, callback errors, and other dispositions
80
+ refuse. Native Promise rejections are contained without awaiting the decision.
81
+ The host must admit the whole plan for this reader and intended recipient.
82
+ A test callback that always permits establishes no actual consent.
83
+
84
+ `search({ query, limit })` accepts up to five items and a nonblank query of at
85
+ most 512 UTF-16 code units and 32 terms after lowercase, trim, and whitespace
86
+ splitting. A secondary 2,048-byte UTF-8 ceiling is retained; the code-unit limit
87
+ is already stricter. Invalid queries refuse before admission or
88
+ store reservation and do not consume the read budget.
89
+ `get({ handle })` accepts only a handle issued by this reader. Optional `readScope`
90
+ must be `all-plan`; narrower scopes refuse before store construction. Model
91
+ arguments cannot choose paths, plans, backends, or permissions. Construction-only
92
+ `openStore` and `now` are trusted host/test seams, defaulting to the existing
93
+ store and monotonic clock. Never expose these options as tool arguments.
94
+ Admission is checked before construction, before reads, and before release,
95
+ against the same revision.
96
+
97
+ Search treats hits as pointers and re-fetches every item through the owner's
98
+ `getEvidence`. Only exact-fetched text is returned. Get rechecks its protected
99
+ source/attempt/locator binding and a private commitment to the earlier fetched
100
+ text. The owner's integrity label does not prove independent content authenticity:
101
+ its journal has no output digest, so a same-size stored rewrite before first
102
+ fetch may be undetectable. Backend errors expose no paths or stored diagnostics.
103
+ Admitted text itself is not redacted here; the host owns its audience and any
104
+ permission to process it downstream.
105
+
106
+ Results contain text, temporary handles, truncation, and `source-evidence` kind,
107
+ without protected IDs, digests, selectors, or hidden-match counts. Coverage is
108
+ always `partial`, including zero results. No current absence claim follows.
109
+ Instruction-looking text remains evidence; the consuming host must preserve that
110
+ distinction in its prompt/context boundary.
111
+
112
+ Defaults are 32 reserved store calls, 32 handles, 16,384 text bytes per item,
113
+ 65,536 total released text bytes, and a 60-second session. Trusted limits can
114
+ vary within hard ceilings of 128 calls/handles, 65,536 bytes per item, 262,144
115
+ total bytes, and ten minutes. Search reserves one query plus its requested maximum
116
+ exact fetches. Failed and unused reservations are not refunded. UTF-8 truncation
117
+ preserves whole code points. A search releases its result as a whole; if no text
118
+ budget remains while fetching its hits, prepared items and handles are dropped
119
+ and the whole search refuses. Issued handles retain their session charge even
120
+ after an admission revision changes; start a new session for the new admission.
121
+ The ingestion owner's plan/processor ceilings bound
122
+ traversal; a hit limit does not limit inspected sources. Synchronous store reads
123
+ cannot be preempted by the lifetime check. A host requiring a hard execution-time
124
+ limit must qualify an isolated worker.
125
+
126
+ `close()` discards handles and refuses further reads. Expiry, clock reversal,
127
+ reentrant calls, foreign handles, changed authority, and changed sources refuse.
128
+ The adapter persists, ingests, accepts, activates, and schedules nothing. It
129
+ provides cooperative process-level checks, not OS isolation, a permission issuer,
130
+ or a database workflow. The host must qualify the real authority and release path.
131
+
132
+ ## Read a complete selected citation
133
+
134
+ Lexical search is partial discovery. It can find a line that names an
135
+ instrument and miss the next line saying that approval awaits inspection. When
136
+ a source owner has selected a complete cited unit, a trusted host can read that
137
+ unit exactly with the existing APIs. This adds no model-callable API. Exact
138
+ reading shows what the selected unit says. It does not show retrieval quality,
139
+ answer correctness, usefulness, or semantic acceptance.
140
+
141
+ ### Which route reads what
142
+
143
+ | Route | Reads | It cannot |
144
+ | --- | --- | --- |
145
+ | `createLocalEvidenceReader` `search` then `get({ handle })` | Hits that this reader's own search found and re-fetched | Accept a citation, locator, page, path, or protected reference. Only its own search issues handles. |
146
+ | `createIngestionStore` (`@mnstry/atelier/ingestion`) `getEvidence` | One exact span for a protected `planId`, `planDigest`, `sourceId`, `sourceDigest`, `attemptId` and `locator` | Grant permission. The host must admit the **whole plan** even though one fetch reads only the named source. A host whose decision covers only some sources must not call it; the store cannot detect this. |
147
+
148
+ `getEvidence` is the route for an explicitly selected citation. It keeps nothing
149
+ between calls: each call checks the current source digest, the completion
150
+ receipt stored beside the output, and the journal's recorded size and coverage.
151
+ Keep its bindings, the source map, and constructor arguments in trusted host
152
+ custody, never under model control. The source must already be in an ingestion
153
+ plan with a completed attempt.
154
+
155
+ ### Steps for the host
156
+
157
+ 1. **Map the unit.** The source owner defines the unit in the existing source
158
+ map: its qualifying lines and limits, not just the lines matching a query,
159
+ and whether the text is original or derived. Bind the map to the current
160
+ source digest, the completed extraction attempt, the processor semantics,
161
+ the ordered locators, and the expected hash of each exact text.
162
+ 2. **Reuse the existing plan and attempt.** Do not create a second extraction
163
+ store or reinterpret locators.
164
+ - Text and Markdown evidence uses physical lines without their line
165
+ terminators (`line`), split on CRLF, LF or a lone CR, after a leading BOM
166
+ (U+FEFF) is removed.
167
+ - JSON primitive leaves use RFC 6901 pointers (`json-pointer`): string text
168
+ is decoded; numbers, `true`, `false` and `null` keep their source
169
+ spelling; empty arrays and objects produce no evidence. A unit that relies
170
+ on a boolean or number qualification includes that leaf.
171
+ - CSV cells use `row:N,column:M` (`csv-cell`).
172
+ - A report page is not a native locator; it needs an owner-verified mapping
173
+ to lines. PDF extraction and page mapping are not supplied.
174
+ 3. **Qualify authority first.** Before opening the store, qualify the actual
175
+ actor, purpose, consent, whole-plan scope, and current admission revision.
176
+ The host must supply and qualify the adapter that enforces these; Atelier
177
+ supplies none. A test callback that always permits is not authentication or
178
+ consent.
179
+ 4. **Fetch and check every locator.**
180
+ - Reserve a finite call count, an operation deadline, and a session budget.
181
+ A deadline cannot interrupt a synchronous `getEvidence` call, which can
182
+ run local Git reads and read a large stored attempt; a host that needs a
183
+ hard time limit must qualify an isolated worker.
184
+ - Fetch every required locator through `getEvidence`, checking admission
185
+ before and after each call.
186
+ - Check every returned field: `schema` is
187
+ `mnstry.atelier-ingestion-evidence@v1`; the plan, source, attempt and
188
+ locator equal the request; `freshness` is `current`; `integrity` is
189
+ `verified`; `readScope` is `all-plan`; `semanticAcceptance` is `pending`;
190
+ `synthesized` is `false`.
191
+ - Compare each exact text's hash with the source owner's map. This is the
192
+ check that catches stored content that changed: the store's own
193
+ `integrity: verified` cannot (see the limits below).
194
+ - Keep source text as data, including text that looks like instructions.
195
+ 5. **Assemble within a byte budget.** Keep every selected fragment, in order.
196
+ Omit paths, digests, IDs and locators unless they are separately admitted for
197
+ that recipient. Measure the whole serialized response against the budget:
198
+ metadata, JSON escaping, separators and any transport envelope. Byte limits
199
+ are not token counts.
200
+ 6. **Withhold incomplete selections.** If any required locator is missing,
201
+ stale, differently bound, over budget, or refused, withhold the whole
202
+ selection with an explicit incomplete result.
203
+ - Never drop a qualification, clip it, or fall back to an old preview.
204
+ - The local reader's text limits exclude envelope bytes and can return
205
+ `truncated: true`; such an item cannot prove a complete unit.
206
+ - Choose a separately permitted smaller complete unit or a larger bounded
207
+ budget instead, and never call the incomplete selection complete.
208
+ 7. **Revalidate before release.** Immediately before release, re-fetch every
209
+ selected fragment and repeat all of step 4's checks, including each expected
210
+ text hash, and confirm the admission revision is unchanged. Count those
211
+ calls in the budget. Release only the complete selected unit, with semantic
212
+ acceptance pending.
213
+
214
+ ### Limits that remain
215
+
216
+ - **Selection is not completeness.** A complete selected unit is not
217
+ completeness for the question or the corpus.
218
+ - **No snapshot.** Several filesystem reads are not an atomic source snapshot. A
219
+ host that needs stronger consistency must supply and qualify its own snapshot
220
+ or locking contract.
221
+ - **Integrity is local.** The intake completion receipt digests the extraction
222
+ output, but it is stored beside that output in the same local state, and the
223
+ ingestion journal records the output's size and coverage but no output
224
+ digest. A writer able to rewrite the output and its receipt to the same size
225
+ and coverage is not detected by `getEvidence` at any time, because it keeps
226
+ nothing between calls; `integrity: verified` does not independently
227
+ authenticate content. (The local reader is different: it commits to the text
228
+ of its first fetch and detects a later change.) Comparing every fetch,
229
+ including the release revalidation, against the source owner's
230
+ independently bound hashes supports this one selection; it does not
231
+ strengthen the store's general guarantee.
232
+ - **Quality is measured separately.** Keep the missed case in the retrieval
233
+ evaluation, and show both the partial discovery and the complete selection.
234
+ Do not count operator-selected citations as held-out search success. Record
235
+ actual reads, response bytes and total effort separately. A person still
236
+ supplies the real question, the permitted sources, and the usefulness
237
+ judgment.
@@ -69,8 +69,9 @@ builders. Only five registered output paths can be written, and a complete
69
69
  before/after inventory checks that boundary. The executor then saves those
70
70
  bytes; application does not recalculate or silently replace the selected plan.
71
71
  This is a bounded trusted executor, not a sandbox for arbitrary migration code.
72
- The generated readiness JSON retains absolute local graph and projection paths,
73
- which may include the account name. Inspect those committed bytes before sharing
72
+ The generated readiness JSON records graph and projection paths relative to the
73
+ project configuration directory, so its bytes match what `atelier readiness`
74
+ would regenerate in the candidate. Inspect the committed bytes before sharing
74
75
  the candidate branch; generating a candidate does not authorize publication.
75
76
 
76
77
  ## Apply the reviewed bytes
@@ -0,0 +1,181 @@
1
+ # Progressive local ingestion
2
+
3
+ Status: experimental source implementation, not yet a released package feature.
4
+ The local runner preserves explicitly selected files and makes bounded text
5
+ search useful before semantic interpretation. It composes the existing
6
+ [immutable intake](intake-and-guides.md) with a resumable plan. It never enrolls
7
+ raw captures into the canonical graph or treats extracted text as accepted
8
+ knowledge. The [architecture proposal](progressive-ingestion.md) describes the
9
+ larger destination; this page describes the implemented subset.
10
+
11
+ ## Start with a purpose and selected sources
12
+
13
+ Use a Git workspace whose `.gitignore` contains `.atelier-local/`. That directory
14
+ must be untracked. Sources are visible paths relative to that workspace;
15
+ traversal, symlinks and implicit external reads are refused. The local CLI is
16
+ for a trusted workspace owner. Its workspace identifier is a binding against
17
+ accidental cross-workspace reuse, not an authenticated identity or tenant ACL.
18
+
19
+ The following examples assume the development checkout or a future package
20
+ version containing this command. Released alpha.7 does not contain it.
21
+
22
+ ```sh
23
+ atelier ingest plan <<'JSON'
24
+ {"workspaceId":"sample-workspace","input":{"sources":[{"id":"service-note","ref":"service.md"},{"id":"parts","ref":"parts.csv"},{"id":"checklist","ref":"checklist.png"}],"scope":{"project":"sample-project","activity":"maintenance"},"purpose":"Find unresolved maintenance work.","budget":{"maxInputBytes":1048576,"maxOutputBytes":1048576,"maxAttempts":8}}}
25
+ JSON
26
+ ```
27
+
28
+ Save the returned `planId` and `planDigest`. Each subsequent request binds both:
29
+
30
+ ```sh
31
+ atelier ingest run <<'JSON'
32
+ {"workspaceId":"sample-workspace","input":{"planId":"REPLACE_WITH_PLAN_ID","planDigest":"REPLACE_WITH_PLAN_DIGEST","maxItems":2}}
33
+ JSON
34
+ atelier ingest query <<'JSON'
35
+ {"workspaceId":"sample-workspace","input":{"planId":"REPLACE_WITH_PLAN_ID","planDigest":"REPLACE_WITH_PLAN_DIGEST","query":"filter","limit":20}}
36
+ JSON
37
+ ```
38
+
39
+ Use `status` with the same input minus `query`, `limit` and `maxItems`. Repeat
40
+ `run` to advance a bounded batch or recover an interrupted local attempt. The
41
+ source selection, purpose, scope, processor versions and budgets belong to the
42
+ immutable plan. A changed selection or budget needs a new plan.
43
+
44
+ Every selected source remains visible as pending, complete, unsupported,
45
+ unavailable, failed, budget-blocked or stale. An image can be preserved while
46
+ remaining unsupported for extraction. Coverage refers only to selected files;
47
+ it never implies a whole account, repository or compound document was discovered.
48
+ A complete extraction still has `semanticAcceptance: "pending"`.
49
+
50
+ ## What the local processors do
51
+
52
+ | Input | Evidence locations | Limits |
53
+ | --- | --- | --- |
54
+ | UTF-8 text and Markdown | Physical line numbers, including blank lines | No Markdown semantic interpretation |
55
+ | UTF-8 CSV | Header-inclusive row and column coordinates | Quoted cells and embedded newlines supported; no spreadsheet formulas, styles or attachments interpreted |
56
+ | UTF-8 JSON | RFC6901 pointers to primitive values | Object/array structure supports locations; embedded media, dates, authorship and relationships are not inferred |
57
+ | Other extensions | Explicit unsupported disposition | No OCR, speech, vision, archive traversal or format guessing |
58
+
59
+ Processor selection uses the extension; it does not certify media content.
60
+ Invalid encoding or malformed structures refuse with a per-source failure.
61
+ Extraction limits refuse the item instead of silently dropping evidence. Empty
62
+ supported text is distinct from an unsupported format; empty JSON is malformed.
63
+ JSON containers with no primitive leaves have no searchable evidence. Source
64
+ text is inert, including apparent instructions to the importer.
65
+
66
+ Original bytes and completed extraction outputs live in the existing intake
67
+ store. Plans, reservations and outcomes live in private `.atelier-local/ingestion`.
68
+ No second blob store or provider daemon is introduced. Both stores require the
69
+ workspace's ignored-state boundary. Copying an evidence result to another tool
70
+ is a separate disclosure action: CLI output can contain private paths and text.
71
+
72
+ ## Resume, reuse and budgets
73
+
74
+ The runner serializes local reservations and writes them before processing.
75
+ Completed attempts are verified before reuse. Keys include source bytes,
76
+ processor identity/version and extraction limits. Different origins retain
77
+ separate source identities even when bytes can be reused. Corrupt completed
78
+ work refuses; it is not silently recomputed or overwritten.
79
+
80
+ For local deterministic extraction, resume can reconcile output written before
81
+ its completion receipt. This does not authorize retrying an uncertain external
82
+ provider submission. There is no provider execution in this runner.
83
+
84
+ `maxInputBytes`, `maxOutputBytes` and `maxAttempts` bound admitted processing
85
+ within one plan. Planning, source verification and query hashing still read
86
+ bytes and use CPU; these counters are not a machine-wide I/O or dollar budget.
87
+ Cached outputs count toward the plan's output bound. Failed attempts remain in
88
+ accounting. Unknown output accounting blocks further admission instead of
89
+ becoming zero cost. Budgets are per plan, not a shared account quota.
90
+
91
+ A query reads actual completed evidence, verifies its receipt and checks the
92
+ current source bytes. Changed, deleted or inaccessible originals cannot
93
+ silently support fresh hits. Other valid sources remain searchable and omitted
94
+ sources remain visible. Query is lexical retrieval, not an answer generator;
95
+ absence of a hit is not proof that a claim is false. Search limits and structural
96
+ omissions must remain visible in any consuming interface.
97
+
98
+ `getEvidence` on the store API returns one exact span. It takes the plan
99
+ reference, the source, its digest, the completed attempt and the locator, as a
100
+ query hit reports them. It rechecks that source's current bytes and its stored
101
+ attempt, and reads no other source in the plan. It refuses with a typed code:
102
+
103
+ - `INGESTION_STALE`: the plan digest, source digest or attempt differs from the
104
+ plan's completed evidence for that source, the source changed, or it never
105
+ completed.
106
+ - `INGESTION_MISSING`: an unknown source or locator, or a plan directory that
107
+ does not exist.
108
+ - `INGESTION_INTEGRITY`: stored evidence fails verification against the plan,
109
+ or a locator is not unique in it.
110
+ - `INGESTION_INVALID`: a malformed request, or a stored plan or journal record
111
+ that fails its schema.
112
+
113
+ Workspace-level refusals (`INGESTION_WORKSPACE`, `INGESTION_PRIVATE`) and
114
+ `INGESTION_LIMIT` apply as they do for query. Status, query and `getEvidence`
115
+ check a completed attempt's coverage and output size against the plan's own
116
+ record. The journal does not yet record a digest of the output, so a stored
117
+ attempt rewritten without changing its size or coverage is not detected. Its
118
+ query hits can then fail to resolve through `getEvidence`. Treat a query hit as
119
+ a pointer, and cite only what `getEvidence` returns.
120
+
121
+ Both query and `getEvidence` report `readScope: "all-plan"`. Query reads every
122
+ source in the plan, and a limit bounds only the hits it returns. Neither call
123
+ narrows or grants permission. A host that may read only some of a plan's
124
+ sources must not pass that plan to either call.
125
+
126
+ ## Connect a useful result to learning
127
+
128
+ A correction made while using a retrieved passage can be captured through
129
+ [`atelier learn`](learning.md), with the source reference, its exact digest and
130
+ location. Capture is evidence only. Proposals remain inert until a person
131
+ reviews the exact content, accepts it and explicitly activates it for a scoped
132
+ harness. Withdrawal preserves the decision history while stopping future use.
133
+
134
+ The core exposes this composition; it does not monitor every tool automatically.
135
+ A desktop host must supply capture consent, trusted identity, paired workspace
136
+ access, transport and actual harness delivery. Tests of a local client do not
137
+ establish native admission. Review and activation never execute text discovered
138
+ inside an imported file. A captured source reference remains historical evidence;
139
+ source changes do not automatically withdraw a separately accepted lesson. A host
140
+ must surface that staleness when it uses source-dependent lessons.
141
+
142
+ ## Evaluate before choosing a model
143
+
144
+ `@mnstry/atelier/ingestion/evaluation` exports `evaluateIngestionTrial` and
145
+ `ingestionEvaluationDigest`. An evaluation suite declares exact expected
146
+ structural evidence, source digests, calibration/held-out cases, strata and
147
+ thresholds before the trial. A trial binds its suite digest and processor
148
+ version/configuration; each case reports attempts, evidence, elapsed time,
149
+ cost (or `null`) and an optional explicit human assessment.
150
+
151
+ The scorer counts omitted cases, wrong locations, changed text and duplicates.
152
+ Each held-out stratum must satisfy the declared thresholds. A zero-evidence or
153
+ calibration-only sample cannot qualify extraction. Unknown costs stay unknown;
154
+ cost per accepted result is absent when cost or acceptance is unavailable.
155
+ Human assessment identities are caller assertions. This is an audit aid, not a
156
+ model permission grant or an automatic judge of semantic support.
157
+
158
+ Run the synthetic local example with:
159
+
160
+ ```sh
161
+ node scripts/evaluate-ingestion.mjs
162
+ ```
163
+
164
+ The example records processor elapsed time and leaves total cost unmetered. It
165
+ uses no model and proves no model savings. For a real comparison, the owner
166
+ must provide permitted representative examples, exact providers, a spend cap,
167
+ predeclared task rubrics and human acceptance. Count retries, failures,
168
+ verification and correction effort. Compare cost per useful accepted result,
169
+ with quality floors and rare exceptions preserved. Keep private examples and
170
+ methods in their owning workspace.
171
+
172
+ ## Remaining product work
173
+
174
+ The public foundation still needs qualified semantic adapters, focused
175
+ synthesis and graph decision integration, richer document/media processors,
176
+ connector census and permission-change handling, and representative pilots.
177
+ The proprietary runtime adds native scheduling, installed processors,
178
+ provider credentials/budgets, progress and source review, cancellation,
179
+ notifications and scoped harness delivery. The public reference path remains
180
+ usable without that runtime. Neither private material nor private methodology
181
+ belongs in public fixtures or distributed proprietary prompts.
@@ -0,0 +1,211 @@
1
+ # Discovery Harness and Research Harness
2
+
3
+ Status: implemented locally for the next release. The published alpha.7 package
4
+ does not expose `inquiry`. Use `node bin/atelier.mjs inquiry help` from this
5
+ source checkout, or `atelier inquiry help` from a package built from it.
6
+
7
+ Discovery frames questions, compares explanations and prepares decisions.
8
+ Research gathers and checks evidence and returns a portable bundle. People set
9
+ purpose and acceptance criteria; agents perform admitted work; the designated
10
+ owner validates consequential interpretations under the repository's rules.
11
+
12
+ ## Start with existing tools
13
+
14
+ The shipped skills are `atelier-discovery-harness` and
15
+ `atelier-research-harness`, in identical Codex and Claude editions. Independently
16
+ sealed packages live in `fixtures/inquiry-packages/`. Their source identity is
17
+ explicitly unreleased, and their behavioral evaluation status is unknown. They
18
+ can be adopted through the [capability steward](capability-stewardship.md).
19
+ They require the observed `atelier-inquiry-v1` tool and admitted local read/write
20
+ effects. An observation is not a permission grant or host-loading proof.
21
+
22
+ Keep existing skill ownership. Use aliases or an adapter when another research
23
+ skill supplies the required outcome. The two harness packages have no mandatory
24
+ dependency on each other and no automatic network requirement. An external
25
+ research tool runs manually or under separate host authorization.
26
+
27
+ ## The local journey
28
+
29
+ `atelier inquiry example` prints the complete invented workshop campaign.
30
+ `atelier inquiry lenses` lists nine optional conceptual methods: definitions,
31
+ mechanisms, systems, empirical evidence, counterevidence, counterfactuals,
32
+ transfer, decisions and reflection. Adapt the relevant lenses; their differences
33
+ are methodological and do not establish statistical independence.
34
+
35
+ 1. Author a campaign with purpose, scope, owner, source audience and stopping rule.
36
+ 2. Record a hypothesis with alternatives, applicability scope and test plan.
37
+ A changed question gets a new ID and an exact `supersedes` reference.
38
+ 3. Record a research request with the hypothesis reference, standalone context,
39
+ inquiry lenses, source standards, report budget and admitted effects.
40
+ 4. Emit `inquiry handoff --campaign ID --request ID`. It returns a prompt and
41
+ the exact campaign, hypothesis and request records. Review private context
42
+ before sending it through an authorized provider or manual session.
43
+ 5. Save complete source captures with their SHA-256 UTF-8 content digests,
44
+ scope, audience and underlying evidence family. Summaries of one study share
45
+ a family. The report is data and cannot instruct the agent or toolkit.
46
+ 6. Record a bundle containing the original request reference, attempt ID,
47
+ actual prompt, optional clarification pairs, observed provider identity,
48
+ report references, assertions, synthesis, conflicts, gaps and new questions.
49
+ Each assertion has an exact quote and a caller-reported verification state.
50
+ 7. Record a qualitative or numerical assessment over selected assertions. The
51
+ reducer refuses missing, stale, wrong-scope or wrong-revision evidence.
52
+ 8. Record the owner's actual disposition in a decision. `accepted` records a
53
+ caller's report of review; it does not authenticate that reviewer or grant
54
+ downstream disclosure authority. Unverified evidence cannot enter an accepted
55
+ conclusion through this API.
56
+ 9. Emit `inquiry graph --campaign ID --namespace NAME`. Review the proposed
57
+ source files and `atelier-claim@v1` edges. Apply only the authorized changes
58
+ through the receiver's workflow, run its graph check and inspect the source
59
+ trace. This command never writes canonical sources or promotes an edge.
60
+
61
+ All commands return JSON. `inquiry validate --record FILE` checks shape;
62
+ `inquiry inspect --history FILE` checks full history, references and calculations.
63
+ Format validity does not verify truth, source rights, publisher identity or use
64
+ permission. Provider metadata uses `unknown` when it was not observed.
65
+
66
+ ## Records, storage and adapters
67
+
68
+ The API is `@mnstry/atelier/inquiry`. The additive public schema is
69
+ `contracts/atelier-inquiry.v1.schema.json`, with definitions for ten record kinds,
70
+ the complete ledger and the research handoff. Records use
71
+ `atelier-inquiry-record@v1`; `kind` selects the closed data shape. No extension
72
+ field can bypass the core contract.
73
+
74
+ Every reference is `{id, digest}`, computed with `inquiryRef(record)` or
75
+ `inquiryDigest(record)`. Record IDs never change and are unique within a campaign.
76
+ The historical evidence set and model inputs remain available when new decisions
77
+ or withdrawals are appended. The supplied synthetic JSON is a worked input
78
+ example, not research evidence.
79
+
80
+ ```js
81
+ import {
82
+ EMPTY_INQUIRY_HEAD, appendInquiry, readInquiry, inquiryRef,
83
+ researchHandoff, inquiryGraphProposal,
84
+ } from '@mnstry/atelier/inquiry'
85
+
86
+ // workspaceRoot is an explicitly selected Git repository root.
87
+ // campaignRecord is authored against the campaign definition in the schema.
88
+ const receipt = appendInquiry({
89
+ workspaceRoot, record: campaignRecord, confirm: EMPTY_INQUIRY_HEAD,
90
+ })
91
+ // Author the next record using inquiryRef(existingRecord) for each reference.
92
+ // Confirm the latest head returned by status or append for every next append.
93
+ const state = readInquiry({ workspaceRoot, campaign: campaignRecord.id })
94
+ ```
95
+
96
+ The CLI equivalent is `inquiry append --record FILE --confirm CURRENT_HEAD`.
97
+ `inquiry help` prints the initial empty-history digest. `inquiry status` returns
98
+ the current head and reconsideration queue. `inquiry export` returns a complete
99
+ ledger, including private captures: choose its output destination deliberately.
100
+ The pure API can inspect and exchange exported histories without an account.
101
+
102
+ Stored ledgers are under `.atelier-local/inquiry/CAMPAIGN/ledger.json`. Writes
103
+ require ignored, untracked `.atelier-local/` state on a qualified POSIX filesystem.
104
+ Windows ledger writes refuse before creating state; read-only inspection and
105
+ exchange of existing histories remain available.
106
+ A shared steward lock serializes cooperating writers. Each append checks the
107
+ expected head, replays the history, and atomically replaces one file containing
108
+ the complete immutable record sequence. Interrupted writes retain a complete
109
+ previous or next file; inspect before repeating an uncertain append. A hard
110
+ process termination can leave a shared lock requiring operator reconciliation;
111
+ do not remove a live or unverified lock. This release has no automatic inquiry
112
+ lock recovery or multi-repository transaction.
113
+
114
+ Limits: 256 records and 8 MiB per ledger; at most 64 elements in bounded record
115
+ arrays; source captures at most 262,144 characters; actual prompts at most
116
+ 1,048,576 characters. Export and verify history before starting a continuation
117
+ campaign; the toolkit does not silently truncate or compact it. References are
118
+ local to a campaign; inter-campaign and inter-repository links remain explicit
119
+ provenance under the receiver's conventions.
120
+
121
+ Hashes detect a mismatched pin, not a malicious writer who can replace the whole
122
+ ledger. File controls assume cooperating local writers and do not create an OS
123
+ sandbox against concurrent directory replacement. Audience labels describe
124
+ readership, not filesystem access control. Non-private campaigns reject source
125
+ audiences outside their declared readership; public disclosure still requires
126
+ the existing repository boundary process.
127
+
128
+ ## Belief calculations and their limits
129
+
130
+ Three representations are supported:
131
+
132
+ | Kind | Output and interpretation |
133
+ | --- | --- |
134
+ | `qualitative` | A documented judgment, no probability |
135
+ | `elicited-odds` | Prior plus stated likelihood ratios and sensitivity priors; conditional on elicitation and independence assumptions |
136
+ | `beta-binomial` | Beta posterior parameters, mean, variance and predictive success rate for explicitly defined binary trials |
137
+
138
+ The odds calculation uses log odds and applies one contribution per evidence
139
+ family. Identical family contributions are counted once and exposed as duplicate
140
+ keys. Conflicting contributions from one family refuse. This is a conservative
141
+ one-contribution-per-family model, not a general dependence engine: aggregate
142
+ dependent observations through a separately justified joint model or use a
143
+ qualitative assessment. A duplicate-family label is supplied by the caller and
144
+ cannot discover hidden overlap in external studies automatically.
145
+
146
+ Prior evidence families must resolve to recorded sources and must not be reused
147
+ as new contributions. Source withdrawal invalidates that whole family, its prior
148
+ uses, assessments and decisions. Relabeling the same external study with a new
149
+ family would evade this check; source-family review remains essential.
150
+
151
+ A rate-model mean is not the probability a broad hypothesis is true. The caller
152
+ defines trials, counts, sampling, scope and independence. No universal likelihood
153
+ ratio, interview count or posterior threshold is bundled. Arithmetic and exact
154
+ replay are tested; calibration is reported as unverified. Prior/posterior
155
+ predictive simulation, general hierarchical inference, causal estimation,
156
+ credible-interval computation and formal expected value of information are
157
+ separate model adapters. The emitted rate predictions are analytic summaries,
158
+ not model-adequacy diagnostics.
159
+
160
+ Append a `withdrawal` naming a source or report bundle to preserve a correction
161
+ trail. A delayed bundle against a superseded request is preserved but flagged;
162
+ it cannot silently update the new hypothesis. A corrected source should receive
163
+ new source/family identities with the correction explained in its locator/method
164
+ and the new assessment rationale. There is no implicit unwithdraw action.
165
+ Legacy heuristic values can be preserved as `legacy-assessment` records; they
166
+ never become computed posteriors or automatic priors.
167
+
168
+ ## Graph integration and stewardship
169
+
170
+ Only current accepted decision reports produce graph proposals. Sources and
171
+ assessments carry stable campaign-scoped graph IDs; files remain drafts and
172
+ relations remain proposal-only claims. Selected quotes, evidence pins, provider
173
+ metadata and unresolved conflicts survive the projection. Raw captures and
174
+ unrelated assertions stay in the campaign ledger. A changed conclusion produces
175
+ a new decision record. Historical graph sources already admitted by a receiver
176
+ are not deleted automatically; use `reconsider` to prepare their revision there.
177
+
178
+ A request may record an exact capability release, binding digest, generation,
179
+ host and session. `inquiry feedback --campaign ID --record FEEDBACK_ID` prepares
180
+ a content-free Steward event. `capability observe` validates that it still names
181
+ the current installed binding. This is an explicit second action; the inquiry
182
+ API never rewrites a skill, installs an upgrade or submits telemetry.
183
+
184
+ Inquiry retains separate skill, host, tool, configuration, context, provider and
185
+ unknown causes. The current Steward event vocabulary cannot distinguish context
186
+ or provider causes: the prepared event uses `unknown`, while its wrapper retains
187
+ the original cause and an explicit mapping notice. Do not infer a skill defect
188
+ from a provider failure or an unknown result.
189
+
190
+ ## Open and operated capabilities
191
+
192
+ The local records, conceptual lenses, reference skills, basic calculations,
193
+ history, graph proposals and adoption remain in the open package. A user can
194
+ complete and export the local journey without a service or provider account.
195
+
196
+ An operated or proprietary adapter may offer provider scheduling, quota and cost
197
+ controls, collaboration, private connectors, specialized methods or more complex
198
+ models. It must honor the request pin, return complete captures and observed
199
+ metadata, preserve gaps and permit export of authorized records. Its execution,
200
+ credentials, budgets and disclosure belong to the host. This release contains
201
+ the manual handoff and return contract; it does not ship hosted runners, a paid
202
+ service, a registry, or an authenticated review system.
203
+
204
+ The architecture catalog uses Discovery Harness and resolves Discovery Engine
205
+ as a historical alias. The bundled `mnstry-readiness-pack@v1` is immutable:
206
+ its Discovery Engine title, `mnstry.readiness:discovery-engine` ID, question
207
+ identifiers and digest all retain their original release values. The protocol
208
+ remains a planning entry point. Keeping the rename outside that object lets
209
+ existing release locks enter both exact upgrade participants without an
210
+ out-of-band lock rewrite. A future change to the bundled object requires a new
211
+ pack version and an explicit upgrade path.