@mnstry/atelier 0.2.0-alpha.1
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 +383 -0
- package/LICENSE +202 -0
- package/NOTICE +5 -0
- package/README.md +262 -0
- package/SECURITY.md +93 -0
- package/TRADEMARKS.md +88 -0
- package/announcements/2026-08-06-announcements-channel.v1.json +12 -0
- package/announcements/keys/mnstry-announcements.public.v1.json +9 -0
- package/bin/atelier.mjs +2 -0
- package/bin/mnstry-atelier.mjs +3 -0
- package/contracts/analysis-adapter.v1.schema.json +248 -0
- package/contracts/atelier-action-intent.v1.schema.json +143 -0
- package/contracts/atelier-analysis-adapter.v1.schema.json +360 -0
- package/contracts/atelier-attestation.v1.schema.json +239 -0
- package/contracts/atelier-boundary-policy.v1.schema.json +339 -0
- package/contracts/atelier-claim.v1.schema.json +97 -0
- package/contracts/atelier-export.v1.schema.json +1015 -0
- package/contracts/atelier-extension-pack.v1.schema.json +290 -0
- package/contracts/atelier-kit-manifest.v1.schema.json +273 -0
- package/contracts/atelier-lock.v1.schema.json +364 -0
- package/contracts/atelier-migration.v1.schema.json +162 -0
- package/contracts/atelier-project-config.v1.schema.json +352 -0
- package/contracts/atelier-readiness-protocol.v1.schema.json +517 -0
- package/contracts/atelier-readiness-run.v1.schema.json +229 -0
- package/contracts/atelier-readiness.v1.schema.json +457 -0
- package/contracts/compat-baseline.json +10 -0
- package/contracts/git-promote-event.v1.schema.json +145 -0
- package/contracts/knowledge-source-sidecar.v1.schema.json +157 -0
- package/contracts/mnstry-atelier-semantic-profile.v1.json +254 -0
- package/docs/announcements.md +101 -0
- package/docs/atelier-runtime.md +34 -0
- package/docs/attestation.md +201 -0
- package/docs/continuity.md +55 -0
- package/docs/contract-stability.md +111 -0
- package/docs/distributions.md +220 -0
- package/docs/install.md +140 -0
- package/docs/knowledge-graph.md +140 -0
- package/docs/ontology.md +206 -0
- package/docs/release-engineering.md +151 -0
- package/docs/repo-boundary-guard.md +199 -0
- package/docs/tenant-readiness.md +64 -0
- package/docs/upgrade.md +124 -0
- package/fixtures/analysis/invalid/native-graph.v1.json +4 -0
- package/fixtures/analysis/invalid/promoted-claim.v1.json +17 -0
- package/fixtures/analysis/invalid/runtime-import.v1.json +20 -0
- package/fixtures/analysis/valid/output.claims.v1.json +17 -0
- package/fixtures/analysis-adapter/invalid/manifest-hidden-provider.v1.json +24 -0
- package/fixtures/analysis-adapter/invalid/output-frontmatter-mutation.v1.json +21 -0
- package/fixtures/analysis-adapter/invalid/output-native-graph.v1.json +14 -0
- package/fixtures/analysis-adapter/manifest.disabled.v1.json +22 -0
- package/fixtures/analysis-adapter/manifest.enabled-local.v1.json +23 -0
- package/fixtures/analysis-adapter/output.claims.v1.json +21 -0
- package/fixtures/atelier-action-intent/invalid/runtime-mutation-authority.v1.json +16 -0
- package/fixtures/atelier-action-intent/invalid/unknown-top-level-field.v1.json +17 -0
- package/fixtures/atelier-action-intent/invalid/writes-beyond-clipboard.v1.json +16 -0
- package/fixtures/atelier-action-intent/valid/copy-agent-prompt.v1.json +16 -0
- package/fixtures/atelier-action-intent/valid/copy-repo-path.v1.json +22 -0
- package/fixtures/atelier-analysis-adapter/invalid/hidden-model-provider.v1.json +24 -0
- package/fixtures/atelier-analysis-adapter/invalid/inert-with-execute-command.v1.json +24 -0
- package/fixtures/atelier-analysis-adapter/invalid/proposals-with-runtime-import.v1.json +30 -0
- package/fixtures/atelier-analysis-adapter/valid/manifest-inert.v1.json +24 -0
- package/fixtures/atelier-analysis-adapter/valid/proposals-claim-only.v1.json +27 -0
- package/fixtures/atelier-attestation/invalid/bad-digest.v1.json +23 -0
- package/fixtures/atelier-attestation/invalid/conformance-scope.v1.json +23 -0
- package/fixtures/atelier-attestation/invalid/missing-signature.v1.json +22 -0
- package/fixtures/atelier-attestation/invalid/unknown-root-field.v1.json +24 -0
- package/fixtures/atelier-attestation/keys/roundtrip-issuer.public.v1.json +9 -0
- package/fixtures/atelier-attestation/valid/rejected-with-reasons.v1.json +49 -0
- package/fixtures/atelier-attestation/valid/signed-admitted.v1.json +35 -0
- package/fixtures/atelier-attestation/valid/signed-roundtrip.v1.json +29 -0
- package/fixtures/atelier-attestation/valid/unsigned-advisory.v1.json +23 -0
- package/fixtures/atelier-claim/invalid/unknown-provider.v1.json +15 -0
- package/fixtures/atelier-claim/invalid/unknown-top-level-field.v1.json +16 -0
- package/fixtures/atelier-claim/invalid/wrong-schema-const.v1.json +15 -0
- package/fixtures/atelier-claim/valid/adapter-style-proposed-relation.v1.json +19 -0
- package/fixtures/atelier-claim/valid/codex-proposed-relation.v1.json +16 -0
- package/fixtures/atelier-claim/valid/manual-proposed-relation.v1.json +16 -0
- package/fixtures/atelier-claim/valid/readiness-proposed-relation.v1.json +18 -0
- package/fixtures/atelier-export/invalid/dirty-unforced-empty-taint.v1.json +19 -0
- package/fixtures/atelier-export/invalid/object-local-audience-visibility.v1.json +11 -0
- package/fixtures/atelier-export/invalid/open-object-class-owner.v1.json +23 -0
- package/fixtures/atelier-export/invalid/pricing-legacy-amount.v1.json +23 -0
- package/fixtures/atelier-export/invalid/public-disguised-internal-source-ref.v1.json +11 -0
- package/fixtures/atelier-export/invalid/public-nested-private-source-ref.v1.json +17 -0
- package/fixtures/atelier-export/invalid/public-resolved-private-source-ref.v1.json +13 -0
- package/fixtures/atelier-export/invalid/public-resolved-sensitive-source-ref.v1.json +13 -0
- package/fixtures/atelier-export/invalid/public-source-ref-missing-provenance.v1.json +20 -0
- package/fixtures/atelier-export/invalid/public-source-team-kg.json +12 -0
- package/fixtures/atelier-export/invalid/source-node-legacy-visibility.v1.json +21 -0
- package/fixtures/atelier-export/invalid/source-node-unknown-field.v1.json +18 -0
- package/fixtures/atelier-export/invalid/unresolved-public-source-ref.v1.json +11 -0
- package/fixtures/atelier-export/sample-studio-offer.v1.json +397 -0
- package/fixtures/atelier-extension-pack/invalid/bundled-slug-collision.v1.json +22 -0
- package/fixtures/atelier-extension-pack/invalid/escapes-root.v1.json +22 -0
- package/fixtures/atelier-extension-pack/invalid/posture-tampered.v1.json +22 -0
- package/fixtures/atelier-extension-pack/invalid/protocols/autonomous-authority.v1.json +118 -0
- package/fixtures/atelier-extension-pack/invalid/protocols/offer-map.v1.json +109 -0
- package/fixtures/atelier-extension-pack/invalid/redefines-runtime-term.v1.json +19 -0
- package/fixtures/atelier-extension-pack/invalid/wrong-namespace.v1.json +19 -0
- package/fixtures/atelier-extension-pack/valid/protocols/contract-gate.v1.json +109 -0
- package/fixtures/atelier-extension-pack/valid/sample-pack.v1.json +48 -0
- package/fixtures/atelier-kit-manifest/invalid/runtime-copy-without-canonical-role.v1.json +53 -0
- package/fixtures/atelier-kit-manifest/invalid/telemetry-send-path.v1.json +21 -0
- package/fixtures/atelier-kit-manifest/valid/mnstry-atelier.valid.v1.json +76 -0
- package/fixtures/atelier-lock/invalid/absolute-contract-path.v1.json +40 -0
- package/fixtures/atelier-lock/invalid/runtime-mutation-enabled.v1.json +41 -0
- package/fixtures/atelier-lock/invalid/unknown-top-level-field.v1.json +42 -0
- package/fixtures/atelier-lock/valid/extension-pack.v1.json +55 -0
- package/fixtures/atelier-lock/valid/minimal.v1.json +44 -0
- package/fixtures/atelier-migration/invalid/live-apply-mode.v1.json +21 -0
- package/fixtures/atelier-migration/invalid/missing-review-evidence.v1.json +20 -0
- package/fixtures/atelier-migration/invalid/runtime-mutation-enabled.v1.json +21 -0
- package/fixtures/atelier-migration/valid/minimal.v1.json +32 -0
- package/fixtures/atelier-project-config/invalid/absolute-repo-path.v1.json +11 -0
- package/fixtures/atelier-project-config/invalid/ext-not-object.v1.json +12 -0
- package/fixtures/atelier-project-config/invalid/external-kind-read-boundary.v1.json +12 -0
- package/fixtures/atelier-project-config/invalid/missing-repos-and-alignment.v1.json +7 -0
- package/fixtures/atelier-project-config/invalid/unknown-top-level-field.v1.json +14 -0
- package/fixtures/atelier-project-config/valid/alignment-scaffold.v1.json +15 -0
- package/fixtures/atelier-project-config/valid/ext-extension-packs.v1.json +36 -0
- package/fixtures/atelier-project-config/valid/repo-workspace.v1.json +23 -0
- package/fixtures/atelier-project-config/validator-only/ext-member-not-object.v1.json +14 -0
- package/fixtures/atelier-readiness/invalid/dry-run-only-false.v1.json +87 -0
- package/fixtures/atelier-readiness/invalid/support-bundle-send-path.v1.json +87 -0
- package/fixtures/atelier-readiness/invalid/unknown-top-level-field.v1.json +88 -0
- package/fixtures/atelier-readiness/valid/ready-workspace.v1.json +84 -0
- package/fixtures/boundary-policy/invalid/content-rule-exception-blanket-path.v1.json +67 -0
- package/fixtures/boundary-policy/invalid/invalid-actor-private-repo-mapping.v1.json +20 -0
- package/fixtures/boundary-policy/invalid/legacy-warning-missing-warning.v1.json +20 -0
- package/fixtures/boundary-policy/invalid/missing-repo-coverage.v1.json +19 -0
- package/fixtures/boundary-policy/invalid/unknown-key.v1.json +12 -0
- package/fixtures/boundary-policy/valid/content-rule-exception.v1.json +67 -0
- package/fixtures/boundary-policy/valid/legacy-warning.v1.json +33 -0
- package/fixtures/boundary-policy/valid/strict-private-shared.v1.json +40 -0
- package/fixtures/git-promote/invalid/provision-named-revocable.v1.json +29 -0
- package/fixtures/git-promote/private-to-team.v1.json +29 -0
- package/fixtures/knowledge-source-sidecar/invalid/legacy-visibility-field.v1.json +17 -0
- package/fixtures/knowledge-source-sidecar/invalid/missing-audience.v1.json +15 -0
- package/fixtures/knowledge-source-sidecar/invalid/unknown-relation-kind.v1.json +18 -0
- package/fixtures/knowledge-source-sidecar/valid/html-source.v1.json +18 -0
- package/fixtures/knowledge-source-sidecar/valid/pdf-evidence.v1.json +18 -0
- package/fixtures/projects/neutral-project/atelier.project.json +15 -0
- package/fixtures/projects/neutral-project/ops/config/repo-access.v1.json +12 -0
- package/fixtures/projects/neutral-project/project-knowledge.graph.json +69 -0
- package/fixtures/projects/sample-workspace/atelier.project.json +23 -0
- package/fixtures/projects/sample-workspace/boundary-policy.v1.json +59 -0
- package/fixtures/projects/sample-workspace/content/README.md +16 -0
- package/fixtures/projects/sample-workspace/content/source.html +5 -0
- package/fixtures/projects/sample-workspace/content/source.html.kg.json +15 -0
- package/fixtures/projects/sample-workspace/repo-access.v1.json +9 -0
- package/fixtures/projects/source-formats-workspace/atelier.project.json +23 -0
- package/fixtures/projects/source-formats-workspace/content/README.md +17 -0
- package/fixtures/projects/source-formats-workspace/content/data.json +7 -0
- package/fixtures/projects/source-formats-workspace/content/data.json.kg.json +15 -0
- package/fixtures/projects/source-formats-workspace/content/logo.png.kg.json +15 -0
- package/fixtures/projects/source-formats-workspace/content/metrics.csv +3 -0
- package/fixtures/projects/source-formats-workspace/content/metrics.csv.kg.json +15 -0
- package/fixtures/projects/source-formats-workspace/content/pipeline.yaml +4 -0
- package/fixtures/projects/source-formats-workspace/content/pipeline.yaml.kg.json +15 -0
- package/fixtures/projects/source-formats-workspace/repo-access.v1.json +9 -0
- package/fixtures/readiness-protocols/extension-pack/invalid/protocol-missing-path.v1.json +20 -0
- package/fixtures/readiness-protocols/extension-pack/valid/with-protocol.v1.json +24 -0
- package/fixtures/readiness-protocols/protocol/invalid/missing-check-target.v1.json +103 -0
- package/fixtures/readiness-protocols/protocol/invalid/runtime-mutation-enabled.v1.json +107 -0
- package/fixtures/readiness-protocols/protocol/valid/minimal.v1.json +100 -0
- package/fixtures/readiness-protocols/run/invalid/missing-evidence.v1.json +37 -0
- package/fixtures/readiness-protocols/run/invalid/pass-with-blocker.v1.json +22 -0
- package/fixtures/readiness-protocols/run/invalid/runtime-mutation-enabled.v1.json +22 -0
- package/fixtures/readiness-protocols/run/valid/pass.v1.json +44 -0
- package/fixtures/support/invalid/leaky-support.v1.json +13 -0
- package/fixtures/support/valid/minimal-safe.v1.json +20 -0
- package/package.json +98 -0
- package/skills/claude/atelier-open/SKILL.md +68 -0
- package/skills/claude/mnstry-readiness/SKILL.md +41 -0
- package/skills/codex/atelier-open/SKILL.md +68 -0
- package/skills/codex/mnstry-readiness/SKILL.md +41 -0
- package/src/analysis/adapter.mjs +20 -0
- package/src/analysis/analysis-claim-contract.mjs +335 -0
- package/src/attestation/jcs.mjs +64 -0
- package/src/attestation/sign.mjs +305 -0
- package/src/boundary/content-rules.mjs +262 -0
- package/src/boundary/policy.mjs +806 -0
- package/src/check-atelier-export-contract.mjs +116 -0
- package/src/cli/run.mjs +283 -0
- package/src/collaboration/proposals.mjs +262 -0
- package/src/commands/analysis.mjs +8 -0
- package/src/commands/announcements.mjs +308 -0
- package/src/commands/attestation.mjs +198 -0
- package/src/commands/boundary.mjs +25 -0
- package/src/commands/config.mjs +4 -0
- package/src/commands/context.mjs +3 -0
- package/src/commands/distribution.mjs +224 -0
- package/src/commands/egress.mjs +11 -0
- package/src/commands/extension-pack.mjs +209 -0
- package/src/commands/feedback.mjs +3 -0
- package/src/commands/graph.mjs +3 -0
- package/src/commands/init.mjs +130 -0
- package/src/commands/lock.mjs +3 -0
- package/src/commands/project.mjs +3 -0
- package/src/commands/promote.mjs +4 -0
- package/src/commands/readiness.mjs +3 -0
- package/src/commands/server.mjs +6 -0
- package/src/commands/setup.mjs +250 -0
- package/src/commands/support.mjs +3 -0
- package/src/commands/upgrade.mjs +3 -0
- package/src/contracts/corpus.mjs +171 -0
- package/src/egress/check.mjs +45 -0
- package/src/egress/forbidden-egress.mjs +323 -0
- package/src/export/atelier-export-contract.mjs +722 -0
- package/src/extension-packs/loader.mjs +491 -0
- package/src/graph/graph.mjs +370 -0
- package/src/graph/knowledge-graph.mjs +887 -0
- package/src/harness/context-client.mjs +144 -0
- package/src/harness/context.mjs +27 -0
- package/src/index.mjs +88 -0
- package/src/project/config.mjs +557 -0
- package/src/project/file-class.mjs +113 -0
- package/src/project/git-ignore.mjs +31 -0
- package/src/project/path-match.mjs +30 -0
- package/src/project/repo-identity.mjs +176 -0
- package/src/projection/alignment-projection.mjs +169 -0
- package/src/projection/policy.mjs +90 -0
- package/src/projection/project.mjs +152 -0
- package/src/readiness/readiness.mjs +312 -0
- package/src/readiness-protocols/bundled-pack.mjs +766 -0
- package/src/readiness-protocols/runtime.mjs +419 -0
- package/src/server/local-sidecar.mjs +640 -0
- package/src/server/security.mjs +229 -0
- package/src/server/server.mjs +42 -0
- package/src/support/feedback-report.mjs +414 -0
- package/src/support/support-bundle.mjs +226 -0
- package/src/ui/html-primitives.mjs +104 -0
- package/src/upgrade/upgrade.mjs +701 -0
- package/src/validate-atelier-export-dry-run.mjs +75 -0
- package/templates/atelier.project.example.json +23 -0
- package/templates/distribution-workspace/.claude/launch.json +12 -0
- package/templates/distribution-workspace/README.md +86 -0
- package/templates/distribution-workspace/atelier.project.json +36 -0
- package/templates/distribution-workspace/boundary-policy.v1.json +61 -0
- package/templates/distribution-workspace/gitignore +29 -0
- package/templates/distribution-workspace/governance/repo-boundary-ledger.md +5 -0
- package/templates/distribution-workspace/project/README.md +19 -0
- package/templates/distribution-workspace/repo-access.v1.json +9 -0
- package/templates/launch.json +12 -0
- package/templates/private-domain-workspace/.claude/launch.json +12 -0
- package/templates/private-domain-workspace/README.md +50 -0
- package/templates/private-domain-workspace/atelier.project.json +28 -0
- package/templates/private-domain-workspace/boundary-policy.v1.json +54 -0
- package/templates/private-domain-workspace/domain/README.md +19 -0
- package/templates/private-domain-workspace/gitignore +29 -0
- package/templates/private-domain-workspace/governance/repo-boundary-ledger.md +4 -0
- package/templates/private-domain-workspace/repo-access.v1.json +9 -0
- package/templates/shared-project-workspace/.claude/launch.json +12 -0
- package/templates/shared-project-workspace/README.md +51 -0
- package/templates/shared-project-workspace/atelier.project.json +28 -0
- package/templates/shared-project-workspace/boundary-policy.v1.json +61 -0
- package/templates/shared-project-workspace/gitignore +29 -0
- package/templates/shared-project-workspace/governance/repo-boundary-ledger.md +5 -0
- package/templates/shared-project-workspace/project/README.md +19 -0
- package/templates/shared-project-workspace/repo-access.v1.json +9 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
# Repo Boundary Guard V1
|
|
2
|
+
|
|
3
|
+
Repo Boundary Guard V1 is the Atelier workspace convention for separating
|
|
4
|
+
private domain source from shared project source before anything reaches the
|
|
5
|
+
MNSTRY runtime.
|
|
6
|
+
|
|
7
|
+
## Boundary Model
|
|
8
|
+
|
|
9
|
+
- Private domain material lives in one private Git repository per user.
|
|
10
|
+
- Shared project material lives in shared project repositories.
|
|
11
|
+
- Git repository access is the source read boundary.
|
|
12
|
+
- `kg.audience` is local projection metadata, not a permission system.
|
|
13
|
+
- Runtime/export `visibility` remains reserved for MNSTRY runtime objects.
|
|
14
|
+
|
|
15
|
+
If a file is private, place it in the user's private domain repo. Do not rely on
|
|
16
|
+
front matter, generated projections, readiness output, browser views, or local
|
|
17
|
+
HTML hiding to protect source material inside a shared repo.
|
|
18
|
+
|
|
19
|
+
## Guard Rules
|
|
20
|
+
|
|
21
|
+
- Private or sensitive source belongs in a repo with `readBoundary: "private"`.
|
|
22
|
+
- Shared project source may use `team`, `operator`, `staff`, or `public`
|
|
23
|
+
audiences when the repository readership matches that exposure.
|
|
24
|
+
- Local source metadata must use `kg.audience`.
|
|
25
|
+
- Local source metadata must not use `kg.visibility`.
|
|
26
|
+
- Dry-run exports may contain runtime `visibility` only on export/runtime
|
|
27
|
+
objects.
|
|
28
|
+
- Generated outputs are projections and should be reproducible from source.
|
|
29
|
+
|
|
30
|
+
## External Repos
|
|
31
|
+
|
|
32
|
+
Real workspaces accumulate git folders that are not Atelier repos: vendored
|
|
33
|
+
checkouts, app-builder exports, scratch clones. Declare one in
|
|
34
|
+
`atelier.project.json` with `kind: "external"`:
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{ "name": "external-vendor-site", "path": "external-vendor-site", "kind": "external" }
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
An external repo is acknowledged, not managed. It implies **no** read boundary,
|
|
41
|
+
so it must not declare `readBoundary`, must not appear in `repo-access.v1.json`,
|
|
42
|
+
and must not appear in the boundary policy — declaring a boundary for a repo
|
|
43
|
+
nobody manages is exactly the confusion this classification removes. Its files
|
|
44
|
+
are excluded from graph walking, sidecar requirements, and projection, and the
|
|
45
|
+
staged guard and hook installer skip it entirely.
|
|
46
|
+
|
|
47
|
+
An undeclared git folder in the workspace remains an error. Forcing an explicit
|
|
48
|
+
decision is the point: it is how a repo pushing to an unexpected host gets
|
|
49
|
+
noticed. `atelier graph` prints the remote host of each external repo for the
|
|
50
|
+
same reason — a workspace should know where its folders push, especially when a
|
|
51
|
+
host is a lookalike of a familiar one.
|
|
52
|
+
|
|
53
|
+
At least one repo must remain managed; a workspace of only external repos is
|
|
54
|
+
not an Atelier workspace.
|
|
55
|
+
|
|
56
|
+
## Staged Boundary Field Review
|
|
57
|
+
|
|
58
|
+
The staged guard (`atelier boundary check --staged`) inspects every staged
|
|
59
|
+
`*.md` and `*.kg.json` diff for changes to boundary fields — `kg.audience`,
|
|
60
|
+
`audience`, `handling`, `sensitivity`, `data_boundary`.
|
|
61
|
+
|
|
62
|
+
It distinguishes two cases:
|
|
63
|
+
|
|
64
|
+
- **Initialization.** A boundary field added with no prior value, set to a
|
|
65
|
+
value that discloses nothing (`private` or `sensitive` for `audience`), is
|
|
66
|
+
recorded as a fail-closed default rather than a disclosure decision. It
|
|
67
|
+
commits without review. This is what tooling writes when it fills in missing
|
|
68
|
+
front matter, so kit-generated metadata never needs a human to unjam it.
|
|
69
|
+
- **Change.** Anything else — widening, narrowing, removing an existing value,
|
|
70
|
+
or introducing a field already set to a disclosing value — needs a human.
|
|
71
|
+
|
|
72
|
+
To approve a change, put a review marker in the diff:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
<!-- Atelier-Boundary-Review: approved — why this exposure is correct -->
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
The marker must travel **in the same file's diff** as the change it approves.
|
|
79
|
+
A marker committed in a sibling file, or already sitting elsewhere in a file
|
|
80
|
+
that this commit does not touch, approves nothing — the guard reads the diff,
|
|
81
|
+
not the working tree.
|
|
82
|
+
|
|
83
|
+
## Non-Goals
|
|
84
|
+
|
|
85
|
+
Repo Boundary Guard V1 does not:
|
|
86
|
+
|
|
87
|
+
- create, invite, or permission GitHub users;
|
|
88
|
+
- move files between repositories automatically;
|
|
89
|
+
- write to the MNSTRY runtime;
|
|
90
|
+
- send telemetry;
|
|
91
|
+
- contact cloud services;
|
|
92
|
+
- mutate browser state or write directly from a browser view.
|
|
93
|
+
|
|
94
|
+
## Review Checklist
|
|
95
|
+
|
|
96
|
+
Use this as a defensive review before copying preview content into real repos:
|
|
97
|
+
|
|
98
|
+
- Every private user has exactly one private domain repo entry.
|
|
99
|
+
- Private domain repos use `readBoundary: "private"`.
|
|
100
|
+
- Shared project repos do not contain private or sensitive source nodes.
|
|
101
|
+
- `rg -n "kg.visibility|visibility:"` over source files finds no local source
|
|
102
|
+
front matter misuse.
|
|
103
|
+
- `repo-access.v1.json` covers every repo listed in `atelier.project.json`.
|
|
104
|
+
- `atelier.lock.json` is written in the copied workspace with
|
|
105
|
+
`atelier lock write`, not copied from the package root.
|
|
106
|
+
- Generated `atelier-output/` files are not treated as source authority.
|
|
107
|
+
|
|
108
|
+
When in doubt, fail closed: move the source into the private domain repo first,
|
|
109
|
+
then project a reviewed summary into shared project material later.
|
|
110
|
+
|
|
111
|
+
## Upgrade Review
|
|
112
|
+
|
|
113
|
+
When upgrading a copied workspace, review package, lockfile, and boundary
|
|
114
|
+
changes together. The `atelier.lock.json` refresh should be limited to the
|
|
115
|
+
copied workspace's Atelier package metadata, contracts, and migration state,
|
|
116
|
+
while private-domain and shared-project source boundaries remain unchanged.
|
|
117
|
+
|
|
118
|
+
See `docs/upgrade.md` for the upgrade sequence.
|
|
119
|
+
|
|
120
|
+
## Repo Identity
|
|
121
|
+
|
|
122
|
+
Every Atelier-side reference to a repository used to key on its name. Hosting
|
|
123
|
+
providers let repos be renamed and redirect the old URL indefinitely, so a
|
|
124
|
+
rename leaves stale clones that keep fetching happily under a name that no
|
|
125
|
+
longer exists — the failure is silent, which is why two client-zero repos stopped
|
|
126
|
+
syncing for weeks before anyone noticed.
|
|
127
|
+
|
|
128
|
+
Record a provider-stable identity in `atelier.project.json`:
|
|
129
|
+
|
|
130
|
+
```json
|
|
131
|
+
{
|
|
132
|
+
"name": "studio-journal",
|
|
133
|
+
"path": "studio-journal",
|
|
134
|
+
"readBoundary": "team",
|
|
135
|
+
"identity": { "provider": "github", "id": "900001" },
|
|
136
|
+
"aliases": ["journal", "press"]
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Get the id with `gh api repos/{owner}/{name} --jq .id`. It survives renames;
|
|
141
|
+
the name does not.
|
|
142
|
+
|
|
143
|
+
`resolveRepoIdentity(cloneDir)` answers from the provider's stable id when the
|
|
144
|
+
provider is reachable, then from the recorded identity, then from declared
|
|
145
|
+
aliases, and reports which of those it used in `source` rather than guessing
|
|
146
|
+
silently. **It never keys on the root commit.** Repos created from one template
|
|
147
|
+
share a root commit, so that heuristic reports false duplicates; it also cannot
|
|
148
|
+
see a rename at all. A rename is a metadata update, not a new identity.
|
|
149
|
+
|
|
150
|
+
`atelier doctor` reports:
|
|
151
|
+
|
|
152
|
+
- `repo-renamed-upstream` — the provider's canonical name has moved on
|
|
153
|
+
- `repo-folder-name-stale` — the config name is not the canonical name
|
|
154
|
+
- `repo-name-alias-deprecated` — resolved through a recorded alias
|
|
155
|
+
- `repo-identity-duplicate` — two clones are one repository; park the retired one
|
|
156
|
+
- `repo-identity-undeclared` — no recorded id, so a rename during an outage is unresolvable
|
|
157
|
+
- `repo-identity-unresolved` — no origin remote to identify the clone by
|
|
158
|
+
|
|
159
|
+
## Content Rules and Exceptions
|
|
160
|
+
|
|
161
|
+
Content rules judge **what is being pushed**, not the whole tree. A whole-tree
|
|
162
|
+
scan cannot tell "you are about to push a new violation" from "a known, accepted
|
|
163
|
+
usage exists", so one legitimate use anywhere blocks every push of everything in
|
|
164
|
+
that repo, forever — including work that has nothing to do with the finding.
|
|
165
|
+
That is how a public site's owner-authorized mock cart stranded real work on a
|
|
166
|
+
machine for weeks.
|
|
167
|
+
|
|
168
|
+
- `pre-commit` runs `atelier boundary check --staged` — added lines in the
|
|
169
|
+
staged diff.
|
|
170
|
+
- `pre-push` runs `atelier boundary push-check` — git writes the ref updates to
|
|
171
|
+
the hook's stdin, and only that range is judged. A brand-new branch is diffed
|
|
172
|
+
against the empty tree, so nothing slips through unscanned.
|
|
173
|
+
- `atelier boundary audit` scans the whole tree and **reports without blocking**,
|
|
174
|
+
listing both matches and declared exceptions with their reasons.
|
|
175
|
+
|
|
176
|
+
If the guard cannot work out which repo it is running in, it fails closed. A
|
|
177
|
+
guard that silently judges nothing is worse than one that stops you.
|
|
178
|
+
|
|
179
|
+
### Declaring an exception
|
|
180
|
+
|
|
181
|
+
Exceptions live in the boundary policy, not in the guard script. A repo-specific
|
|
182
|
+
product decision must not require editing shared infrastructure that every repo
|
|
183
|
+
runs:
|
|
184
|
+
|
|
185
|
+
```json
|
|
186
|
+
"contentRuleExceptions": [
|
|
187
|
+
{
|
|
188
|
+
"rule": "browser-persistence",
|
|
189
|
+
"repo": "example-site",
|
|
190
|
+
"paths": ["src/scripts/cart.ts"],
|
|
191
|
+
"reason": "owner-authorized mock cart on a public demo site; localStorage is its whole design"
|
|
192
|
+
}
|
|
193
|
+
]
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Every field is required, because the exception **is** the approval record. There
|
|
197
|
+
is no blanket repo-wide skip: `paths` must name real paths, and a bare `*` or
|
|
198
|
+
`**` is rejected as disabling the rule rather than excepting it. `reason` must
|
|
199
|
+
say something a reviewer can act on. Removing the exception re-blocks the path.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Tenant Readiness Guide
|
|
2
|
+
|
|
3
|
+
Use this guide when preparing a tenant or project workspace for an Atelier
|
|
4
|
+
readiness review. The review is local-only and evidence-first: it does not
|
|
5
|
+
provision repositories, contact external services, mutate a MNSTRY runtime, or
|
|
6
|
+
write through a browser view.
|
|
7
|
+
|
|
8
|
+
## Authority Order
|
|
9
|
+
|
|
10
|
+
1. Treat local source files, Git history, `atelier.project.json`,
|
|
11
|
+
`repo-access.v1.json`, `boundary-policy.v1.json`, and `atelier.lock.json` as
|
|
12
|
+
review authority.
|
|
13
|
+
2. Treat generated graph, projection, support, and readiness files as evidence
|
|
14
|
+
from the current package checks.
|
|
15
|
+
3. Treat optional model/provider analysis as proposed `atelier-claim@v1`
|
|
16
|
+
records only. Proposed claims cannot define tenant semantics, mutate
|
|
17
|
+
canonical source, or bypass project-owner review.
|
|
18
|
+
4. Treat runtime identity, consent, visibility, provisioning, bookings,
|
|
19
|
+
commerce, sessions, audit, and client-grade sharing as MNSTRY runtime
|
|
20
|
+
authority.
|
|
21
|
+
|
|
22
|
+
## Local Review Pass
|
|
23
|
+
|
|
24
|
+
Run checks from the copied workspace:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
atelier graph --project ./atelier.project.json
|
|
28
|
+
atelier project --project ./atelier.project.json
|
|
29
|
+
atelier readiness --project ./atelier.project.json
|
|
30
|
+
atelier boundary check --project ./atelier.project.json
|
|
31
|
+
atelier lock check --project ./atelier.project.json
|
|
32
|
+
atelier upgrade --dry-run --project ./atelier.project.json
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Use `--check` modes where available when validating committed generated output.
|
|
36
|
+
If a command is unavailable in an older workspace, report the exact command and
|
|
37
|
+
stderr instead of substituting a new protocol.
|
|
38
|
+
|
|
39
|
+
## Claim-First Output
|
|
40
|
+
|
|
41
|
+
Readiness summaries should lead with claims, then evidence:
|
|
42
|
+
|
|
43
|
+
- Claim: the specific readiness statement.
|
|
44
|
+
- Evidence: file paths, schema names, command output, or observed generated
|
|
45
|
+
artifact state.
|
|
46
|
+
- Authority: source, generated evidence, proposed claim, or runtime-owned.
|
|
47
|
+
- Status: ready, warning, blocked, or proposed.
|
|
48
|
+
- Fix path: the smallest next reviewable change.
|
|
49
|
+
|
|
50
|
+
Do not invent independent tenant semantics. Use the Atelier contracts,
|
|
51
|
+
readiness report, boundary policy, and local source as the vocabulary.
|
|
52
|
+
|
|
53
|
+
## Review Hygiene
|
|
54
|
+
|
|
55
|
+
- Keep package docs, fixtures, skills, and release notes generic.
|
|
56
|
+
- Do not include person-specific, tenant-private, project-private, support
|
|
57
|
+
bundle, transcript, absolute local path, agent-local state, key, token, or
|
|
58
|
+
credential material.
|
|
59
|
+
- Prefer static inspection and existing defensive tests for security-sensitive
|
|
60
|
+
review work.
|
|
61
|
+
- Frame boundary checks as verifying that a control refuses, blocks, or fails
|
|
62
|
+
closed.
|
|
63
|
+
- Findings still need concrete evidence, severity, confidence, impact, and a
|
|
64
|
+
fix path.
|
package/docs/upgrade.md
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Upgrade Guide
|
|
2
|
+
|
|
3
|
+
Use this guide when upgrading a copied private-domain or shared-project starter
|
|
4
|
+
workspace between Atelier package releases. The flow is local-only: it does not
|
|
5
|
+
provision repositories, contact a Git host, mutate the MNSTRY runtime, or write
|
|
6
|
+
through a browser view.
|
|
7
|
+
|
|
8
|
+
## Upgrading to 0.2.0-alpha.1
|
|
9
|
+
|
|
10
|
+
No contract changes and no authored-content 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
|
+
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.1`
|
|
16
|
+
— keep the `@mnstry/` scope, since the unscoped name belongs to an unrelated
|
|
17
|
+
package. And a local sidecar that previously exited on a malformed request now
|
|
18
|
+
answers it, so anything that supervised `atelier dev` through restarts can stop
|
|
19
|
+
compensating for that.
|
|
20
|
+
|
|
21
|
+
## Upgrading to 0.2.0-alpha.0
|
|
22
|
+
|
|
23
|
+
This release breaks the export vocabulary. The runtime owner names are now
|
|
24
|
+
the vendor-neutral domain terms `identity`, `catalog`, `commitments`,
|
|
25
|
+
`events`, `projection`, `consent`, `messaging`, `providers`, and `audit`
|
|
26
|
+
(defined in `docs/ontology.md`), and documents written against
|
|
27
|
+
`v0.1.0-alpha.2` do not validate here. Regenerate exports and projections rather than hand-editing
|
|
28
|
+
them, and update any consumer that pins an owner name. `CHANGELOG.md` lists
|
|
29
|
+
every breaking change in this release, including the contract-stability epoch
|
|
30
|
+
(`contractVersion`, `ext`) and the schema const alignments.
|
|
31
|
+
|
|
32
|
+
Contract compatibility is now gated. `npm run contract:compat` validates the
|
|
33
|
+
current corpus against the validators of the baseline recorded in
|
|
34
|
+
`contracts/compat-baseline.json`. The baseline is set at release time: cutting
|
|
35
|
+
a tag sets `baselineTag` to that tag in the release commit, so the following
|
|
36
|
+
development cycle is checked against the released validators. Until the first
|
|
37
|
+
post-epoch tag is cut the baseline is null and the gate is inert by design.
|
|
38
|
+
See `docs/contract-stability.md`.
|
|
39
|
+
|
|
40
|
+
## Before You Upgrade
|
|
41
|
+
|
|
42
|
+
- Start from a clean Git status in the copied workspace.
|
|
43
|
+
- Confirm Node.js matches the package range: `>=22.18.0 <23`.
|
|
44
|
+
- Keep this package root and copied starter workspaces separate.
|
|
45
|
+
- Keep upgrade diffs generic: placeholders only, no project-specific private
|
|
46
|
+
material, transcripts, support bundles, local absolute paths, local agent
|
|
47
|
+
state, keys, or credential assignments.
|
|
48
|
+
|
|
49
|
+
## Refresh The Atelier Lockfile
|
|
50
|
+
|
|
51
|
+
`atelier.lock.json` records the installed Atelier package version, source,
|
|
52
|
+
contract versions, template lineage, extension packs, and applied migrations.
|
|
53
|
+
New workspaces get this file from `atelier init`. Existing workspaces can
|
|
54
|
+
backfill it without changing source content:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
atelier lock write --project ./atelier.project.json
|
|
58
|
+
atelier lock check --project ./atelier.project.json
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
For registry installs, pin the exact version and record the resolved version
|
|
62
|
+
in the lockfile:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
npm install --save-dev @mnstry/atelier@0.2.0-alpha.1
|
|
66
|
+
npx atelier lock write --project ./atelier.project.json
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
For Git installs, pin the release tag rather than a branch, so the lock file
|
|
70
|
+
records exactly what was reviewed:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
npm install --save-dev "git+https://github.com/MNSTRY/atelier.git#v0.2.0-alpha.1"
|
|
74
|
+
npx atelier lock write --project ./atelier.project.json
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Before accepting upstream changes, run the non-mutating upgrade planner:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
atelier upgrade --dry-run --project ./atelier.project.json
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Apply upgrades only after reviewing the plan:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
atelier upgrade --apply --project ./atelier.project.json
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
The apply path creates a branch, refuses unsafe dirty state, regenerates
|
|
90
|
+
projections, runs checks, and leaves a reviewable commit.
|
|
91
|
+
|
|
92
|
+
## Re-run Local Checks
|
|
93
|
+
|
|
94
|
+
Run checks from the copied workspace after refreshing dependencies:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
atelier graph --project ./atelier.project.json
|
|
98
|
+
atelier project --project ./atelier.project.json
|
|
99
|
+
atelier readiness --project ./atelier.project.json
|
|
100
|
+
atelier lock check --project ./atelier.project.json
|
|
101
|
+
atelier upgrade --dry-run --project ./atelier.project.json
|
|
102
|
+
atelier boundary check --project ./atelier.project.json
|
|
103
|
+
atelier boundary check --staged --project ./atelier.project.json
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Generated `atelier-output/` files are projections. Treat source files,
|
|
107
|
+
`atelier.project.json`, `repo-access.v1.json`, `boundary-policy.v1.json`, and
|
|
108
|
+
`atelier.lock.json` as the review authority.
|
|
109
|
+
|
|
110
|
+
`atelier` is the primary command. `mnstry-atelier` remains a legacy alias for
|
|
111
|
+
older workspaces and should not be used in new docs or package scripts.
|
|
112
|
+
|
|
113
|
+
## Boundary Review
|
|
114
|
+
|
|
115
|
+
- Verify every repo in `atelier.project.json` is covered by `repo-access.v1.json`.
|
|
116
|
+
- Verify private-domain repos still use `readBoundary: "private"`.
|
|
117
|
+
- Verify shared-project repos do not contain private or sensitive source nodes.
|
|
118
|
+
- Verify local source front matter uses `kg.audience`, not `kg.visibility`.
|
|
119
|
+
- Verify upgrade diffs do not add project-specific private material to package
|
|
120
|
+
docs, fixtures, or templates.
|
|
121
|
+
|
|
122
|
+
When unsure, fail closed: keep source in the private-domain workspace and move
|
|
123
|
+
only a reviewed summary into the shared-project workspace through ordinary Git
|
|
124
|
+
review.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"schema": "atelier-claim@v1",
|
|
4
|
+
"claimId": "claim:analysis:2026-06-17:test",
|
|
5
|
+
"subject": "project:source-node",
|
|
6
|
+
"predicate": "supports",
|
|
7
|
+
"object": "project:claim-target",
|
|
8
|
+
"provider": "analysis",
|
|
9
|
+
"status": "proposed",
|
|
10
|
+
"promoted": true,
|
|
11
|
+
"confidence": 0.6,
|
|
12
|
+
"evidence": [
|
|
13
|
+
"docs/source.md#claim"
|
|
14
|
+
],
|
|
15
|
+
"createdAt": "2026-06-17T00:00:00Z"
|
|
16
|
+
}
|
|
17
|
+
]
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"schema": "atelier-claim@v1",
|
|
4
|
+
"claimId": "claim:analysis:2026-06-17:test",
|
|
5
|
+
"subject": "project:source-node",
|
|
6
|
+
"predicate": "supports",
|
|
7
|
+
"object": "project:claim-target",
|
|
8
|
+
"provider": "analysis",
|
|
9
|
+
"status": "proposed",
|
|
10
|
+
"promoted": false,
|
|
11
|
+
"confidence": 0.6,
|
|
12
|
+
"evidence": [
|
|
13
|
+
"docs/source.md#claim"
|
|
14
|
+
],
|
|
15
|
+
"createdAt": "2026-06-17T00:00:00Z",
|
|
16
|
+
"runtimeImport": {
|
|
17
|
+
"mode": "apply"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
]
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"schema": "atelier-claim@v1",
|
|
4
|
+
"claimId": "claim:analysis:2026-06-17:test",
|
|
5
|
+
"subject": "project:source-node",
|
|
6
|
+
"predicate": "supports",
|
|
7
|
+
"object": "project:claim-target",
|
|
8
|
+
"provider": "analysis",
|
|
9
|
+
"status": "proposed",
|
|
10
|
+
"promoted": false,
|
|
11
|
+
"confidence": 0.6,
|
|
12
|
+
"evidence": [
|
|
13
|
+
"docs/source.md#claim"
|
|
14
|
+
],
|
|
15
|
+
"createdAt": "2026-06-17T00:00:00Z"
|
|
16
|
+
}
|
|
17
|
+
]
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "analysis-adapter-manifest@v1",
|
|
3
|
+
"provider": "analysis",
|
|
4
|
+
"enabled": true,
|
|
5
|
+
"outputRoot": ".mnstry/atelier/analysis/output",
|
|
6
|
+
"claimContract": "atelier-claim@v1",
|
|
7
|
+
"harness": {
|
|
8
|
+
"policy": "active-agentic-harness-only",
|
|
9
|
+
"hiddenModelProvider": true,
|
|
10
|
+
"network": "none",
|
|
11
|
+
"analysisExecution": false,
|
|
12
|
+
"modelProvider": "openai"
|
|
13
|
+
},
|
|
14
|
+
"canonicalMutation": false,
|
|
15
|
+
"authority": {
|
|
16
|
+
"claimOnly": true,
|
|
17
|
+
"frontMatterMutation": false,
|
|
18
|
+
"graphRelationMutation": false,
|
|
19
|
+
"publicExportFeed": false,
|
|
20
|
+
"mcpFeed": false,
|
|
21
|
+
"runtimeImport": false,
|
|
22
|
+
"directCanonicalWrite": false
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"schema": "atelier-claim@v1",
|
|
4
|
+
"claimId": "claim:analysis:2026-06-12:invalid-frontmatter",
|
|
5
|
+
"subject": "sample-architecture:atelier-analysis-optional-install-decision",
|
|
6
|
+
"predicate": "supports",
|
|
7
|
+
"object": "sample-architecture:local-git-generated-db-hybrid",
|
|
8
|
+
"provider": "analysis",
|
|
9
|
+
"status": "proposed",
|
|
10
|
+
"promoted": false,
|
|
11
|
+
"frontmatter": {
|
|
12
|
+
"kg": {
|
|
13
|
+
"relations": {
|
|
14
|
+
"supports": [
|
|
15
|
+
"sample-architecture:local-git-generated-db-hybrid"
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
]
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"nodes": [
|
|
3
|
+
{
|
|
4
|
+
"id": "sample-architecture:atelier-analysis-optional-install-decision"
|
|
5
|
+
}
|
|
6
|
+
],
|
|
7
|
+
"edges": [
|
|
8
|
+
{
|
|
9
|
+
"source": "sample-architecture:atelier-analysis-optional-install-decision",
|
|
10
|
+
"target": "sample-architecture:local-git-generated-db-hybrid",
|
|
11
|
+
"type": "supports"
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "analysis-adapter-manifest@v1",
|
|
3
|
+
"provider": "analysis",
|
|
4
|
+
"outputRoot": ".mnstry/atelier/analysis/output",
|
|
5
|
+
"claimContract": "atelier-claim@v1",
|
|
6
|
+
"harness": {
|
|
7
|
+
"policy": "active-agentic-harness-only",
|
|
8
|
+
"hiddenModelProvider": false,
|
|
9
|
+
"network": "none",
|
|
10
|
+
"analysisExecution": false
|
|
11
|
+
},
|
|
12
|
+
"canonicalMutation": false,
|
|
13
|
+
"authority": {
|
|
14
|
+
"claimOnly": true,
|
|
15
|
+
"frontMatterMutation": false,
|
|
16
|
+
"graphRelationMutation": false,
|
|
17
|
+
"publicExportFeed": false,
|
|
18
|
+
"mcpFeed": false,
|
|
19
|
+
"runtimeImport": false,
|
|
20
|
+
"directCanonicalWrite": false
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "analysis-adapter-manifest@v1",
|
|
3
|
+
"provider": "analysis",
|
|
4
|
+
"enabled": true,
|
|
5
|
+
"outputRoot": ".mnstry/atelier/analysis/pilot",
|
|
6
|
+
"claimContract": "atelier-claim@v1",
|
|
7
|
+
"harness": {
|
|
8
|
+
"policy": "active-agentic-harness-only",
|
|
9
|
+
"hiddenModelProvider": false,
|
|
10
|
+
"network": "none",
|
|
11
|
+
"analysisExecution": false
|
|
12
|
+
},
|
|
13
|
+
"canonicalMutation": false,
|
|
14
|
+
"authority": {
|
|
15
|
+
"claimOnly": true,
|
|
16
|
+
"frontMatterMutation": false,
|
|
17
|
+
"graphRelationMutation": false,
|
|
18
|
+
"publicExportFeed": false,
|
|
19
|
+
"mcpFeed": false,
|
|
20
|
+
"runtimeImport": false,
|
|
21
|
+
"directCanonicalWrite": false
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"schema": "atelier-claim@v1",
|
|
4
|
+
"claimId": "claim:analysis:2026-06-12:adapter-pilot-supports-local-hybrid",
|
|
5
|
+
"subject": "sample-architecture:atelier-analysis-optional-install-decision",
|
|
6
|
+
"predicate": "supports",
|
|
7
|
+
"object": "sample-architecture:local-git-generated-db-hybrid",
|
|
8
|
+
"provider": "analysis",
|
|
9
|
+
"status": "proposed",
|
|
10
|
+
"promoted": false,
|
|
11
|
+
"confidence": 0.71,
|
|
12
|
+
"evidence": [
|
|
13
|
+
"ATELIER-ANALYSIS-OPTIONAL-INSTALL-DECISION.md#authority-boundary",
|
|
14
|
+
"LOCAL-GIT-GENERATED-DB-HYBRID.md#optional-discovery-graph-providers"
|
|
15
|
+
],
|
|
16
|
+
"notes": [
|
|
17
|
+
"Adapter fixture only. This is not model-assisted analysis execution output."
|
|
18
|
+
],
|
|
19
|
+
"createdAt": "2026-06-12T00:00:00Z"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "atelier-action-intent@v1",
|
|
3
|
+
"id": "atelier.action.copy-repo-path",
|
|
4
|
+
"kind": "copy.repoPath",
|
|
5
|
+
"label": "Copy repo path",
|
|
6
|
+
"appliesTo": {
|
|
7
|
+
"scopes": ["entry"]
|
|
8
|
+
},
|
|
9
|
+
"reads": ["kg.id", "repoPath"],
|
|
10
|
+
"writes": ["clipboard"],
|
|
11
|
+
"authority": {
|
|
12
|
+
"label": "Copy only; no runtime mutation",
|
|
13
|
+
"runtimeMutation": true
|
|
14
|
+
},
|
|
15
|
+
"deniedWhen": []
|
|
16
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "atelier-action-intent@v1",
|
|
3
|
+
"id": "atelier.action.copy-repo-path",
|
|
4
|
+
"kind": "copy.repoPath",
|
|
5
|
+
"label": "Copy repo path",
|
|
6
|
+
"appliesTo": {
|
|
7
|
+
"scopes": ["entry"]
|
|
8
|
+
},
|
|
9
|
+
"reads": ["kg.id", "repoPath"],
|
|
10
|
+
"writes": ["clipboard"],
|
|
11
|
+
"authority": {
|
|
12
|
+
"label": "Copy only; no runtime mutation",
|
|
13
|
+
"runtimeMutation": false
|
|
14
|
+
},
|
|
15
|
+
"deniedWhen": [],
|
|
16
|
+
"applyEndpoint": "/api/apply"
|
|
17
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "atelier-action-intent@v1",
|
|
3
|
+
"id": "atelier.action.copy-repo-path",
|
|
4
|
+
"kind": "copy.repoPath",
|
|
5
|
+
"label": "Copy repo path",
|
|
6
|
+
"appliesTo": {
|
|
7
|
+
"scopes": ["entry"]
|
|
8
|
+
},
|
|
9
|
+
"reads": ["kg.id", "repoPath"],
|
|
10
|
+
"writes": ["clipboard", "filesystem"],
|
|
11
|
+
"authority": {
|
|
12
|
+
"label": "Copy only; no runtime mutation",
|
|
13
|
+
"runtimeMutation": false
|
|
14
|
+
},
|
|
15
|
+
"deniedWhen": []
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "atelier-action-intent@v1",
|
|
3
|
+
"id": "atelier.action.copy-agent-prompt",
|
|
4
|
+
"kind": "copy.agentPrompt",
|
|
5
|
+
"label": "Copy agent prompt",
|
|
6
|
+
"appliesTo": {
|
|
7
|
+
"scopes": ["entry", "realm"]
|
|
8
|
+
},
|
|
9
|
+
"reads": ["kg.id", "title", "repoPath"],
|
|
10
|
+
"writes": ["clipboard"],
|
|
11
|
+
"authority": {
|
|
12
|
+
"label": "Copy only; no runtime mutation",
|
|
13
|
+
"runtimeMutation": false
|
|
14
|
+
},
|
|
15
|
+
"deniedWhen": []
|
|
16
|
+
}
|