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

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 (253) hide show
  1. package/CHANGELOG.md +283 -0
  2. package/README.md +102 -52
  3. package/SECURITY.md +1 -1
  4. package/TRADEMARKS.md +2 -2
  5. package/contracts/atelier-extension-manifest.v1.schema.json +412 -0
  6. package/contracts/atelier-graph-view.v1.schema.json +1085 -0
  7. package/contracts/public-api-baseline.json +298 -19
  8. package/docs/README.md +90 -0
  9. package/docs/blocks/capability-stewardship.md +1 -1
  10. package/docs/blocks/claims.md +2 -2
  11. package/docs/blocks/conformance-admission.md +1 -1
  12. package/docs/blocks/learning-harnesses.md +1 -1
  13. package/docs/{atelier-sync.md → guides/atelier-sync.md} +20 -14
  14. package/docs/{capability-stewardship.md → guides/capability-stewardship.md} +2 -4
  15. package/docs/guides/co-authoring.md +113 -0
  16. package/docs/{distributions.md → guides/distributions.md} +13 -8
  17. package/docs/guides/extensions.md +189 -0
  18. package/docs/guides/graph-refresh.md +152 -0
  19. package/docs/guides/graph-workspace.md +64 -0
  20. package/docs/{ingestion.md → guides/ingestion.md} +16 -15
  21. package/docs/{inquiry-harnesses.md → guides/inquiry-harnesses.md} +2 -3
  22. package/docs/{knowledge-workspace.md → guides/knowledge-workspace.md} +2 -2
  23. package/docs/{learning-harnesses.md → guides/learning-harnesses.md} +2 -3
  24. package/docs/{learning.md → guides/learning.md} +12 -5
  25. package/docs/{obsidian.md → guides/obsidian.md} +370 -23
  26. package/docs/guides/ontology-guide.md +111 -0
  27. package/docs/{personal-workspace.md → guides/personal-workspace.md} +17 -5
  28. package/docs/{research-starter.md → guides/research-starter.md} +1 -1
  29. package/docs/{tenant-readiness.md → guides/tenant-readiness.md} +39 -0
  30. package/docs/{upgrade.md → guides/upgrade.md} +197 -11
  31. package/docs/knowledge-health/assessment/capabilities.md +6 -15
  32. package/docs/knowledge-health/facilitator.md +15 -4
  33. package/docs/knowledge-health/{devday/participant-response.md → participant-response.md} +4 -2
  34. package/docs/knowledge-health/quickstart.md +97 -75
  35. package/docs/knowledge-health/readme.md +13 -5
  36. package/docs/maintainers/describing-the-atelier.md +173 -0
  37. package/docs/{release-engineering.md → maintainers/release-engineering.md} +5 -4
  38. package/docs/{announcements.md → reference/announcements.md} +1 -1
  39. package/docs/{architecture.md → reference/architecture.md} +31 -5
  40. package/docs/{atelier-runtime.md → reference/atelier-runtime.md} +1 -1
  41. package/docs/{connected-composition.md → reference/connected-composition.md} +7 -10
  42. package/docs/{coordination.md → reference/coordination.md} +1 -1
  43. package/docs/{decisions.md → reference/decisions.md} +3 -3
  44. package/docs/{design.md → reference/design.md} +1 -1
  45. package/docs/reference/edge-policy.md +151 -0
  46. package/docs/reference/graph-view-structured.md +119 -0
  47. package/docs/reference/graph-view.md +139 -0
  48. package/docs/reference/graph-workspace.md +37 -0
  49. package/docs/{intake-and-guides.md → reference/intake-and-guides.md} +3 -4
  50. package/docs/{knowledge-graph.md → reference/knowledge-graph.md} +120 -6
  51. package/docs/{local-services.md → reference/local-services.md} +43 -4
  52. package/docs/{obsidian-contract.md → reference/obsidian-contract.md} +29 -4
  53. package/docs/{obsidian-plugin.md → reference/obsidian-plugin.md} +218 -68
  54. package/docs/{practical-judgment.md → reference/phronesis.md} +12 -3
  55. package/docs/reference/portability.md +92 -0
  56. package/docs/{portable-presentation.md → reference/portable-presentation.md} +2 -2
  57. package/docs/{presentation-consumer-boundaries.md → reference/presentation-consumer-boundaries.md} +5 -0
  58. package/docs/{project-options.md → reference/project-options.md} +17 -0
  59. package/docs/{repo-boundary-guard.md → reference/repo-boundary-guard.md} +50 -4
  60. package/docs/{review-portability.md → reference/review-portability.md} +4 -0
  61. package/docs/{semantic-operation.md → reference/semantic-operation.md} +4 -3
  62. package/docs/{template-profile.md → reference/template-profile.md} +1 -1
  63. package/docs/{trackables.md → reference/trackables.md} +2 -2
  64. package/docs/start/independent-start.md +89 -0
  65. package/docs/{install.md → start/install.md} +9 -9
  66. package/docs/{knowledge-setup.md → start/knowledge-setup.md} +5 -5
  67. package/docs/{research-starter-quickstart.md → start/research-starter-quickstart.md} +6 -6
  68. package/fixtures/atelier-architecture/catalog/invalid/document.json +2 -2
  69. package/fixtures/atelier-architecture/catalog/valid/document.json +2 -2
  70. package/fixtures/graph-view/synthetic-authorized-input.v1.json +437 -0
  71. package/fixtures/graph-view/synthetic-view.v1.json +1 -0
  72. package/fixtures/knowledge-health/workshop/README.md +1 -1
  73. package/fixtures/templates/local-library.v1.json +3 -1
  74. package/package.json +22 -8
  75. package/plugins/obsidian/main.js +57 -8
  76. package/plugins/obsidian/manifest.json +1 -1
  77. package/skills/claude/atelier-guided-upgrade/SKILL.md +1 -1
  78. package/skills/claude/atelier-knowledge-setup/SKILL.md +2 -2
  79. package/skills/claude/atelier-local-service/SKILL.md +1 -1
  80. package/skills/claude/atelier-practical-judgment/SKILL.md +7 -2
  81. package/skills/claude/atelier-skill-steward/SKILL.md +1 -1
  82. package/skills/claude/mnstry-readiness/SKILL.md +2 -2
  83. package/skills/codex/atelier-guided-upgrade/SKILL.md +1 -1
  84. package/skills/codex/atelier-knowledge-setup/SKILL.md +2 -2
  85. package/skills/codex/atelier-local-service/SKILL.md +1 -1
  86. package/skills/codex/atelier-practical-judgment/SKILL.md +7 -2
  87. package/skills/codex/atelier-skill-steward/SKILL.md +1 -1
  88. package/skills/codex/mnstry-readiness/SKILL.md +2 -2
  89. package/src/architecture/catalog.mjs +2 -2
  90. package/src/attestation/sign.mjs +1 -1
  91. package/src/boundary/content-rules.mjs +534 -68
  92. package/src/boundary/policy.mjs +187 -60
  93. package/src/cli/run.mjs +26 -9
  94. package/src/commands/distribution.mjs +1 -1
  95. package/src/commands/extension.mjs +27 -0
  96. package/src/commands/ingest.mjs +1 -1
  97. package/src/commands/learn.mjs +1 -1
  98. package/src/commands/obsidian.mjs +49 -21
  99. package/src/commands/review.mjs +3 -0
  100. package/src/edge-policy/contract.mjs +69 -0
  101. package/src/edge-policy/policy.mjs +142 -0
  102. package/src/edge-policy/source-citation-adapter.mjs +43 -0
  103. package/src/extension-packs/loader.mjs +4 -3
  104. package/src/extensions/admission.mjs +83 -0
  105. package/src/extensions/client.d.mts +23 -0
  106. package/src/extensions/client.mjs +99 -0
  107. package/src/extensions/contracts.d.mts +29 -0
  108. package/src/extensions/contracts.mjs +163 -0
  109. package/src/extensions/convex.d.mts +24 -0
  110. package/src/extensions/convex.mjs +189 -0
  111. package/src/extensions/delegation.mjs +54 -0
  112. package/src/extensions/drizzle.d.mts +11 -0
  113. package/src/extensions/drizzle.mjs +33 -0
  114. package/src/extensions/postgres.d.mts +7 -0
  115. package/src/extensions/postgres.mjs +66 -0
  116. package/src/extensions/prisma.d.mts +13 -0
  117. package/src/extensions/prisma.mjs +63 -0
  118. package/src/extensions/project.mjs +432 -0
  119. package/src/extensions/scaffold-convex.mjs +130 -0
  120. package/src/extensions/scaffold-sql.mjs +144 -0
  121. package/src/extensions/server.d.mts +20 -0
  122. package/src/extensions/server.mjs +102 -0
  123. package/src/extensions/sql-scope.mjs +22 -0
  124. package/src/graph/graph.mjs +13 -5
  125. package/src/graph/knowledge-graph.mjs +20 -2
  126. package/src/graph/repo-contribution.mjs +405 -0
  127. package/src/graph/repo-contribution.types.mjs +32 -0
  128. package/src/graph-access/edge-decision-adapter.mjs +41 -0
  129. package/src/graph-access/edge-record-adapter.mjs +73 -0
  130. package/src/graph-access/index.mjs +253 -0
  131. package/src/graph-access/multi-contribution-record-adapter.mjs +101 -0
  132. package/src/graph-access/multi-record-projection-adapter.mjs +74 -0
  133. package/src/graph-access/source-adapter.mjs +81 -0
  134. package/src/graph-refresh/compare.mjs +110 -0
  135. package/src/graph-refresh/controller.mjs +324 -0
  136. package/src/graph-refresh/index.mjs +3 -0
  137. package/src/graph-refresh/local.mjs +78 -0
  138. package/src/graph-view/babylon/babylon-scene-port.mjs +64 -0
  139. package/src/graph-view/babylon/index.mjs +2 -0
  140. package/src/graph-view/babylon/navigator.mjs +312 -0
  141. package/src/graph-view/babylon/provenance.mjs +36 -0
  142. package/src/graph-view/babylon/scene-controller.mjs +131 -0
  143. package/src/graph-view/babylon/semantic-picking.mjs +35 -0
  144. package/src/graph-view/babylon/web-host.mjs +188 -0
  145. package/src/graph-view/cli.mjs +3 -0
  146. package/src/graph-view/command.mjs +34 -0
  147. package/src/graph-view/contracts.mjs +79 -0
  148. package/src/graph-view/errors.mjs +5 -0
  149. package/src/graph-view/index.mjs +4 -0
  150. package/src/graph-view/intents.mjs +30 -0
  151. package/src/graph-view/query.mjs +213 -0
  152. package/src/graph-view/refs.mjs +2 -0
  153. package/src/graph-view/structured/browser.mjs +262 -0
  154. package/src/graph-view/structured/styles.mjs +8 -0
  155. package/src/graph-workspace/authoring.mjs +185 -0
  156. package/src/graph-workspace/browser/constellation.mjs +369 -0
  157. package/src/graph-workspace/browser/dom.mjs +23 -0
  158. package/src/graph-workspace/browser/index.mjs +6 -0
  159. package/src/graph-workspace/browser/review.mjs +55 -0
  160. package/src/graph-workspace/browser/styles.mjs +11 -0
  161. package/src/graph-workspace/browser/workbench.mjs +351 -0
  162. package/src/graph-workspace/browser/workspace.mjs +431 -0
  163. package/src/graph-workspace/disclosure.mjs +39 -0
  164. package/src/graph-workspace/geometry.mjs +78 -0
  165. package/src/graph-workspace/index.mjs +11 -0
  166. package/src/graph-workspace/labels.mjs +50 -0
  167. package/src/graph-workspace/model.mjs +109 -0
  168. package/src/graph-workspace/recipes.mjs +88 -0
  169. package/src/graph-workspace/scale.mjs +95 -0
  170. package/src/graph-workspace/theme.mjs +156 -0
  171. package/src/ingestion/optional/graphify/graphify_supplier.py +5 -0
  172. package/src/ingestion/optional/graphify/native-closure-pins.json +275 -0
  173. package/src/ingestion/optional/graphify/native-pins.json +306 -0
  174. package/src/knowledge/ontology-guide.mjs +152 -0
  175. package/src/knowledge-health/proof/installed-check.mjs +2 -2
  176. package/src/knowledge-health/rule-identity.mjs +14 -9
  177. package/src/knowledge-health/workshop.mjs +22 -2
  178. package/src/personal-workspace/index.mjs +1 -1
  179. package/src/personal-workspace/selection.mjs +34 -3
  180. package/src/project/config.mjs +1 -1
  181. package/src/project/path-match.mjs +2 -1
  182. package/src/project/providers/github.mjs +24 -0
  183. package/src/project/repo-identity.mjs +3 -22
  184. package/src/projection/obsidian/contracts.mjs +1 -1
  185. package/src/projection/obsidian/materialize/path-registry.mjs +1 -1
  186. package/src/projection/obsidian/materialize/prepare-view.mjs +88 -6
  187. package/src/projection/obsidian/materialize/redaction.mjs +1 -1
  188. package/src/projection/obsidian/personal-workspace.mjs +84 -5
  189. package/src/projection/obsidian/plugin-bridge/channel.mjs +1 -1
  190. package/src/projection/obsidian/proposals/adapter.mjs +46 -23
  191. package/src/projection/obsidian/proposals/observation.mjs +40 -2
  192. package/src/projection/obsidian/publication/publisher.mjs +96 -8
  193. package/src/projection/project.mjs +21 -16
  194. package/src/readiness/readiness.mjs +20 -11
  195. package/src/readiness-protocols/bundled-pack.mjs +14 -766
  196. package/src/readiness-protocols/bundled-selection.mjs +32 -0
  197. package/src/readiness-protocols/evidence.mjs +2 -1
  198. package/src/readiness-protocols/packs/mnstry.mjs +766 -0
  199. package/src/readiness-protocols/runtime.mjs +43 -6
  200. package/src/runtime/obsidian/engine.mjs +387 -76
  201. package/src/runtime/obsidian/lifecycle.mjs +20 -15
  202. package/src/runtime/obsidian/login-item.mjs +6 -3
  203. package/src/runtime/obsidian/machine-settings.mjs +52 -8
  204. package/src/runtime/obsidian/observation.mjs +36 -4
  205. package/src/runtime/obsidian/opening.mjs +4 -3
  206. package/src/runtime/obsidian/personal-selection.mjs +187 -0
  207. package/src/runtime/obsidian/pipeline.mjs +115 -6
  208. package/src/runtime/obsidian/private-lock.mjs +50 -6
  209. package/src/runtime/obsidian/selection-continuity.mjs +124 -0
  210. package/src/runtime/obsidian/service-main.mjs +68 -16
  211. package/src/runtime/obsidian/service.mjs +80 -6
  212. package/src/runtime/obsidian/unheld-evidence.mjs +1 -1
  213. package/src/runtime/obsidian/view-permission.mjs +335 -0
  214. package/src/ui/control-system.mjs +201 -0
  215. package/src/ui/html-primitives.mjs +3 -0
  216. package/src/upgrade/closure-diagnostics.mjs +135 -0
  217. package/src/upgrade/closure.mjs +649 -0
  218. package/src/upgrade/upgrade.mjs +42 -11
  219. package/templates/distribution-workspace/README.md +2 -2
  220. package/templates/external-project-workspace/atelier.project.json +3 -0
  221. package/templates/external-project-workspace/pack-lifecycle.json +3 -1
  222. package/templates/knowledge-workspace/README.md +2 -2
  223. package/docs/integration-and-review-plan.md +0 -409
  224. package/docs/integration-contract-decisions.md +0 -44
  225. package/docs/knowledge-health/devday/facilitator.md +0 -16
  226. package/docs/knowledge-health/devday/public-default.md +0 -107
  227. package/docs/knowledge-health/devday/quickstart.md +0 -18
  228. package/docs/knowledge-health/devday/support.md +0 -22
  229. package/docs/knowledge-health/exercise.md +0 -17
  230. package/docs/knowledge-health/support.md +0 -34
  231. package/docs/presentation-review-disposition.md +0 -47
  232. package/docs/progressive-ingestion-acceptance.md +0 -89
  233. package/docs/progressive-ingestion.md +0 -235
  234. /package/docs/{exact-upgrades.md → guides/exact-upgrades.md} +0 -0
  235. /package/docs/{guided-upgrades.md → guides/guided-upgrades.md} +0 -0
  236. /package/docs/{local-review.md → guides/local-review.md} +0 -0
  237. /package/docs/{skill-steward.md → guides/skill-steward.md} +0 -0
  238. /package/docs/{template-upgrades.md → guides/template-upgrades.md} +0 -0
  239. /package/docs/{assurance-controls.md → maintainers/assurance-controls.md} +0 -0
  240. /package/docs/{attestation.md → reference/attestation.md} +0 -0
  241. /package/docs/{coauthor-session.md → reference/coauthor-session.md} +0 -0
  242. /package/docs/{continuity.md → reference/continuity.md} +0 -0
  243. /package/docs/{contract-stability.md → reference/contract-stability.md} +0 -0
  244. /package/docs/{decision-practices.md → reference/decision-practices.md} +0 -0
  245. /package/docs/{evidence-navigation.md → reference/evidence-navigation.md} +0 -0
  246. /package/docs/{extension-pack-lifecycle.md → reference/extension-pack-lifecycle.md} +0 -0
  247. /package/docs/{interaction-and-reflection.md → reference/interaction-and-reflection.md} +0 -0
  248. /package/docs/{local-state.md → reference/local-state.md} +0 -0
  249. /package/docs/{ontology.md → reference/ontology.md} +0 -0
  250. /package/docs/{optional-ingestion.md → reference/optional-ingestion.md} +0 -0
  251. /package/docs/{project-command-inventory.md → reference/project-command-inventory.md} +0 -0
  252. /package/docs/{semantic-ingestion.md → reference/semantic-ingestion.md} +0 -0
  253. /package/docs/{vault-service.md → reference/vault-service.md} +0 -0
