@mnstry/atelier 0.2.0-alpha.1 → 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 +60 -0
- package/README.md +242 -156
- package/docs/blocks/audience-visibility.md +9 -0
- package/docs/blocks/claims.md +45 -0
- package/docs/blocks/conformance-admission.md +15 -0
- package/docs/blocks/will-not-do.md +9 -0
- package/docs/continuity.md +3 -4
- package/docs/design.md +161 -0
- package/docs/install.md +19 -14
- package/docs/upgrade.md +28 -5
- package/package.json +17 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,65 @@
|
|
|
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
|
+
|
|
38
|
+
## 0.2.0-alpha.2
|
|
39
|
+
|
|
40
|
+
Documentation and release-lane release. No contract changes and no runtime
|
|
41
|
+
behaviour changes: documents valid against `0.2.0-alpha.0` remain valid.
|
|
42
|
+
|
|
43
|
+
- **The README is rebuilt around the system rather than its first
|
|
44
|
+
application.** New `docs/design.md` states the design in five movements —
|
|
45
|
+
a repository with an ontology, rules that refuse, collaboration as governed
|
|
46
|
+
disclosure, a local runtime for humans and for agents, and a platform for
|
|
47
|
+
your own tool — each ending with the command that proves it. Methodology
|
|
48
|
+
authoring is stated as the first application, not the ceiling.
|
|
49
|
+
- **Publishing is automated on tag push** via npm trusted publishing (OIDC),
|
|
50
|
+
so releases carry a provenance attestation and no registry token is stored
|
|
51
|
+
anywhere. Two fail-closed guards: the tagged commit must be an ancestor of
|
|
52
|
+
`main`, and the tag must equal `package.json`'s version.
|
|
53
|
+
- **The disclosure scanner no longer flags the OIDC permission key.**
|
|
54
|
+
`id-token` is a GitHub Actions permission, not a credential; the exemption
|
|
55
|
+
is the literal `id-` prefix only, and every other compound still matches.
|
|
56
|
+
- **`0.2.0` was published in error and unpublished the same day.** A
|
|
57
|
+
`npm version patch` against an alpha resolves the prerelease to `0.2.0`
|
|
58
|
+
rather than advancing it, and `git push --follow-tags` delivered the tag
|
|
59
|
+
even though branch protection rejected the commit, so a release published
|
|
60
|
+
from a commit that never landed on `main`. That number is permanently
|
|
61
|
+
retired on npm. The ancestry guard above exists so this cannot recur.
|
|
62
|
+
|
|
3
63
|
## 0.2.0-alpha.1
|
|
4
64
|
|
|
5
65
|
First release published to the npm registry, under `@mnstry/atelier` with
|
package/README.md
CHANGED
|
@@ -1,35 +1,106 @@
|
|
|
1
1
|
# MNSTRY Atelier
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
builds a knowledge graph over
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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.
|
|
16
20
|
|
|
17
|
-
|
|
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
|
+
```
|
|
18
26
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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.
|
|
34
|
+
|
|
35
|
+
## What authoring looks like
|
|
36
|
+
|
|
37
|
+
Here is a complete, working source document — fictional, like every
|
|
38
|
+
fixture in this package:
|
|
39
|
+
|
|
40
|
+
```markdown
|
|
41
|
+
---
|
|
42
|
+
title: "Grounding practice"
|
|
43
|
+
summary: "The opening practice every offer in this catalog builds on."
|
|
44
|
+
kg:
|
|
45
|
+
id: "my-studio:grounding-practice"
|
|
46
|
+
type: "document"
|
|
47
|
+
status: "active"
|
|
48
|
+
audience: "team"
|
|
49
|
+
relations:
|
|
50
|
+
supports: "my-studio:flagship-offer"
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
# Grounding practice
|
|
54
|
+
|
|
55
|
+
The practice itself, in your words, in your file, in your repository.
|
|
56
|
+
```
|
|
57
|
+
|
|
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:
|
|
63
|
+
|
|
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
|
+
```
|
|
70
|
+
|
|
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:
|
|
89
|
+
|
|
90
|
+
```js
|
|
91
|
+
import { validateAtelierExportDryRun } from '@mnstry/atelier'
|
|
92
|
+
|
|
93
|
+
const report = validateAtelierExportDryRun(exportDocument)
|
|
94
|
+
console.log(report.accepted, report.importable, report.errors)
|
|
95
|
+
```
|
|
96
|
+
|
|
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.
|
|
30
100
|
|
|
31
101
|
## Claims you can check
|
|
32
102
|
|
|
103
|
+
<!-- atelier:block:claims:start -->
|
|
33
104
|
This package makes three promises. None of them asks for your trust — each
|
|
34
105
|
one names the command that proves it.
|
|
35
106
|
|
|
@@ -75,143 +146,152 @@ atelier dry-run ./atelier-export.json
|
|
|
75
146
|
`docs/continuity.md` records the distribution commitments behind these
|
|
76
147
|
claims, including the perpetual Apache-2.0 grant on every tagged release you
|
|
77
148
|
receive.
|
|
149
|
+
<!-- atelier:block:claims:end -->
|
|
78
150
|
|
|
79
|
-
##
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
npm install --save-dev @mnstry/atelier@0.2.0-alpha.1
|
|
83
|
-
|
|
84
|
-
npx atelier init --fixture=sample-workspace --target ./sample
|
|
85
|
-
npx atelier graph --project ./sample/atelier.project.json
|
|
86
|
-
npx atelier project --project ./sample/atelier.project.json
|
|
87
|
-
npx atelier readiness --project ./sample/atelier.project.json
|
|
88
|
-
MNSTRY_ATELIER_ACTOR=owner npx atelier boundary check --project ./sample/atelier.project.json
|
|
89
|
-
npx atelier dev --project ./sample/atelier.project.json
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
`npx` here runs the binary already installed in `./node_modules/.bin`. Always
|
|
93
|
-
install first, and keep the `@mnstry/` scope — the unscoped name `atelier`
|
|
94
|
-
belongs to an unrelated third-party package.
|
|
95
|
-
|
|
96
|
-
`init` scaffolds a fictional sample workspace, `graph` builds the knowledge
|
|
97
|
-
graph from front matter and sidecars, `project` generates the local review
|
|
98
|
-
surface, `dev` serves it on loopback only. From there:
|
|
99
|
-
|
|
100
|
-
```js
|
|
101
|
-
import { validateAtelierExportDryRun } from '@mnstry/atelier'
|
|
102
|
-
|
|
103
|
-
const report = validateAtelierExportDryRun(exportDocument)
|
|
104
|
-
console.log(report.accepted, report.importable, report.errors)
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
Real projects start from the `private-domain`, `shared-project`, or
|
|
108
|
-
`distribution` templates instead of the sample fixture.
|
|
109
|
-
|
|
110
|
-
## What this package does
|
|
111
|
-
|
|
112
|
-
- Initializes neutral local Atelier projects.
|
|
113
|
-
- Builds a front-matter and sidecar-led knowledge graph; a `.kg.json` sidecar
|
|
114
|
-
enrolls any file — Markdown, JSON, YAML, CSV, media — without the kit ever
|
|
115
|
-
parsing the foreign format.
|
|
116
|
-
- Generates and serves a local GUI projection over a loopback-only sidecar.
|
|
117
|
-
- Produces agent-harness context and capability envelopes, and ships neutral
|
|
118
|
-
Codex and Claude skill wrappers for readiness review work.
|
|
119
|
-
- Records proposal metadata without browser apply/write endpoints.
|
|
120
|
-
- Enforces the local source `audience` and runtime `visibility` boundary, and
|
|
121
|
-
rejects unresolved, disguised, or non-public-projectable source references.
|
|
122
|
-
- Enforces Repo Boundary Guard V1 for private domain and shared project
|
|
123
|
-
repos: strict policies fail closed when private or sensitive source is
|
|
124
|
-
placed in a shared repo, when protected local files are staged, or when
|
|
125
|
-
private-domain material appears in shared work without a `git.promote`
|
|
126
|
-
disclosure record.
|
|
127
|
-
- Validates `atelier-export@v1` JSON against the published schema and
|
|
128
|
-
produces deterministic dry-run reports with `accepted`, `importable`, and
|
|
129
|
-
`worstOperationStatus`.
|
|
130
|
-
- Ships the bundled `mnstry-readiness-pack@v1` with twelve claim-first
|
|
131
|
-
readiness protocols, extensible through validated extension packs.
|
|
132
|
-
- Writes and checks `atelier.lock.json`, and applies branch-based,
|
|
133
|
-
review-first upgrades that refuse dirty repos and never silently overwrite
|
|
134
|
-
authored content.
|
|
135
|
-
- Checks first-party source, templates, and examples for forbidden
|
|
136
|
-
non-localhost egress — a fail-closed discipline gate over this repo's own
|
|
137
|
-
code, not a runtime sandbox.
|
|
138
|
-
|
|
139
|
-
## What this package does not do
|
|
151
|
+
## What it will not do
|
|
140
152
|
|
|
153
|
+
<!-- atelier:block:will-not-do:start -->
|
|
141
154
|
- It does not write to a MNSTRY runtime database.
|
|
142
155
|
- It does not import, provision, publish, or send anything.
|
|
143
|
-
-
|
|
156
|
+
- Except for the documented `gh` actor-resolution fallback, it initiates no
|
|
157
|
+
external network requests.
|
|
144
158
|
- It does not execute model-assisted analysis or any model provider.
|
|
145
159
|
- It does not include client project content.
|
|
146
160
|
|
|
147
161
|
These limits are the design. An authoring tool for private material earns
|
|
148
162
|
trust by what it refuses to be able to do.
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
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.
|
|
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
|
|
255
|
+
|
|
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:
|
|
167
263
|
|
|
168
264
|
- `examples/loomworks-studio` — a complete fictional distribution: branded
|
|
169
|
-
bin, extension pack, themed workspace template.
|
|
170
|
-
|
|
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.
|
|
171
269
|
- `TRADEMARKS.md` — naming rules; Apache-2.0 grants code rights, not brand
|
|
172
|
-
rights. Every distribution carries "powered by MNSTRY Atelier"
|
|
173
|
-
checked by `atelier distribution check`.
|
|
174
|
-
|
|
175
|
-
## The MNSTRY relationship
|
|
176
|
-
|
|
177
|
-
The Atelier is the front porch, not the house. Conformance — is this document
|
|
178
|
-
valid against the published contracts? — is public, offline, and free,
|
|
179
|
-
forever. Admission — will MNSTRY's governed runtime accept it for delivery to
|
|
180
|
-
clients? — is a separate, opt-in step: a signed attestation issued by MNSTRY
|
|
181
|
-
against criteria this package publishes (`docs/attestation.md`). You can
|
|
182
|
-
build on the Atelier without ever talking to MNSTRY. If you want your work to
|
|
183
|
-
run on MNSTRY runtimes, the path is admission, and the rejection message is
|
|
184
|
-
part of the contract.
|
|
185
|
-
|
|
186
|
-
## Feedback and announcements
|
|
187
|
-
|
|
188
|
-
Both channels respect consent by construction. `atelier feedback` writes a
|
|
189
|
-
scanned, redaction-checked report to a local file — there is no send path;
|
|
190
|
-
you choose whether and where to share it. `announcements list` verifies
|
|
191
|
-
project-shipped announcements against a committed public key — pull-only,
|
|
192
|
-
nothing phones home to ask.
|
|
193
|
-
|
|
194
|
-
## Running the test suite from a fresh clone
|
|
270
|
+
rights. Every distribution carries "powered by MNSTRY Atelier"
|
|
271
|
+
attribution, checked by `atelier distribution check`.
|
|
195
272
|
|
|
196
|
-
|
|
197
|
-
file (`release-denylist.local.json`, gitignored) used by MNSTRY's release
|
|
198
|
-
lane. On a fresh clone that file is absent, so the check **fails** — it never
|
|
199
|
-
passes silently on missing protection. Expect this, after `npm install`:
|
|
200
|
-
|
|
201
|
-
```bash
|
|
202
|
-
npm install
|
|
203
|
-
npm test # 509 tests: 508 pass, 1 fail — the denylist check, by design
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
To acknowledge the missing file and run the rest, which turns that failure
|
|
207
|
-
into a recorded skip:
|
|
273
|
+
## Status
|
|
208
274
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
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.
|
|
212
288
|
|
|
213
289
|
## Command reference
|
|
214
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
|
+
|
|
215
295
|
```bash
|
|
216
296
|
atelier dry-run ./atelier-export.json
|
|
217
297
|
atelier contract check
|
|
@@ -243,20 +323,26 @@ atelier dev --project ./atelier.project.json
|
|
|
243
323
|
authored repos, preserves unrelated user hooks through composed hook files,
|
|
244
324
|
runs only registered migrations, refreshes generated projections, and leaves
|
|
245
325
|
a Git commit for review. It will not weaken boundary policy, introduce
|
|
246
|
-
telemetry, enable non-
|
|
247
|
-
runtime state.
|
|
248
|
-
|
|
249
|
-
## Sample fixtures
|
|
326
|
+
telemetry, enable non-loopback egress, run model-assisted analysis, or
|
|
327
|
+
write, import, or apply runtime state.
|
|
250
328
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
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)).
|
|
254
334
|
|
|
255
335
|
## License and contributing
|
|
256
336
|
|
|
257
337
|
Apache-2.0. See `LICENSE`, `NOTICE` (attribution obligations that survive
|
|
258
338
|
forks), `TRADEMARKS.md` (naming), and `docs/continuity.md` (distribution
|
|
259
|
-
continuity commitments).
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
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.
|
package/docs/continuity.md
CHANGED
|
@@ -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
|
|
25
|
-
|
|
26
|
-
|
|
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
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# The design
|
|
2
|
+
|
|
3
|
+
The Atelier makes a repository mean something. Files declare what they are,
|
|
4
|
+
who they are for, and how they relate — and machinery enforces it.
|
|
5
|
+
|
|
6
|
+
**Git is the database. The ontology is the schema. The validators are the
|
|
7
|
+
constraints. The runtime is local.**
|
|
8
|
+
|
|
9
|
+
This page states the design in five movements. Each one is a general
|
|
10
|
+
primitive, grounded in a shipped mechanism, ending with the command that
|
|
11
|
+
proves it — because a design document that cannot be checked is marketing.
|
|
12
|
+
|
|
13
|
+
## 1. A repository with an ontology
|
|
14
|
+
|
|
15
|
+
A small structured header turns a file into a node: front matter on
|
|
16
|
+
Markdown, or a `.kg.json` sidecar beside any other format — JSON, YAML,
|
|
17
|
+
CSV, media, anything — which the kit enrolls without ever parsing the
|
|
18
|
+
foreign format. The header declares identity (`kg.id`), type, status,
|
|
19
|
+
audience, and relations to other nodes.
|
|
20
|
+
|
|
21
|
+
The graph builder compiles the repository into a knowledge graph,
|
|
22
|
+
deterministically: same tree in, same graph out, and `--check` mode fails
|
|
23
|
+
when a generated graph has drifted from its sources. There is no import
|
|
24
|
+
step, no database, and no export lock-in. The repository is the store. Git
|
|
25
|
+
is the history, the review process, and the read boundary you already
|
|
26
|
+
trust — an audience label guides projection, but repository access is what
|
|
27
|
+
actually hides a file.
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
atelier graph --project ./atelier.project.json
|
|
31
|
+
atelier graph --check --project ./atelier.project.json
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## 2. Rules that refuse
|
|
35
|
+
|
|
36
|
+
The ontology is not documentation. It is the enforcement mechanism.
|
|
37
|
+
|
|
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
|
|
42
|
+
separation is `audience` versus `visibility`: audience is local readership
|
|
43
|
+
(`public`, `team`, `operator`, `staff`, `private`, `sensitive`), visibility
|
|
44
|
+
is runtime authority (`private`, `shared`, `platform`, `public`), and the
|
|
45
|
+
validators reject every crossing — a local audience word in a visibility
|
|
46
|
+
field, a `visibility` key on a source node, and above all a public export
|
|
47
|
+
that resolves any source reference to a non-public source. That last check
|
|
48
|
+
is fixture-pinned and mutation-tested: deleting its enforcement makes tests
|
|
49
|
+
fail, not documentation drift.
|
|
50
|
+
|
|
51
|
+
The contracts sit under a stability epoch. Every change is checked against
|
|
52
|
+
the baseline tag's validators, schema widening outside namespaced `ext`
|
|
53
|
+
containers is refused by a schema-vs-schema differ, and a breaking change
|
|
54
|
+
requires a new contract version with a recorded migration. Twelve bundled
|
|
55
|
+
claim-first readiness protocols check a workspace against published
|
|
56
|
+
criteria and produce proposed claims — never runtime mutations.
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
atelier dry-run ./atelier-export.json
|
|
60
|
+
atelier contract check
|
|
61
|
+
npm run contract:compat
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## 3. Collaboration as governed disclosure
|
|
65
|
+
|
|
66
|
+
Repositories have roles. A private-domain repo holds one person's source
|
|
67
|
+
material; a shared-project repo holds what a team may read. The boundary
|
|
68
|
+
guard enforces the difference and fails closed: private or sensitive
|
|
69
|
+
source placed in a shared repo blocks, protected local files staged for
|
|
70
|
+
commit block, and private-domain material appearing in shared work without
|
|
71
|
+
a recorded disclosure blocks.
|
|
72
|
+
|
|
73
|
+
Crossing the boundary is an event with a record: `atelier promote` writes a
|
|
74
|
+
`git.promote` disclosure event, reviewable like any other commit.
|
|
75
|
+
Disclosure is a commit, not an accident.
|
|
76
|
+
|
|
77
|
+
Change to the machinery itself is governed the same way. The workspace
|
|
78
|
+
lockfile records exactly which package version, contracts, extension
|
|
79
|
+
packs, and migrations a workspace runs; upgrades are branch-based,
|
|
80
|
+
review-first, refuse dirty repos, and never silently overwrite authored
|
|
81
|
+
content.
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
atelier boundary check --project ./atelier.project.json
|
|
85
|
+
atelier boundary check --staged --project ./atelier.project.json
|
|
86
|
+
atelier promote --source-repo <private-repo> --target-repo <shared-repo> --kg-id <node>
|
|
87
|
+
atelier lock check --project ./atelier.project.json
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## 4. A local runtime for humans and for agents
|
|
91
|
+
|
|
92
|
+
The same governed workspace projects two ways.
|
|
93
|
+
|
|
94
|
+
For humans: a generated review surface, served by a sidecar that binds to
|
|
95
|
+
loopback only. The served pages carry a policy that authorizes no external
|
|
96
|
+
origin, and the only network client in the package refuses non-loopback
|
|
97
|
+
URLs.
|
|
98
|
+
|
|
99
|
+
For agents: session-bound context and capability envelopes that hand an
|
|
100
|
+
agent harness a governed view of the workspace — what exists, what it may
|
|
101
|
+
look at, what it may propose. Proposals are recorded as metadata; there
|
|
102
|
+
are no browser apply endpoints and no write authority to grant. Context
|
|
103
|
+
without authority. Neutral Claude and Codex skill wrappers ship in the
|
|
104
|
+
package, so a harness can do readiness review work against the workspace
|
|
105
|
+
without a single line of custom glue.
|
|
106
|
+
|
|
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.
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
atelier dev --project ./atelier.project.json
|
|
116
|
+
atelier context flow --project ./atelier.project.json
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## 5. A platform for your own tool
|
|
120
|
+
|
|
121
|
+
The Atelier is designed to be built on, under your name, including
|
|
122
|
+
commercially.
|
|
123
|
+
|
|
124
|
+
A distribution wraps the CLI under its own command, contributes a
|
|
125
|
+
validated extension pack — branded protocols, terms, templates — and
|
|
126
|
+
themes the projection, while the root contracts, guards, and conformance
|
|
127
|
+
stay canonical underneath. The repository carries a complete fictional
|
|
128
|
+
reference distribution (`examples/loomworks-studio`) small enough to read
|
|
129
|
+
in one sitting: a wrapper bin, a pack, a themed workspace.
|
|
130
|
+
|
|
131
|
+
Apache-2.0 makes commercial use a right, not a favor. The trademark policy
|
|
132
|
+
keeps the name ours and the code yours: every distribution carries
|
|
133
|
+
"powered by MNSTRY Atelier" attribution, and the check is a command, not a
|
|
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.
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
atelier distribution check --target ./my-distribution
|
|
142
|
+
atelier extension-pack validate --project ./atelier.project.json
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## The first application
|
|
146
|
+
|
|
147
|
+
Methodology authoring is the Atelier's first application, not its ceiling.
|
|
148
|
+
MNSTRY built this to carry its own most demanding case: private
|
|
149
|
+
transformational work, where a leaked document is not a bug but a
|
|
150
|
+
betrayal. That case set the bar — fail-closed boundaries, no telemetry, no
|
|
151
|
+
send path, agents without authority, disclosure as a recorded event.
|
|
152
|
+
|
|
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.
|
|
157
|
+
|
|
158
|
+
The claims behind this page are stated precisely, with their known limits,
|
|
159
|
+
in the README's "Claims you can check" — each with the command that proves
|
|
160
|
+
it. `docs/continuity.md` records the distribution commitments, including
|
|
161
|
+
the perpetual Apache-2.0 grant on every tagged release you receive.
|
package/docs/install.md
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# Install
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
project work in shared project
|
|
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
|
-
|
|
20
|
-
`
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
44
|
-
|
|
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
|
|
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
|
|
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
|
|
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,29 @@ 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
|
+
|
|
21
|
+
## Upgrading to 0.2.0-alpha.2
|
|
22
|
+
|
|
23
|
+
No contract changes and no runtime behaviour changes: documents valid against
|
|
24
|
+
`0.2.0-alpha.0` remain valid, and `npm run contract:compat` is clean against
|
|
25
|
+
the same epoch baseline. Upgrading is a dependency bump.
|
|
26
|
+
|
|
27
|
+
Note on version numbering: `0.2.0` was published in error and unpublished the
|
|
28
|
+
same day. If a lockfile anywhere pins `0.2.0`, repin it to `0.2.0-alpha.2` —
|
|
29
|
+
that number is permanently retired on npm and will not resolve.
|
|
30
|
+
|
|
8
31
|
## Upgrading to 0.2.0-alpha.1
|
|
9
32
|
|
|
10
33
|
No contract changes and no authored-content changes: documents valid against
|
|
@@ -12,7 +35,7 @@ No contract changes and no authored-content changes: documents valid against
|
|
|
12
35
|
the same epoch baseline. Upgrading is a dependency bump.
|
|
13
36
|
|
|
14
37
|
Two things worth knowing. The package is now on the npm registry, so the
|
|
15
|
-
install command changes from a Git reference to `@mnstry/atelier@0.2.0-alpha.
|
|
38
|
+
install command changes from a Git reference to `@mnstry/atelier@0.2.0-alpha.2`
|
|
16
39
|
— keep the `@mnstry/` scope, since the unscoped name belongs to an unrelated
|
|
17
40
|
package. And a local sidecar that previously exited on a malformed request now
|
|
18
41
|
answers it, so anything that supervised `atelier dev` through restarts can stop
|
|
@@ -62,16 +85,16 @@ For registry installs, pin the exact version and record the resolved version
|
|
|
62
85
|
in the lockfile:
|
|
63
86
|
|
|
64
87
|
```bash
|
|
65
|
-
npm install --save-dev @mnstry/atelier@0.2.0-alpha.
|
|
66
|
-
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
|
|
67
90
|
```
|
|
68
91
|
|
|
69
92
|
For Git installs, pin the release tag rather than a branch, so the lock file
|
|
70
93
|
records exactly what was reviewed:
|
|
71
94
|
|
|
72
95
|
```bash
|
|
73
|
-
npm install --save-dev "git+https://github.com/MNSTRY/atelier.git#v0.2.0-alpha.
|
|
74
|
-
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
|
|
75
98
|
```
|
|
76
99
|
|
|
77
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.
|
|
3
|
+
"version": "0.2.0-alpha.3",
|
|
4
4
|
"private": false,
|
|
5
|
-
"description": "Local
|
|
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.
|
|
82
|
+
"homepage": "https://docs.mnstry.ai/public-product/developers/atelier",
|
|
69
83
|
"bugs": {
|
|
70
84
|
"url": "https://github.com/MNSTRY/atelier/issues"
|
|
71
85
|
},
|