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