@@ -0,0 +1,111 @@
1
+ # Source-bound ontology guidance
2
+
3
+ The experimental internal ontology guide prepares a private proposal for the
4
+ existing knowledge workspace. It starts with a decision and preserves concept
5
+ identity, exact source passages, directed relationship meaning and uncertainty.
6
+ It does not edit a plan or source, confirm a participant answer, accept a mapping,
7
+ or execute a decision.
8
+
9
+ This module is not a supported package export or a new browser route. Existing
10
+ knowledge-plan v1 files, the five knowledge views, sessions and package interfaces
11
+ are unchanged. Maintainers can inspect its behavior with:
12
+
13
+ ```sh
14
+ node --test test/ontology-guide.test.mjs
15
+ ```
16
+
17
+ ## One guided loop
18
+
19
+ Choose a question in the current plan, then answer seven prompts:
20
+
21
+ 1. What decision will this help?
22
+ 2. What is the thing you are naming?
23
+ 3. How would you recognize the same thing next week?
24
+ 4. What close example should stay separate?
25
+ 5. Which source supports it?
26
+ 6. What does the relationship mean in each direction?
27
+ 7. What would change your mind?
28
+
29
+ For an existing corpus, select bounded permitted evidence through the current
30
+ knowledge context. For a blank workspace, retain its enrolled source directory
31
+ and begin with a permitted observation/interview note or an explicit unknown.
32
+ A synthetic practice observation remains labelled synthetic. An absent or broken
33
+ enrollment is a source configuration error; it cannot establish an abstention.
34
+ Both routes lead to source-owner review and a proposed next decision or test.
35
+ Observed outcomes belong in Learn after they exist.
36
+
37
+ The seven prompts map to the four existing Model fields: `concept`, `identity`,
38
+ `relation` and `test`. A host should use the existing session answer/propose,
39
+ confirmation and private-save operations. The guide returns wording; it does not
40
+ send those operations. A saved draft remains a proposal. Agent-written wording
41
+ still requires the existing explicit participant confirmation before saving.
42
+
43
+ ## Identity, evidence and limits
44
+
45
+ Choose concepts by their existing IDs. Definitions, stable identity rules and
46
+ `concept:` tags remain in the v1 plan. Examples, near misses, distinction
47
+ rationale and disconfirming observations stay in private proposal metadata;
48
+ they do not widen the closed plan schema. Identical definitions or identity
49
+ rules require an explanation of how the concepts differ. Similar labels or
50
+ aliases never establish identity. This small check cannot detect every semantic
51
+ ambiguity; a reviewer still judges the proposed definitions and examples.
52
+
53
+ The guide reads context through the existing local knowledge workspace. Evidence
54
+ must match a unique selected source ID, its current full-file digest, a valid
55
+ line range and its exact text. The handoff retains repo/path, digest, locator
56
+ and passage, including qualifications. A source or plan change requires a new
57
+ binding; earlier evidence and drafts remain historical. This is local-operator
58
+ source binding, not a recipient permission check or hosted access decision.
59
+
60
+ Explain each required relation using its existing forward predicate and both
61
+ endpoint concepts. A reverse reading helps a person understand the original
62
+ relation; it creates no inverse assertion. Evidence retrieval cannot establish a
63
+ business claim, certainty or semantic truth.
64
+
65
+ A proposed answer can say `supported` or `abstain`. These are the participant's
66
+ proposed labels. `ready-for-human-review` checks draft completeness and source
67
+ binding only. It does not certify that the answer is supported. Require stated
68
+ scope and uncertainty, alternative explanations, and what could change the
69
+ answer. Missing evidence suggests narrowing the claim or abstaining. Omitted
70
+ sources remain explicit in the handoff; an abstention with omissions is marked
71
+ `unverified-omissions`, so it cannot imply corpus-wide absence of evidence.
72
+
73
+ ## Review handoff
74
+
75
+ The internal `createOntologyGuide()` adapter reads an already-loaded local
76
+ workspace and a current question ID:
77
+
78
+ - `prompts(workspace, questionId, entry)` returns ordered guidance for `corpus`
79
+ or `blank` entry and the existing view/Model field for each step.
80
+ - `inspect(workspace, questionId, draft)` returns field-specific next actions,
81
+ verified source passages and retained retrieval limitations.
82
+ - `prepareReview(workspace, questionId, draft, {basePlanText, planRef})` returns
83
+ an input body for the existing copy-only proposal store, or diagnostics.
84
+
85
+ `draft` retains the workspace snapshot, raw base-plan SHA-256, entry route,
86
+ decision, exact concept IDs with examples/counterexamples and identity basis,
87
+ required relation readings, selected evidence pins, proposed answer/limits and
88
+ disconfirming observation. An optional `proposedPlan` must still validate as v1.
89
+ The source owner reviews changes before any canonical admission.
90
+
91
+ The handoff binds exact raw plan bytes, retains complete before/proposed text
92
+ and structural changes, and uses `proposal.copy-only` with `directWrite: false`
93
+ and no apply endpoint. Oversize handoffs refuse with a request to narrow the
94
+ change, before the existing store can truncate them. The guide never calls the
95
+ store or persists a second draft ledger. A host explicitly supplies the body to
96
+ the existing proposal workflow after reviewing the private audience.
97
+
98
+ Review and source edit remain separate. The source owner inspects the exact diff,
99
+ checks identity and passage meaning, applies an admitted change using the normal
100
+ Git path, reruns knowledge check/evaluate, then starts a newly bound session.
101
+ No source pin is replaced automatically to clear a failed check.
102
+
103
+ Cross-repository concept mappings remain proposals preserving both source
104
+ identities. Conversion to an edge-governance record requires the allocated
105
+ stable repository/source descriptor, exact current source revisions and raw
106
+ byte locators, plus the receiving review policy. This internal guide does not
107
+ invent those values, emit accepted equivalence or activate a semantic edge.
108
+
109
+ The synthetic tests exercise software behavior on the invented equipment library.
110
+ They do not demonstrate a cold participant's comprehension, answer correctness,
111
+ host ACL behavior or a completed human corpus/blank-start drill.
@@ -29,7 +29,7 @@ stable local enrollment keys; matching a recorded remote is an offline change
29
29
  check, not proof of upstream membership or provider identity.
