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

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 (236) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +80 -47
  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/claims.md +2 -2
  10. package/docs/blocks/conformance-admission.md +1 -1
  11. package/docs/{atelier-sync.md → guides/atelier-sync.md} +20 -14
  12. package/docs/guides/co-authoring.md +113 -0
  13. package/docs/{distributions.md → guides/distributions.md} +13 -8
  14. package/docs/guides/extensions.md +189 -0
  15. package/docs/guides/graph-refresh.md +152 -0
  16. package/docs/guides/graph-workspace.md +76 -0
  17. package/docs/{ingestion.md → guides/ingestion.md} +13 -12
  18. package/docs/{knowledge-workspace.md → guides/knowledge-workspace.md} +2 -2
  19. package/docs/{learning.md → guides/learning.md} +12 -5
  20. package/docs/{obsidian.md → guides/obsidian.md} +134 -47
  21. package/docs/guides/ontology-guide.md +111 -0
  22. package/docs/{personal-workspace.md → guides/personal-workspace.md} +7 -4
  23. package/docs/{research-starter.md → guides/research-starter.md} +1 -1
  24. package/docs/{tenant-readiness.md → guides/tenant-readiness.md} +39 -0
  25. package/docs/{upgrade.md → guides/upgrade.md} +40 -9
  26. package/docs/knowledge-health/assessment/capabilities.md +6 -15
  27. package/docs/knowledge-health/facilitator.md +15 -4
  28. package/docs/knowledge-health/{devday/participant-response.md → participant-response.md} +4 -2
  29. package/docs/knowledge-health/quickstart.md +97 -75
  30. package/docs/knowledge-health/readme.md +13 -5
  31. package/docs/maintainers/describing-the-atelier.md +173 -0
  32. package/docs/{release-engineering.md → maintainers/release-engineering.md} +5 -5
  33. package/docs/{announcements.md → reference/announcements.md} +1 -1
  34. package/docs/{architecture.md → reference/architecture.md} +31 -5
  35. package/docs/{atelier-runtime.md → reference/atelier-runtime.md} +1 -1
  36. package/docs/{connected-composition.md → reference/connected-composition.md} +7 -10
  37. package/docs/{coordination.md → reference/coordination.md} +1 -1
  38. package/docs/{decisions.md → reference/decisions.md} +3 -3
  39. package/docs/{design.md → reference/design.md} +1 -1
  40. package/docs/reference/edge-policy.md +151 -0
  41. package/docs/reference/graph-view-structured.md +119 -0
  42. package/docs/reference/graph-view.md +139 -0
  43. package/docs/reference/graph-workspace.md +37 -0
  44. package/docs/{intake-and-guides.md → reference/intake-and-guides.md} +3 -4
  45. package/docs/{knowledge-graph.md → reference/knowledge-graph.md} +120 -6
  46. package/docs/{local-services.md → reference/local-services.md} +1 -1
  47. package/docs/{obsidian-contract.md → reference/obsidian-contract.md} +6 -4
  48. package/docs/{obsidian-plugin.md → reference/obsidian-plugin.md} +5 -66
  49. package/docs/{practical-judgment.md → reference/phronesis.md} +12 -3
  50. package/docs/reference/portability.md +92 -0
  51. package/docs/{portable-presentation.md → reference/portable-presentation.md} +2 -2
  52. package/docs/{presentation-consumer-boundaries.md → reference/presentation-consumer-boundaries.md} +5 -0
  53. package/docs/{project-options.md → reference/project-options.md} +17 -0
  54. package/docs/{repo-boundary-guard.md → reference/repo-boundary-guard.md} +27 -4
  55. package/docs/{review-portability.md → reference/review-portability.md} +4 -0
  56. package/docs/{template-profile.md → reference/template-profile.md} +1 -1
  57. package/docs/{trackables.md → reference/trackables.md} +2 -2
  58. package/docs/start/independent-start.md +89 -0
  59. package/docs/{install.md → start/install.md} +6 -6
  60. package/docs/{knowledge-setup.md → start/knowledge-setup.md} +5 -5
  61. package/docs/{research-starter-quickstart.md → start/research-starter-quickstart.md} +6 -6
  62. package/fixtures/atelier-architecture/catalog/invalid/document.json +2 -2
  63. package/fixtures/atelier-architecture/catalog/valid/document.json +2 -2
  64. package/fixtures/graph-view/synthetic-authorized-input.v1.json +437 -0
  65. package/fixtures/graph-view/synthetic-view.v1.json +1 -0
  66. package/fixtures/knowledge-health/workshop/README.md +1 -1
  67. package/fixtures/templates/local-library.v1.json +3 -1
  68. package/package.json +21 -8
  69. package/skills/claude/atelier-guided-upgrade/SKILL.md +1 -1
  70. package/skills/claude/atelier-knowledge-setup/SKILL.md +2 -2
  71. package/skills/claude/atelier-local-service/SKILL.md +1 -1
  72. package/skills/claude/atelier-practical-judgment/SKILL.md +7 -2
  73. package/skills/claude/atelier-skill-steward/SKILL.md +1 -1
  74. package/skills/claude/mnstry-readiness/SKILL.md +2 -2
  75. package/skills/codex/atelier-guided-upgrade/SKILL.md +1 -1
  76. package/skills/codex/atelier-knowledge-setup/SKILL.md +2 -2
  77. package/skills/codex/atelier-local-service/SKILL.md +1 -1
  78. package/skills/codex/atelier-practical-judgment/SKILL.md +7 -2
  79. package/skills/codex/atelier-skill-steward/SKILL.md +1 -1
  80. package/skills/codex/mnstry-readiness/SKILL.md +2 -2
  81. package/src/architecture/catalog.mjs +2 -2
  82. package/src/attestation/sign.mjs +1 -1
  83. package/src/boundary/content-rules.mjs +5 -4
  84. package/src/boundary/policy.mjs +60 -12
  85. package/src/cli/run.mjs +24 -8
  86. package/src/commands/distribution.mjs +1 -1
  87. package/src/commands/extension.mjs +27 -0
  88. package/src/commands/ingest.mjs +1 -1
  89. package/src/commands/learn.mjs +1 -1
  90. package/src/commands/obsidian.mjs +28 -16
  91. package/src/commands/review.mjs +3 -0
  92. package/src/edge-policy/contract.mjs +69 -0
  93. package/src/edge-policy/policy.mjs +142 -0
  94. package/src/edge-policy/source-citation-adapter.mjs +43 -0
  95. package/src/extension-packs/loader.mjs +4 -3
  96. package/src/extensions/admission.mjs +83 -0
  97. package/src/extensions/client.d.mts +23 -0
  98. package/src/extensions/client.mjs +99 -0
  99. package/src/extensions/contracts.d.mts +29 -0
  100. package/src/extensions/contracts.mjs +163 -0
  101. package/src/extensions/convex.d.mts +24 -0
  102. package/src/extensions/convex.mjs +189 -0
  103. package/src/extensions/delegation.mjs +54 -0
  104. package/src/extensions/drizzle.d.mts +11 -0
  105. package/src/extensions/drizzle.mjs +33 -0
  106. package/src/extensions/postgres.d.mts +7 -0
  107. package/src/extensions/postgres.mjs +66 -0
  108. package/src/extensions/prisma.d.mts +13 -0
  109. package/src/extensions/prisma.mjs +63 -0
  110. package/src/extensions/project.mjs +432 -0
  111. package/src/extensions/scaffold-convex.mjs +130 -0
  112. package/src/extensions/scaffold-sql.mjs +144 -0
  113. package/src/extensions/server.d.mts +20 -0
  114. package/src/extensions/server.mjs +102 -0
  115. package/src/extensions/sql-scope.mjs +22 -0
  116. package/src/graph/knowledge-graph.mjs +1 -1
  117. package/src/graph/repo-contribution.mjs +405 -0
  118. package/src/graph/repo-contribution.types.mjs +32 -0
  119. package/src/graph-access/edge-decision-adapter.mjs +41 -0
  120. package/src/graph-access/edge-record-adapter.mjs +73 -0
  121. package/src/graph-access/index.mjs +253 -0
  122. package/src/graph-access/multi-contribution-record-adapter.mjs +101 -0
  123. package/src/graph-access/multi-record-projection-adapter.mjs +74 -0
  124. package/src/graph-access/source-adapter.mjs +81 -0
  125. package/src/graph-refresh/compare.mjs +110 -0
  126. package/src/graph-refresh/controller.mjs +324 -0
  127. package/src/graph-refresh/index.mjs +3 -0
  128. package/src/graph-refresh/local.mjs +78 -0
  129. package/src/graph-view/babylon/babylon-scene-port.mjs +64 -0
  130. package/src/graph-view/babylon/index.mjs +2 -0
  131. package/src/graph-view/babylon/navigator.mjs +312 -0
  132. package/src/graph-view/babylon/provenance.mjs +36 -0
  133. package/src/graph-view/babylon/scene-controller.mjs +131 -0
  134. package/src/graph-view/babylon/semantic-picking.mjs +35 -0
  135. package/src/graph-view/babylon/web-host.mjs +188 -0
  136. package/src/graph-view/cli.mjs +3 -0
  137. package/src/graph-view/command.mjs +34 -0
  138. package/src/graph-view/contracts.mjs +79 -0
  139. package/src/graph-view/errors.mjs +5 -0
  140. package/src/graph-view/index.mjs +4 -0
  141. package/src/graph-view/intents.mjs +30 -0
  142. package/src/graph-view/query.mjs +213 -0
  143. package/src/graph-view/refs.mjs +2 -0
  144. package/src/graph-view/structured/browser.mjs +262 -0
  145. package/src/graph-view/structured/styles.mjs +8 -0
  146. package/src/graph-workspace/authoring.mjs +185 -0
  147. package/src/graph-workspace/browser/dom.mjs +23 -0
  148. package/src/graph-workspace/browser/index.mjs +6 -0
  149. package/src/graph-workspace/browser/map.mjs +374 -0
  150. package/src/graph-workspace/browser/review.mjs +55 -0
  151. package/src/graph-workspace/browser/styles.mjs +11 -0
  152. package/src/graph-workspace/browser/workbench.mjs +351 -0
  153. package/src/graph-workspace/browser/workspace.mjs +433 -0
  154. package/src/graph-workspace/disclosure.mjs +39 -0
  155. package/src/graph-workspace/geometry.mjs +78 -0
  156. package/src/graph-workspace/index.mjs +11 -0
  157. package/src/graph-workspace/labels.mjs +50 -0
  158. package/src/graph-workspace/model.mjs +109 -0
  159. package/src/graph-workspace/recipes.mjs +100 -0
  160. package/src/graph-workspace/scale.mjs +98 -0
  161. package/src/graph-workspace/theme.mjs +156 -0
  162. package/src/knowledge/ontology-guide.mjs +152 -0
  163. package/src/knowledge-health/proof/installed-check.mjs +2 -2
  164. package/src/knowledge-health/rule-identity.mjs +7 -7
  165. package/src/knowledge-health/workshop.mjs +22 -2
  166. package/src/personal-workspace/selection.mjs +17 -2
  167. package/src/project/config.mjs +1 -1
  168. package/src/project/providers/github.mjs +24 -0
  169. package/src/project/repo-identity.mjs +3 -22
  170. package/src/projection/obsidian/contracts.mjs +1 -1
  171. package/src/projection/obsidian/materialize/path-registry.mjs +1 -1
  172. package/src/projection/obsidian/materialize/prepare-view.mjs +1 -1
  173. package/src/projection/obsidian/materialize/redaction.mjs +1 -1
  174. package/src/projection/obsidian/personal-workspace.mjs +24 -28
  175. package/src/projection/obsidian/plugin-bridge/channel.mjs +1 -1
  176. package/src/projection/obsidian/publication/publisher.mjs +25 -4
  177. package/src/projection/project.mjs +18 -14
  178. package/src/readiness/readiness.mjs +20 -11
  179. package/src/readiness-protocols/bundled-pack.mjs +14 -766
  180. package/src/readiness-protocols/bundled-selection.mjs +32 -0
  181. package/src/readiness-protocols/evidence.mjs +2 -1
  182. package/src/readiness-protocols/packs/mnstry.mjs +766 -0
  183. package/src/readiness-protocols/runtime.mjs +43 -6
  184. package/src/runtime/obsidian/engine.mjs +99 -26
  185. package/src/runtime/obsidian/lifecycle.mjs +3 -3
  186. package/src/runtime/obsidian/login-item.mjs +2 -2
  187. package/src/runtime/obsidian/machine-settings.mjs +52 -8
  188. package/src/runtime/obsidian/opening.mjs +2 -2
  189. package/src/runtime/obsidian/personal-selection.mjs +88 -26
  190. package/src/runtime/obsidian/pipeline.mjs +75 -7
  191. package/src/runtime/obsidian/private-lock.mjs +11 -2
  192. package/src/runtime/obsidian/selection-continuity.mjs +124 -0
  193. package/src/runtime/obsidian/service-main.mjs +15 -9
  194. package/src/runtime/obsidian/service.mjs +14 -0
  195. package/src/runtime/obsidian/unheld-evidence.mjs +1 -1
  196. package/src/runtime/obsidian/view-permission.mjs +2 -1
  197. package/src/upgrade/upgrade.mjs +23 -4
  198. package/templates/distribution-workspace/README.md +2 -2
  199. package/templates/external-project-workspace/atelier.project.json +3 -0
  200. package/templates/external-project-workspace/pack-lifecycle.json +3 -1
  201. package/templates/knowledge-workspace/README.md +2 -2
  202. package/docs/integration-and-review-plan.md +0 -409
  203. package/docs/integration-contract-decisions.md +0 -44
  204. package/docs/knowledge-health/devday/facilitator.md +0 -16
  205. package/docs/knowledge-health/devday/public-default.md +0 -107
  206. package/docs/knowledge-health/devday/quickstart.md +0 -18
  207. package/docs/knowledge-health/devday/support.md +0 -22
  208. package/docs/knowledge-health/exercise.md +0 -17
  209. package/docs/knowledge-health/support.md +0 -34
  210. package/docs/presentation-review-disposition.md +0 -47
  211. package/docs/progressive-ingestion-acceptance.md +0 -89
  212. package/docs/progressive-ingestion.md +0 -235
  213. /package/docs/{capability-stewardship.md → guides/capability-stewardship.md} +0 -0
  214. /package/docs/{exact-upgrades.md → guides/exact-upgrades.md} +0 -0
  215. /package/docs/{guided-upgrades.md → guides/guided-upgrades.md} +0 -0
  216. /package/docs/{inquiry-harnesses.md → guides/inquiry-harnesses.md} +0 -0
  217. /package/docs/{learning-harnesses.md → guides/learning-harnesses.md} +0 -0
  218. /package/docs/{local-review.md → guides/local-review.md} +0 -0
  219. /package/docs/{skill-steward.md → guides/skill-steward.md} +0 -0
  220. /package/docs/{template-upgrades.md → guides/template-upgrades.md} +0 -0
  221. /package/docs/{assurance-controls.md → maintainers/assurance-controls.md} +0 -0
  222. /package/docs/{attestation.md → reference/attestation.md} +0 -0
  223. /package/docs/{coauthor-session.md → reference/coauthor-session.md} +0 -0
  224. /package/docs/{continuity.md → reference/continuity.md} +0 -0
  225. /package/docs/{contract-stability.md → reference/contract-stability.md} +0 -0
  226. /package/docs/{decision-practices.md → reference/decision-practices.md} +0 -0
  227. /package/docs/{evidence-navigation.md → reference/evidence-navigation.md} +0 -0
  228. /package/docs/{extension-pack-lifecycle.md → reference/extension-pack-lifecycle.md} +0 -0
  229. /package/docs/{interaction-and-reflection.md → reference/interaction-and-reflection.md} +0 -0
  230. /package/docs/{local-state.md → reference/local-state.md} +0 -0
  231. /package/docs/{ontology.md → reference/ontology.md} +0 -0
  232. /package/docs/{optional-ingestion.md → reference/optional-ingestion.md} +0 -0
  233. /package/docs/{project-command-inventory.md → reference/project-command-inventory.md} +0 -0
  234. /package/docs/{semantic-ingestion.md → reference/semantic-ingestion.md} +0 -0
  235. /package/docs/{semantic-operation.md → reference/semantic-operation.md} +0 -0
  236. /package/docs/{vault-service.md → reference/vault-service.md} +0 -0
