@mnstry/atelier 0.2.0-alpha.3 → 0.2.0-alpha.5

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 (55) hide show
  1. package/CHANGELOG.md +86 -0
  2. package/README.md +280 -230
  3. package/contracts/public-api-baseline.json +57 -0
  4. package/docs/assurance-controls.md +39 -0
  5. package/docs/atelier-runtime.md +15 -0
  6. package/docs/blocks/claims.md +15 -9
  7. package/docs/design.md +12 -6
  8. package/docs/install.md +26 -4
  9. package/docs/knowledge-graph.md +8 -4
  10. package/docs/local-services.md +101 -0
  11. package/docs/release-engineering.md +75 -10
  12. package/docs/repo-boundary-guard.md +12 -2
  13. package/docs/upgrade.md +34 -2
  14. package/fixtures/projects/sample-workspace/content/source.html.kg.json +4 -1
  15. package/fixtures/projects/source-formats-workspace/content/data.json.kg.json +4 -1
  16. package/fixtures/projects/source-formats-workspace/content/logo.png.kg.json +4 -1
  17. package/fixtures/projects/source-formats-workspace/content/metrics.csv.kg.json +4 -1
  18. package/fixtures/projects/source-formats-workspace/content/pipeline.yaml.kg.json +4 -1
  19. package/package.json +13 -6
  20. package/skills/claude/atelier-local-service/SKILL.md +47 -0
  21. package/skills/claude/atelier-open/SKILL.md +6 -5
  22. package/skills/claude/atelier-public-boundary/SKILL.md +31 -0
  23. package/skills/codex/atelier-local-service/SKILL.md +47 -0
  24. package/skills/codex/atelier-open/SKILL.md +6 -5
  25. package/skills/codex/atelier-public-boundary/SKILL.md +31 -0
  26. package/src/boundary/content-rules.mjs +278 -20
  27. package/src/boundary/policy.mjs +150 -60
  28. package/src/cli/execute-command.mjs +36 -0
  29. package/src/cli/run.mjs +17 -7
  30. package/src/collaboration/event-ledger.mjs +365 -0
  31. package/src/collaboration/index.mjs +17 -0
  32. package/src/collaboration/proposals.mjs +265 -65
  33. package/src/commands/attestation.mjs +20 -6
  34. package/src/commands/disclosure.mjs +133 -0
  35. package/src/commands/distribution.mjs +2 -1
  36. package/src/commands/extension-pack.mjs +2 -1
  37. package/src/commands/init.mjs +2 -1
  38. package/src/commands/server.mjs +1 -4
  39. package/src/disclosure/content-scan.mjs +193 -0
  40. package/src/egress/check.mjs +7 -38
  41. package/src/egress/forbidden-egress.mjs +32 -18
  42. package/src/graph/graph.mjs +112 -314
  43. package/src/graph/knowledge-graph.mjs +94 -18
  44. package/src/harness/context-client.mjs +9 -1
  45. package/src/index.mjs +12 -0
  46. package/src/project/config.mjs +66 -7
  47. package/src/project/file-class.mjs +14 -0
  48. package/src/project/package-root.mjs +10 -0
  49. package/src/project/path-match.mjs +38 -15
  50. package/src/project/private-state.mjs +110 -0
  51. package/src/server/local-sidecar.mjs +81 -59
  52. package/src/server/security.mjs +89 -4
  53. package/src/server/server.mjs +3 -2
  54. package/src/support/feedback-report.mjs +4 -3
  55. package/src/upgrade/upgrade.mjs +2 -1
package/README.md CHANGED
@@ -1,77 +1,111 @@
1
1
  # MNSTRY Atelier
2
2
 