30
30
 
31
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:
32
+ subpath is `@mnstry/atelier/personal-workspace`. The API consists of sixteen exports:
33
33
 
34
34
  - `MANIFEST_SCHEMA` and `OVERLAY_SCHEMA`.
35
35
  - `PersonalWorkspaceRefusal`.
@@ -37,8 +37,8 @@ subpath is `@mnstry/atelier/personal-workspace`. The API consists of fifteen exp
37
37
  - `resolvePersonalWorkspace`.
38
38
  - `planPersonalGeneration`, `materializePersonalGeneration`, and
39
39
  `composePersonalWorkspace`.
40
- - `selectPersonalGeneration`, `selectionConfirmDigest`, and
41
- `readPersonalSelection`.
40
+ - `selectPersonalGeneration`, `selectionConfirmDigest`,
41
+ `readPersonalSelection`, and `readPersonalSelectionHead`.
42
42
  - `inventoryPersonalHome`.
43
43
  - `planPersonalRestore` and `restorePersonalInputs`.
44
44
 
@@ -117,7 +117,9 @@ remove only their own temporary files. Every failure is a
117
117
  that `readPersonalSelection` returns, so a choice shown against an older history
118
118
  does not apply. Selections are append-only, numbered, hash-chained records under
119
119
  `selections/`, each written completely before it is published, so a crash leaves
