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

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,40 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.0-alpha.3
4
+
5
+ Documentation and metadata release. No contract changes and no runtime
6
+ behaviour changes: documents valid against `0.2.0-alpha.0` remain valid.
7
+
8
+ - **The package's promises are now under a gate.** The checkable claims,
9
+ the will-not-do list, the conformance/admission separation, and the
10
+ audience/visibility rule live canonically in `docs/blocks/`, the README
11
+ embeds them verbatim between markers, and a test fails when they drift.
12
+ Promises converge by machinery; framing diverges by audience.
13
+ - **The README is restructured as a depth ramp** — category and trust
14
+ posture first, the working loop with its visible result second, the
15
+ checkable claims third, boundaries fourth, architecture fifth, reference
16
+ last — and a new "Where the Atelier stops" section states the boundary
17
+ with MNSTRY's managed platform as a literal table.
18
+ - **Overbroad claims are corrected.** "Trustworthy enough for whatever you
19
+ govern with it" is gone from the README and `docs/design.md` — controls
20
+ shaped for one demanding case do not establish adequacy everywhere; the
21
+ agent-runtime passage now states the narrow, testable control rather
22
+ than a general safety claim; "does not contact external services" now
23
+ carries its documented `gh` exception inline; contract and test counts
24
+ are stated by command, not by number; the contributions text now matches
25
+ `CONTRIBUTING.md`'s outside-PRs-not-open-yet posture; and
26
+ `docs/continuity.md` speaks of npm publication in the present tense.
27
+ - **`npx` examples use the collision-free `mnstry-atelier` form.** The
28
+ unscoped npm name `atelier` belongs to an unrelated third-party package,
29
+ so a bare `npx atelier` outside an installed workspace runs someone
30
+ else's code. Every `npx` example on every surface now uses the branded
31
+ binary, `atelier` remains the documented command inside installed
32
+ workspaces, and `docs/install.md` no longer calls `mnstry-atelier` a
33
+ legacy alias — it is the safe form.
34
+ - **npm metadata describes the package from the outside.** A concrete
35
+ description, registry keywords, and a homepage that resolves to the
36
+ published documentation page.
37
+
3
38
  ## 0.2.0-alpha.2
4
39
 
5
40
  Documentation and release-lane release. No contract changes and no runtime
package/README.md CHANGED
@@ -1,33 +1,41 @@
1
1
  # MNSTRY Atelier
2
2
 
3
- **Author your methodology once, in files you own, in a form machines can
4
- validate and runtimes can honor.**
5
-
6
- A methodology that creates real transformation cannot scale through static
7
- content, generic AI, or manual labor. Scaling it means giving it a form
8
- machines can carry and most tools do that by taking the work into their
9
- platform, their format, their database, where it stops being fully yours.
10
- The Atelier answers the same problem the other way around.
11
-
12
- The Atelier is a local-first toolkit for authoring a body of work as
13
- structured documents machines can validate plain files, in your own Git
14
- repositories, on your machine, under your control. You author primitives,
15
- sources, and offers; the Atelier builds a knowledge graph over them,
16
- projects a local review surface, checks readiness against published
17
- protocols, and validates exports against public contracts. There is no
18
- telemetry and no send path, and the commands that prove the package's
19
- promises are further down this page.
20
-
21
- It is built for methodology holders and the studios that serve them. The
22
- MNSTRY runtime the governed platform for identity, consent, visibility,
23
- provisioning, bookings, commerce, sessions, audit, and client-grade
24
- sharing is a separate, optional destination. The Atelier is the front
25
- porch, not the house: everything here works without ever talking to MNSTRY.
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.
20
+
21
+ ```bash
22
+ npm install --save-dev @mnstry/atelier@0.2.0-alpha.3
23
+ npx mnstry-atelier init --fixture=sample-workspace --target ./sample
24
+ npx mnstry-atelier graph --project ./sample/atelier.project.json
25
+ ```
26
+
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.
26
34
 
27
35
  ## What authoring looks like
28
36
 
29
- A source document is a plain file with a small structured header. This is a
30
- complete, working example — fictional, like every fixture in this package:
37
+ Here is a complete, working source document fictional, like every
38
+ fixture in this package:
31
39
 