3
- **The Atelier makes a repository mean something.** It is a local governance
4
- toolkit for file-based bodies of work — a Node CLI and library with no
5
- service, no account, and no telemetry. Git is the database. The ontology is
6
- the schema. The validators are the constraints. The runtime is local.
7
-
8
- An ordinary file gains a small structured header: what this is, who it is
9
- for, what it relates to. That is the entire enrollment. From those
10
- declarations the Atelier builds a knowledge graph over your work, generates
11
- a review page you read in a browser on loopback, checks the work against
12
- published readiness protocols, and rejects what must never happen — a
13
- public export that quietly references a private source.
14
-
15
- MNSTRY publishes it under Apache-2.0 and authors its own workspaces with
16
- it. Everything here runs without ever talking to a MNSTRY runtime, so it
17
- can govern a methodology, a research corpus, an editorial pipeline, or any
18
- body of work that must outlive the tools that touch it. Every promise on
19
- this page ends in a command you can run.
3
+ **Turn a repository into a living, governed system.**
4
+
5
+ Important bodies of work often begin as files: methods, research, programs,
6
+ policies, editorial systems, product knowledge, or something no existing app
7
+ quite understands. A folder can hold that work, but it cannot explain what each
8
+ file is, how the pieces relate, who may see them, or whether the whole is ready
9
+ to use.
10
+
11
+ The Atelier adds that missing layer without taking the work away from you. It
12
+ turns a repository into an ontology-governed knowledge graph, gives rules the
13
+ power to refuse invalid states, and produces bounded views for people, teams,
14
+ agents, and tools. Git remains the source of record. Your files remain readable.
15
+ The runtime remains local.
16
+
17
+ That makes the same repository useful at several levels:
18
+
19
+ - A **steward** can shape a coherent system without surrendering it to a
20
+ proprietary database.
21
+ - A **team** can collaborate through explicit roles, handoffs, and disclosure
22
+ boundaries.
23
+ - A **person or agent** can receive the right context and capabilities for the
24
+ task, without receiving the entire repository.
25
+ - A **toolmaker** can build a specialized or commercial product on the graph,
26
+ contracts, validators, and projections instead of inventing a new source of
27
+ truth.
28
+
29
+ MNSTRY built the Atelier for a demanding case: a living body of methodology
30
+ that must stay legible, internally connected, privacy-aware, and usable across
31
+ many interfaces. Methodology authoring is one application of the system, not
32
+ its definition or ceiling.
33
+
34
+ ## From files to a working system
35
+
36
+ ```text
37
+ files you own
38
+ ↓ declare identity, type, audience, and relationships
39
+ ontology-governed graph
40
+ ↓ apply contracts, policies, and readiness rules
41
+ governed projections
42
+ ├── local review
43
+ ├── bounded agent context
44
+ ├── collaboration and disclosure
45
+ └── specialized tools and commercial distributions
46
+ ```
47
+
48
+ You can see the complete loop in a disposable sample workspace:
20
49
 
21
50
  ```bash
22
- npm install --save-dev @mnstry/atelier@0.2.0-alpha.3
51
+ npm install --save-dev @mnstry/atelier@0.2.0-alpha.5
23
52
  npx mnstry-atelier init --fixture=sample-workspace --target ./sample
24
53
  npx mnstry-atelier graph --project ./sample/atelier.project.json
54
+ npx mnstry-atelier project --project ./sample/atelier.project.json
55
+ npx mnstry-atelier dev --project ./sample/atelier.project.json
25
56
  ```
26
57
 
27
- `npx` here runs the binary already installed in `./node_modules/.bin` —
28
- always install first. Keep the `@mnstry/` scope: the unscoped npm name
29
- `atelier` belongs to an unrelated third-party package, so a bare
30
- `npx atelier` outside an installed workspace runs someone else's code.
31
- The branded `npx mnstry-atelier` form never collides with it; inside an
32
- installed workspace the shorter `atelier` command is also available, and
33
- that is the form npm scripts and the command reference below use.
58
+ Open the loopback URL printed by `dev`. The browser page is generated from
59
+ the same graph and rules that the CLI and library expose.
60
+
61
+ `npx` here runs the binary installed in `./node_modules/.bin`, so install the
62
+ scoped package first. Keep the `@mnstry/` scope: the unscoped npm package
63
+ `atelier` is unrelated. The branded `npx mnstry-atelier` command avoids that
64
+ collision; inside an installed workspace, the shorter `atelier` command is
65
+ also available.
34
66
 
