@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,360 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://mnstry.ai/schemas/atelier/atelier-analysis-adapter.v1.schema.json",
|
|
4
|
+
"$comment": "contract revision 1.1.0 (contract-stability epoch)",
|
|
5
|
+
"title": "atelier-analysis-adapter@v1",
|
|
6
|
+
"description": "Provider-neutral contract for optional analysis adapters. Analysis may emit proposed claims, but cannot mutate canonical Atelier state.",
|
|
7
|
+
"oneOf": [
|
|
8
|
+
{
|
|
9
|
+
"$ref": "#/$defs/manifest"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"$ref": "#/$defs/proposals"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"$defs": {
|
|
16
|
+
"manifest": {
|
|
17
|
+
"type": "object",
|
|
18
|
+
"additionalProperties": false,
|
|
19
|
+
"required": [
|
|
20
|
+
"schema",
|
|
21
|
+
"adapterId",
|
|
22
|
+
"provider",
|
|
23
|
+
"enabled",
|
|
24
|
+
"outputRoot",
|
|
25
|
+
"claimContract",
|
|
26
|
+
"execution",
|
|
27
|
+
"authority"
|
|
28
|
+
],
|
|
29
|
+
"properties": {
|
|
30
|
+
"schema": {
|
|
31
|
+
"const": "atelier-analysis-adapter@v1"
|
|
32
|
+
},
|
|
33
|
+
"contractVersion": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"pattern": "^1\\.[0-9]+\\.[0-9]+$"
|
|
36
|
+
},
|
|
37
|
+
"adapterId": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"pattern": "^atelier\\.analysis\\.[a-z0-9][a-z0-9.-]*$"
|
|
40
|
+
},
|
|
41
|
+
"provider": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"pattern": "^[a-z0-9][a-z0-9.-]*$"
|
|
44
|
+
},
|
|
45
|
+
"enabled": {
|
|
46
|
+
"type": "boolean",
|
|
47
|
+
"default": false
|
|
48
|
+
},
|
|
49
|
+
"outputRoot": {
|
|
50
|
+
"$ref": "#/$defs/localPath"
|
|
51
|
+
},
|
|
52
|
+
"claimContract": {
|
|
53
|
+
"const": "atelier-claim@v1"
|
|
54
|
+
},
|
|
55
|
+
"execution": {
|
|
56
|
+
"type": "object",
|
|
57
|
+
"additionalProperties": false,
|
|
58
|
+
"required": [
|
|
59
|
+
"posture",
|
|
60
|
+
"hiddenModelProvider",
|
|
61
|
+
"network",
|
|
62
|
+
"installCommand",
|
|
63
|
+
"executeCommand"
|
|
64
|
+
],
|
|
65
|
+
"properties": {
|
|
66
|
+
"posture": {
|
|
67
|
+
"enum": [
|
|
68
|
+
"inert",
|
|
69
|
+
"dry-run",
|
|
70
|
+
"reviewed-executor"
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
"hiddenModelProvider": {
|
|
74
|
+
"const": false
|
|
75
|
+
},
|
|
76
|
+
"network": {
|
|
77
|
+
"enum": [
|
|
78
|
+
"none",
|
|
79
|
+
"active-harness-approved"
|
|
80
|
+
]
|
|
81
|
+
},
|
|
82
|
+
"installCommand": {
|
|
83
|
+
"type": [
|
|
84
|
+
"string",
|
|
85
|
+
"null"
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
"executeCommand": {
|
|
89
|
+
"type": [
|
|
90
|
+
"string",
|
|
91
|
+
"null"
|
|
92
|
+
]
|
|
93
|
+
},
|
|
94
|
+
"reviewedBy": {
|
|
95
|
+
"type": "string",
|
|
96
|
+
"minLength": 1
|
|
97
|
+
},
|
|
98
|
+
"reviewedAt": {
|
|
99
|
+
"type": "string",
|
|
100
|
+
"format": "date-time"
|
|
101
|
+
},
|
|
102
|
+
"ext": {
|
|
103
|
+
"type": "object",
|
|
104
|
+
"description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
"allOf": [
|
|
108
|
+
{
|
|
109
|
+
"if": {
|
|
110
|
+
"properties": {
|
|
111
|
+
"posture": {
|
|
112
|
+
"const": "inert"
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
"required": [
|
|
116
|
+
"posture"
|
|
117
|
+
]
|
|
118
|
+
},
|
|
119
|
+
"then": {
|
|
120
|
+
"properties": {
|
|
121
|
+
"network": {
|
|
122
|
+
"const": "none"
|
|
123
|
+
},
|
|
124
|
+
"installCommand": {
|
|
125
|
+
"type": "null"
|
|
126
|
+
},
|
|
127
|
+
"executeCommand": {
|
|
128
|
+
"type": "null"
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"if": {
|
|
135
|
+
"properties": {
|
|
136
|
+
"posture": {
|
|
137
|
+
"const": "reviewed-executor"
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
"required": [
|
|
141
|
+
"posture"
|
|
142
|
+
]
|
|
143
|
+
},
|
|
144
|
+
"then": {
|
|
145
|
+
"required": [
|
|
146
|
+
"reviewedBy",
|
|
147
|
+
"reviewedAt"
|
|
148
|
+
]
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
]
|
|
152
|
+
},
|
|
153
|
+
"authority": {
|
|
154
|
+
"$ref": "#/$defs/claimOnlyAuthority"
|
|
155
|
+
},
|
|
156
|
+
"ext": {
|
|
157
|
+
"type": "object",
|
|
158
|
+
"description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
"proposals": {
|
|
163
|
+
"type": "object",
|
|
164
|
+
"additionalProperties": false,
|
|
165
|
+
"required": [
|
|
166
|
+
"schema",
|
|
167
|
+
"provider",
|
|
168
|
+
"generatedAt",
|
|
169
|
+
"proposals",
|
|
170
|
+
"authority"
|
|
171
|
+
],
|
|
172
|
+
"properties": {
|
|
173
|
+
"schema": {
|
|
174
|
+
"const": "atelier-proposals@v1"
|
|
175
|
+
},
|
|
176
|
+
"contractVersion": {
|
|
177
|
+
"type": "string",
|
|
178
|
+
"pattern": "^1\\.[0-9]+\\.[0-9]+$"
|
|
179
|
+
},
|
|
180
|
+
"adapterId": {
|
|
181
|
+
"type": "string",
|
|
182
|
+
"pattern": "^atelier\\.analysis\\.[a-z0-9][a-z0-9.-]*$"
|
|
183
|
+
},
|
|
184
|
+
"provider": {
|
|
185
|
+
"type": "string",
|
|
186
|
+
"pattern": "^[a-z0-9][a-z0-9.-]*$"
|
|
187
|
+
},
|
|
188
|
+
"generatedAt": {
|
|
189
|
+
"type": "string",
|
|
190
|
+
"format": "date-time"
|
|
191
|
+
},
|
|
192
|
+
"proposals": {
|
|
193
|
+
"type": "array",
|
|
194
|
+
"items": {
|
|
195
|
+
"$ref": "#/$defs/proposedClaim"
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
"authority": {
|
|
199
|
+
"$ref": "#/$defs/claimOnlyAuthority"
|
|
200
|
+
},
|
|
201
|
+
"ext": {
|
|
202
|
+
"type": "object",
|
|
203
|
+
"description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
"claimOnlyAuthority": {
|
|
208
|
+
"type": "object",
|
|
209
|
+
"additionalProperties": false,
|
|
210
|
+
"required": [
|
|
211
|
+
"claimOnly",
|
|
212
|
+
"frontMatterMutation",
|
|
213
|
+
"graphRelationMutation",
|
|
214
|
+
"publicExportFeed",
|
|
215
|
+
"mcpFeed",
|
|
216
|
+
"runtimeImport",
|
|
217
|
+
"directCanonicalWrite"
|
|
218
|
+
],
|
|
219
|
+
"properties": {
|
|
220
|
+
"claimOnly": {
|
|
221
|
+
"const": true
|
|
222
|
+
},
|
|
223
|
+
"frontMatterMutation": {
|
|
224
|
+
"const": false
|
|
225
|
+
},
|
|
226
|
+
"graphRelationMutation": {
|
|
227
|
+
"const": false
|
|
228
|
+
},
|
|
229
|
+
"publicExportFeed": {
|
|
230
|
+
"const": false
|
|
231
|
+
},
|
|
232
|
+
"mcpFeed": {
|
|
233
|
+
"const": false
|
|
234
|
+
},
|
|
235
|
+
"runtimeImport": {
|
|
236
|
+
"const": false
|
|
237
|
+
},
|
|
238
|
+
"directCanonicalWrite": {
|
|
239
|
+
"const": false
|
|
240
|
+
},
|
|
241
|
+
"ext": {
|
|
242
|
+
"type": "object",
|
|
243
|
+
"description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
"proposedClaim": {
|
|
248
|
+
"type": "object",
|
|
249
|
+
"additionalProperties": true,
|
|
250
|
+
"required": [
|
|
251
|
+
"schema",
|
|
252
|
+
"provider",
|
|
253
|
+
"status",
|
|
254
|
+
"promoted"
|
|
255
|
+
],
|
|
256
|
+
"properties": {
|
|
257
|
+
"schema": {
|
|
258
|
+
"const": "atelier-claim@v1"
|
|
259
|
+
},
|
|
260
|
+
"provider": {
|
|
261
|
+
"type": "string",
|
|
262
|
+
"pattern": "^[a-z0-9][a-z0-9.-]*$"
|
|
263
|
+
},
|
|
264
|
+
"status": {
|
|
265
|
+
"const": "proposed"
|
|
266
|
+
},
|
|
267
|
+
"promoted": {
|
|
268
|
+
"const": false
|
|
269
|
+
}
|
|
270
|
+
},
|
|
271
|
+
"not": {
|
|
272
|
+
"anyOf": [
|
|
273
|
+
{
|
|
274
|
+
"required": [
|
|
275
|
+
"kg"
|
|
276
|
+
]
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"required": [
|
|
280
|
+
"frontmatter"
|
|
281
|
+
]
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"required": [
|
|
285
|
+
"frontMatter"
|
|
286
|
+
]
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
"required": [
|
|
290
|
+
"relations"
|
|
291
|
+
]
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
"required": [
|
|
295
|
+
"graphRelations"
|
|
296
|
+
]
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"required": [
|
|
300
|
+
"publicExport"
|
|
301
|
+
]
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
"required": [
|
|
305
|
+
"atelierExport"
|
|
306
|
+
]
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"required": [
|
|
310
|
+
"mcpFeed"
|
|
311
|
+
]
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
"required": [
|
|
315
|
+
"runtimeImport"
|
|
316
|
+
]
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
"required": [
|
|
320
|
+
"canonicalWrite"
|
|
321
|
+
]
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
"required": [
|
|
325
|
+
"canonicalMutation"
|
|
326
|
+
]
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
"required": [
|
|
330
|
+
"mutation"
|
|
331
|
+
]
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
"required": [
|
|
335
|
+
"writes"
|
|
336
|
+
]
|
|
337
|
+
}
|
|
338
|
+
]
|
|
339
|
+
}
|
|
340
|
+
},
|
|
341
|
+
"localPath": {
|
|
342
|
+
"type": "string",
|
|
343
|
+
"minLength": 1,
|
|
344
|
+
"pattern": "^[A-Za-z0-9._/-]+$",
|
|
345
|
+
"not": {
|
|
346
|
+
"anyOf": [
|
|
347
|
+
{
|
|
348
|
+
"pattern": "^/"
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
"pattern": "(^|/)\\.\\.(/|$)"
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
"pattern": "^[a-zA-Z][a-zA-Z0-9+.-]*:"
|
|
355
|
+
}
|
|
356
|
+
]
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://mnstry.ai/schemas/atelier/atelier-attestation.v1.schema.json",
|
|
4
|
+
"$comment": "contract revision 1.0.0 (contract-stability epoch)",
|
|
5
|
+
"title": "atelier-attestation@v1",
|
|
6
|
+
"description": "Record of an admission decision by an issuer over a canonicalized payload document. An attestation never encodes conformance: conformance is public and offline, decided by the published validators. Unsigned attestations (signature null) are non-authoritative.",
|
|
7
|
+
"type": "object",
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"required": [
|
|
10
|
+
"schema",
|
|
11
|
+
"attestationId",
|
|
12
|
+
"issuedAt",
|
|
13
|
+
"issuer",
|
|
14
|
+
"subject",
|
|
15
|
+
"verdict",
|
|
16
|
+
"signature"
|
|
17
|
+
],
|
|
18
|
+
"properties": {
|
|
19
|
+
"schema": {
|
|
20
|
+
"const": "atelier-attestation@v1"
|
|
21
|
+
},
|
|
22
|
+
"contractVersion": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"pattern": "^1\\.[0-9]+\\.[0-9]+$"
|
|
25
|
+
},
|
|
26
|
+
"attestationId": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"pattern": "^attestation:[a-z0-9][a-z0-9:-]*$"
|
|
29
|
+
},
|
|
30
|
+
"issuedAt": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"format": "date-time"
|
|
33
|
+
},
|
|
34
|
+
"issuer": {
|
|
35
|
+
"description": "Who made the admission decision. Issuer identity is asserted here; authority comes only from a recognized signature.",
|
|
36
|
+
"type": "object",
|
|
37
|
+
"additionalProperties": false,
|
|
38
|
+
"required": [
|
|
39
|
+
"id",
|
|
40
|
+
"role"
|
|
41
|
+
],
|
|
42
|
+
"properties": {
|
|
43
|
+
"id": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"minLength": 1
|
|
46
|
+
},
|
|
47
|
+
"role": {
|
|
48
|
+
"enum": [
|
|
49
|
+
"admission-authority",
|
|
50
|
+
"tool",
|
|
51
|
+
"self"
|
|
52
|
+
]
|
|
53
|
+
},
|
|
54
|
+
"keyId": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"minLength": 1
|
|
57
|
+
},
|
|
58
|
+
"ext": {
|
|
59
|
+
"type": "object",
|
|
60
|
+
"description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"subject": {
|
|
65
|
+
"description": "The attested payload: its contract, its stable reference, and a canonical hash binding the attestation to exact payload bytes.",
|
|
66
|
+
"type": "object",
|
|
67
|
+
"additionalProperties": false,
|
|
68
|
+
"required": [
|
|
69
|
+
"schema",
|
|
70
|
+
"ref",
|
|
71
|
+
"payloadHash"
|
|
72
|
+
],
|
|
73
|
+
"properties": {
|
|
74
|
+
"schema": {
|
|
75
|
+
"description": "Contract of the attested payload document.",
|
|
76
|
+
"type": "string",
|
|
77
|
+
"pattern": "^[a-z][a-z0-9.-]*@v[0-9]+$"
|
|
78
|
+
},
|
|
79
|
+
"ref": {
|
|
80
|
+
"description": "Stable identifier of the payload (exportId, runId, or claimId).",
|
|
81
|
+
"type": "string",
|
|
82
|
+
"minLength": 1
|
|
83
|
+
},
|
|
84
|
+
"payloadHash": {
|
|
85
|
+
"type": "object",
|
|
86
|
+
"additionalProperties": false,
|
|
87
|
+
"required": [
|
|
88
|
+
"algorithm",
|
|
89
|
+
"canonicalization",
|
|
90
|
+
"digest"
|
|
91
|
+
],
|
|
92
|
+
"properties": {
|
|
93
|
+
"algorithm": {
|
|
94
|
+
"const": "sha-256"
|
|
95
|
+
},
|
|
96
|
+
"canonicalization": {
|
|
97
|
+
"const": "RFC8785-JCS"
|
|
98
|
+
},
|
|
99
|
+
"digest": {
|
|
100
|
+
"type": "string",
|
|
101
|
+
"pattern": "^[0-9a-f]{64}$"
|
|
102
|
+
},
|
|
103
|
+
"ext": {
|
|
104
|
+
"type": "object",
|
|
105
|
+
"description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
"references": {
|
|
110
|
+
"description": "Optional cross-references to related governed documents.",
|
|
111
|
+
"type": "array",
|
|
112
|
+
"items": {
|
|
113
|
+
"type": "object",
|
|
114
|
+
"additionalProperties": false,
|
|
115
|
+
"required": [
|
|
116
|
+
"type",
|
|
117
|
+
"id"
|
|
118
|
+
],
|
|
119
|
+
"properties": {
|
|
120
|
+
"type": {
|
|
121
|
+
"enum": [
|
|
122
|
+
"claim",
|
|
123
|
+
"run",
|
|
124
|
+
"export",
|
|
125
|
+
"protocol"
|
|
126
|
+
]
|
|
127
|
+
},
|
|
128
|
+
"id": {
|
|
129
|
+
"type": "string",
|
|
130
|
+
"minLength": 1
|
|
131
|
+
},
|
|
132
|
+
"ext": {
|
|
133
|
+
"type": "object",
|
|
134
|
+
"description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
"ext": {
|
|
140
|
+
"type": "object",
|
|
141
|
+
"description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
"verdict": {
|
|
146
|
+
"description": "The admission decision. scope is structurally pinned to admission: a document claiming a conformance verdict cannot validate.",
|
|
147
|
+
"type": "object",
|
|
148
|
+
"additionalProperties": false,
|
|
149
|
+
"required": [
|
|
150
|
+
"scope",
|
|
151
|
+
"decision"
|
|
152
|
+
],
|
|
153
|
+
"properties": {
|
|
154
|
+
"scope": {
|
|
155
|
+
"const": "admission"
|
|
156
|
+
},
|
|
157
|
+
"decision": {
|
|
158
|
+
"enum": [
|
|
159
|
+
"admitted",
|
|
160
|
+
"rejected",
|
|
161
|
+
"needs-review"
|
|
162
|
+
]
|
|
163
|
+
},
|
|
164
|
+
"reasons": {
|
|
165
|
+
"type": "array",
|
|
166
|
+
"items": {
|
|
167
|
+
"type": "object",
|
|
168
|
+
"additionalProperties": false,
|
|
169
|
+
"required": [
|
|
170
|
+
"code",
|
|
171
|
+
"message"
|
|
172
|
+
],
|
|
173
|
+
"properties": {
|
|
174
|
+
"code": {
|
|
175
|
+
"type": "string",
|
|
176
|
+
"pattern": "^[a-z][a-z0-9.-]*$"
|
|
177
|
+
},
|
|
178
|
+
"message": {
|
|
179
|
+
"type": "string",
|
|
180
|
+
"minLength": 1
|
|
181
|
+
},
|
|
182
|
+
"ext": {
|
|
183
|
+
"type": "object",
|
|
184
|
+
"description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
"ext": {
|
|
190
|
+
"type": "object",
|
|
191
|
+
"description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
"signature": {
|
|
196
|
+
"description": "Required in shape, nullable in value. null means the attestation is unsigned and non-authoritative; silently absent is not expressible.",
|
|
197
|
+
"oneOf": [
|
|
198
|
+
{
|
|
199
|
+
"type": "null"
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"type": "object",
|
|
203
|
+
"additionalProperties": false,
|
|
204
|
+
"required": [
|
|
205
|
+
"algorithm",
|
|
206
|
+
"keyId",
|
|
207
|
+
"value"
|
|
208
|
+
],
|
|
209
|
+
"properties": {
|
|
210
|
+
"algorithm": {
|
|
211
|
+
"enum": [
|
|
212
|
+
"ed25519",
|
|
213
|
+
"es256"
|
|
214
|
+
]
|
|
215
|
+
},
|
|
216
|
+
"keyId": {
|
|
217
|
+
"type": "string",
|
|
218
|
+
"minLength": 1
|
|
219
|
+
},
|
|
220
|
+
"value": {
|
|
221
|
+
"description": "Unpadded base64url signature bytes. Length must be a valid base64url shape (never length % 4 == 1); minLength 43 is the 32-byte signature floor.",
|
|
222
|
+
"type": "string",
|
|
223
|
+
"minLength": 43,
|
|
224
|
+
"pattern": "^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$"
|
|
225
|
+
},
|
|
226
|
+
"ext": {
|
|
227
|
+
"type": "object",
|
|
228
|
+
"description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
]
|
|
233
|
+
},
|
|
234
|
+
"ext": {
|
|
235
|
+
"type": "object",
|
|
236
|
+
"description": "Reserved extension container. Producers MAY add namespaced members (recommend vendor-prefixed keys). Consumers MUST ignore members they do not recognize. Contents are not validated at v1 and carry no authority over first-class fields."
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|