32
40
  ```markdown
33
41
  ---
@@ -49,93 +57,35 @@ The practice itself, in your words, in your file, in your repository.
49
57
 
50
58
  That header is the entire enrollment. The graph builder reads front matter
51
59
  like this, and `.kg.json` sidecars for files that are not Markdown — JSON,
52
- YAML, CSV, media, anything — without ever parsing the foreign format. From
53
- there the working loop is four commands:
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:
54
63
 
55
64
  ```bash
56
- atelier graph --project ./atelier.project.json # build the knowledge graph
57
- atelier project --project ./atelier.project.json # generate the local review surface
58
- atelier readiness --project ./atelier.project.json # check against published protocols
59
- atelier dry-run ./atelier-export.json # validate against the public contracts
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
60
69
  ```
61
70
 
62
- Each one reads local files and writes local files. The `audience` field in
63
- the header is the load-bearing word: it declares who a source is written
64
- for (`public`, `team`, `operator`, `staff`, `private`, `sensitive`), and
65
- the machinery downstream refuses to let material travel further than its
66
- audience allows. A public export that references a non-public source is
67
- rejected — that check is fixture-pinned and mutation-tested.
68
-
69
- ## The system
70
-
71
- Git is the database. The ontology is the schema. The validators are the
72
- constraints. The runtime is local. The design is five movements, each
73
- grounded in shipped machinery [docs/design.md](docs/design.md) states
74
- them in full, ending each one with the command that proves it:
75
-
76
- **A repository with an ontology.** Front matter — or a `.kg.json` sidecar
77
- beside any format the kit never parses — declares a file's identity, type,
78
- audience, and relations. The graph builder compiles the repository into a
79
- deterministic knowledge graph. No import step, no database: the repository
80
- is the store, and Git is the history, the review process, and the read
81
- boundary.
82
-
83
- **Rules that refuse.** Eighteen contracts under a compatibility epoch
84
- define the vocabulary; fail-closed validators enforce it. A public export
85
- that references a non-public source is rejected — fixture-pinned and
86
- mutation-tested — and dry-run reports are deterministic: `accepted`,
87
- `importable`, `worstOperationStatus`. Twelve bundled claim-first readiness
88
- protocols check the work against published criteria and produce proposed
89
- claims, never runtime mutations.
90
-
91
- **Collaboration as governed disclosure.** Private-domain and shared-project
92
- repos have enforced roles: the boundary guard fails closed when private or
93
- sensitive material lands in shared space, when protected local files are
94
- staged, or when private-domain material appears in shared work without a
95
- recorded `git.promote` disclosure event. Disclosure is a commit, not an
96
- accident. Change to the machinery itself is governed the same way — the
97
- lockfile records exactly what a workspace runs, and upgrades are
98
- branch-based, review-first, and refuse dirty repos.
99
-
100
- **A local runtime for humans and for agents.** The workspace projects two
101
- ways: a generated review surface over a loopback-only sidecar for humans,
102
- and session-bound context and capability envelopes for agent harnesses — a
103
- governed view with proposals recorded as metadata and no apply endpoints.
104
- Context without authority. Neutral Claude and Codex skill wrappers ship in
105
- the package.
106
-
107
- **A platform for your own tool.** A distribution wraps the CLI under your
108
- own name, contributes a validated extension pack, and themes the
109
- projection, while the root contracts, guards, and conformance stay
110
- canonical underneath — commercially if you want. See "Build your own tool
111
- on it" below.
112
-
113
- Methodology authoring is the first application, not the ceiling. MNSTRY
114
- built the Atelier to carry its own most demanding case — private
115
- transformational work, where a leaked document is a betrayal — and a
116
- system trustworthy enough for that is trustworthy enough for whatever you
117
- govern with it.
118
-
119
- ## Quickstart
120
-
121
- ```bash
122
- npm install --save-dev @mnstry/atelier@0.2.0-alpha.2
123
-
124
- npx atelier init --fixture=sample-workspace --target ./sample
125
- npx atelier graph --project ./sample/atelier.project.json
126
- npx atelier project --project ./sample/atelier.project.json
127
- npx atelier readiness --project ./sample/atelier.project.json
128
- MNSTRY_ATELIER_ACTOR=owner npx atelier boundary check --project ./sample/atelier.project.json
129
- npx atelier dev --project ./sample/atelier.project.json
130
- ```
131
-
132
- `npx` here runs the binary already installed in `./node_modules/.bin`. Always
133
- install first, and keep the `@mnstry/` scope — the unscoped name `atelier`
134
- belongs to an unrelated third-party package.
135
-
136
- `init` scaffolds a fictional sample workspace, `graph` builds the knowledge
137
- graph from front matter and sidecars, `project` generates the local review
138
- surface, `dev` serves it on loopback only. From there:
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.
75
+
76
+ <!-- atelier:block:audience-visibility:start -->
77
+ The `audience` field in the header is the load-bearing word. It declares who
78
+ a source is written for — `public`, `team`, `operator`, `staff`, `private`,
79
+ or `sensitive` — and the machinery downstream refuses to let material travel
80
+ further than its audience allows. Runtime and export `visibility` is a
81
+ separate vocabulary (`private`, `shared`, `platform`, `public`) describing
82
+ runtime exposure, and the validators reject every crossing between the two.
83
+ Above all: a public export that references a source whose audience is not
84
+ public is refused. That check is fixture-pinned and mutation-tested —
85
+ deleting its enforcement fails tests, not documentation.
86
+ <!-- atelier:block:audience-visibility:end -->
87
+
88
+ The same machinery is a library:
139
89
 
140
90
  ```js