35
67
  ## What authoring looks like
36
68
 
37
- Here is a complete, working source document — fictional, like every
38
- fixture in this package:
69
+ Enrollment is deliberately small. A source file declares its identity, type,
70
+ audience, and relationships in front matter:
39
71
 
40
72
  ```markdown
41
73
  ---
42
- title: "Grounding practice"
43
- summary: "The opening practice every offer in this catalog builds on."
74
+ title: Breath practice
75
+ summary: A simple preparation practice.
76
+ tags: []
44
77
  kg:
45
- id: "my-studio:grounding-practice"
46
- type: "document"
47
- status: "active"
48
- audience: "team"
78
+ id: example:breath-practice
79
+ type: document
80
+ status: active
81
+ audience: public
49
82
  relations:
50
- supports: "my-studio:flagship-offer"
83
+ belongs_to: example:flagship-program
51
84
  ---
52
85
 
53
- # Grounding practice
86
+ # Breath practice
54
87
 
55
- The practice itself, in your words, in your file, in your repository.
88
+ Let the exhale become slightly longer than the inhale.
56
89
  ```
57
90
 
58
- That header is the entire enrollment. The graph builder reads front matter
59
- like this, and `.kg.json` sidecars for files that are not Markdown — JSON,
60
- YAML, CSV, media, anything — without ever parsing the foreign format. Your
61
- documents stay in your repositories, in formats you chose, readable
62
- without this tool. From there the working loop is four commands:
91
+ The file is still Markdown. Git still records its history. The declarations
92
+ let the Atelier resolve one canonical identity, validate its declared shape,
93
+ connect it to neighboring work, and decide where it may
94
+ travel.
63
95
 
64
- ```bash
65
- npx mnstry-atelier graph --project ./sample/atelier.project.json # build the knowledge graph
66
- npx mnstry-atelier project --project ./sample/atelier.project.json # generate the local review page
67
- npx mnstry-atelier readiness --project ./sample/atelier.project.json # check against published protocols
68
- npx mnstry-atelier dry-run ./atelier-export.json # validate against the public contracts
69
- ```
96
+ When a source format cannot carry front matter, a sidecar can provide the same
97
+ declarations. The graph does not require every source to become Markdown.
98
+
99
+ From there, one source can inform a human-readable review page, a session-bound
100
+ context envelope for an agent, or structured input to another tool. These are
101
+ interfaces to the same governed repository, not copies that quietly drift apart.
70
102
 
71
- After those four commands you have a generated graph, a browsable review
72
- page under your project's output directory, a readiness summary, and a
73
- dry-run report — all of them files in your repository, all of them
74
- diffable. `npx mnstry-atelier dev` serves the review page on loopback.
103
+ ## Rules travel with the work
104
+
105
+ The ontology is not only a vocabulary. It is an enforcement surface. Contracts
106
+ define valid shapes, policies govern movement and disclosure, readiness rules
107
+ make completion testable, and validators fail closed when a boundary cannot be
108
+ proven.
75
109
 
76
110
  <!-- atelier:block:audience-visibility:start -->
77
111
  The `audience` field in the header is the load-bearing word. It declares who
@@ -85,20 +119,133 @@ public is refused. That check is fixture-pinned and mutation-tested —
85
119
  deleting its enforcement fails tests, not documentation.
86
120
  <!-- atelier:block:audience-visibility:end -->
87
121
 
88
- The same machinery is a library:
122
+ That distinction matters whenever several interfaces share one body of work.
123
+ A public site, an internal review tool, and an agent session can all use the
124
+ same graph while receiving different, mechanically checked projections.
89
125
 