120
- only a temporary file. Concurrent selections refuse `selection-concurrent`. An
120
+ only a temporary file. New records include a unique confirmation identity: confirming the
121
+ same generation against the same predecessor again produces a distinct record. Existing
122
+ v1 records without this identity remain readable. Concurrent selections refuse `selection-concurrent`. An
121
123
  ineligible generation refuses with its composition code, such as
122
124
  `stale-generation`.
123
125
  - `readPersonalSelection({ personalHome })` returns the current selection and
@@ -127,7 +129,17 @@ remove only their own temporary files. Every failure is a
127
129
  reordering refuses `selection-history-corrupt`. Truncating, or consistently
128
130
  rewriting, any trailing run of records (up to the whole history) yields another
129
131
  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.
132
+ keeps the head it last observed and compares it. The Obsidian maintenance
133
+ service persists the highest observed record number, accepted head and observed
134
+ record identities in its machine-private continuity state. A restart keeps that
135
+ evidence. A shorter history refuses until the removed records return or the person
136
+ makes one fresh confirmation (see [obsidian.md](obsidian.md)).
137
+ - `readPersonalSelectionHead({ personalHome })` returns `{ selected, sequence,
138
+ head }` from the history alone, with `sequence` 0 while nothing is selected.
139
+ It composes nothing, so it does not say whether the selection is still
140
+ eligible; the chain is checked as above. It is for a host that composes
141
+ elsewhere, and that reads the head again to compare it with the one it acted
142
+ on.
131
143
  - `inventoryPersonalHome({ personalHome })` lists what these operations write, for
132
144
  review before any deletion the person chooses: the authored files, each
133
145
  generation with its eligibility, interrupted staging directories, every
@@ -108,7 +108,7 @@ demonstrate framing, research return, uncertainty, review and graph proposals.
108
108
  local ingestion, persistent Knowledge records, retrieval and graph projection.