141
91
  import { validateAtelierExportDryRun } from '@mnstry/atelier'
@@ -145,26 +95,12 @@ console.log(report.accepted, report.importable, report.errors)
145
95
  ```
146
96
 
147
97
  Real projects start from the `private-domain`, `shared-project`, or
148
- `distribution` templates instead of the sample fixture.
149
-
150
- ## Status
151
-
152
- - Version: `0.2.0-alpha.2`
153
- - Stability: alpha — contracts are under a compatibility gate from the
154
- `v0.2.0-alpha.0` epoch tag onward; everything else may still move
155
- - Runtime: Node.js `>=22.18.0 <23`
156
- - Dependencies: ajv, ajv-formats (JSON Schema validation); nothing else at
157
- runtime
158
- - Distribution: `@mnstry/atelier@0.2.0-alpha.2` on npm, published from the
159
- `v0.2.0-alpha.2` tag. The `v0.2.0-alpha.0` tag is the contract epoch
160
- marker, not an install target — it predates the current tree. The version
161
- `0.2.0` was published in error and unpublished the same day; that number
162
- is permanently retired on npm and will never be reused.
163
- - Telemetry: none. Network egress: none, with one documented exception —
164
- see "Nothing leaves your machine" below.
98
+ `distribution` templates instead of the sample fixture
99
+ [`docs/install.md`](docs/install.md) is the full install guide.
165
100
 
166
101
  ## Claims you can check
167
102
 
103
+ <!-- atelier:block:claims:start -->
168
104
  This package makes three promises. None of them asks for your trust — each
169
105
  one names the command that proves it.
170
106
 
@@ -210,27 +146,110 @@ atelier dry-run ./atelier-export.json
210
146
  `docs/continuity.md` records the distribution commitments behind these
211
147
  claims, including the perpetual Apache-2.0 grant on every tagged release you
212
148
  receive.
149
+ <!-- atelier:block:claims:end -->
213
150
 
214
- ## What this package will not do
151
+ ## What it will not do
215
152
 
153
+ <!-- atelier:block:will-not-do:start -->
216
154
  - It does not write to a MNSTRY runtime database.
217
155
  - It does not import, provision, publish, or send anything.
218
- - It does not contact external services.
156
+ - Except for the documented `gh` actor-resolution fallback, it initiates no
157
+ external network requests.
219
158
  - It does not execute model-assisted analysis or any model provider.
220
159
  - It does not include client project content.
221
160
 
222
161
  These limits are the design. An authoring tool for private material earns
223
162
  trust by what it refuses to be able to do.
163
+ <!-- atelier:block:will-not-do:end -->
164
+
165
+ ## Conformance is public, admission is separate
166
+
167
+ <!-- atelier:block:conformance-admission:start -->
168
+ The Atelier export format is MNSTRY's format, offered openly.
169
+
170
+ **Anyone can check a document against the published contracts, forever,
171
+ offline.** The contracts, fixtures, and dry-run validator all ship in the
172
+ package, so conformance needs no account, no network, and no MNSTRY
173
+ involvement.
174
+
175
+ Admission is a narrower, opt-in decision: whether a MNSTRY governed runtime
176
+ accepts a document for delivery to the people it serves. That is what
177
+ admission buys — delivery through a runtime that enforces consent and
178
+ visibility at serve time — and it takes the form of a signed MNSTRY
179
+ attestation against criteria this package publishes (`docs/attestation.md`).
180
+ The criteria are public, the checker is private, and the rejection message
181
+ is part of the contract. You can build on the Atelier without ever talking
182
+ to MNSTRY, and a document MNSTRY declines can still be fully conformant.
183
+ <!-- atelier:block:conformance-admission:end -->
184
+
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.
224
213
 
225
- ## Your documents and the boundary
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.
226
244
 
227
- What you author is yours. Documents live in your repositories, in formats you
228
- chose, readable without this tool. The one vocabulary the contracts enforce:
229
- `audience` describes local source readership (`public`, `team`, `operator`,
230
- `staff`, `private`, `sensitive`); runtime/export `visibility` describes
231
- runtime exposure and accepts only `private`, `shared`, `platform`, or
232
- `public`. A public export referencing a source whose audience is not public
233
- is refused that check is fixture-pinned and mutation-tested.
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.
234
253
 
235
254
  ## Build your own tool on it
236
255
 
@@ -245,52 +264,34 @@ code yours. Start by copying the worked example:
245
264
  - `examples/loomworks-studio` — a complete fictional distribution: branded
246
265
  bin, extension pack, themed workspace template. It lives in this
247
266
  repository and deliberately never ships in the npm tarball.
248
- - `docs/distributions.md` — the contract a distribution must honor.
267
+ - [`docs/distributions.md`](docs/distributions.md) — the contract a
268
+ distribution must honor.
249
269
  - `TRADEMARKS.md` — naming rules; Apache-2.0 grants code rights, not brand
250
- rights. Every distribution carries "powered by MNSTRY Atelier" attribution,
251
- checked by `atelier distribution check`.
252
-
253
- ## The MNSTRY relationship
254
-
255
- The Atelier export format is MNSTRY's format, offered openly. Conformance —
256
- is this document valid against the published contracts? — is public,
257
- offline, and free, forever. Admission — will MNSTRY's governed runtime
258
- accept it for delivery to clients? — is a separate, opt-in step: a signed
259
- attestation issued by MNSTRY against criteria this package publishes
260
- (`docs/attestation.md`). The criteria are public; the checker is private;
261
- the rejection message is part of the contract. You can build on the Atelier
262
- without ever talking to MNSTRY, and a document MNSTRY declines can still be
263
- fully conformant.
264
-
265
- ## Feedback and announcements
266
-
267
- Both channels respect consent by construction. `atelier feedback` writes a
268
- scanned, redaction-checked report to a local file — there is no send path;
269
- you choose whether and where to share it. `announcements list` verifies
270
- project-shipped announcements against a committed public key — pull-only,
271
- nothing phones home to ask.
272
-
273
- ## Running the test suite from a fresh clone
270
+ rights. Every distribution carries "powered by MNSTRY Atelier"
271
+ attribution, checked by `atelier distribution check`.
274
272
 
275
- `npm test` includes one fail-closed check that expects a private denylist
276
- file (`release-denylist.local.json`, gitignored) used by MNSTRY's release
277
- lane. On a fresh clone that file is absent, so the check **fails** — it never
278
- passes silently on missing protection. Expect this, after `npm install`:
279
-
280
- ```bash
281
- npm install
282
- npm test # 510 tests: 509 pass, 1 fail — the denylist check, by design
283
- ```
284
-
285
- To acknowledge the missing file and run the rest, which turns that failure
286
- into a recorded skip:
273
+ ## Status
287
274
 
288
- ```bash
289
- ATELIER_ALLOW_MISSING_DENYLIST=1 npm test # 509 pass, 0 fail, 1 skipped
290
- ```
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.
291
288
 
292
289
  ## Command reference
293
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`.
294
+
294
295
  ```bash
295
296
  atelier dry-run ./atelier-export.json
296
297
  atelier contract check
@@ -322,20 +323,26 @@ atelier dev --project ./atelier.project.json
322
323
  authored repos, preserves unrelated user hooks through composed hook files,
323
324
  runs only registered migrations, refreshes generated projections, and leaves
324
325
  a Git commit for review. It will not weaken boundary policy, introduce
325
- telemetry, enable non-localhost egress, run model-assisted analysis, or write/import/apply
326
- runtime state.
327
-
328
- ## Sample fixtures
326
+ telemetry, enable non-loopback egress, run model-assisted analysis, or
327
+ write, import, or apply runtime state.
329
328
 
330
- Fixtures in this package are fictional and generic. Project-specific adapter
331
- fixtures belong in their project repositories, not in the published Atelier
332
- package.
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)).
333
334
 
334
335
  ## License and contributing
335
336
 
336
337
  Apache-2.0. See `LICENSE`, `NOTICE` (attribution obligations that survive
337
338
  forks), `TRADEMARKS.md` (naming), and `docs/continuity.md` (distribution
338
- continuity commitments). Contributions are accepted under inbound-equals-
339
- outbound Apache-2.0 with a DCO sign-off — `CONTRIBUTING.md` is the working
340
- agreement, including how to contribute without exposing client material or
341
- your own private methodology.
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.
@@ -0,0 +1,9 @@
1
+ The `audience` field in the header is the load-bearing word. It declares who
2
+ a source is written for — `public`, `team`, `operator`, `staff`, `private`,
3
+ or `sensitive` — and the machinery downstream refuses to let material travel
4
+ further than its audience allows. Runtime and export `visibility` is a
5
+ separate vocabulary (`private`, `shared`, `platform`, `public`) describing
6
+ runtime exposure, and the validators reject every crossing between the two.
7
+ Above all: a public export that references a source whose audience is not
8
+ public is refused. That check is fixture-pinned and mutation-tested —
9
+ deleting its enforcement fails tests, not documentation.
@@ -0,0 +1,45 @@
1
+ This package makes three promises. None of them asks for your trust — each
2
+ one names the command that proves it.
3
+
4
+ **Nothing leaves your machine, with one exception you can see.** There is no
5
+ telemetry, no update check, no crash reporting, and no send path anywhere in
6
+ the package. The exception: when no actor is configured, `boundary check` and
7
+ `doctor` fall back to the `gh` CLI to resolve your GitHub login, which is an
8
+ authenticated request to GitHub made with your own credentials. Set
9
+ `MNSTRY_ATELIER_ACTOR` and that path is never taken. The only network client
10
+ refuses non-loopback URLs, the served pages carry a policy that authorizes no
11
+ external origin, and a fail-closed gate scans the executable and markup files
12
+ under `src/`, `bin/`, `scripts/`, and `examples/` for egress primitives. Two
13
+ limits worth stating plainly: the gate does not read the `.json` and `.md`
14
+ files under `templates/` and `skills/`, and it does not model
15
+ `child_process`, which is why the `gh` fallback above does not trip it:
16
+
17
+ ```bash
18
+ npm run egress:check
19
+ ```
20
+
21
+ **Compatibility is checked by machinery, not memory.** Documents valid
22
+ against the `v0.2.0-alpha.0` contracts stay valid: every change is checked
23
+ against the baseline tag's validators, and schema widening outside `ext`
24
+ containers is refused by a schema-vs-schema differ. Breaking changes require
25
+ a new contract version and a recorded migration. Known limit: the differ
26
+ compares schemas structurally and does not resolve `$ref` pointers, so a
27
+ `$ref` retargeted at a looser definition is not caught by this gate — the
28
+ fixture tests catch that for contracts with negative fixtures, and closing
29
+ the gap in the differ is tracked work:
30
+
31
+ ```bash
32
+ npm run contract:compat
33
+ ```
34
+
35
+ **Conformance works offline, forever.** Validating a document against the
36
+ published contracts needs this package and nothing else — no account, no
37
+ service, no network:
38
+
39
+ ```bash
40
+ atelier dry-run ./atelier-export.json
41
+ ```
42
+
43
+ `docs/continuity.md` records the distribution commitments behind these
44
+ claims, including the perpetual Apache-2.0 grant on every tagged release you
45
+ receive.
@@ -0,0 +1,15 @@
1
+ The Atelier export format is MNSTRY's format, offered openly.
2
+
3
+ **Anyone can check a document against the published contracts, forever,
4
+ offline.** The contracts, fixtures, and dry-run validator all ship in the
5
+ package, so conformance needs no account, no network, and no MNSTRY
6
+ involvement.
7
+
8
+ Admission is a narrower, opt-in decision: whether a MNSTRY governed runtime
9
+ accepts a document for delivery to the people it serves. That is what
10
+ admission buys — delivery through a runtime that enforces consent and
11
+ visibility at serve time — and it takes the form of a signed MNSTRY
12
+ attestation against criteria this package publishes (`docs/attestation.md`).
13
+ The criteria are public, the checker is private, and the rejection message
14
+ is part of the contract. You can build on the Atelier without ever talking
15
+ to MNSTRY, and a document MNSTRY declines can still be fully conformant.
@@ -0,0 +1,9 @@
1
+ - It does not write to a MNSTRY runtime database.
2
+ - It does not import, provision, publish, or send anything.
3
+ - Except for the documented `gh` actor-resolution fallback, it initiates no
4
+ external network requests.
5
+ - It does not execute model-assisted analysis or any model provider.
6
+ - It does not include client project content.
7
+
8
+ These limits are the design. An authoring tool for private material earns
9
+ trust by what it refuses to be able to do.
@@ -21,10 +21,9 @@ NOTICE attribution obligation and the trademark limits in `TRADEMARKS.md`).
21
21
  tag you fetched, with full Apache-2.0 rights over it. MNSTRY will not ask
22
22
  for deletion of received tagged source and has no license mechanism to do
23
23
  so.
24
- 2. **npm publication at public release.** When the package's public flip
25
- happens, tagged releases will be published to the npm registry under
26
- `@mnstry/atelier` with public access, making the registry not repository
27
- permission — the distribution channel of record.
24
+ 2. **npm publication.** Tagged releases are published to the npm registry
25
+ under `@mnstry/atelier` with public access, making the registry — not
26
+ repository permission the distribution channel of record.
28
27
  3. **Contract compatibility by machinery.** From tag `v0.2.0-alpha.0`
29
28
  onward, the published contracts are under a compatibility gate
30
29
  (`npm run contract:compat`): documents valid against the baseline tag must
package/docs/design.md CHANGED
@@ -35,9 +35,10 @@ atelier graph --check --project ./atelier.project.json
35
35
 
36
36
  The ontology is not documentation. It is the enforcement mechanism.
37
37
 
38
- Eighteen JSON Schema contracts define the vocabulary — exports, project
39
- configuration, boundary policy, sidecars, locks, migrations, readiness,
40
- attestation — and fail-closed validators enforce it. The load-bearing
38
+ The JSON Schema contracts under `contracts/` define the vocabulary —
39
+ exports, project configuration, boundary policy, sidecars, locks,
40
+ migrations, readiness, attestation — and fail-closed validators enforce
41
+ it. The load-bearing
41
42
  separation is `audience` versus `visibility`: audience is local readership
42
43
  (`public`, `team`, `operator`, `staff`, `private`, `sensitive`), visibility
43
44
  is runtime authority (`private`, `shared`, `platform`, `public`), and the
@@ -103,9 +104,12 @@ without authority. Neutral Claude and Codex skill wrappers ship in the
103
104
  package, so a harness can do readiness review work against the workspace
104
105
  without a single line of custom glue.
105
106
 
106
- This is the honest answer to the question every team has right now: how do
107
- you put an agent inside private material safely? Not by trusting the
108
- agent by projecting a bounded view and making writing impossible.
107
+ This is a deliberately narrow answer to a broad question. It does not make
108
+ an agent safe around private material in general; it makes one surface
109
+ checkable: within the Atelier sidecar, a harness receives session-bound
110
+ context and can record proposals, and there is no apply endpoint and no
111
+ write authority to grant. A bounded view, with writing made impossible —
112
+ a testable control, not a trust exercise.
109
113
 
110
114
  ```bash