90
- ```js
91
- import { validateAtelierExportDryRun } from '@mnstry/atelier'
126
+ ## The system beneath it
127
+
128
+ ### 1. The repository becomes an ontology
129
+
130
+ The project manifest tells the Atelier where sources live and which boundaries
131
+ govern the workspace. Source declarations establish typed nodes and relationships. The
132
+ graph command resolves those declarations into a deterministic index that can
133
+ be queried, validated, rendered, and extended.
134
+
135
+ This is what makes a collection of files behave like a system while remaining
136
+ portable. The repository contains both the knowledge and the terms needed to
137
+ interpret it.
138
+
139
+ ### 2. Rules can refuse
92
140
 
93
- const report = validateAtelierExportDryRun(exportDocument)
94
- console.log(report.accepted, report.importable, report.errors)
141
+ A useful rule must do more than advise. The Atelier checks schema validity,
142
+ relationship integrity, audience boundaries, readiness protocols, and export
143
+ contracts. Invalid or ambiguous states produce a failing command instead of a
144
+ best-effort publication.
145
+
146
+ Because the checks are local and versioned with the work, the repository can
147
+ prove its state in CI, on a laptop, or inside a larger toolchain.
148
+
149
+ Repositories that may contribute to a public or shared surface can add a
150
+ private, ignored disclosure denylist and scan either the tracked tree or the
151
+ exact staged index:
152
+
153
+ ```bash
154
+ npx mnstry-atelier disclosure check --staged
95
155
  ```
96
156
 
97
- Real projects start from the `private-domain`, `shared-project`, or
98
- `distribution` templates instead of the sample fixture —
99
- [`docs/install.md`](docs/install.md) is the full install guide.
157
+ The built-in structural pass catches machine-local paths, key material, and
158
+ secret-shaped assignments. A client-aware verdict additionally requires the
159
+ private denylist; the command fails closed when it is absent unless
160
+ `--structural-only` is chosen explicitly. Denylist patterns and matched text
161
+ never belong in the shared repository.
162
+
163
+ ### 3. Collaboration becomes governed disclosure
164
+
165
+ Collaboration is not equivalent to giving every participant every file. The
166
+ Atelier models audience, runtime visibility, roles, and capability envelopes
167
+ as separate concerns. A projection can therefore disclose the material needed
168
+ for a task while withholding material outside that boundary.
169
+
170
+ This creates a shared language for human handoffs, agent sessions, reviews,
171
+ and eventual managed delivery. The open package validates the declared
172
+ boundary; it does not silently make access decisions on your behalf.
173
+
174
+ ### 4. The local runtime serves people and agents
175
+
176
+ `atelier dev` exposes a loopback-only review surface backed by the compiled
177
+ graph. The library exposes the same project, graph, validation, and projection
178
+ primitives to code.
179
+
180
+ Consumer-owned authoring or review services that need a separate durable
181
+ lifecycle follow [the managed local-service contract](./docs/local-services.md).
182
+ That contract standardizes process ownership, private local state, and browser
183
+ recovery without putting a tenant's service details into Atelier.
184
+
185
+ The shipped agent model is intentionally bounded: the Atelier can assemble
186
+ session context, capability envelopes, and proposed changes, but it does not
187
+ apply those proposals or grant direct write access. It is a local context and
188
+ control layer that another interface can build on, not an autonomous editor.
189
+
190
+ ### 5. The repository can power another product
100
191
 
101
- ## Claims you can check
192
+ The CLI is one interface. The package is also a library, and its contracts are
193
+ published artifacts. A tool can use the repository as its durable source of
194
+ truth, compile the graph, select an audience-safe projection, and present a
195
+ purpose-built experience without reimplementing the governance model.
196
+
197
+ That tool may be private, open source, or commercial. Apache-2.0 permits all
198
+ three. Conformance to the public Atelier contracts does not require a MNSTRY
199
+ account or service.
200
+
201
+ Read [the design document](./docs/design.md) for the five-part architecture and
202
+ [the ontology](./docs/ontology.md) and
203
+ [contract-stability policy](./docs/contract-stability.md) for the stable
204
+ boundaries.
205
+
206
+ ## Build your own tool on it
207
+
208
+ Use the CLI when a shell command or CI gate is enough. Use the library when the
209
+ Atelier is the substrate beneath a custom interface:
210
+
211
+ ```js
212
+ import {
213
+ buildGraph,
214
+ resolveProjectConfig,
215
+ } from '@mnstry/atelier'
216
+
217
+ const project = resolveProjectConfig({
218
+ cwd: process.cwd(),
219
+ argv: ['--project=./atelier.project.json'],
220
+ })
221
+ const graph = buildGraph(project)
222
+
223
+ if (graph.errors.length > 0) throw new Error(graph.errors.join('\n'))
224
+ console.log(graph.nodes)
225
+ ```
226
+
227
+ The package exports change over the alpha series, so pin the exact prerelease
228
+ version and treat the package export map and shipped source modules as the
229
+ executable API reference. [Distribution contracts](./docs/distributions.md) explain
230
+ how a governed subset can be packaged for another surface without widening its
231
+ audience.
232
+
233
+ ## Where the Atelier stops
234
+
235
+ The open package owns repository-side structure and proof. A managed runtime
236
+ may consume a conformant export, but that is a separate system with a separate
237
+ trust boundary.
238
+
239
+ | The local Atelier does | A managed runtime may do |
240
+ | --- | --- |
241
+ | Parse sources and sidecars | Authenticate participants |
242
+ | Compile and query the graph | Resolve live authorization |
243
+ | Validate contracts and relationships | Persist runtime state |
244
+ | Enforce export audience boundaries | Deliver governed experiences |
245
+ | Generate local review and agent context | Record consent and operational events |
246
+ | Check offline conformance | Decide optional admission |
247
+
248
+ ### Claims you can verify
102
249
 
103
250
  <!-- atelier:block:claims:start -->
104
251
  This package makes three promises. None of them asks for your trust — each
@@ -106,16 +253,22 @@ one names the command that proves it.
106
253
 
107
254
  **Nothing leaves your machine, with one exception you can see.** There is no
108
255
  telemetry, no update check, no crash reporting, and no send path anywhere in
109
- the package. The exception: when no actor is configured, `boundary check` and
110
- `doctor` fall back to the `gh` CLI to resolve your GitHub login, which is an
111
- authenticated request to GitHub made with your own credentials. Set
112
- `MNSTRY_ATELIER_ACTOR` and that path is never taken. The only network client
256
+ the package. The exceptions are explicit: `boundary check` may invoke `gh api
257
+ user` after no declared actor matches an explicit `--actor`,
258
+ `MNSTRY_ATELIER_ACTOR`, `GITHUB_ACTOR`, or a configured Git email; repository
259
+ identity checks may invoke `gh api repos/...` to resolve a canonical GitHub
260
+ identity. Those authenticated requests use your own `gh` credentials. A
261
+ recognized explicit actor prevents the boundary actor fallback; recorded
262
+ repository identities let identity checks keep working when the provider is
263
+ unavailable. The only network client
113
264
  refuses non-loopback URLs, the served pages carry a policy that authorizes no
114
- external origin, and a fail-closed gate scans the executable and markup files
115
- under `src/`, `bin/`, `scripts/`, and `examples/` for egress primitives. Two
116
- limits worth stating plainly: the gate does not read the `.json` and `.md`
117
- files under `templates/` and `skills/`, and it does not model
118
- `child_process`, which is why the `gh` fallback above does not trip it:
265
+ external origin, and release audit scans every executable or markup file in
266
+ the exact `npm pack` inventory for egress primitives. The standalone gate also
267
+ scans executable and markup files under `src/`, `bin/`, `scripts/`,
268
+ `templates/`, `examples/`, and `skills/`. Two limits worth stating plainly:
269
+ the egress control does not interpret data-only `.json` or `.md` files, and it
270
+ does not model `child_process`; the two reviewed `gh` paths above are therefore
271
+ documented exceptions rather than scanner detections:
119
272
 
120
273
  ```bash