109
109
  The tests are synthetic conformance evidence, not real research validation.
110
110
 
111
- When useful practice emerges, use [Practical Judgment](practical-judgment.md):
111
+ When useful practice emerges, use [Phronesis — practical judgment](../reference/phronesis.md):
112
112
  retain its reason, cases and exceptions, then adopt it into the appropriate
113
113
  instruction, capability or implementation through that destination's owner.
114
114
  Ordinary research does not require a new skill, ADR or personal tracking.
@@ -19,6 +19,38 @@ write through a browser view.
19
19
  commerce, sessions, audit, and client-grade sharing as MNSTRY runtime
20
20
  authority.
21
21
 
22
+ ## Select the Readiness Pack
23
+
24
+ Projects include the bundled MNSTRY readiness pack by default. To use only
25
+ declared custom protocols, set this in the tracked `atelier.project.json`,
26
+ preserving the project's other settings:
27
+
28
+ ```json
29
+ {
30
+ "ext": {
31
+ "mnstry.atelier": {
32
+ "readiness": { "includeBundled": false }
33
+ }
34
+ }
35
+ }
36
+ ```
37
+
38
+ An absent setting or explicit `true` keeps the existing bundled protocols and
39
+ twelve-dimension tenant journey. Local preferences cannot re-enable a bundle
40
+ that the tracked project deselects.
41
+
42
+ After reviewing a selection change, update the existing lock explicitly:
43
+
44
+ ```bash
45
+ atelier lock write --project ./atelier.project.json
46
+ atelier lock check --project ./atelier.project.json
47
+ ```
48
+
49
+ The lock records the selected packs while preserving its template and migration
50
+ history. A lock that still pins the deselected bundle fails `lock check` and
51
+ `upgrade --dry-run`. To select the bundle again, set `includeBundled` to `true`
52
+ and write the lock after review.
53
+
22
54
  ## Local Review Pass
23
55
 
24
56
  Run checks from the copied workspace:
@@ -36,6 +68,13 @@ Use `--check` modes where available when validating committed generated output.
36
68
  If a command is unavailable in an older workspace, report the exact command and
37
69
  stderr instead of substituting a new protocol.
38
70
 