@@ -1,12 +1,17 @@
1
1
  # MNSTRY Atelier Knowledge Graph
2
2
 
3
- The Atelier knowledge graph is a local, Git-backed operating model for project
4
- source material. It is not a taxonomy and it is not runtime retrieval. It is a
5
- durable model of source nodes, evidence, relationships, diagnostics, and
6
- projection readiness.
3
+ The Atelier Knowledge Graph is the shared, local, Git-backed representation of
4
+ project source material: source nodes, evidence, relationships, diagnostics and
5
+ projection readiness. It is not a taxonomy or runtime retrieval.
6
+
7
+ Knowledge Stewardship is the broader responsibility governing knowledge inclusion
8
+ and applicability. [Phronesis — practical judgment](phronesis.md) draws on this
9
+ graph and contributes through the existing Knowledge review and activation
10
+ routes. It creates no separate graph, store or canonical authority. Structural
11
+ graph checks do not establish semantic acceptance, wisdom or a universal score.
7
12
 
8
13
  For setting up useful domain concepts and testing whether the graph helps answer
9
- work questions, follow [knowledge setup](knowledge-setup.md). It builds on this
14
+ work questions, follow [knowledge setup](../start/knowledge-setup.md). It builds on this
10
15
  canonical source graph and keeps domain concepts, source types, semantic