121
274
  npm run egress:check
@@ -148,7 +301,7 @@ claims, including the perpetual Apache-2.0 grant on every tagged release you
148
301
  receive.
149
302
  <!-- atelier:block:claims:end -->
150
303
 
151
- ## What it will not do
304
+ ### What it will not do
152
305
 
153
306
  <!-- atelier:block:will-not-do:start -->
154
307
  - It does not write to a MNSTRY runtime database.
@@ -162,7 +315,7 @@ These limits are the design. An authoring tool for private material earns
162
315
  trust by what it refuses to be able to do.
163
316
  <!-- atelier:block:will-not-do:end -->
164
317
 
165
- ## Conformance is public, admission is separate
318
+ ### Conformance and admission
166
319
 
167
320
  <!-- atelier:block:conformance-admission:start -->
168
321
  The Atelier export format is MNSTRY's format, offered openly.
@@ -182,167 +335,64 @@ is part of the contract. You can build on the Atelier without ever talking
182
335
  to MNSTRY, and a document MNSTRY declines can still be fully conformant.
183
336
  <!-- atelier:block:conformance-admission:end -->
184
337
 
185
- ## Where the Atelier stops
186
-
187
- The Atelier is a complete, standalone tool; nothing on the right side of
188
- this table is required to use it. MNSTRY's managed platform begins where
189
- local preparation ends:
190
-
191
- | The Atelier, today | The MNSTRY managed platform |
192
- | ------------------------------------- | ---------------------------------- |
193
- | Local files and Git authority | Runtime authority |
194
- | Knowledge graph and review projection | Governed delivery |
195
- | Readiness checks and proposed claims | Runtime consent and identity |
196
- | Offline conformance | Signed admission |
197
- | Proposal-only harness access | Tenant applications and operations |
198
-
199
- ## The system
200
-
201
- The full design lives in [`docs/design.md`](docs/design.md) — five
202
- movements, each grounded in shipped machinery, each ending with the command
203
- that proves it. In brief:
204
-
205
- **A repository with an ontology.** Front matter — or a `.kg.json` sidecar
206
- beside any format the kit never parses — declares a file's identity, type,
207
- audience, and relations. A node's `kg.id` names its canonical: the stable
208
- source-of-truth version of a thing that people, tools, and agents can refer
209
- to without losing meaning. The graph builder compiles the repository into a
210
- deterministic knowledge graph. No import step, no database: the repository
211
- is the store, and Git is the history, the review process, and the read
212
- boundary.
213
-
214
- **Rules that refuse.** JSON Schema contracts under a compatibility epoch
215
- define the vocabulary, and fail-closed validators enforce it — including
216
- the audience/visibility refusal above. Schema widening outside `ext`
217
- containers is refused by a schema-vs-schema differ, breaking changes
218
- require a new contract version with a recorded migration, and twelve
219
- claim-first readiness protocols check a workspace against published
220
- criteria to produce proposed claims, never runtime mutations.
221
-
222
- **Collaboration as governed disclosure.** Repositories have enforced roles:
223
- private-domain repos hold one person's source material, shared-project
224
- repos hold what a team may read, and the boundary guard fails closed when
225
- material crosses without a record. Crossing the boundary requires a
226
- recorded `git.promote` disclosure event — disclosure is a commit, not an
227
- accident. Change to the machinery itself is governed the same way: the
228
- lockfile records exactly what a workspace runs, and upgrades are
229
- branch-based, review-first, and refuse dirty repositories.
230
-
231
- **A local runtime for humans and for agents.** `atelier project` renders a
232
- projection — a contextual view of the same governed workspace. Humans get a
233
- generated review page over a loopback-only sidecar; agent harnesses get
234
- session-bound context and capability envelopes, with a place to record
235
- proposals and no apply endpoints. That is a narrow, testable control — a
236
- bounded view, and no write authority to grant — not a general claim that an
237
- agent is safe around private material. Neutral Claude and Codex skill
238
- wrappers ship in the package.
239
-
240
- **A platform for your own tool.** A distribution wraps the CLI under its
241
- own name, contributes a validated extension pack, and themes the
242
- projection, while the root contracts, guards, and conformance stay
243
- canonical underneath.
244
-
245
- It exists because some bodies of work are too important to live inside
246
- someone else's platform. MNSTRY built the Atelier to carry its own most
247
- demanding case — private transformational work, where a leaked document is
248
- a betrayal — and that case shaped the defaults: fail-closed boundaries, no
249
- telemetry, no send path, agents without authority, disclosure as a recorded
250
- event. Other domains reuse the mechanics and define their own ontology,
251
- protocols, and boundary policies. Methodology authoring is the first
252
- application, not the ceiling.
253
-
254
- ## Build your own tool on it
338
+ ## Install and go deeper
255
339
 