71
+ With the bundle deselected, the graph, project projection and generic readiness
72
+ checks remain available. The projection and readiness output omit the MNSTRY
73
+ tenant journey; they do not create a replacement journey or packet. Selected
74
+ custom protocols use the existing [extension-pack workflow](extensions.md#readiness-extension-packs).
75
+ `readiness journey`, `readiness packet` and `readiness export --dry-run` refuse
76
+ with `readiness-pack-disabled`, including when custom packs are selected.
77
+
39
78
  ## Claim-First Output
40
79
 
41
80
  Readiness summaries should lead with claims, then evidence:
@@ -9,9 +9,76 @@ workspace between Atelier package releases. The flow is local-only: it does not
9
9
  provision repositories, contact a Git host, mutate the MNSTRY runtime, or write
10
10
  through a browser view.
11
11
 
12
+ ## Upgrading to 0.2.0-alpha.15
13
+
14
+ This release adds the graph workspace (`@mnstry/atelier/graph-workspace` and
15
+ `@mnstry/atelier/graph-workspace/browser`) and the graph view, access and
16
+ source-contribution modules. Existing consumers do not need to change. No schema
17
+ or stored record format changes, with one effect on Knowledge Health:
18
+
19
+ - Knowledge Health regenerates its rule identity for the knowledge-graph file:
20
+ the `check` each assessment carries names a new `version` and `sourceTree`.
21
+ The rule it applies is unchanged. A workshop contribution started on
22
+ 0.2.0-alpha.14, completed or not, cannot start Review on this release
23
+ (`finding changed; refresh before selecting a new draft`); start Review
24
+ before upgrading, or record a new contribution.
25
+
26
+ ## Upgrading to 0.2.0-alpha.14
27
+
28
+ `atelier upgrade closure --npm-root ABSOLUTE_NPM_ROOT` plans a check of a staged
29
+ candidate's own dependency closure before an upgrade. It reads the candidate's
30
+ lockfile and manifests only and runs no npm command. Exit code 3 is a completed
31
+ plan and exit code 2 a refusal; the command never exits 0, because a plan is not
32
+ proof of an offline reinstall. It refuses `--__proto__` as an unsupported flag.
33
+ See [Consumer dependency closure plan](#consumer-dependency-closure-plan).
34
+
35
+ This release also introduces `@mnstry/atelier/ui`, a tenant-neutral control
36
+ grammar for local Atelier tooling and compatible downstream interfaces. Existing
37
+ consumers do not need to change. Consumers that adopt it map the
38
+ `--system-control-*` custom properties to their own theme.
39
+
40
+ No schema or stored record format changes in this release. The boundary checks
41
+ now judge work they used to miss, so a commit or push that passed on
42
+ 0.2.0-alpha.13 can be refused, and a few other results change:
43
+
44
+ - Reinstall the boundary hooks with `atelier boundary install-hooks`. The new
45
+ pre-push hook passes the remote Git names, so history held only by another
46
+ remote is judged on its way to a new one. The push check judges every commit
47
+ the remote's tracking refs do not hold, each against its parent, binaries
48
+ included. A push carrying more than 1000 such commits or more than the
49
+ evidence budget is refused with `content-scan-incomplete`; push it in
50
+ smaller parts.
51
+ - The pre-commit check reads the index and work tree Git names, so
52
+ `git commit -a`, `git commit <paths>` and commits from a linked worktree are
53
+ judged. It blocks with `pre-commit-repo-unresolved` when no single declared
54
+ repository is being committed, as the push check does.
55
+ - The content scan pins its diff format, so an external diff, a textconv
56
+ driver, changed prefixes or quoted paths no longer leave a change unscanned.
57
+ A staged or pushed deletion of a binary file no longer blocks.
58
+ - The semantic-field review takes only an added review marker as approval; a
59
+ removed marker, or one in a file name, approves nothing. `atelier upgrade`
60
+ applies the same rule.
61
+ - `extract-structure` refuses `parallel: true` with `NATIVE_WORKERS_UNATTESTED`.
62
+ - Knowledge Health regenerates its rule identity for the two graph files: the
63
+ `check` each assessment carries names a new `version`, `sourceTree` and
64
+ `graphBlob`. The rule it applies is unchanged. A workshop contribution
65
+ started on 0.2.0-alpha.13, completed or not, cannot start Review on this
66
+ release (`finding changed; refresh before selecting a new draft`); start
67
+ Review before upgrading, or record a new contribution.
68
+ - `runMaintenanceService` from `@mnstry/atelier/obsidian` refuses a project
69
+ loader that answers with a promise when no `locateProject` is given
70
+ (`service-loader-not-synchronous`); on 0.2.0-alpha.13 such a service
71
+ protected no repository. Pass a synchronous `locateProject`, which answers
72
+ a project naming its folder, to keep an asynchronous loader (see
73
+ [Obsidian](obsidian.md)).
74
+
75
+ A package update supplies no interpretation approval, source-write permission,
76
+ publication authority or runtime activation. Rehearse this exact installed
77
+ version in a disposable workspace before client use.
78
+
12
79
  ## Upgrading to 0.2.0-alpha.13
13
80
 
14
- The public [Knowledge Health workshop](knowledge-health/devday/public-default.md)
81
+ The public [Knowledge Health workshop](../knowledge-health/quickstart.md)
15
82
  uses an invented local workspace. Participants can retain their original words,
16
83
  a separate interpretation and a `note`, `perspective-only`, `disagreement` or
17
84
  `pause` response. Review is a separate optional session. A selected draft can
@@ -22,7 +89,7 @@ then reads it back and reassesses. The browser host grants no source-apply route
22
89
 
23
90
  `atelier knowledge semantic` exposes the existing semantic runner's eleven
24
91
  operations through JSON stdin. It retains the runner's refusal codes and saved
25
- failure details. The [semantic operation contract](semantic-operation.md)
92
+ failure details. The [semantic operation contract](../reference/semantic-operation.md)
26
93
  remains authoritative; this release adds no schema or package export.
27
94
 
28
95
  Existing source and local history remain owned by their original repositories.
@@ -43,13 +110,13 @@ The next release adds the responsibility workflows, source-current ingestion,
43
110
  Trackables, governed instruction adoption and local template profiles. Template
44
111
  adoption uses the existing exact-plan transaction engine with explicit v2 policy
45
112
  and v3 plans; existing policies are never converted automatically. See
46
- [template profiles](template-profile.md) and [template adoption](template-upgrades.md).
113
+ [template profiles](../reference/template-profile.md) and [template adoption](template-upgrades.md).
47
114
  Optional advisory decisions require no provider installation or activation.
48
115
 
49
116
  New Trackable journals retain resolved calendar occurrences and byte-bound state.
50
117
  Legacy v1 journals remain available as chain-verified exports when state replay
51
118
  cannot be established. Preserve historical records and use the documented
52
- [Trackables](trackables.md) host limits before adopting a new profile.
119
+ [Trackables](../reference/trackables.md) host limits before adopting a new profile.
53
120
  Regenerate local graph/projection artifacts through the ordinary upgrade process
54
121
  and qualify each consuming host independently. A package update supplies no
55
122
  publication permission or runtime activation.
@@ -112,7 +179,7 @@ The link resolver that produces `links_to` edges changed in five classes
112
179
  the repository root, malformed percent-encoding, and workspace-only wikilink
113
180
  and cross-repository edges). Regenerate committed graph artifacts after
114
181
  upgrading and review the difference; the classes are listed in the changelog
115
- and in [obsidian-contract.md](obsidian-contract.md).
182
+ and in [obsidian-contract.md](../reference/obsidian-contract.md).
116
183
 
117
184
  ## Upgrading to 0.2.0-alpha.7
118
185
 
@@ -211,7 +278,7 @@ compensating for that.
211
278
  This release breaks the export vocabulary. The runtime owner names are now
212
279
  the vendor-neutral domain terms `identity`, `catalog`, `commitments`,
213
280
  `events`, `projection`, `consent`, `messaging`, `providers`, and `audit`
214
- (defined in `docs/ontology.md`), and documents written against
281
+ (defined in `docs/reference/ontology.md`), and documents written against
215
282
  `v0.1.0-alpha.2` do not validate here. Regenerate exports and projections rather than hand-editing
216
283
  them, and update any consumer that pins an owner name. `CHANGELOG.md` lists
217
284
  every breaking change in this release, including the contract-stability epoch
@@ -223,7 +290,7 @@ current corpus against the validators of the baseline recorded in
223
290
  a tag sets `baselineTag` to that tag in the release commit, so the following
224
291
  development cycle is checked against the released validators. Until the first
225
292
  post-epoch tag is cut the baseline is null and the gate is inert by design.
226
- See `docs/contract-stability.md`.
293
+ See `docs/reference/contract-stability.md`.
227
294
 
228
295
  ## Before You Upgrade
229
296
 
@@ -250,7 +317,7 @@ For registry installs, pin the exact version and record the resolved version
250
317
  in the lockfile:
251
318
 
252
319
  ```bash
253
- npm install --save-dev @mnstry/atelier@0.2.0-alpha.13
320
+ npm install --save-dev @mnstry/atelier@0.2.0-alpha.14
254
321
  npx mnstry-atelier lock write --project ./atelier.project.json
255
322
  ```
256
323
 
@@ -258,7 +325,7 @@ For Git installs, pin the release tag rather than a branch, so the lock file
258
325
  records exactly what was reviewed:
259
326
 
260
327
  ```bash
261
- npm install --save-dev "git+https://github.com/MNSTRY/atelier.git#v0.2.0-alpha.13"
328
+ npm install --save-dev "git+https://github.com/MNSTRY/atelier.git#v0.2.0-alpha.14"
262
329
  npx mnstry-atelier lock write --project ./atelier.project.json
263
330
  ```
264
331
 
@@ -325,8 +392,8 @@ and dependency trees; two observed byte inventories must agree and match the com
325
392
  checkout does not authenticate an upstream publisher.
326
393
 
327
394
  Review snapshots and decisions are separate from historical v1 locks. See
328
- [pack lifecycle](extension-pack-lifecycle.md) and
329
- [inspection portability](review-portability.md) before replacing packs or moving
395
+ [pack lifecycle](../reference/extension-pack-lifecycle.md) and
396
+ [inspection portability](../reference/review-portability.md) before replacing packs or moving
330
397
  state. Updating a package or a digest never silently renews old approval.
331
398
 
332
399
  ## Exact local candidate transactions
@@ -337,3 +404,122 @@ For the bounded, manually confirmed single-repository workflow, see
337
404
  commands are separate from the legacy flag-based migration workflow above.
338
405
  They preserve history and honor existing commit hooks; they do not install a
339
406
  new package or activate a runtime.
407
+
408
+ ## Consumer dependency closure plan
409
+
410
+ `atelier upgrade closure --npm-root ABSOLUTE_NPM_ROOT` plans a check of a staged
411
+ candidate's own dependency closure. A consumer does not inherit a dependency
412
+ publisher's npm `overrides`, so the candidate's own lockfile is what counts.
413
+
414
+ The command reads these files and no others:
415
+
416
+ - the candidate's `package.json` and `package-lock.json`;
417
+ - the installed `package.json` of every lockfile copy of the selected package;
418
+ - `package.json` in each directory above the npm root, up to the filesystem
419
+ root, to refuse a parent that declares workspaces. When the npm root is under
420
+ your home directory, that includes a `package.json` in the home directory;
421
+ - Atelier's own `package.json`. The CLI reads it on every run for its version;
422
+ this plan also takes the default package name from it when `--package` is
423
+ not given.
424
+
425
+ It does not run npm, use the network, read npm configuration or credentials, or
426
+ write anything. The directory need not be an Atelier workspace, and `--npm-root`
427
+ has no default.
428
+
429
+ Every run prints exactly one JSON document with `"proof": "not-run"`, including
430
+ a run whose arguments are refused. A completed plan holds:
431
+
432
+ - the lockfile's SHA-256, version and entry count;
433
+ - entries by source (`npm`, `git`, `local_path`, `link`, `bundled` and
434
+ `unclassified`, an installed entry with no `resolved`); the counts add up to
435
+ the entry count;
436
+ - the registry hosts the lockfile names, and separately the URL schemes (`http`,
437
+ `https`) it uses;
438
+ - the number of registry tarballs an offline proof would need;
439
+ - lockfile entries whose `os`, `cpu` or `libc` excludes this host;
440
+ - the selected package's lockfile copies, and under `manifests` the path, name,
441
+ version and SHA-256 of each installed manifest that was read;
442
+ - the selected package's exact `overrides` that were checked against every
443
+ installed copy, the ones with no copy, and the ones left unchecked: a
444
+ version-selector key, a nested override, a value that is not an exact
445
+ version, or a package that a link provides (`link-only`, or `linked-copy`
446
+ when a registry copy is installed beside the link);
447
+ - every refusal, with its code, one `reason`, a message and a next step.
448
+
449
+ A refused plan holds its refusals and whatever else was established. A refusal
450
+ of the arguments, the npm root or the shape of the lockfile stops the plan
451
+ there, so it holds nothing about the lockfile's entries; any other refusal is
452
+ listed beside the rest of the classification.
453
+
454
+ Exit code 3 means a completed plan. Exit code 2 means a refusal: the JSON
455
+ document, then `[code] message` with a `Next:` step on standard error. The
456
+ command never exits 0: a plan is not a pass, and this command does not prove an
457
+ offline reinstall.
458
+
459
+ Overrides are taken from the installed manifest only when it is the package the
460
+ lockfile records: each copy's manifest must declare the selected name and the
461
+ version of its own lockfile entry, and all copies must be at one version with
462
+ the same overrides. Otherwise the plan is refused and no override is reported
463
+ as checked.
464
+
465
+ Refusals reuse existing codes:
466
+
467
+ - `usage`: the input is not supported. Reasons: `npm-root-required`,
468
+ `npm-root-not-absolute`, `npm-root-not-directory`, `npm-root-linked` (the
469
+ path is a link or passes through one; the refusal prints the directory's
470
+ `realPath` to pass instead), `argument-unsupported` (an unknown flag, an
471
+ extra argument, a flag with no value, an empty `--package` or
472
+ `--registry-host`, or a flag given more than once; an empty value after
473
+ `--npm-root=` is `npm-root-required`), `manifest-missing`, `lockfile-missing`,
474
+ `lockfile-invalid` (not a JSON object, or a `packages` entry that is not an
475
+ object), `lockfile-version` (version 1, or no `packages` map), `workspaces`,
476
+ `prefix-mismatch` (a parent directory declares workspaces) and
477
+ `linked-node-modules`.
478
+ - `consumer-closure-incomplete`: an offline reinstall could not be proven for a
479
+ lockfile entry. Reasons: `missing-integrity`, `git-source`, `other-host`,
480
+ `outside-project`, `link-target-missing` (a link that names no folder),
481
+ `zero-copies`, `selected-package-unreadable`, `selected-package-mismatch`
482
+ (an installed manifest that is not the package its lockfile entry records)
483
+ and `selected-copies-differ`.
484
+ - `override-not-inherited`: reason `copy-off-pin`. A copy is installed at a
485
+ version other than the selected package's exact pin. More than one copy, all
486
+ at the pin, is reported and not refused.
487
+
488
+ Options:
489
+
490
+ - `--package NAME` selects the package whose overrides are checked. It defaults
491
+ to `@mnstry/atelier`.
492
+ - `--registry-host HOST[,HOST]` names the approved registry hosts. A tarball on
493
+ any other host, or at a URL with no readable host, is then refused. Without
494
+ it, hosts are reported and `approvedRegistryVerified` is `false`, because the
495
+ plan does not read npm configuration.
496
+
497
+ Give each option once, with a value, after the word `closure`. An option with
498
+ an empty value is refused; leave the option out to use its default.
499
+
500
+ Limits:
501
+
502
+ - The plan cannot run `npm prefix`, so `prefixVerified` is always `false`.
503
+ Instead it requires `--npm-root` to be the directory's real path and refuses
504
+ any parent directory of it that declares workspaces, whether or not that
505
+ parent's workspaces include the candidate. A path that is a link, or passes
506
+ through one, is refused, with its `realPath` in the JSON result. On macOS,
507
+ `/tmp` is a link into `/private` and `$TMPDIR` passes through `/var`, another
508
+ such link, so a candidate staged there needs its real path (for example
509
+ `pwd -P` from inside it).
510
+ - Containment of links and local files is checked by path, without following
511
+ links. The folder a link points to is not opened: an override for a package
512
+ that a link provides is listed as unchecked, never as checked.
513
+ - Approving a host does not verify the transport. A host is matched by its
514
+ exact name and port, whatever the scheme; `registrySchemes` counts `http`
515
+ and `https` separately.
516
+ - The manifest binding compares the name and version the installed manifest
517
+ declares. It does not verify the installed files against the lockfile's
518
+ `integrity`.
519
+ - Platform evidence uses this process's `os` and `cpu`; `libc` is unknown
520
+ unless a caller of `planConsumerClosure` supplies it.
521
+ - A flag with no value placed before the word `closure` (for example
522
+ `atelier upgrade --package closure`) takes `closure` as its value, so the
523
+ ordinary upgrade command runs instead of this one.
524
+ - `lockTreeDifferences`, the comparison of two `npm ls` trees, is in the source
525
+ but is not exported from the package and no command uses it.
@@ -1,4 +1,4 @@
1
- # Capability map and retained tooling needs
1
+ # Capability map and qualification limits
2
2
 
3
3
  `KNOWLEDGE_HEALTH_CAPABILITIES` from the public assessment entry contains exact
4
4
  source commit/tree/blob/file references, baseline availability, verification
@@ -20,20 +20,11 @@ release certification or semantic/human acceptance.
20
20
  | Authoring/hosts | `./coauthor`: `createSession`, `transition`, `replaySession`; existing store/presentation/runtime/Obsidian; current knowledge dashboard/session and sidecar | Static only in this supplier. Mounted editor/store owns apply/save; native and participant proof separate. |
21
21
  | Normal initialization | Current `atelier init --template knowledge-workspace --target ./workspace` and its shipped template | Source dispatch inspected; public alpha.12 lacks this dispatch/template. Test both from the exact official new archive and published version. The explicit fixture helper is not that test. |
22
22
 
23
- Keep S2–S5 tooling work visible:
24
-
25
- - **S2:** qualifiers, contradiction/identity, optional bounded agent cost/value,
26
- private perspectives and scoped learning. Reuse native semantic/contribution,
27
- evaluation and learning primitives; human source-supported trials remain open.
28
- - **S3:** declared/adopted/consumed/executed traces, drift, partial refresh,
29
- withdrawal/recovery. Join actual observation/runtime/harness evidence. This
30
- context defaults all four use stages to unobserved.
31
- - **S4:** other hosts/media/domains, keyboard/IME/zoom/text scaling, accessible
32
- graph alternatives and purposeful scale. Existing source-format,
33
- presentation/runtime and budgets are starting points; installed measurements
34
- remain host-specific. This proof is Node22/macOS only.
35
- - **S5:** ownership, documentation, rollback/recovery, maintenance and complete
36
- programme closure. A public kit is an input to those journeys, not their proof.
23
+ Semantic support, contradiction/identity judgments and human usefulness require
24
+ source-supported trials. Declared, adopted, consumed and executed use remain
25
+ distinct; this context defaults all four stages to unobserved. Installed-host
26
+ keyboard, input-method, zoom, accessible alternatives, recovery and scale require
27
+ host-specific measurements. The supplier proof here is limited to Node22/macOS.
37
28
 
38
29
  Preserve source evidence, structure, interpretations, proposals, owner decisions
39
30
  and execution as distinct records. Reuse existing canonicals and one editor/store
@@ -1,8 +1,15 @@
1
1
  # Facilitator run sheet
2
2
 
3
- Use the exact supported release and one new disposable workshop copy per participant. The kit's target session is Thursday 8 October 2026; rehearse the installed version on Wednesday 7 October. Those dates do not prove publication or participant acceptance.
3
+ Use the exact supported release and one new disposable workshop copy per
4
+ participant. Record the package version, integrity and host used for rehearsal.
4
5
 
5
- Before the session, obtain the release owner's verified version and guided entry. Install that exact version using the package's tested quickstart, check its documented Node/Git/browser prerequisites, and rehearse the whole [exercise](exercise.md) from a clean copy without private paths, developer imports or environment overrides. Do not start until the public launch, copy/open, contribution, interpretation, Review, source-owner correction, readback/reopen and reassessment steps are available. Keep any genuine missing step visible.
6
+ Before the session, install the selected version using the
7
+ [public workshop quickstart](quickstart.md), check its documented
8
+ Node/Git/browser prerequisites, and rehearse the flow from a clean copy. Verify
9
+ original words, separate interpretation and the explicit four-choice response
10
+ through ordinary saved drafts. Review saves a separately selected declaration;
11
+ the retained handoff is a copy-only proposal. Canonical source correction stays
12
+ with the source owner. Keep any missing or unqualified step visible.
6
13
 
7
14
  | Time | Invitation | Observe without answering for the participant |
8
15
  | --- | --- | --- |
@@ -15,6 +22,10 @@ Before the session, obtain the release owner's verified version and guided entry
15
22
 
16
23
  Offer the participant the source-owner role only for their own disposable copy. Explain what the ordinary source write will change before granting that role. Keep source ownership and participant judgment distinct even when one person performs both.
17
24
 
18
- For a recovery exercise, use the host's documented disposable failure rehearsal. If it has no supported rehearsal, discuss the visible unconfirmed state without disconnecting an unknown service. A pending choice is checked under its original identity; it is not submitted as a new note. Do not run a provider to fill a gap, alter a participant's words, or reset the example's history.
25
+ For a recovery exercise, use the host's documented disposable failure rehearsal. If it has no supported rehearsal, discuss the visible unconfirmed state without disconnecting an unknown service. A pending request is checked under its original identity; it is not submitted as a new note. Do not run a provider to fill a gap, alter a participant's words, or reset the example's history.
19
26
 
20
- Observe keyboard access and the [checklist](support.md). If a step fails, preserve the words and exact pending intent, record the visible state and reproduction steps, then use the normal support route. Finishing a scripted exercise is not evidence that the participant found it useful.
27
+ Observe actual keyboard access, focus return, input-method behavior and recovery
28
+ in the receiving browser. If a step fails, preserve the words and exact pending
29
+ intent, record the visible state and reproduction steps, then use the normal
30
+ support route. Saved drafts do not establish native typed finding disposition,
31
+ authenticated approval or participant usefulness.
@@ -8,7 +8,7 @@ This public workshop uses the existing local Knowledge editor and ordinary coaut
8
8
  4. Choose Note, Perspective, Disagreement or Pause, then save and continue. Perspective retains the existing `perspective-only` value. Pause is a response choice; the session Pause control remains a separate navigation action.
9
9
  5. Read the original contribution and choice event IDs, descriptor/event-history readback and immutable saved-value readback. A save request ID identifies the save receipt and differs from the original answer ID. An unsaved choice remains unconfirmed.
10
10
  6. Review displays the current `[]` declaration and proposed `["devday:workshop"]` declaration. Return removes the preview and makes no request. Selecting the draft starts a separate linked Review session. Record selected draft, save it, continue, then reload or reopen the same session from history before preparing the handoff.
11
- 7. The copy-only source-owner handoff retains original words, optional interpretation, four-choice meaning, original contribution/choice IDs, contributor session, selected save receipt, source/anchor/read set and all six finding fingerprints. Foundation owns durable proposal retention and original-identity lookup in its existing sidecar/proposals implementation. That owner work remains prospective until applied and qualified.
11
+ 7. The copy-only source-owner handoff retains original words, optional interpretation, four-choice meaning, original contribution/choice IDs, contributor session, selected save receipt, source/anchor/read set and all six finding fingerprints. The existing sidecar/proposals implementation owns durable proposal retention and original-identity lookup. Read the proposed record back before treating retention as confirmed; it applies no source change.
12
12
  8. The source owner checks the bound source digest and exact before/after UTF-8 declaration, edits the exact declaration through the ordinary repository route, reads it back, refreshes expected evidence and reruns the same assessment/question. Keep the earlier finding, contribution and selected draft as history. Automated Obsidian/frontmatter apply remains separate and keeps its refusals.
13
13
 
14
14
  ## Recovery and storage meaning
@@ -19,4 +19,6 @@ The existing draft engine requires nonempty text. This consumer stores optional
19
19
 
20
20
  `readSavedFields` reads the existing verified event chain and existing immutable values under the existing operation lock. It refuses redirected, missing or changed values and never reconstructs them. Reopen requires both owning readbacks to agree. Earlier descriptors without the participant profile marker retain their legacy revision history; new sessions use four responses and a separate Review.
21
21
 
22
- Source-only authored cases accompany this change. No tests, browser journey, installed package, retention readback, source edit or release was executed by this supplier attempt.
22
+ These draft and recovery APIs do not establish installed-browser keyboard,
23
+ input-method or undo behavior. Qualify the actual receiving host separately;
24
+ draft retention never establishes source application, release or human acceptance.