11
16
  acceptance, and runtime authority distinct.
12
17
 
@@ -70,6 +75,115 @@ a schema-checked JSON sidecar is the trust boundary. Richer format adapters
70
75
  that derive metadata from asset contents belong to extension packs
71
76
  (`atelier-extension-pack.v1`), not the kit core.
72
77
 
78
+ ## A worked example
79
+
80
+ The policy below is invented to show the shape. Once a body of work is
81
+ authored, a policy file looks like this:
82
+
83
+ ```
84
+ policy/expenses/approval.md
85
+ ---
86
+ title: Expense approval policy
87
+ summary: Version 3 of who approves an expense claim, with the limits it depends on.
88
+ tags: [policy, expenses]
89
+ kg:
90
+ id: example:policy:expense-approval
91
+ type: document
92
+ status: active
93
+ audience: team
94
+ relations:
95
+ depends_on: [example:limits:expense-approval-v3]
96
+ ---
97
+ ## Rule 4
98
+ A claim up to the team limit needs one approver, the claimant's lead.
99
+ A claim over the team limit also needs the department head.
100
+ A claim over the department limit also needs the finance lead.
101
+ A claim without a receipt is held: neither approved nor refused.
102
+ ```
103
+
104
+ The limits live in their own file. The file itself is data a product reads:
105
+
106
+ ```
107
+ policy/limits/expense-approval-v3.json
108
+ { "version": 3, "limits": { "team": 500, "department": 5000 }, "holdWhenReceiptMissing": true }
109
+ ```
110
+
111
+ A sidecar beside it makes it a governed node, so the relationship between
112
+ rule, limits and test cases is declared rather than remembered:
113
+
114
+ ```
115
+ policy/limits/expense-approval-v3.json.kg.json
116
+ {
117
+ "schema": "mnstry.source-sidecar@v1",
118
+ "asset": "expense-approval-v3.json",
119
+ "title": "Approval limits, version 3",
120
+ "summary": "Amount limits and the missing-receipt hold for the expense approval policy.",
121
+ "tags": ["policy", "limits"],
122
+ "kg": {
123
+ "id": "example:limits:expense-approval-v3",
124
+ "type": "manifest",
125
+ "domain": "example",
126
+ "lifecycle": "active",
127
+ "status": "active",
128
+ "audience": "team",
129
+ "relations": {
130
+ "implements": ["example:policy:expense-approval"]
131
+ }
132
+ }
133
+ }
134
+ ```
135
+
136
+ A sidecar carries `lifecycle` as well as `status` because the sidecar
137
+ contract requires both; Markdown headers carry `status` alone.
138
+
139
+ The test cases are a third source, a table of sample claims with the approvals
140
+ they need, declared as evidence for the limits:
141
+
142
+ ```
143
+ policy/cases/expense-approval-v3.md
144
+ ---
145
+ title: Test cases, expense approval v3
146
+ summary: Sample claims with the approvals each one needs under version 3.
147
+ tags: [policy, cases]
148
+ kg:
149
+ id: example:cases:expense-approval-v3
150
+ type: evidence
151
+ status: active
152
+ audience: team
153
+ relations:
154
+ evidences: [example:limits:expense-approval-v3]
155
+ ---
156
+ | Claim | Receipt | Approvers |
157
+ | --- | --- | --- |
158
+ | 500 | yes | lead |
159
+ | 1800 | yes | lead, department head |
160
+ | 9000 | yes | lead, department head, finance lead |
161
+ | 300 | missing | none yet; held |
162
+ ```
163
+
164
+ From those headers the builder compiles three edges: the policy depends on the
165
+ limits, the limits implement the policy, and the test cases evidence the
166
+ limits. Ask an agent to revise Rule 4 and it follows those edges from the
167
+ policy to the limits it depends on, and from the limits to the test cases that
168
+ evidence them, then revises the affected files and runs the graph check against
169
+ the result. The graph check refuses a header that names a node which does not
170
+ exist, apart from configured external targets; what an export may include
171
+ across audiences is stated in the README's audience-visibility block.
172
+
173
+ To try it: the first line inside each fence above is the file's path relative
174
+ to the workspace's `content/` directory, not part of the file. Copy a
175
+ `fixtures/projects/sample-workspace`, save the lines after each path line as
176
+ that file under `content/` (so the policy lands at
177
+ `content/policy/expenses/approval.md`), then run
178
+ `atelier graph --project ./atelier.project.json` from the copy. With all four
179
+ files present the graph builds with no diagnostics, its edges include the
180
+ three above, and
181
+ `atelier graph --check` passes against the result. Remove the limits `.json`
182
+ and the build is refused: the sidecar has no asset (`sidecar has no matching
183
+ source asset`), and the two headers that name the limits no longer resolve.
184
+ Point the policy's `depends_on` at an id that does not exist and the build is
185
+ refused (`declared depends_on target ... was not found`).
186
+
73
187
  ## Census Rules