256
- The Atelier is designed to be built on, under your name — including
257
- commercially. A distribution wraps the CLI under its own command,
258
- contributes a validated extension pack (branded protocols, terms,
259
- templates), and themes the projection, while the root contracts, guards,
260
- and conformance stay canonical underneath. Apache-2.0 makes commercial use
261
- a right, not a favor; the trademark policy keeps the name ours and the
262
- code yours. Start by copying the worked example:
263
-
264
- - `examples/loomworks-studio` — a complete fictional distribution: branded
265
- bin, extension pack, themed workspace template. It lives in this
266
- repository and deliberately never ships in the npm tarball.
267
- - [`docs/distributions.md`](docs/distributions.md) — the contract a
268
- distribution must honor.
269
- - `TRADEMARKS.md` — naming rules; Apache-2.0 grants code rights, not brand
270
- rights. Every distribution carries "powered by MNSTRY Atelier"
271
- attribution, checked by `atelier distribution check`.
272
-
273
- ## Status
274
-
275
- - Version: `0.2.0-alpha.3`
276
- - Stability: alpha — contracts are under a compatibility gate from the
277
- `v0.2.0-alpha.0` epoch tag onward; everything else may still move
278
- - Runtime: Node.js `>=22.18.0 <23`
279
- - Dependencies: ajv, ajv-formats (JSON Schema validation); nothing else at
280
- runtime
281
- - Distribution: `@mnstry/atelier@0.2.0-alpha.3` on npm, published from the
282
- `v0.2.0-alpha.3` tag. The `v0.2.0-alpha.0` tag is the contract epoch
283
- marker, not an install target — it predates the current tree. The version
284
- `0.2.0` was published in error and unpublished the same day; that number
285
- is permanently retired on npm and will never be reused.
286
- - Telemetry: none. Network egress: none, with one documented exception —
287
- see "Claims you can check" above.
288
-
289
- ## Command reference
290
-
291
- Commands below use the `atelier` form, which is what an installed
292
- workspace sees; from outside a workspace, invoke the same commands as
293
- `npx mnstry-atelier`.
340
+ Node.js `>=22.18.0 <23` is required. Pin the prerelease while the package
341
+ remains in alpha:
294
342
 