111
115
  atelier dev --project ./atelier.project.json
@@ -127,9 +131,11 @@ in one sitting: a wrapper bin, a pack, a themed workspace.
127
131
  Apache-2.0 makes commercial use a right, not a favor. The trademark policy
128
132
  keeps the name ours and the code yours: every distribution carries
129
133
  "powered by MNSTRY Atelier" attribution, and the check is a command, not a
130
- request. Contributions run inbound-equals-outbound with a DCO sign-off and
131
- no CLA — nobody, including MNSTRY, holds rights over your contribution
132
- that you do not also hold.
134
+ request. The contribution terms are inbound-equals-outbound with a DCO
135
+ sign-off and no CLA — nobody, including MNSTRY, holds rights over a
136
+ contribution that the contributor does not also hold. Outside pull
137
+ requests are not open yet; `CONTRIBUTING.md` states the posture and the
138
+ terms that will govern them when they open.
133
139
 
134
140
  ```bash
135
141
  atelier distribution check --target ./my-distribution
@@ -144,9 +150,10 @@ transformational work, where a leaked document is not a bug but a
144
150
  betrayal. That case set the bar — fail-closed boundaries, no telemetry, no
145
151
  send path, agents without authority, disclosure as a recorded event.
146
152
 
147
- A system trustworthy enough for that is trustworthy enough for whatever
148
- you govern with it: a research corpus, a client practice, an editorial
149
- pipeline, a body of work that must outlive the tools that touch it.
153
+ That case shaped the defaults. Other bodies of work a research corpus, a
154
+ client practice, an editorial pipeline, anything that must outlive the
155
+ tools that touch it reuse the mechanics, and each defines and validates
156
+ its own ontology, protocols, and boundary policies.
150
157
 
151
158
  The claims behind this page are stated precisely, with their known limits,
152
159
  in the README's "Claims you can check" — each with the command that proves
package/docs/install.md CHANGED
@@ -1,8 +1,9 @@
1
1
  # Install
2
2
 
3
- Repo Boundary Guard V1 is a local-first pattern for Atelier workspaces. It
4
- keeps private domain source in user-owned Git repositories and keeps shared
5
- project work in shared project repositories.
3
+ This is the install guide for Atelier workspaces. The workspace pattern it
4
+ installs Repo Boundary Guard V1 keeps private domain source in
5
+ user-owned Git repositories and keeps shared project work in shared project
6
+ repositories.
6
7
 
7
8
  ## Posture
8
9
 
@@ -16,32 +17,36 @@ Git repository access is the hard read boundary for source files. Local
16
17
  `kg.audience` labels guide projection and review, but they do not hide files
17
18
  from anyone who can read the repository.
18
19
 
19
- Use `atelier` as the primary CLI command in copied workspaces. The older
20
- `mnstry-atelier` binary is a legacy alias for compatibility.
20
+ Two command forms ship, and each has a place. Inside an installed
21
+ workspace, use `atelier` it resolves from `node_modules/.bin`, so npm
22
+ scripts and workspace shells get the real binary. From outside a
23
+ workspace, always use the branded `npx mnstry-atelier` form: the unscoped
24
+ npm name `atelier` belongs to an unrelated third-party package, so a bare
25
+ `npx atelier` outside a workspace runs someone else's code.
21
26
 
22
- ## Install Shape
27
+ ## Install shape
23
28
 
24
29
  The registry is the distribution channel of record, as `docs/continuity.md`
25
30
  commits:
26
31
 
27
32
  ```bash
