@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,75 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import fs from 'node:fs'
|
|
4
|
+
import path from 'node:path'
|
|
5
|
+
import { fileURLToPath } from 'node:url'
|
|
6
|
+
import { validateAtelierExportContract } from './export/atelier-export-contract.mjs'
|
|
7
|
+
|
|
8
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
|
9
|
+
const packageRoot = path.resolve(__dirname, '..')
|
|
10
|
+
const schemaPath = path.join(packageRoot, 'contracts/atelier-export.v1.schema.json')
|
|
11
|
+
|
|
12
|
+
function readJsonFile(filePath) {
|
|
13
|
+
const text = fs.readFileSync(filePath, 'utf8')
|
|
14
|
+
return JSON.parse(text)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function validateAtelierExportDryRun(doc, { schema = readJsonFile(schemaPath), graphNodes = [] } = {}) {
|
|
18
|
+
return validateAtelierExportContract(doc, {
|
|
19
|
+
schema,
|
|
20
|
+
graphNodes,
|
|
21
|
+
dryRunOnly: true,
|
|
22
|
+
})
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function validateAtelierExportDryRunFile(filePath) {
|
|
26
|
+
const absolutePath = path.resolve(filePath)
|
|
27
|
+
const doc = readJsonFile(absolutePath)
|
|
28
|
+
return validateAtelierExportDryRun(doc)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function emptyReport(message) {
|
|
32
|
+
return {
|
|
33
|
+
accepted: false,
|
|
34
|
+
importable: false,
|
|
35
|
+
worstOperationStatus: 'other',
|
|
36
|
+
graphProvenanceMode: 'absent',
|
|
37
|
+
operationSummary: {
|
|
38
|
+
counts: { ready: 0, warning: 0, blocked: 0, other: 0 },
|
|
39
|
+
worstOperationStatus: 'other',
|
|
40
|
+
total: 0,
|
|
41
|
+
},
|
|
42
|
+
errors: [message],
|
|
43
|
+
warnings: [],
|
|
44
|
+
objects: { total: 0, byCollection: {} },
|
|
45
|
+
sourceNodes: [],
|
|
46
|
+
runtimeTargets: [],
|
|
47
|
+
semanticProfileViolations: [],
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function printReport(report) {
|
|
52
|
+
process.stdout.write(`${JSON.stringify(report, null, 2)}\n`)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export function main(argv) {
|
|
56
|
+
const [filePath, ...extra] = argv
|
|
57
|
+
if (!filePath || extra.length > 0) {
|
|
58
|
+
printReport(emptyReport('usage: node scripts/validation/validate-atelier-export-dry-run.mjs <path-to-export-json>'))
|
|
59
|
+
return 1
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
try {
|
|
63
|
+
const report = validateAtelierExportDryRunFile(filePath)
|
|
64
|
+
printReport(report)
|
|
65
|
+
return report.accepted ? 0 : 1
|
|
66
|
+
} catch (error) {
|
|
67
|
+
printReport(emptyReport(error instanceof Error ? error.message : String(error)))
|
|
68
|
+
return 1
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const currentFile = fileURLToPath(import.meta.url)
|
|
73
|
+
if (process.argv[1] && path.resolve(process.argv[1]) === currentFile) {
|
|
74
|
+
process.exitCode = main(process.argv.slice(2))
|
|
75
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "mnstry.atelier-project-config@v1",
|
|
3
|
+
"name": "sample-workspace",
|
|
4
|
+
"roots": {
|
|
5
|
+
"workspace": ".",
|
|
6
|
+
"repoOps": "."
|
|
7
|
+
},
|
|
8
|
+
"graph": {
|
|
9
|
+
"repoAccessPath": "repo-access.v1.json",
|
|
10
|
+
"outputPath": "atelier-output/knowledge.graph.json"
|
|
11
|
+
},
|
|
12
|
+
"projection": {
|
|
13
|
+
"outputRoot": "atelier-output",
|
|
14
|
+
"readinessPath": "atelier-output/atelier-readiness.json"
|
|
15
|
+
},
|
|
16
|
+
"repos": [
|
|
17
|
+
{
|
|
18
|
+
"name": "content",
|
|
19
|
+
"path": "content",
|
|
20
|
+
"readBoundary": "private"
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Distribution workspace
|
|
2
|
+
|
|
3
|
+
Starter for a MNSTRY Atelier distribution: a rebranded package that wraps the
|
|
4
|
+
Atelier CLI and ships its own name, projection branding, and optional extension
|
|
5
|
+
packs on top of the unmodified Atelier core.
|
|
6
|
+
|
|
7
|
+
The distribution invariant: add and rebrand, never alter root semantics. A
|
|
8
|
+
distribution may add protocols, skills, and branding, but the bundled commands,
|
|
9
|
+
contracts, and boundary rules keep their upstream meaning.
|
|
10
|
+
|
|
11
|
+
## Required attribution
|
|
12
|
+
|
|
13
|
+
Every distribution package must carry the exact line below in its README:
|
|
14
|
+
|
|
15
|
+
powered by MNSTRY Atelier
|
|
16
|
+
|
|
17
|
+
`atelier distribution check` blocks on this line. See `TRADEMARKS.md`
|
|
18
|
+
("Required attribution") and `docs/attestation.md` in the Atelier package for
|
|
19
|
+
the policy and signing details.
|
|
20
|
+
|
|
21
|
+
## Projection branding
|
|
22
|
+
|
|
23
|
+
`atelier.project.json` in this workspace carries the extension block that
|
|
24
|
+
brands the local projection:
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
"ext": {
|
|
28
|
+
"mnstry.atelier": {
|
|
29
|
+
"distribution": {
|
|
30
|
+
"name": "Example Distribution",
|
|
31
|
+
"eyebrow": "distribution projection"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
An optional `theme` object may override the projection color tokens
|
|
38
|
+
`bg`, `surface`, `text`, `accent`, and `eyebrow` with hex values, for example
|
|
39
|
+
`"theme": { "accent": "#7a9e7e" }`. Values that are not hex colors are
|
|
40
|
+
rejected at build time.
|
|
41
|
+
|
|
42
|
+
## Boundary
|
|
43
|
+
|
|
44
|
+
Shared distribution repos are readable by the project group. Do not place
|
|
45
|
+
private or sensitive personal domain source here. Use a private domain repo per
|
|
46
|
+
user for that material. `USER_GITHUB_LOGIN_PLACEHOLDER` in
|
|
47
|
+
`boundary-policy.v1.json` is a placeholder, not a real account; `atelier init`
|
|
48
|
+
personalizes it in the copied workspace.
|
|
49
|
+
|
|
50
|
+
## Tracked config and local overlay
|
|
51
|
+
|
|
52
|
+
Track `atelier.project.json`, `repo-access.v1.json`, `boundary-policy.v1.json`,
|
|
53
|
+
`atelier.lock.json`, governance files, and source documents. Ignore local
|
|
54
|
+
operator state such as `atelier.local.json`, `atelier.workspace.local.json`,
|
|
55
|
+
`atelier-attestation-key.local.json` (the local attestation signing key —
|
|
56
|
+
never commit it), `.atelier-local/`, proposals/current/presence/nonce/grants/
|
|
57
|
+
audit/session/support state, support bundles, transcripts, prompts, generated
|
|
58
|
+
projections, `node_modules/`, and `.DS_Store`.
|
|
59
|
+
|
|
60
|
+
## Local commands
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
atelier graph --project ./atelier.project.json
|
|
64
|
+
atelier project --project ./atelier.project.json
|
|
65
|
+
atelier readiness --project ./atelier.project.json
|
|
66
|
+
atelier lock check --project ./atelier.project.json
|
|
67
|
+
atelier distribution check
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Atelier performs no telemetry, cloud sync, runtime mutation, or direct browser
|
|
71
|
+
writes for this preview.
|
|
72
|
+
|
|
73
|
+
## Atelier lockfile
|
|
74
|
+
|
|
75
|
+
`atelier init --template distribution` writes `atelier.lock.json`.
|
|
76
|
+
If this template was copied manually, create the lock before the first commit:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
atelier lock write --project ./atelier.project.json
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Learn more
|
|
83
|
+
|
|
84
|
+
- `docs/distributions.md` in the Atelier package — the full distribution guide.
|
|
85
|
+
- `examples/loomworks-studio/` in the Atelier repository — a complete
|
|
86
|
+
reference distribution with a branded wrapper binary and extension pack.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "mnstry.atelier-project-config@v1",
|
|
3
|
+
"name": "project-alpha",
|
|
4
|
+
"roots": {
|
|
5
|
+
"workspace": ".",
|
|
6
|
+
"repoOps": "."
|
|
7
|
+
},
|
|
8
|
+
"graph": {
|
|
9
|
+
"repoAccessPath": "repo-access.v1.json",
|
|
10
|
+
"outputPath": "atelier-output/knowledge.graph.json"
|
|
11
|
+
},
|
|
12
|
+
"projection": {
|
|
13
|
+
"outputRoot": "atelier-output",
|
|
14
|
+
"readinessPath": "atelier-output/atelier-readiness.json"
|
|
15
|
+
},
|
|
16
|
+
"boundaries": {
|
|
17
|
+
"policyPath": "boundary-policy.v1.json",
|
|
18
|
+
"governanceLedgerPath": "governance/repo-boundary-ledger.md",
|
|
19
|
+
"strictNewRepos": true
|
|
20
|
+
},
|
|
21
|
+
"repos": [
|
|
22
|
+
{
|
|
23
|
+
"name": "project-alpha",
|
|
24
|
+
"path": "project",
|
|
25
|
+
"readBoundary": "team"
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"ext": {
|
|
29
|
+
"mnstry.atelier": {
|
|
30
|
+
"distribution": {
|
|
31
|
+
"name": "Example Distribution",
|
|
32
|
+
"eyebrow": "distribution projection"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "mnstry.atelier-boundary-policy@v1",
|
|
3
|
+
"mode": "strict",
|
|
4
|
+
"actors": {
|
|
5
|
+
"owner": {
|
|
6
|
+
"githubLogin": "USER_GITHUB_LOGIN_PLACEHOLDER",
|
|
7
|
+
"gitEmails": ["owner@example.invalid"],
|
|
8
|
+
"privateDomainRepo": "tenant-private-domain"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"repos": {
|
|
12
|
+
"tenant-private-domain": {
|
|
13
|
+
"kind": "private_domain",
|
|
14
|
+
"ownerActor": "owner",
|
|
15
|
+
"readBoundary": "private",
|
|
16
|
+
"allowedAudiences": ["private", "sensitive", "team", "operator", "staff", "public"],
|
|
17
|
+
"forbiddenAudiences": [],
|
|
18
|
+
"autoCommit": "guarded"
|
|
19
|
+
},
|
|
20
|
+
"project-alpha": {
|
|
21
|
+
"kind": "shared",
|
|
22
|
+
"readBoundary": "team",
|
|
23
|
+
"allowedAudiences": ["team", "operator", "staff", "public"],
|
|
24
|
+
"forbiddenAudiences": ["private", "sensitive"],
|
|
25
|
+
"autoCommit": "guarded"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"promotion": {
|
|
29
|
+
"requiresGitPromote": true,
|
|
30
|
+
"recordsPath": "governance/git-promote-events.jsonl"
|
|
31
|
+
},
|
|
32
|
+
"forbiddenPaths": [
|
|
33
|
+
".atelier-local/**",
|
|
34
|
+
"atelier.local.json",
|
|
35
|
+
"atelier.workspace.local.json",
|
|
36
|
+
".mnstry-local/**",
|
|
37
|
+
".atelier-proposals/**",
|
|
38
|
+
".atelier-current",
|
|
39
|
+
".atelier-current.json",
|
|
40
|
+
".atelier-presence.json",
|
|
41
|
+
".atelier-nonce",
|
|
42
|
+
".atelier-capability-grants.json",
|
|
43
|
+
".atelier-grants/**",
|
|
44
|
+
".atelier-events.jsonl",
|
|
45
|
+
".atelier-audit.jsonl",
|
|
46
|
+
".atelier-audit/**",
|
|
47
|
+
".atelier-session.json",
|
|
48
|
+
".atelier-session.jsonl",
|
|
49
|
+
".atelier-session/**",
|
|
50
|
+
".atelier-sessions/**",
|
|
51
|
+
".atelier-support/**",
|
|
52
|
+
".atelier-support.json",
|
|
53
|
+
"support-bundle*",
|
|
54
|
+
"support-bundles/**",
|
|
55
|
+
"prompts/**",
|
|
56
|
+
"transcripts/**",
|
|
57
|
+
"node_modules/**",
|
|
58
|
+
".DS_Store"
|
|
59
|
+
],
|
|
60
|
+
"governanceLedgerPath": "governance/repo-boundary-ledger.md"
|
|
61
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
.atelier-local/
|
|
2
|
+
atelier.local.json
|
|
3
|
+
atelier.workspace.local.json
|
|
4
|
+
atelier-attestation-key.local.json
|
|
5
|
+
.mnstry-local/
|
|
6
|
+
.atelier-proposals/
|
|
7
|
+
.atelier-current
|
|
8
|
+
.atelier-current.json
|
|
9
|
+
.atelier-presence.json
|
|
10
|
+
.atelier-nonce
|
|
11
|
+
.atelier-capability-grants.json
|
|
12
|
+
.atelier-grants/
|
|
13
|
+
.atelier-events.jsonl
|
|
14
|
+
.atelier-audit.jsonl
|
|
15
|
+
.atelier-audit/
|
|
16
|
+
.atelier-session.json
|
|
17
|
+
.atelier-session.jsonl
|
|
18
|
+
.atelier-session/
|
|
19
|
+
.atelier-sessions/
|
|
20
|
+
.atelier-support/
|
|
21
|
+
.atelier-support.json
|
|
22
|
+
atelier-output/
|
|
23
|
+
support-bundle*
|
|
24
|
+
support-bundles/
|
|
25
|
+
transcripts/
|
|
26
|
+
prompts/
|
|
27
|
+
node_modules/
|
|
28
|
+
npm-debug.log*
|
|
29
|
+
.DS_Store
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Shared Project Seed"
|
|
3
|
+
kg:
|
|
4
|
+
id: "project-alpha:seed"
|
|
5
|
+
type: "project-note"
|
|
6
|
+
domain: "project"
|
|
7
|
+
lifecycle: "draft"
|
|
8
|
+
status: "seed"
|
|
9
|
+
audience: "team"
|
|
10
|
+
relations: []
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Shared Project Seed
|
|
14
|
+
|
|
15
|
+
Shared project source starts here.
|
|
16
|
+
|
|
17
|
+
This repo is for team-readable project material. Keep private-domain source in
|
|
18
|
+
the relevant user's private domain repo and bring only reviewed summaries here
|
|
19
|
+
through Git review.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Private Domain Workspace
|
|
2
|
+
|
|
3
|
+
Starter for one user's private domain repository.
|
|
4
|
+
|
|
5
|
+
Default example user:
|
|
6
|
+
|
|
7
|
+
- Name: `Owner`
|
|
8
|
+
- GitHub login placeholder: `USER_GITHUB_LOGIN_PLACEHOLDER`
|
|
9
|
+
- Repo: `github.com/<org>/tenant-private-domain`
|
|
10
|
+
|
|
11
|
+
`USER_GITHUB_LOGIN_PLACEHOLDER` is a placeholder, not a real account. Keep
|
|
12
|
+
committed starter files placeholder-only; set a real login or email only in the
|
|
13
|
+
copied private workspace.
|
|
14
|
+
|
|
15
|
+
## Boundary
|
|
16
|
+
|
|
17
|
+
This repo is the Git read boundary for the user's private source. Do not place
|
|
18
|
+
private domain source in a shared project repository and rely on projection
|
|
19
|
+
filters to hide it.
|
|
20
|
+
|
|
21
|
+
## Tracked Config And Local Overlay
|
|
22
|
+
|
|
23
|
+
Track `atelier.project.json`, `repo-access.v1.json`, `boundary-policy.v1.json`,
|
|
24
|
+
`atelier.lock.json`, governance files, and source documents. Ignore local
|
|
25
|
+
operator state such as `atelier.local.json`, `atelier.workspace.local.json`,
|
|
26
|
+
`.atelier-local/`, proposals/current/presence/nonce/grants/audit/session/support
|
|
27
|
+
state, support bundles, transcripts, prompts, generated projections,
|
|
28
|
+
`node_modules/`, and `.DS_Store`.
|
|
29
|
+
|
|
30
|
+
## Local Commands
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
atelier graph --project ./atelier.project.json
|
|
34
|
+
atelier project --project ./atelier.project.json
|
|
35
|
+
atelier readiness --project ./atelier.project.json
|
|
36
|
+
atelier lock check --project ./atelier.project.json
|
|
37
|
+
atelier upgrade --dry-run --project ./atelier.project.json
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Atelier performs no telemetry, cloud sync, runtime mutation, or direct browser
|
|
41
|
+
writes for this preview.
|
|
42
|
+
|
|
43
|
+
## Atelier Lockfile
|
|
44
|
+
|
|
45
|
+
`atelier init --template private-domain` writes `atelier.lock.json`.
|
|
46
|
+
If this template was copied manually, create the lock before the first commit:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
atelier lock write --project ./atelier.project.json
|
|
50
|
+
```
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "mnstry.atelier-project-config@v1",
|
|
3
|
+
"name": "tenant-private-domain",
|
|
4
|
+
"roots": {
|
|
5
|
+
"workspace": ".",
|
|
6
|
+
"repoOps": "."
|
|
7
|
+
},
|
|
8
|
+
"graph": {
|
|
9
|
+
"repoAccessPath": "repo-access.v1.json",
|
|
10
|
+
"outputPath": "atelier-output/knowledge.graph.json"
|
|
11
|
+
},
|
|
12
|
+
"projection": {
|
|
13
|
+
"outputRoot": "atelier-output",
|
|
14
|
+
"readinessPath": "atelier-output/atelier-readiness.json"
|
|
15
|
+
},
|
|
16
|
+
"boundaries": {
|
|
17
|
+
"policyPath": "boundary-policy.v1.json",
|
|
18
|
+
"governanceLedgerPath": "governance/repo-boundary-ledger.md",
|
|
19
|
+
"strictNewRepos": true
|
|
20
|
+
},
|
|
21
|
+
"repos": [
|
|
22
|
+
{
|
|
23
|
+
"name": "tenant-private-domain",
|
|
24
|
+
"path": "domain",
|
|
25
|
+
"readBoundary": "private"
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "mnstry.atelier-boundary-policy@v1",
|
|
3
|
+
"mode": "strict",
|
|
4
|
+
"actors": {
|
|
5
|
+
"owner": {
|
|
6
|
+
"githubLogin": "USER_GITHUB_LOGIN_PLACEHOLDER",
|
|
7
|
+
"gitEmails": ["owner@example.invalid"],
|
|
8
|
+
"privateDomainRepo": "tenant-private-domain"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"repos": {
|
|
12
|
+
"tenant-private-domain": {
|
|
13
|
+
"kind": "private_domain",
|
|
14
|
+
"ownerActor": "owner",
|
|
15
|
+
"readBoundary": "private",
|
|
16
|
+
"allowedAudiences": ["private", "sensitive", "team", "operator", "staff", "public"],
|
|
17
|
+
"forbiddenAudiences": [],
|
|
18
|
+
"autoCommit": "guarded"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"promotion": {
|
|
22
|
+
"requiresGitPromote": true,
|
|
23
|
+
"recordsPath": "governance/git-promote-events.jsonl"
|
|
24
|
+
},
|
|
25
|
+
"forbiddenPaths": [
|
|
26
|
+
".atelier-local/**",
|
|
27
|
+
"atelier.local.json",
|
|
28
|
+
"atelier.workspace.local.json",
|
|
29
|
+
".mnstry-local/**",
|
|
30
|
+
".atelier-proposals/**",
|
|
31
|
+
".atelier-current",
|
|
32
|
+
".atelier-current.json",
|
|
33
|
+
".atelier-presence.json",
|
|
34
|
+
".atelier-nonce",
|
|
35
|
+
".atelier-capability-grants.json",
|
|
36
|
+
".atelier-grants/**",
|
|
37
|
+
".atelier-events.jsonl",
|
|
38
|
+
".atelier-audit.jsonl",
|
|
39
|
+
".atelier-audit/**",
|
|
40
|
+
".atelier-session.json",
|
|
41
|
+
".atelier-session.jsonl",
|
|
42
|
+
".atelier-session/**",
|
|
43
|
+
".atelier-sessions/**",
|
|
44
|
+
".atelier-support/**",
|
|
45
|
+
".atelier-support.json",
|
|
46
|
+
"support-bundle*",
|
|
47
|
+
"support-bundles/**",
|
|
48
|
+
"prompts/**",
|
|
49
|
+
"transcripts/**",
|
|
50
|
+
"node_modules/**",
|
|
51
|
+
".DS_Store"
|
|
52
|
+
],
|
|
53
|
+
"governanceLedgerPath": "governance/repo-boundary-ledger.md"
|
|
54
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Private Domain Seed"
|
|
3
|
+
kg:
|
|
4
|
+
id: "tenant-private-domain:seed"
|
|
5
|
+
type: "domain-note"
|
|
6
|
+
domain: "example-domain"
|
|
7
|
+
lifecycle: "draft"
|
|
8
|
+
status: "seed"
|
|
9
|
+
audience: "private"
|
|
10
|
+
relations: []
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Private Domain Seed
|
|
14
|
+
|
|
15
|
+
Private domain source starts here.
|
|
16
|
+
|
|
17
|
+
Keep only owner-controlled private material in this repository. Promote reviewed
|
|
18
|
+
summaries into shared project repos through ordinary Git review, not through
|
|
19
|
+
browser writes or runtime mutation.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
.atelier-local/
|
|
2
|
+
atelier.local.json
|
|
3
|
+
atelier.workspace.local.json
|
|
4
|
+
atelier-attestation-key.local.json
|
|
5
|
+
.mnstry-local/
|
|
6
|
+
.atelier-proposals/
|
|
7
|
+
.atelier-current
|
|
8
|
+
.atelier-current.json
|
|
9
|
+
.atelier-presence.json
|
|
10
|
+
.atelier-nonce
|
|
11
|
+
.atelier-capability-grants.json
|
|
12
|
+
.atelier-grants/
|
|
13
|
+
.atelier-events.jsonl
|
|
14
|
+
.atelier-audit.jsonl
|
|
15
|
+
.atelier-audit/
|
|
16
|
+
.atelier-session.json
|
|
17
|
+
.atelier-session.jsonl
|
|
18
|
+
.atelier-session/
|
|
19
|
+
.atelier-sessions/
|
|
20
|
+
.atelier-support/
|
|
21
|
+
.atelier-support.json
|
|
22
|
+
atelier-output/
|
|
23
|
+
support-bundle*
|
|
24
|
+
support-bundles/
|
|
25
|
+
transcripts/
|
|
26
|
+
prompts/
|
|
27
|
+
node_modules/
|
|
28
|
+
npm-debug.log*
|
|
29
|
+
.DS_Store
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Shared Project Workspace
|
|
2
|
+
|
|
3
|
+
Starter for shared project repositories.
|
|
4
|
+
|
|
5
|
+
Default example:
|
|
6
|
+
|
|
7
|
+
- Project: `project-alpha`
|
|
8
|
+
- Shared repo: `github.com/<org>/project-alpha`
|
|
9
|
+
- Example collaborator: `Owner`
|
|
10
|
+
- Example collaborator login placeholder: `USER_GITHUB_LOGIN_PLACEHOLDER`
|
|
11
|
+
|
|
12
|
+
`USER_GITHUB_LOGIN_PLACEHOLDER` is a placeholder, not a real account. Keep
|
|
13
|
+
committed starter files placeholder-only; set a real login or email only in the
|
|
14
|
+
copied private workspace.
|
|
15
|
+
|
|
16
|
+
## Boundary
|
|
17
|
+
|
|
18
|
+
Shared project repos are readable by the project group. Do not place
|
|
19
|
+
private or sensitive personal domain source here. Use a private domain repo per
|
|
20
|
+
user for that material.
|
|
21
|
+
|
|
22
|
+
## Tracked Config And Local Overlay
|
|
23
|
+
|
|
24
|
+
Track `atelier.project.json`, `repo-access.v1.json`, `boundary-policy.v1.json`,
|
|
25
|
+
`atelier.lock.json`, governance files, and source documents. Ignore local
|
|
26
|
+
operator state such as `atelier.local.json`, `atelier.workspace.local.json`,
|
|
27
|
+
`.atelier-local/`, proposals/current/presence/nonce/grants/audit/session/support
|
|
28
|
+
state, support bundles, transcripts, prompts, generated projections,
|
|
29
|
+
`node_modules/`, and `.DS_Store`.
|
|
30
|
+
|
|
31
|
+
## Local Commands
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
atelier graph --project ./atelier.project.json
|
|
35
|
+
atelier project --project ./atelier.project.json
|
|
36
|
+
atelier readiness --project ./atelier.project.json
|
|
37
|
+
atelier lock check --project ./atelier.project.json
|
|
38
|
+
atelier upgrade --dry-run --project ./atelier.project.json
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Atelier performs no telemetry, cloud sync, runtime mutation, or direct browser
|
|
42
|
+
writes for this preview.
|
|
43
|
+
|
|
44
|
+
## Atelier Lockfile
|
|
45
|
+
|
|
46
|
+
`atelier init --template shared-project` writes `atelier.lock.json`.
|
|
47
|
+
If this template was copied manually, create the lock before the first commit:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
atelier lock write --project ./atelier.project.json
|
|
51
|
+
```
|