295
343
  ```bash
296
- atelier dry-run ./atelier-export.json
297
- atelier contract check
298
- atelier graph --project ./atelier.project.json
299
- atelier project --project ./atelier.project.json
300
- atelier readiness --project ./atelier.project.json
301
- atelier readiness protocols
302
- atelier readiness journey --project ./atelier.project.json
303
- atelier readiness run mnstry.readiness:identity-map --project ./atelier.project.json
304
- atelier readiness packet --project ./atelier.project.json
305
- atelier readiness export --dry-run --project ./atelier.project.json
306
- atelier boundary check --project ./atelier.project.json
307
- atelier boundary check --staged --project ./atelier.project.json
308
- atelier boundary install-hooks --project ./atelier.project.json
309
- atelier promote --source-repo tenant-private-domain --target-repo project-alpha --kg-id tenant-private-domain:seed
310
- atelier lock write --project ./atelier.project.json
311
- atelier lock check --project ./atelier.project.json
312
- atelier upgrade --dry-run --project ./atelier.project.json
313
- atelier upgrade --apply --project ./atelier.project.json --branch codex/atelier-upgrade-YYYYMMDD
314
- atelier extension-pack validate --project ./atelier.project.json
315
- atelier attestation verify ./attestation.json
316
- atelier feedback create --message "what happened"
317
- atelier announcements list
318
- atelier distribution check --target ./my-distribution
319
- atelier dev --project ./atelier.project.json
344
+ npm install --save-dev @mnstry/atelier@0.2.0-alpha.5
345
+ ```
346
+
347
+ Then choose the path that matches what you are building:
348
+
349
+ - [Installation and first run](./docs/install.md)
350
+ - [Design and architecture](./docs/design.md)
351
+ - [Knowledge graph and source model](./docs/knowledge-graph.md)
352
+ - [Local runtime and agent boundary](./docs/atelier-runtime.md)
353
+ - [Distribution contracts](./docs/distributions.md)
354
+ - [Conformance and attestation](./docs/attestation.md)
355
+ - [Continuity commitments](./docs/continuity.md)
356
+ - [Assurance controls and evidence map](./docs/assurance-controls.md)
357
+ - [Upgrade notes](./docs/upgrade.md)
358
+
359
+ ## Status and command reference
360
+
361
+ Current package: `@mnstry/atelier@0.2.0-alpha.5`.
362
+
363
+ The alpha package is usable and contract-tested, but its library API may still
364
+ change before a stable release. Pin the exact version in production toolchains.
365
+
366
+ ```text
367
+ atelier init
368
+ atelier adopt
369
+ atelier setup
370
+ atelier graph
371
+ atelier project
372
+ atelier build
373
+ atelier dev
374
+ atelier generated check
375
+ atelier config check
376
+ atelier extension-pack
377
+ atelier distribution check
378
+ atelier egress check
379
+ atelier boundary
380
+ atelier readiness
381
+ atelier export
382
+ atelier context flow
383
+ atelier support bundle
384
+ atelier feedback
385
+ atelier announcements
386
+ atelier attestation
387
+ atelier promote
388
+ atelier upgrade
389
+ atelier lock
320
390
  ```