28
- npm install --save-dev @mnstry/atelier@0.2.0-alpha.2
33
+ npm install --save-dev @mnstry/atelier@0.2.0-alpha.3
29
34
  ```
30
35
 
31
36
  Installing from the matching Git tag resolves to the same reviewed commit:
32
37
 
33
38
  ```bash
34
- npm install --save-dev "git+https://github.com/MNSTRY/atelier.git#v0.2.0-alpha.2"
39
+ npm install --save-dev "git+https://github.com/MNSTRY/atelier.git#v0.2.0-alpha.3"
35
40
  ```
36
41
 
37
42
  Or over SSH:
38
43
 
39
44
  ```bash
40
- npm install --save-dev "git+ssh://git@github.com/MNSTRY/atelier.git#v0.2.0-alpha.2"
45
+ npm install --save-dev "git+ssh://git@github.com/MNSTRY/atelier.git#v0.2.0-alpha.3"
41
46
  ```
42
47
 
43
- Keep the `@mnstry/` scope. The unscoped name `atelier` on npm belongs to an
44
- unrelated third-party package, so a bare `npx atelier` runs someone else's code.
48
+ Keep the `@mnstry/` scope see the command-form note above for why the
49
+ unscoped name is dangerous.
45
50
 
46
51
  Do not install from `v0.2.0-alpha.0`. That tag is the **contract epoch
47
52
  marker** — `contracts/compat-baseline.json` pins the compatibility gate to it,
@@ -68,7 +73,7 @@ github.com/<org>/project-shared-library
68
73
  The repository names above are examples. Create and permission repositories in
69
74
  GitHub or your internal Git host before pointing Atelier at them.
70
75
 
71
- ## Tenant Workspace Example
76
+ ## Tenant workspace example
72
77
 
73
78
  Default placeholder shape:
74
79
 
@@ -82,7 +87,7 @@ values only inside the copied private workspace or through initializer flags.
82
87
  The example repositories are placeholders, not repositories created by this
83
88
  package release.
84
89
 
85
- ## Local Setup
90
+ ## Local setup
86
91
 
87
92
  Copy one of the starter templates:
88
93
 
@@ -128,7 +133,7 @@ atelier readiness export --dry-run --project ./atelier.project.json
128
133
 
129
134
  These commands read local files and write generated local outputs only.
130
135
 
131
- ## Upgrade Path
136
+ ## Upgrade path
132
137
 
133
138
  The starter commands create `atelier.lock.json` inside the copied workspace so
134
139
  the installed Atelier package source, version, contracts, and migration state
package/docs/upgrade.md CHANGED
@@ -5,6 +5,19 @@ workspace between Atelier package releases. The flow is local-only: it does not
5
5
  provision repositories, contact a Git host, mutate the MNSTRY runtime, or write
6
6
  through a browser view.
7
7
 
8
+ ## Upgrading to 0.2.0-alpha.3
9
+
10
+ No contract changes and no runtime behaviour changes: documents valid against
11
+ `0.2.0-alpha.0` remain valid, and `npm run contract:compat` is clean against
12
+ the same epoch baseline. Upgrading is a dependency bump.
13
+
14
+ One thing worth knowing, because it changes what you type. Outside an
15
+ installed workspace, use `npx mnstry-atelier` rather than `npx atelier`: the
16
+ unscoped npm name `atelier` belongs to an unrelated third-party package, so a
17
+ bare `npx atelier` there runs someone else's code. Inside an installed
18
+ workspace both names resolve from `node_modules/.bin`, so npm scripts and
19
+ workspace shells need no change.
20
+
8
21
  ## Upgrading to 0.2.0-alpha.2
9
22
 
10
23
  No contract changes and no runtime behaviour changes: documents valid against
@@ -72,16 +85,16 @@ For registry installs, pin the exact version and record the resolved version
72
85
  in the lockfile:
73
86
 
74
87
  ```bash