74
188
 
75
189
  Graph and projection walks skip git-ignored paths. A committed artifact must
@@ -89,7 +203,7 @@ treated exactly like a Git-ignored one (no node, no sidecar demand, no orphan
89
203
  error, no link or embed target). A sidecar follows its source. The scope is
90
204
  tracked for the same reason ignored paths are skipped: every machine must walk
91
205
  the same files. The rules and the decision behind them are in
92
- [install](install.md#scoping-what-the-graph-reads).
206
+ [install](../start/install.md#scoping-what-the-graph-reads).
93
207
 
94
208
  `atelier enroll documents` writes the sidecar the census demands of every
95
209
  non-Markdown document that has none, as the smallest classification that
@@ -486,7 +486,7 @@ error, 3 the operation ran and its answer is not success.
486
486
  | `status` | enablement, machine settings, what was decided, proven service state, per-view freshness with its diagnostics (a code, the rule and the in-view note concerned, never a value; see [the Obsidian contract](obsidian-contract.md#notes-that-were-laid-out-anyway)), whether an apply operation exists | nothing |
487
487
  | `settings` | what this machine remembers for the workspace (who may see, where vaults live, start at login, the adapter), who allowed the service, and how each answer is changed | nothing |
488
488
  | `scope list`, `scope show ID` (also `view list`, `view show ID`) | the declared views | nothing |
489
- | `view add ID (--all \| --folder PATH [--folder PATH ...] [--repo R] \| --tag T) [--expand DEPTH:MAX] [--default] [--allow-empty] [--yes]` | adds a view to the project configuration, after showing the change and how many notes the view would show; refuses a view that would show no note unless `--allow-empty` (see [Adding a view](obsidian.md#adding-a-view)) | `atelier.project.json`, and `.gitignore` when `.atelier-local/` is not ignored. Never committed |
489
+ | `view add ID (--all \| --folder PATH [--folder PATH ...] [--repo R] \| --tag T) [--expand DEPTH:MAX] [--default] [--allow-empty] [--yes]` | adds a view to the project configuration, after showing the change and how many notes the view would show; refuses a view that would show no note unless `--allow-empty` (see [Adding a view](../guides/obsidian.md#adding-a-view)) | `atelier.project.json`, and `.gitignore` when `.atelier-local/` is not ignored. Never committed |
490
490
  | `audience show`, `audience set me\|A,B`, `audience clear` | the audiences this machine lets into a view; none by default, which publishes an empty view. `me` is only you: every audience but `sensitive`, which is added by name. The answer is remembered as the person's decision. A change invalidates every view at the next tick | private machine settings |
491
491
  | `location show`, `location set DIR [--allow-synced-location]` | where this workspace's vaults live; each view not published yet gets `<project> (<view>)` there at its first publication, and a vault published already stays where it is | private machine settings |
492
492
  | `mode show`, `mode set manual\|automatic` | `automatic` refuses without an installed, matching, active automatic policy | private machine settings |
@@ -5,7 +5,7 @@ feasibility track. It states what is proven, on what, and what is not. Nothing
5
5
  here enables a feature. The publisher under
6
6
  `src/projection/obsidian/publication/` is called by the maintenance service
7
7
  (`atelier obsidian service start`) and so by `atelier obsidian open`; see
8
- [obsidian.md](obsidian.md).
8
+ [obsidian.md](../guides/obsidian.md).
9
9
 
10
10
  ## Registered shapes
11
11
 
@@ -868,7 +868,7 @@ written meanwhile.
868
868
 
869
869
  macOS (Darwin 25, arm64) with Obsidian 1.13.7 (installer 1.12.7), CLI enabled,
870
870
  no community plugin. Sixteen interleavings, 25 rounds for each racing case, in
871
- four complete clean runs of the prototype in `experiments/obsidian-publication/`
871
+ four complete clean runs of the historical publication feasibility prototype
872
872
  at commits `34f5fab` and `c5142e7`. The receipts record those same trees under their
873
873
  pre-sign-off identities `5930f85` and `93303ff`; the branch was rewritten only to add
874
874
  sign-off trailers, with identical content. Receipt SHA-256 digests:
@@ -880,11 +880,13 @@ sign-off trailers, with identical content. Receipt SHA-256 digests:
880
880
 
881
881
  A fifth run aborted because the harness could not open a note after the
882
882
  second-window case; no bytes were involved. The receipts are maintainer-held
883
- and are not part of this repository.
883
+ and are not part of this repository. Current desktop qualification uses
884
+ `scripts/obsidian/desktop-receipts.mjs`. These historical receipts do not qualify
885
+ a later candidate or a different host.
884
886
 
885
887
  Every vault Atelier publishes now carries Atelier's own plugin
886
888
  ([obsidian-plugin.md](obsidian-plugin.md)), so a trusted vault runs one
887
- community plugin. In phase 1 it registers no editor extension, no vault event
889
+ community plugin. The current plugin registers no editor extension, no vault event
888
890
  handler and nothing that writes; it only talks to the maintenance service over
889
891
  loopback. The protocol cases above have not been re-run with it loaded; that
890
892
  run is gate G20, before the plugin carries any part of publication.
@@ -5,11 +5,11 @@ finds or installs it: the maintenance service puts it into the vault with the
5
5
  notes, and Obsidian asks once per vault whether to trust the vault's plugins.
6
6
  Until the person says yes, and whenever the plugin is absent, turned off or
7
7
  running in an app that is too old, everything works as it did before through
8
- the command-line path described in [obsidian.md](obsidian.md).
8
+ the command-line path described in [obsidian.md](../guides/obsidian.md).
9
9
 
10
- This is phase 1: the plugin is present, reports status and holds a channel to
11
- the service. It decides nothing and writes nothing. Phase 2, planned at the
12
- end of this document, moves the in-app part of publication into it.
10
+ The plugin reports status and holds a channel to the service. It decides
11
+ nothing and writes nothing. Publication uses the existing command-line or
12
+ app-free path; the plugin does not perform its critical section.
13
13
 
14
14
  The source is `plugins/obsidian/` in the package: `manifest.json`, `main.js`
15
15
  and `styles.css`, plain JavaScript with no build step. The channel it speaks
@@ -413,7 +413,7 @@ every two seconds for every open vault, so the project is kept:
413
413
  loader: it starts from the home alone, and its plugins are told about a view
414
414
  once two of the loads that compose the confirmed generation have agreed. A
415
415
  service given only a loader that answers a promise still refuses to start
416
- (see "Personal workspaces" in [obsidian.md](obsidian.md)).
416
+ (see "Personal workspaces" in [obsidian.md](../guides/obsidian.md)).
417
417
  - **A load that fails** (it throws, it is refused, it is given up, or a file
418
418
  vouches for nothing under a loader that answers a promise) ends whatever
419
419
  was kept, and is asked for again after two seconds, then four, up to
@@ -767,64 +767,3 @@ note open in the editor.
767
767
  storage. Writing the profile's local storage would mean editing a LevelDB
768
768
  database behind the app's back, and calling `app.plugins.setEnable(true)`
769
769
  would skip the prompt altogether.
770
-
771
- ## Phase 2 plan
772
-
773
- Phase 2 moves the in-app critical section of publication into the plugin, and
774
- closes gates G20 and G21 of the initiative. Nothing below is implemented.
775
-
776
- 1. Commands. The channel gains the publication protocol's three operations,
777
- `inspect`, `publish` (`replace` and `remove`) and `collect`, with the
778
- payloads the command-line path validates today (`validatePayload`), and a
779
- protocol variant, `obsidian-plugin-critical-section/v1`, recorded in every
780
- journal it writes. The service stays the only client that starts work; the
781
- plugin fetches work with a bounded long poll (`POST /plugin/work`) and
782
- answers with `POST /plugin/result`, both sealed under the session's key
783
- like every command of phase 1, so the plugin never listens on a port and
784
- takes work only from a service that proved it holds the vault's key.
785
- At most one operation per vault is in flight, every operation has an
786
- identity, a lost answer is recovered with `collect`, and a publish is never
787
- sent twice.
788
- 2. The critical section. The plugin runs the same synchronous body the
789
- command-line path sends through `eval` (`criticalSection` in
790
- `bridge-script.mjs`), shipped in `main.js` rather than sent: refuse on a
791
- dirty or differing editor in any window, refuse on changed bytes on disk,
792
- exchange atomically, update open editors in one transaction of minimal
793
- hunks and record `lastSavedData`, record the outcome, reply at once. The
794
- late-writer re-check and the manifest commit stay in the publisher.
795
- 3. Path selection. With a live lease from a plugin whose protocol matches, the
796
- publisher uses the plugin channel; otherwise the command-line path, and
797
- with no app running, the app-free path, exactly as today. A refusal is
798
- never relaxed by switching paths.
799
- 4. Live edit preservation. The plugin forwards the vault's `modify` events and
800
- the editor's dirty state for Atelier's notes to the service as they happen,
801
- so an edit is preserved in recovery before any maintenance tick looks for
802
- it. The service still decides what an edit is.
803
- 5. G20. The complete G00 interleaving suite (sixteen interleavings, racing
804
- cases repeated) and the G04 production-publisher suite run in plugin mode
805
- on a real isolated app, unchanged, with zero lost bytes. A case that passes
806
- on the command-line path and fails in plugin mode fails the gate; the suite
807
- is not narrowed.
808
- 6. G21. Apply and Discard in the status window for held edits, forwarded to
809
- the service's existing apply operation, which decides; then the procedure
810
- AP-08: enable, disable, uninstall and an app below the floor on one vault
811
- with pending edits and recovery bytes, comparing manifests, path
812
- allocations, pending edits and recovery digests with the command-line path
813
- after each step.
814
-
815
- Open questions for phase 2: when, if ever, plugin files are removed from a
816
- vault; and how an upgraded service answers an older `main.js` that the app
817
- keeps running until it reloads the plugin (the hello carries the plugin
818
- version and the protocol for that).
819
-
820
- ### Deviations from the track plan
821
-
822
- The obsidian-plugin track planned an optional enhanced mode. The owner's
823
- decision of 2026-09-24 made the plugin the primary in-app half, shipped in
824
- every managed vault, with the command-line path as the fallback. Phase 1 here
825
- therefore builds the plugin, its delivery and a presence and status channel
826
- before the publication commands the plan's first phase describes; the parity
827
- held today is between the plugin's constants and the channel contract, and the
828
- refusal parity with the command-line path belongs to phase 2, when the plugin
829
- carries publication commands. Fixtures are generated in temporary directories
830
- rather than kept under `fixtures/obsidian/plugin/`.
@@ -1,15 +1,24 @@
1
- # Practical Judgment and practice adoption
1
+ # Phronesis — practical judgment
2
2
 
3
- Practical Judgment supports deciding what matters and what is fitting in a
3
+ Phronesis supports deciding what matters and what is fitting in a
4
4
  particular situation. It also supports cultivation: contrasting cases, warranted
5
5
  exceptions, questions, distinct voices and reflection on consequences. A useful
6
6
  deliberation can remain open or produce an action without producing a rule.
7
7
 
8
+ Phronesis is a responsibility; the [Knowledge Graph](knowledge-graph.md) is a
9
+ shared representation. Knowledge Stewardship remains the broader responsibility
10
+ for knowledge inclusion and applicability. Phronesis draws on the shared graph
11
+ and contributes cases, decisions and learning through existing Knowledge records,
12
+ review and activation. It introduces no new store or canonical authority and
13
+ does not supply automatic wisdom or a universal score.
14
+
8
15
  `@mnstry/atelier/judgment` validates portable cases and native architecture
9
16
  decision snapshots. `inspectPracticalCase` preserves purpose, values, evidence,
10
17
  alternatives, dissent, cultivation exercises and reconsideration conditions.
11
18
  It does not score wisdom. The invented workshop fixtures demonstrate an open
12
19
  deliberation and a decision whose implementation is still planned.
20
+ The API and the `atelier-practical-judgment` skill identity retain their existing
21
+ names and compatibility obligations.
13
22
 
14
23
  ## Architecture decisions
15
24
 
@@ -31,7 +40,7 @@ review and dependency reconsideration. Do not change an old record in place.
31
40
 
32
41
  ## From feedback to intrinsic practice
33
42
 
34
- The [learning lifecycle](learning.md) captures an observation, proposes a scoped
43
+ The [learning lifecycle](../guides/learning.md) captures an observation, proposes a scoped
35
44
  lesson, records an exact decision, then activates the accepted version for a
36
45
  named harness. `capabilityEventToLearningInput` bridges version-bound capability
37
46
  metadata into that lifecycle. It retains the reported cause, binding, release,
@@ -0,0 +1,92 @@
1
+ # Portability: what a record holds and what the checks prove
2
+
3
+ An Atelier workspace is meant to be enough for another team to build from,
4
+ without rediscovering the work it describes. This page says what a complete
5
+ record holds, what each check proves about it, and where the line between the
6
+ record and a running product falls. `docs/reference/continuity.md` covers the
7
+ package's own continuity commitments; this page covers yours.
8
+
9
+ ## What a complete record holds
10
+
11
+ | What the record must hold | What another team needs from it |
12
+ | --- | --- |
13
+ | Rules and calculations | The rules the product applies, their inputs, how each result is computed and interpreted, exceptions and versions. |
14
+ | Agent behavior | Instructions, tone, context requirements, permitted actions and example exchanges. |
15
+ | Product and interface | Screens and flows, state changes, saved results, access rules, and what one person or a group can do. |
16
+ | Content and brand | Copy, published material, design references and assets, with ownership or license terms. |
17
+ | Business workflows | Processes, responsibilities, handoffs and approval rules. |
18
+ | Data and connections | Your systems' data formats, identifiers, relationships and export instructions, plus the service interfaces and dependencies a replacement would reconnect. |
19
+ | Tests and decisions | Representative inputs and expected results, quality criteria, accepted decisions and relevant revision history. |
20
+
21
+ **Every custom rule has a retained explanation.** If a rule determines a
22
+ result, a reply, access or a next step, its meaning belongs in the authored
23
+ record, including when software executes it.
24
+
25
+ ## How the record is checked
26
+
27
+ In three parts. The first two are package commands; the third is not.
28
+
29
+ The export validator checks conformance: the record is in the published
30
+ format and every reference resolves to a declared source. What it refuses
31
+ across a source's `audience` and an export's `visibility` is stated in the
32
+ README's audience-visibility block.
33
+
34
+ ```bash
35
+ atelier dry-run ./atelier-export.json
36
+ ```
37
+
38
+ The report says `accepted`, and separately whether the artifact is
39
+ `importable`. The validator resolves references to declared provenance
40
+ entries, not to packaged content, so it proves the artifact's shape and its
41
+ references, not that everything necessary was written down.
42
+
43
+ The readiness protocols check coverage inputs: a supplied answers file is
44
+ checked against each protocol's required inputs, and the missing ones are
45
+ listed. An answer being present is not evidence that it is right.
46
+
47
+ ```bash
48
+ atelier readiness run PROTOCOL_ID --answers answers.json --project ./atelier.project.json
49
+ ```
50
+
51
+ That run is an input-completeness check and is not evidence-bound. For a run
52
+ bound to its sources, `atelier review run PROTOCOL_ID --answers answers.json`
53
+ records that source-bound run. Accepting one of its claims in the review
54
+ workspace checks source linkage. A linked source establishes which
55
+ bytes were read, not whether they logically support the proposed claim
56
+ (`docs/guides/local-review.md`). The responsible people review coverage; an
57
+ issuer can record its admission decision in an attestation bound to the canonical form of the document it
58
+ judged (`docs/reference/attestation.md`).
59
+
60
+ The record also carries its own tests. A complete record gives every
61
+ documented rule representative inputs and expected results beside it. The
62
+ package keeps these cases and links them to their rules; it does not run them.
63
+ Whatever executes the rules runs them, so name that runner when you cite this
64
+ check.
65
+
66
+ Together the three show what has been delivered and what remains unresolved,
67
+ in the record rather than in someone's memory. A rebuild also needs the authored
68
+ rules, their representative tests, the data exports, the dependencies and the
69
+ operating instructions, reviewed together against the agreed scope. No
70
+ validator can supply that review.
71
+
72
+ ## The dividing line
73
+
74
+ If it describes how the work is done, it is a file in the Atelier. If it
75
+ records what happened to a particular person, or has to be enforced at the
76
+ moment of use, it lives in a product runtime. A folder of files cannot
77
+ decide, while two people are in a session, which of them may see what;
78
+ cannot hold a payment; and cannot be the consistent, recoverable record when
79
+ several parties write at once.
80
+
81
+ The Atelier holds how the work is done and the documentation of your systems'
82
+ data: formats, identifiers, relationships and export instructions. Records
83
+ about particular people live in the systems you run. What the package will
84
+ and will not do toward any runtime is stated once, in the README's
85
+ will-not-do block; this page adds nothing to it.
86
+
87
+ ## Copying the record
88
+
89
+ The repository is the store, Git is the history, and a copy of the folder is a
90
+ copy of the whole record. A copied folder carries the record and its history,
91
+ not remote data or assets stored elsewhere; the data-and-connections row above
92
+ is where those are described so a replacement knows where to look.
@@ -2,8 +2,8 @@
2
2
 
3
3
  Status: opt-in implementation candidate, not a published or adopted interface.
4
4
  Contract discussion: [issue 39](https://github.com/MNSTRY/atelier/issues/39).
5
- Current corrections and remaining adoption conditions:
6
- [review disposition](presentation-review-disposition.md).
5
+ Current compatibility and adoption conditions are in
6
+ [consumer boundaries](presentation-consumer-boundaries.md).
7
7
 
8
8
  ## Placement and authority
9
9
 
@@ -44,6 +44,11 @@ font loads; no-JavaScript readability and absence of motion are the baseline.
44
44
  5. Obtain the separate source, CI, maintainer and deployment authorities. The
45
45
  reference consumer neither allocates a product path nor activates a site.
46
46
 
47
+ Synthetic composition events and browser/React fixtures do not establish real
48
+ OS input, screen-reader behavior or native performance. Verify pending/busy
49
+ announcements with actual assistive technology and profile the receiving native
50
+ host before changing its confirmation guards.
51
+
47
52
  ## CI integration handoff
48
53
 
49
54
  The existing workflow does not yet execute either browser proof. A maintainer
@@ -31,6 +31,23 @@ Resolution may create ignored `.atelier-local/` directories; this diagnostic is
31
31
  not a promise of a write-free invocation. The ordinary config report retains
32
32
  its existing shape and local config path.
33
33
 
34
+ ## Bundled readiness selection
35
+
36
+ The tracked `atelier.project.json` may set
37
+ `ext["mnstry.atelier"].readiness.includeBundled` to `false` to deselect the bundled
38
+ MNSTRY readiness pack. An absent setting or explicit `true` preserves the
39
+ existing default. `readiness` must be an object and `includeBundled` a boolean;
40
+ invalid values fail with `readiness-selection-invalid`. This is a project
41
+ setting, not a CLI flag or local preference.
42
+
43
+ Project-aware protocol listing and runs then use only selected custom packs;
44
+ generic graph, projection and readiness checks remain available without the
45
+ MNSTRY tenant journey. A bare protocol listing without a project selection
46
+ retains its standalone bundled list. Review selection changes and run
47
+ `atelier lock write --project ./atelier.project.json`; see
48
+ [readiness pack selection](../guides/tenant-readiness.md#select-the-readiness-pack)
49
+ for lock checks and commands that require the bundle.
50
+
34
51
  ## Command inventory
35
52
 
36
53
  | Family | Project handling | Other effects |
@@ -59,6 +59,13 @@ The staged guard (`atelier boundary check --staged`) inspects every staged
59
59
  `*.md` and `*.kg.json` diff for changes to boundary fields — `kg.audience`,
60
60
  `audience`, `handling`, `sensitivity`, `data_boundary`.
61
61
 
62
+ Only a literal field assignment is a review signal; an ordinary mention such
63
+ as a title about audience research is not. Compact JSON and escaped JSON field
64
+ names are inspected too. A diff cannot establish the quote or comment context
65
+ before a changed line, so an assignment written as an example still counts.
66
+ The complete value suffix is kept; an incomplete collection or comment is not
67
+ silently treated as a private initialization default.
68
+
62
69
  It distinguishes two cases:
63
70
 
64
71
  - **Initialization.** A boundary field added with no prior value, set to a
@@ -80,6 +87,14 @@ A marker committed in a sibling file, or already sitting elsewhere in a file
80
87
  that this commit does not touch, approves nothing — the guard reads the diff,
81
88
  not the working tree.
82
89
 
90
+ Removed declarations still require review when a classified document is
91
+ deleted, renamed or changed to another file type. Staged paths are acquired
92
+ without folding renames, including type changes, from the index actually being
93
+ committed. A missing configured repository, unresolved committing repository,
94
+ failed listing or incomplete NUL-delimited listing refuses the check rather
95
+ than yielding partial clean evidence. Git's path quoting is pinned for diff
96
+ acquisition regardless of the repository's display configuration.
97
+
83
98
  ## Owner-signed operator delegation
84
99
 
85
100
  A private-domain repository names one `ownerActor`. When anyone else runs
@@ -209,7 +224,7 @@ changes together. The `atelier.lock.json` refresh should be limited to the
209
224
  copied workspace's Atelier package metadata, contracts, and migration state,
210
225
  while private-domain and shared-project source boundaries remain unchanged.
211
226
 
212
- See `docs/upgrade.md` for the upgrade sequence.
227
+ See `docs/guides/upgrade.md` for the upgrade sequence.
213
228
 
214
229
  ## Repo Identity
215
230
 
@@ -279,9 +294,17 @@ machine for weeks.
279
294
  remote's tracking refs, so reinstall it (`atelier boundary install-hooks`)
280
295
  for history that only another remote holds to be judged on its way to a new
281
296
  one. A brand-new branch is diffed against the empty tree, in SHA-1 and SHA-256
282
- repositories alike, so nothing slips through unscanned. A push carrying more
283
- than 1000 such commits, or more evidence than the aggregate budget, is
284
- refused; push it in smaller parts, an earlier commit first. Each diff reads
297
+ repositories alike, so nothing slips through unscanned. A ref update carrying
298
+ more than 1000 such commits, or a push whose refs together carry more
299
+ evidence than the aggregate budget, is refused with `content-scan-incomplete`;
300
+ push it in smaller parts, an earlier commit first. The aggregate counts the
301
+ net change and the additional evidence read from individual commits. If the
302
+ net change together with a commit's evidence exceeds that budget, merge in
303
+ smaller steps, or rebase onto the remote, and push again. `limitBytes` names
304
+ the full aggregate budget, including when earlier refs have used part of it.
305
+ The text output lists blocking errors before warnings, with incomplete or
306
+ unresolved evidence first within each group, and at most 50 findings;
307
+ `--json` lists every finding in the report's original order. Each diff reads
285
308
  what it needs, so a history that swaps large binaries back and forth makes
286
309
  the hook slow, within the commit cap and per-diff limits. The remote's
287
310
  tracking refs are found by name: a remote whose fetch refspec writes into
@@ -37,6 +37,10 @@ state. Foreign decisions remain visibly unverified historical assertions. The
37
37
  format carries no trusted signature: there is no applicable signer authorization
38
38
  or attestation to verify. Valid hashes prove internal consistency only.
39
39
 
40
+ Inspection never overwrites active state or transfers execution authority,
41
+ secrets or current local approval. Existing domain ledgers remain authoritative;
42
+ the bundle is a selected historical record, not a replacement review store.
43
+
40
44
  The `atelier-review.v1.schema.json` contract defines these separate artifacts.
41
45
  Evidence and contributions use the existing JCS implementation; the bundle hash
42
46
  covers every top-level member except `digest`. A member hash covers its complete
@@ -155,7 +155,7 @@ installed source-apply owner, rejects the stale binding, and checks idempotence
155
155
  and preservation of an unrelated source. Atomic exchange is required for the
156
156
  write portion; other platforms retain the read-only checks.
157
157
 
158
- The built-in [template adoption participant](template-upgrades.md) connects local
158
+ The built-in [template adoption participant](../guides/template-upgrades.md) connects local
159
159
  profile adoption, exact locks, retained history and read-only projections to the
160
160
  existing upgrade transaction engine. External packs, runtime extensions and
161
161
  automatic restoration remain unsupported.
@@ -62,8 +62,8 @@ history; this adapter does not claim secure erasure or automated retention.
62
62
  A command has `schema: "atelier-trackable-command@v1"`, `requestId`,
63
63
  `expectedRevision`, `operation` and `input`. Operations are `release`,
64
64
  `instantiate`, `adopt`, `record`, `correct`, `lifecycle` and `disposition`.
65
- The exported [schema](../contracts/atelier-trackable.v1.schema.json) and
66
- [fixtures](../fixtures/atelier-trackable) specify exact fields.
65
+ The exported [schema](../../contracts/atelier-trackable.v1.schema.json) and
66
+ [fixtures](../../fixtures/atelier-trackable) specify exact fields.
67
67
 
68
68
  `execute` locks the selected scope, verifies history, applies the shared reducer,
69
69
  atomically publishes one event and reads it back. Replaying the same request and
@@ -0,0 +1,89 @@
1
+ # Start Atelier independently
2
+
3
+ Atelier runs locally with readable files and Git as the source of record. The
4
+ CLI, library and contracts work without a MNSTRY account, hosted service or
5
+ desktop utility. Installing the package uses the npm registry; the authoring
6
+ commands below run locally.
7
+
8
+ ## Find the source and choose a release
9
+
10
+ The maintained public source is [MNSTRY/atelier](https://github.com/MNSTRY/atelier),
11
+ on `main`. Its package manifest names the version being prepared; a version in
12
+ source is not a publication receipt.
13
+ The example below pins the published `0.2.0-alpha.14` alpha release. Registry
14
+ `latest` and `alpha` are separate channels; check them before choosing an upgrade:
15
+
16
+ ```bash
17
+ npm view @mnstry/atelier dist-tags --json
18
+ ```
19
+
20
+ Use Node.js `>=22.18.0 <23` or `>=24.13.1 <25`, as declared by the current
21
+ source package. See [installation](install.md) and [upgrades](../guides/upgrade.md) for
22
+ release identity, workspace locks and migration checks.
23
+
24
+ ## Create a disposable example
25
+
26
+ Run these commands in a new directory:
27
+
28
+ ```bash
29
+ npm init -y
30
+ npm install --save-dev @mnstry/atelier@0.2.0-alpha.14
31
+ npx mnstry-atelier init --template sample-workspace --target ./sample
32
+ npx mnstry-atelier graph --project ./sample/atelier.project.json
33
+ npx mnstry-atelier build --project ./sample/atelier.project.json
34
+ ```
35
+
36
+ Inspect the readable sources in `sample/` and the generated graph and projection
37
+ under `sample/atelier-output/`. Generated output is rebuildable; it does not
38
+ replace source files. To view it in an optional foreground browser service:
39
+
40
+ ```bash
41
+ npx mnstry-atelier dev --project ./sample/atelier.project.json --port=0
42
+ ```
43
+
44
+ Open the printed `127.0.0.1` URL and stop the service with Ctrl-C. Build first:
45
+ `dev` serves an existing projection. These commands need no MNSTRY environment
46
+ variables or canonical-repository credentials.
47
+
48
+ Keep the `@mnstry/` package scope. After installation, `npx mnstry-atelier`
49
+ selects the shipped binary; the unscoped npm package `atelier` is unrelated.
50
+
51
+ ## Adopt a small scope in an existing repository
52
+
53
+ From the intended repository, install the same pinned package, then select the
54
+ actual documents you want the graph to read:
55
+
56
+ ```bash
57
+ npm install --save-dev @mnstry/atelier@0.2.0-alpha.14
58
+ npx mnstry-atelier adopt --profile single-repo --target . --include 'docs/**' --yes
59
+ ```
60
+
61
+ `adopt` prepares the project configuration and ignored local bindings. Review
62
+ its diff and the selected sources before building the graph. Existing documents
63
+ need the appropriate metadata or sidecars; use the [knowledge setup workflow](knowledge-setup.md)
64
+ to author that model. `init` is for a new starter and refuses existing Atelier
65
+ configuration. Neither path requires enabling [Sync](../guides/atelier-sync.md).
66
+
67
+ ## Public tooling and consuming hosts
68
+
69
+ The complete export list is in `package.json`. Choose the surface that matches
70
+ the work:
71
+
72
+ | Surface | Existing examples | Boundary |
73
+ | --- | --- | --- |
74
+ | Local authoring and contracts | Root API, `./project`, `./graph`, `./projection`, versioned `./contracts/` subpaths | Files, Git and adopted contracts retain authority. |
75
+ | Optional local interfaces | `./cli`, `./server`, `./ui`, `./presentation`, `./presentation/browser`, `./presentation/native` | A host selects and qualifies its presentation and lifecycle. |
76
+ | Optional supervision and integrations | `./runtime`, `./runtime/git`, `./extension-packs`, `./extensions`, `./extensions/client`, `./vault` | Git synchronization and host-bound providers require explicit configuration; the host supplies provider SDKs and credentials. |
77
+ | Local proposals and learning | `./collaboration`, `./learning` | Proposal acceptance is copy-only; learning activation supplies scoped context. Neither grants source-write authority. |
78
+
79
+ Generic headless startup, editor and native-presentation bindings remain public
80
+ tooling. MNSTRY's desktop utility is a separate proprietary consumer. A host's
81
+ authentication, integrated capture, provider access and managed data stay with
82
+ that host. See the [responsibility architecture](../reference/architecture.md),
83
+ [learning boundary](../guides/learning.md) and [local-service contract](../reference/local-services.md).
84
+
85
+ Repository read access exposes its files. Audience metadata governs projections;
86
+ it does not hide private files from someone who can read the repository. Share
87
+ only an explicitly prepared bounded view, and retain owner-controlled source
88
+ application. Public tooling does not supply a managed MNSTRY runtime or confer
89
+ runtime admission.