321
391
 
322
- `upgrade --apply` creates or switches to the requested branch, refuses dirty
323
- authored repos, preserves unrelated user hooks through composed hook files,
324
- runs only registered migrations, refreshes generated projections, and leaves
325
- a Git commit for review. It will not weaken boundary policy, introduce
326
- telemetry, enable non-loopback egress, run model-assisted analysis, or
327
- write, import, or apply runtime state.
328
-
329
- `feedback create` writes a scanned, redaction-checked report to a local
330
- file — there is no send path; you choose whether and where to share it.
331
- `announcements list` verifies project-shipped announcements against a
332
- committed public key — pull-only, nothing phones home to ask
333
- ([`docs/announcements.md`](docs/announcements.md)).
334
-
335
- ## License and contributing
336
-
337
- Apache-2.0. See `LICENSE`, `NOTICE` (attribution obligations that survive
338
- forks), `TRADEMARKS.md` (naming), and `docs/continuity.md` (distribution
339
- continuity commitments).
340
-
341
- Issues and questions are welcome. Outside pull requests are not open yet —
342
- a required CI check currently asserts maintainer commit identity — and
343
- `CONTRIBUTING.md` states that posture plainly, along with the
344
- inbound-equals-outbound Apache-2.0 terms and DCO sign-off that will govern
345
- contributions when they open. One expectation worth knowing before you run
346
- the suite: `npm test` from a fresh clone fails exactly one check by
347
- design — a release-lane protection whose private file is absent — and
348
- `CONTRIBUTING.md` explains the acknowledged-skip form.
392
+ Run `atelier --help` or `atelier <command> --help` for the current flags. The
393
+ full command behavior is also covered by the package's executable tests.
394
+
395
+ ## Contributing and license
396
+
397
+ Contributions are welcome through [the contribution guide](./CONTRIBUTING.md).
398
+ MNSTRY Atelier is released under [Apache-2.0](./LICENSE).