75
- npm install --save-dev @mnstry/atelier@0.2.0-alpha.2
76
- npx atelier lock write --project ./atelier.project.json
88
+ npm install --save-dev @mnstry/atelier@0.2.0-alpha.3
89
+ npx mnstry-atelier lock write --project ./atelier.project.json
77
90
  ```
78
91
 
79
92
  For Git installs, pin the release tag rather than a branch, so the lock file
80
93
  records exactly what was reviewed:
81
94
 
82
95
  ```bash
83
- npm install --save-dev "git+https://github.com/MNSTRY/atelier.git#v0.2.0-alpha.2"
84
- npx atelier lock write --project ./atelier.project.json
96
+ npm install --save-dev "git+https://github.com/MNSTRY/atelier.git#v0.2.0-alpha.3"
97
+ npx mnstry-atelier lock write --project ./atelier.project.json
85
98
  ```
86
99
 
87
100
  Before accepting upstream changes, run the non-mutating upgrade planner:
package/package.json CHANGED
@@ -1,8 +1,22 @@
1
1
  {
2
2
  "name": "@mnstry/atelier",
3
- "version": "0.2.0-alpha.2",
3
+ "version": "0.2.0-alpha.3",
4
4
  "private": false,
5
- "description": "Local-first MNSTRY Atelier workspace for agentic authoring, graph projection, and dry-run runtime readiness.",
5
+ "description": "Local CLI that compiles a Git repository into a validated knowledge graph — front-matter ontology, fail-closed audience boundaries, offline contract conformance. No telemetry, no service, no account.",
6
+ "keywords": [
7
+ "knowledge-graph",
8
+ "ontology",
9
+ "front-matter",
10
+ "local-first",
11
+ "json-schema",
12
+ "validation",
13
+ "provenance",
14
+ "governance",
15
+ "markdown",
16
+ "cli",
17
+ "agent-context",
18
+ "offline"
19
+ ],
6
20
  "type": "module",
7
21
  "bin": {
8
22
  "atelier": "bin/atelier.mjs",
@@ -65,7 +79,7 @@
65
79
  "type": "git",
66
80
  "url": "git+https://github.com/MNSTRY/atelier.git"
67
81
  },
68
- "homepage": "https://mnstry.org",
82
+ "homepage": "https://docs.mnstry.ai/public-product/developers/atelier",
69
83
  "bugs": {
70
84
  "url": "https://github.com/MNSTRY/atelier/issues"
71
85
  },