@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
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.2.0-alpha.1
|
|
4
|
+
|
|
5
|
+
First release published to the npm registry, under `@mnstry/atelier` with
|
|
6
|
+
public access. Prior versions were installable only from the repository.
|
|
7
|
+
|
|
8
|
+
- **Removed `docs/format-ontologies.md`.** It documented mnstry.org's
|
|
9
|
+
editorial composition system rather than the Atelier, and named a private
|
|
10
|
+
repository, an unpublished package with a version pin, and dated internal
|
|
11
|
+
review decisions. Nothing referenced it. No private repository content was
|
|
12
|
+
exposed by it.
|
|
13
|
+
- **A request can no longer end the local sidecar.** An unusable proposal id
|
|
14
|
+
or an unreadable proposal file used to throw out of the request handler and
|
|
15
|
+
exit the process; both are now answered with a response, and a busy port is
|
|
16
|
+
reported instead of crashing. Regression tests cover both shapes.
|
|
17
|
+
- **Claims narrowed to what the gates enforce.** `boundary check` and `doctor`
|
|
18
|
+
may call the `gh` CLI to resolve a GitHub login when no actor is configured;
|
|
19
|
+
the egress gate scans `src/`, `bin/`, `scripts/` and `examples/` and does not
|
|
20
|
+
model `child_process`; the compatibility differ does not resolve `$ref`
|
|
21
|
+
pointers. All three are stated in the README rather than implied away.
|
|
22
|
+
- **Install path corrected.** The registry is now the channel of record.
|
|
23
|
+
`v0.2.0-alpha.0` remains the contract epoch marker that
|
|
24
|
+
`contracts/compat-baseline.json` pins to, and is not an install target.
|
|
25
|
+
- **Agent skills no longer suggest `npx atelier`**, which resolves to an
|
|
26
|
+
unrelated third-party package on npm.
|
|
27
|
+
- **Removed the undocumented bare `mnstry` bin alias.** The package installs
|
|
28
|
+
`atelier` (primary) and `mnstry-atelier` (legacy alias). It no longer claims
|
|
29
|
+
the bare `mnstry` command name, which no documentation mentioned and nothing
|
|
30
|
+
used, and which belongs to whatever MNSTRY ships under that name in the
|
|
31
|
+
future rather than to this authoring kit.
|
|
32
|
+
|
|
33
|
+
This release also carries the open-source readiness work that landed between
|
|
34
|
+
the epoch tag and the public flip, previously listed as unreleased:
|
|
35
|
+
|
|
36
|
+
- `SECURITY.md` states the vulnerability reporting
|
|
37
|
+
channel, what counts as a vulnerability against this package's claims
|
|
38
|
+
(egress, boundary guard, disclosure scanners, audience/visibility,
|
|
39
|
+
attestation, upgrade, contract compatibility), and what is deliberately out
|
|
40
|
+
of scope — the loopback sidecar's on-host trust boundary is the design, not
|
|
41
|
+
a finding. It ships in the tarball alongside `NOTICE` and `TRADEMARKS.md`,
|
|
42
|
+
so a consumer who only has the package still has a reporting path.
|
|
43
|
+
- `CODE_OF_CONDUCT.md` (Contributor Covenant 2.1) governs conduct;
|
|
44
|
+
`CONTRIBUTING.md` continues to govern contributions, and boundary
|
|
45
|
+
violations stay an operational matter handled there rather than a conduct
|
|
46
|
+
dispute.
|
|
47
|
+
- The DCO sign-off that `CONTRIBUTING.md` requires is now enforced by a `dco`
|
|
48
|
+
workflow instead of being documentation only. Merge commits are exempt —
|
|
49
|
+
a contributor cannot sign a merge a maintainer made.
|
|
50
|
+
- Issue forms and a pull-request template carry the disclosure rules to the
|
|
51
|
+
point of submission: no client material, no private methodology, no key
|
|
52
|
+
material, no absolute home paths. The issue chooser routes vulnerabilities
|
|
53
|
+
to private reporting and routes contract, dependency, guard, and network
|
|
54
|
+
changes to the conversation-first proposal form. Blank issues are off.
|
|
55
|
+
- Dependabot watches npm and the SHA-pinned actions weekly. Its pull requests
|
|
56
|
+
receive Dependabot-scoped secrets rather than Actions secrets, so the
|
|
57
|
+
denylist must also be stored as a Dependabot secret or every Dependabot
|
|
58
|
+
pull request blocks on `secret-sweep` exactly as a fork does.
|
|
59
|
+
|
|
60
|
+
## 0.2.0-alpha.0
|
|
61
|
+
|
|
62
|
+
- **Breaking:** the internal analysis-engine codename is fully removed from
|
|
63
|
+
the contract surface. The adapter contract is `analysis-adapter@v1`
|
|
64
|
+
(schema const `analysis-adapter-manifest@v1`, provider const `analysis`,
|
|
65
|
+
output root `.mnstry/atelier/analysis`); the lock and migration schemas
|
|
66
|
+
say `analysisExecution`; the readiness contract's section and the claim
|
|
67
|
+
proposer enum value are `analysis`; the package export is
|
|
68
|
+
`./analysis/adapter`; the CLI command is `analysis` (alias `analyze`).
|
|
69
|
+
The `v0.2.0-alpha.0` baseline tag is re-cut at this commit — it was hours
|
|
70
|
+
old, unpublished, and had no external consumer.
|
|
71
|
+
- **Security:** an independent external audit deleted both enforcement sites
|
|
72
|
+
of the public-projectability boundary with every gate green — the invalid
|
|
73
|
+
fixtures named for the property fail earlier, at resolution, so the branch
|
|
74
|
+
had no witness. Resolved-private and resolved-sensitive fixtures now assert
|
|
75
|
+
the registered `is not public-projectable` reason, and the export path uses
|
|
76
|
+
the tested projection-policy verdict instead of a near-copy that could
|
|
77
|
+
drift.
|
|
78
|
+
- **Security:** the served CSP authorized two Google Fonts origins nothing in
|
|
79
|
+
the kit uses. Workspace HTML is author-controlled, so the dead permission
|
|
80
|
+
was an exfiltration channel; it is removed and the security test refuses
|
|
81
|
+
any external origin in the policy.
|
|
82
|
+
- The egress gate detects the shapes the same audit showed it missed —
|
|
83
|
+
`https.get`, `http2.connect`, dynamic import of a URL, beacons, XHR/Image,
|
|
84
|
+
third-party HTTP client imports, CSP directives naming external origins,
|
|
85
|
+
and markup resource attributes — and its scan-path list names directories
|
|
86
|
+
that exist (eight of eleven were `src/` subdirectories listed as top level,
|
|
87
|
+
silently scanning nothing). Every previously-missed probe is pinned in a
|
|
88
|
+
permanent test.
|
|
89
|
+
- `LICENSE` ships the full Apache-2.0 text instead of the 18-line short-form
|
|
90
|
+
notice, so the section 6 that `TRADEMARKS.md` cites exists. CI actions are
|
|
91
|
+
pinned to commit SHAs, the `fast-uri` advisory is closed with an override,
|
|
92
|
+
and `portableText` scrubs Linux and Windows home paths, not only macOS.
|
|
93
|
+
- The `typecheck` script is renamed `syntax:check` — it runs `node --check`
|
|
94
|
+
and never was a type system. The quickstart's boundary check step works on
|
|
95
|
+
the sample workspace it creates, the fresh-clone denylist skip is
|
|
96
|
+
documented, and the unread `#atelier-data` script block is gone.
|
|
97
|
+
- Every attacker-reachable label is sanitized, including the key path: a key
|
|
98
|
+
file whose *name* carried an escape sequence could erase the key-identity
|
|
99
|
+
line and rewrite it, and an over-long basename wrapped the header so the
|
|
100
|
+
true provenance landed on a later visual line.
|
|
101
|
+
- The key-material patterns match material rather than prose. A document may
|
|
102
|
+
discuss `privateKeyJwk` or show a redacted example and still be attachable
|
|
103
|
+
to a feedback report; the scalar floor is the length of a real key, so a
|
|
104
|
+
short identifier under a member named `d` no longer fires. A JSON
|
|
105
|
+
attachment is scanned as the structure it decodes to as well as the text it
|
|
106
|
+
is, so escaped member names cannot smuggle a key past the scan.
|
|
107
|
+
- **Security:** the widened private-key pattern repeated a repeated group,
|
|
108
|
+
which is quadratic — 256 KiB of header-shaped text took about ten seconds
|
|
109
|
+
to reject, reachable through `--message`, a capped `--context`, and the
|
|
110
|
+
release audit. The repetition is bounded at four algorithm words, which
|
|
111
|
+
still matches every real header, and a timing guard pins it.
|
|
112
|
+
- **Security:** JWK private key material had no coverage anywhere, though it
|
|
113
|
+
is the only key format the kit writes. The private scalar and the
|
|
114
|
+
`privateKeyJwk` wrapper are now banned values, the repo sweep looks for the
|
|
115
|
+
scalar, and the release audit rejects any packed JSON that carries one —
|
|
116
|
+
not only announcements documents.
|
|
117
|
+
- Attacker-controlled labels are sanitized before they reach a terminal. A
|
|
118
|
+
keyId carrying an escape sequence could erase the `!! UNVERIFIED` warning
|
|
119
|
+
above it and print a forged listing in its place; keyIds, algorithms, and
|
|
120
|
+
announcement filenames are now capped and stripped of control characters.
|
|
121
|
+
- `announcements verify` and `show` name the key that vouched for a document,
|
|
122
|
+
as `list` already did — `show` prints it before any attacker-authored
|
|
123
|
+
content, and `verify --json` carries the key path, keyId, and whether the
|
|
124
|
+
anchor was explicit.
|
|
125
|
+
- `atelier feedback` refuses a `--context` that is not a regular file (a FIFO
|
|
126
|
+
or character device never returned from the read, so the size cap could not
|
|
127
|
+
fire) and bounds `--message` the way file inputs were already bounded.
|
|
128
|
+
- The release audit decodes packed files strictly: a NUL-free binary used to
|
|
129
|
+
scan as harmless text through a lossy decode while still carrying
|
|
130
|
+
recoverable content.
|
|
131
|
+
- **Security:** the private-key disclosure pattern matched only the bare
|
|
132
|
+
PKCS#8 header, so an ssh-keygen OPENSSH private key — and the RSA, EC, DSA,
|
|
133
|
+
ENCRYPTED, and PGP block headers — passed the support-bundle scan, the
|
|
134
|
+
repo-wide sweep, and the tarball audit untouched. It now matches any PEM
|
|
135
|
+
private-key header. The banned-value email pattern also backtracked for
|
|
136
|
+
about a minute on large non-email input and is bounded to the RFC 5321
|
|
137
|
+
local-part and domain limits.
|
|
138
|
+
- `atelier feedback create` refuses `--context` and `--message-file` input
|
|
139
|
+
over 262144 bytes or that is not valid UTF-8 rather than embedding it, and
|
|
140
|
+
warns when the report lands where `.atelier-local/` is not git-ignored. The
|
|
141
|
+
success message states that the scan is a backstop, not clearance to share.
|
|
142
|
+
- `atelier announcements list` takes its trust anchor from the committed
|
|
143
|
+
MNSTRY key, never from the directory being listed: `--dir` relocates only
|
|
144
|
+
where documents are read. Every run names the key and keyId it verified
|
|
145
|
+
against. A tree carrying its own key can no longer present forged
|
|
146
|
+
announcements as verified.
|
|
147
|
+
- A git-ignored `.kg.json` sidecar can no longer enroll a file in the census
|
|
148
|
+
or describe one. Membership is a function of tracked state alone, so a
|
|
149
|
+
clean checkout and a working tree build the same graph.
|
|
150
|
+
- The announcements documents and public key now ship in the package, so
|
|
151
|
+
`announcements verify` works for consumers; the release audit asserts the
|
|
152
|
+
key is present, rejects any announcements document carrying a private key
|
|
153
|
+
member, and refuses to pack a binary file it cannot content-scan.
|
|
154
|
+
- The knowledge-graph census is now sidecar-first: a `.kg.json` sidecar
|
|
155
|
+
attaches any sibling file — JSON, YAML, CSV, binaries — as a first-class
|
|
156
|
+
node with its own audience, without atelier ever parsing the foreign
|
|
157
|
+
format. Document extensions keep their existing semantics, and non-Markdown
|
|
158
|
+
documents still fail closed without a sidecar.
|
|
159
|
+
- Adds `atelier feedback` — a local, never-sent feedback report on the
|
|
160
|
+
support-bundle chassis: assembled under ignored `.atelier-local/feedback/`,
|
|
161
|
+
scanned against the banned key and value patterns before writing, refused
|
|
162
|
+
on any match. The kit has no send path; sharing is always the user's act.
|
|
163
|
+
- Adds the signed announcements channel: pull-only JSON documents under
|
|
164
|
+
`announcements/`, signed with the published MNSTRY announcements key and
|
|
165
|
+
verified by `atelier announcements list|verify|show`. The kit never
|
|
166
|
+
fetches them; receiving an announcement is the `git pull` you chose to
|
|
167
|
+
run. Generic detached document signing joins `@mnstry/atelier/attestation`.
|
|
168
|
+
- `TRADEMARKS.md` gains the quiet-software clause (no commercially motivated
|
|
169
|
+
interruptions for anything carrying the MNSTRY marks, MNSTRY bound to the same
|
|
170
|
+
standard) and the applications attribution rule for apps without a CLI.
|
|
171
|
+
A `NOTICE` file ships in the tarball; Apache-2.0 section 4(d) makes its
|
|
172
|
+
reproduction a license obligation in every derivative redistribution.
|
|
173
|
+
- **Breaking:** the `atelier-export@v1` runtime owner vocabulary is now
|
|
174
|
+
vendor-neutral. The closed `runtimeOwnerName` enum, the `RUNTIME_OWNERS`
|
|
175
|
+
constant, the bundled readiness protocols, and the fixtures all move to the
|
|
176
|
+
domain terms `identity`, `catalog`, `commitments`, `events`, `projection`,
|
|
177
|
+
`consent`, `messaging`, `providers`, `audit` (see `docs/ontology.md`).
|
|
178
|
+
Documents and validators from earlier tags do not interoperate across this
|
|
179
|
+
change; regenerate exports rather than hand-editing owner values.
|
|
180
|
+
- **Breaking:** `protocol.outputs` on bundled readiness protocols is now the
|
|
181
|
+
contract's object shape (`{ runSchema, artifacts }`) instead of an informal
|
|
182
|
+
array of artifact slugs, and the undeclared `outputArtifacts` key is gone.
|
|
183
|
+
All twelve bundled protocols now validate against
|
|
184
|
+
`atelier-readiness-protocol@v1`.
|
|
185
|
+
- **Breaking:** every document contract enters the contract-stability epoch:
|
|
186
|
+
each schema declares an optional root `contractVersion` and a reserved
|
|
187
|
+
optional `ext` extension container on every closed object, and bundled
|
|
188
|
+
readiness protocols emit `contractVersion: "1.0.0"`. Validators pinned to
|
|
189
|
+
earlier tags reject documents that carry the new fields. See
|
|
190
|
+
`docs/contract-stability.md`.
|
|
191
|
+
- **Breaking:** the `atelier-claim@v1` provider enum gains
|
|
192
|
+
`atelier-readiness`, so claims emitted by readiness runs validate against
|
|
193
|
+
the standalone claim contract. Claim validators pinned to earlier tags
|
|
194
|
+
reject the new provider.
|
|
195
|
+
- **Breaking:** the analysis adapter manifest schema const is now
|
|
196
|
+
`analysis-adapter-manifest@v1` (was
|
|
197
|
+
`mnstry.atelier-analysis-adapter-manifest@v1`), matching the published
|
|
198
|
+
contract and fixtures. Local manifests emitted before this change must
|
|
199
|
+
update their `schema` field.
|
|
200
|
+
- **Breaking:** boundary promote events are now recorded with schema
|
|
201
|
+
`git-promote-event@v1` (was `mnstry.git-promote-event@v1`), matching the
|
|
202
|
+
published contract. Previously recorded ledger lines carrying the old
|
|
203
|
+
const are not rewritten.
|
|
204
|
+
- **Breaking:** the agent-harness context envelope schema const is now
|
|
205
|
+
`atelier-context@v1` (was `mnstry.atelier-context@v1`), matching the local
|
|
206
|
+
sidecar contract.
|
|
207
|
+
- **Breaking:** the alignment projection ships no default root-graph name
|
|
208
|
+
list; the default is empty and workspaces supply their own via
|
|
209
|
+
`sduiMap.rootGraphs` in project configuration. Nodes previously classified
|
|
210
|
+
by the built-in name list no longer match without configuration.
|
|
211
|
+
- **Breaking:** every command that resolves a project now
|
|
212
|
+
validates loaded config files fail-closed. Unknown keys that earlier
|
|
213
|
+
releases silently ignored are rejected, `ext` must be an object whose
|
|
214
|
+
members are namespaced objects, and the closed sub-objects (`roots`,
|
|
215
|
+
`graph`, `projection`, `alignment`, `runtime`, `boundaries`, `setup`)
|
|
216
|
+
reject additional properties. A config with a misspelled or stray key now
|
|
217
|
+
fails at CLI entry with the offending key named, instead of running with
|
|
218
|
+
that key quietly dropped.
|
|
219
|
+
- Adds `atelier-attestation@v1`, a contract for recording admission
|
|
220
|
+
decisions: issuer, attested payload with an RFC 8785 (JCS) + SHA-256
|
|
221
|
+
payload hash, an admission-scoped verdict (a conformance-scoped verdict is
|
|
222
|
+
structurally unexpressible), and a required-but-nullable signature where
|
|
223
|
+
null means advisory and non-authoritative. See `docs/attestation.md`.
|
|
224
|
+
- Adds the contract compatibility gate: `scripts/check-contract-compat.mjs`
|
|
225
|
+
(`npm run contract:compat`) validates the current fixture and
|
|
226
|
+
generated-document corpus against validators from the baseline tag recorded
|
|
227
|
+
in `contracts/compat-baseline.json`. The gate is inert until the first
|
|
228
|
+
post-epoch tag is recorded as the baseline.
|
|
229
|
+
- Adds `docs/ontology.md` — the public export vocabulary: the nine runtime
|
|
230
|
+
owners, the object classes and collections they govern, the six runtime
|
|
231
|
+
targets, and the audience/visibility boundary — and
|
|
232
|
+
`docs/contract-stability.md` — the stability epoch, `contractVersion`,
|
|
233
|
+
`ext` and must-ignore rules, the widening ban, the deprecation policy, and
|
|
234
|
+
the compatibility gate.
|
|
235
|
+
- Expunges client-zero-identifying names from tests, fixtures, docs, and the
|
|
236
|
+
release audit. Name-based scrub patterns now load from the gitignored
|
|
237
|
+
`release-denylist.local.json`; when that file is absent the audit warns and
|
|
238
|
+
applies structural checks only, and the readiness-pack neutrality test skips
|
|
239
|
+
the name assertions.
|
|
240
|
+
|
|
241
|
+
- Staged boundary guard now separates boundary-field *initialization* from
|
|
242
|
+
*change*. A field added with no prior value, set to a non-disclosing default,
|
|
243
|
+
commits without a review marker; widening, narrowing, and removal still
|
|
244
|
+
require one. This removes the deadlock where the kit's own front-matter
|
|
245
|
+
tooling produced changes the kit's own gate refused.
|
|
246
|
+
- `semantic-field-change-needs-review` findings now name the file and the exact
|
|
247
|
+
field transition instead of failing a whole repo with one opaque message.
|
|
248
|
+
- Review markers are now scoped to the file they appear in. A marker in a
|
|
249
|
+
sibling file no longer approves an unrelated boundary change.
|
|
250
|
+
- Graph and sidecar walks now skip git-ignored paths via one batched
|
|
251
|
+
`git ls-files --others --ignored --exclude-standard --directory` per repo
|
|
252
|
+
root, so committed graph artifacts describe the repository rather than one
|
|
253
|
+
machine's working tree. Multi-machine workspaces no longer churn.
|
|
254
|
+
- Adds `test/graph-determinism.test.mjs`, a mutation-tested regression guard
|
|
255
|
+
that builds twice with git-ignored junk planted in between and fails on any
|
|
256
|
+
byte change to a committed artifact.
|
|
257
|
+
- Adds the reserved repo kind `external` for git folders a workspace
|
|
258
|
+
acknowledges but does not manage. External repos imply no read boundary, are
|
|
259
|
+
excluded from graph walking, sidecar requirements, projection, the staged
|
|
260
|
+
guard, and hook installation, and must not appear in repo-access or boundary
|
|
261
|
+
policy. Undeclared git folders remain an error, and the message now names
|
|
262
|
+
`external` as the resolution.
|
|
263
|
+
- `atelier graph` prints the remote host of each external repo so a workspace
|
|
264
|
+
surfaces where its unmanaged folders push.
|
|
265
|
+
- **Breaking:** `fileClasses` is now required in the kit manifest. Every file
|
|
266
|
+
the kit ships or generates is classified `source`, `generated-projection`, or
|
|
267
|
+
`distributed-runtime-copy`, and a runtime copy must declare the repo role in
|
|
268
|
+
which it is canonical. Adds `classifyPath(path, { repoRole })` so sync loops,
|
|
269
|
+
merge policies, upgrade tooling, and CI guards read one declaration instead of
|
|
270
|
+
each keeping a list that drifts.
|
|
271
|
+
- The graph walker's generated-file skip list and the boundary policy's glob
|
|
272
|
+
matcher are now derived from shared modules rather than restated inline, with
|
|
273
|
+
a drift test asserting the kit keeps no second copy of either.
|
|
274
|
+
- Repo entries accept `identity` (provider + stable id) and `aliases` (former
|
|
275
|
+
names), so a repository survives a rename. Adds
|
|
276
|
+
`resolveRepoIdentity(cloneDir)`, which resolves from the provider's stable id,
|
|
277
|
+
then a recorded identity, then declared aliases — and never from a root commit
|
|
278
|
+
or a folder name.
|
|
279
|
+
- `atelier doctor` now audits repo identity: upstream renames, stale config
|
|
280
|
+
names, deprecated aliases, clones that are secretly the same repository, and
|
|
281
|
+
repos with no recorded id or no origin remote.
|
|
282
|
+
- Adds boundary-policy `contentRules` and `contentRuleExceptions`. Rules judge
|
|
283
|
+
added lines and added file paths rather than the whole tree, so a pre-existing
|
|
284
|
+
accepted usage no longer blocks every push of everything in a repo. Exceptions
|
|
285
|
+
are reviewable policy config — per repo, per path, per rule, each requiring a
|
|
286
|
+
reason — instead of hardcoded pathspecs inside a fleet-wide guard script.
|
|
287
|
+
Blanket wildcards are rejected.
|
|
288
|
+
- Adds `atelier boundary push-check`, which reads pre-push ref updates from
|
|
289
|
+
stdin and judges only the pushed range (new branches diff against the empty
|
|
290
|
+
tree), and `atelier boundary audit`, the whole-tree view that reports without
|
|
291
|
+
blocking. The installed `pre-push` hook now uses `push-check`.
|
|
292
|
+
- The push guard fails closed when it cannot identify the repo it is running in,
|
|
293
|
+
and matches its repo through symlinked paths and subdirectories.
|
|
294
|
+
- Adds extension packs. A project declares namespaced protocol packs under
|
|
295
|
+
`ext["mnstry.atelier"].extensionPacks`, and the loader admits each one
|
|
296
|
+
through a fixed fail-closed pipeline: entry shape, enablement, schema
|
|
297
|
+
validation, identity, reserved-namespace rules, fixture and protocol path
|
|
298
|
+
guards confined to the pack directory, the nine-point protocol safety
|
|
299
|
+
posture, collision rules against the bundled pack, and lock pin-and-verify.
|
|
300
|
+
Enablement is disable-only: the machine-local overlay can switch a declared
|
|
301
|
+
pack off but can never switch an undeclared one on. Protocol resolution runs
|
|
302
|
+
through an explicit registry — bundled protocols keep resolving by id, slug,
|
|
303
|
+
or namespaced id, while pack protocols resolve by full namespaced id only,
|
|
304
|
+
so a pack can never shadow or squat a bundled slug.
|
|
305
|
+
- Adds `atelier extension-pack validate` and `atelier extension-pack list`,
|
|
306
|
+
which report per pack with version, resolved path, digest, protocol count,
|
|
307
|
+
and lock status. Exit 0 means every enabled pack loaded clean, 1 that one
|
|
308
|
+
failed, 2 a usage or project resolution error.
|
|
309
|
+
- Readiness composes pack protocols alongside the bundled twelve.
|
|
310
|
+
`readiness protocols --project`, `readiness journey`, and `readiness run`
|
|
311
|
+
resolve pack protocols through the project registry, and the tenant packet
|
|
312
|
+
carries a generic per-pack contribution under `ext` built from run fields
|
|
313
|
+
alone, where only `required`-gate pack protocols can block export and
|
|
314
|
+
`advisory` ones report without blocking.
|
|
315
|
+
- `atelier lock write` and `lock check` now cover extension packs. The lock
|
|
316
|
+
records each pack's version and content digest, `lock check` reports drift
|
|
317
|
+
in both directions (declared but unlocked, locked but changed), and the new
|
|
318
|
+
`sync-extension-packs` upgrade migration re-verifies and re-pins declared
|
|
319
|
+
packs. Locking loads packs in throwing mode, so a broken pack cannot be
|
|
320
|
+
recorded.
|
|
321
|
+
- Adds attestation signing: `atelier attestation hash|sign|verify|keygen`,
|
|
322
|
+
with RFC 8785 (JCS) canonicalization, sha-256 payload hashes, and ed25519 or
|
|
323
|
+
es256 keys. `keygen` writes the signing key file at mode 0600, refuses to
|
|
324
|
+
overwrite an existing one, and prints only the public key document; the
|
|
325
|
+
default signing key file is gitignored. Adds `TRADEMARKS.md`, the normative
|
|
326
|
+
home of the required attribution string, the naming rules for distributions,
|
|
327
|
+
the sanctioned compatibility claim, and the reservation of "certified" and
|
|
328
|
+
"admitted" to holders of a verifying signed attestation. `TRADEMARKS.md`
|
|
329
|
+
ships in the published tarball and the release audit fails without it.
|
|
330
|
+
- The workspace projection reads `ext["mnstry.atelier"].distribution` for
|
|
331
|
+
branding: `name` and `eyebrow` feed the title and eyebrow line, and `theme`
|
|
332
|
+
overrides five CSS custom properties. Theme values must be hex colors —
|
|
333
|
+
they are interpolated into a style block, so a non-hex value fails the build
|
|
334
|
+
rather than reaching the page. Default output is unchanged, and the
|
|
335
|
+
"MNSTRY Tenant Readiness" heading stays as it is because it names the
|
|
336
|
+
bundled pack.
|
|
337
|
+
- Adds the `distribution` workspace template
|
|
338
|
+
(`atelier init --template distribution`), which scaffolds a workspace
|
|
339
|
+
carrying the branding block and the attribution line. Fixes a bug where an
|
|
340
|
+
unrecognized `--template` silently produced a blank scaffold: init now exits
|
|
341
|
+
1, names the valid templates, and writes nothing. The blank scaffold is
|
|
342
|
+
reached by omitting `--template`.
|
|
343
|
+
- Adds `atelier distribution check`, which verifies a distribution package's
|
|
344
|
+
attribution markers mechanically: the root `README.md` must contain the
|
|
345
|
+
exact byte string `powered by MNSTRY Atelier` (blocking), and each
|
|
346
|
+
extension-pack manifest is reported for the advisory
|
|
347
|
+
`ext["mnstry.atelier/attribution"]` key. Its messages point at
|
|
348
|
+
`TRADEMARKS.md` and `docs/attestation.md` rather than restating policy.
|
|
349
|
+
- Adds the exported CLI entry `@mnstry/atelier/cli`. `runCli({ argv, brand })`
|
|
350
|
+
returns an exit code instead of calling `process.exit`, so a distribution
|
|
351
|
+
wrapper is a brand object and one line of dispatch. Attribution is derived,
|
|
352
|
+
not configurable: `runCli` renders `powered by MNSTRY Atelier <version>` in
|
|
353
|
+
`--version` and help output whenever the brand is not the default, and the
|
|
354
|
+
brand object has no field that could omit or reword it. Default-brand output
|
|
355
|
+
is byte-identical apart from the new commands listed in help.
|
|
356
|
+
- Adds `docs/distributions.md` — the three-tier model, the invariant that a
|
|
357
|
+
distribution adds and rebrands but never alters root semantics, the three
|
|
358
|
+
attribution surfaces, a build walkthrough, and the
|
|
359
|
+
`ext["mnstry.atelier"].distribution` field reference — plus
|
|
360
|
+
`examples/loomworks-studio/`, a complete reference distribution exercised by
|
|
361
|
+
the new `distribution:smoke` publish gate.
|
|
362
|
+
|
|
363
|
+
## 0.1.0-alpha.2
|
|
364
|
+
|
|
365
|
+
- Adds bundled `mnstry-readiness-pack@v1` with twelve claim-first readiness
|
|
366
|
+
protocols for MNSTRY tenant preparation.
|
|
367
|
+
- Adds readiness protocol and readiness run contracts with AJV fixtures.
|
|
368
|
+
- Adds `atelier readiness protocols`, `journey`, `run`, `packet`, and
|
|
369
|
+
`export --dry-run` commands.
|
|
370
|
+
- Adds tenant-readiness journey data to generated local projections.
|
|
371
|
+
- Adds neutral Codex and Claude readiness skill wrappers.
|
|
372
|
+
- Keeps readiness output local, proposal-first, non-importing, non-mutating,
|
|
373
|
+
no-send, and free of project-specific package content.
|
|
374
|
+
|
|
375
|
+
## 0.1.0-alpha.0
|
|
376
|
+
|
|
377
|
+
- Introduces the alpha `@mnstry/atelier` package.
|
|
378
|
+
- Adds the `mnstry atelier ...` and `mnstry-atelier ...` local CLI entrypoints.
|
|
379
|
+
- Adds `atelier-export@v1` schema validation.
|
|
380
|
+
- Adds dry-run validation for export artifacts.
|
|
381
|
+
- Adds fictional sample fixtures and fail-closed negative fixtures.
|
|
382
|
+
- Keeps runtime import, runtime mutation, telemetry, and external egress out of
|
|
383
|
+
scope.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
|
|
2
|
+
Apache License
|
|
3
|
+
Version 2.0, January 2004
|
|
4
|
+
http://www.apache.org/licenses/
|
|
5
|
+
|
|
6
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
7
|
+
|
|
8
|
+
1. Definitions.
|
|
9
|
+
|
|
10
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
11
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
12
|
+
|
|
13
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
14
|
+
the copyright owner that is granting the License.
|
|
15
|
+
|
|
16
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
17
|
+
other entities that control, are controlled by, or are under common
|
|
18
|
+
control with that entity. For the purposes of this definition,
|
|
19
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
20
|
+
direction or management of such entity, whether by contract or
|
|
21
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
22
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
23
|
+
|
|
24
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
25
|
+
exercising permissions granted by this License.
|
|
26
|
+
|
|
27
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
28
|
+
including but not limited to software source code, documentation
|
|
29
|
+
source, and configuration files.
|
|
30
|
+
|
|
31
|
+
"Object" form shall mean any form resulting from mechanical
|
|
32
|
+
transformation or translation of a Source form, including but
|
|
33
|
+
not limited to compiled object code, generated documentation,
|
|
34
|
+
and conversions to other media types.
|
|
35
|
+
|
|
36
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
37
|
+
Object form, made available under the License, as indicated by a
|
|
38
|
+
copyright notice that is included in or attached to the work
|
|
39
|
+
(an example is provided in the Appendix below).
|
|
40
|
+
|
|
41
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
42
|
+
form, that is based on (or derived from) the Work and for which the
|
|
43
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
44
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
45
|
+
of this License, Derivative Works shall not include works that remain
|
|
46
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
47
|
+
the Work and Derivative Works thereof.
|
|
48
|
+
|
|
49
|
+
"Contribution" shall mean any work of authorship, including
|
|
50
|
+
the original version of the Work and any modifications or additions
|
|
51
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
52
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
53
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
54
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
55
|
+
means any form of electronic, verbal, or written communication sent
|
|
56
|
+
to the Licensor or its representatives, including but not limited to
|
|
57
|
+
communication on electronic mailing lists, source code control systems,
|
|
58
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
59
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
60
|
+
excluding communication that is conspicuously marked or otherwise
|
|
61
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
62
|
+
|
|
63
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
64
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
65
|
+
subsequently incorporated within the Work.
|
|
66
|
+
|
|
67
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
68
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
69
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
70
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
71
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
72
|
+
Work and such Derivative Works in Source or Object form.
|
|
73
|
+
|
|
74
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
75
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
76
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
77
|
+
(except as stated in this section) patent license to make, have made,
|
|
78
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
79
|
+
where such license applies only to those patent claims licensable
|
|
80
|
+
by such Contributor that are necessarily infringed by their
|
|
81
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
82
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
83
|
+
institute patent litigation against any entity (including a
|
|
84
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
85
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
86
|
+
or contributory patent infringement, then any patent licenses
|
|
87
|
+
granted to You under this License for that Work shall terminate
|
|
88
|
+
as of the date such litigation is filed.
|
|
89
|
+
|
|
90
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
91
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
92
|
+
modifications, and in Source or Object form, provided that You
|
|
93
|
+
meet the following conditions:
|
|
94
|
+
|
|
95
|
+
(a) You must give any other recipients of the Work or
|
|
96
|
+
Derivative Works a copy of this License; and
|
|
97
|
+
|
|
98
|
+
(b) You must cause any modified files to carry prominent notices
|
|
99
|
+
stating that You changed the files; and
|
|
100
|
+
|
|
101
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
102
|
+
that You distribute, all copyright, patent, trademark, and
|
|
103
|
+
attribution notices from the Source form of the Work,
|
|
104
|
+
excluding those notices that do not pertain to any part of
|
|
105
|
+
the Derivative Works; and
|
|
106
|
+
|
|
107
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
108
|
+
distribution, then any Derivative Works that You distribute must
|
|
109
|
+
include a readable copy of the attribution notices contained
|
|
110
|
+
within such NOTICE file, excluding those notices that do not
|
|
111
|
+
pertain to any part of the Derivative Works, in at least one
|
|
112
|
+
of the following places: within a NOTICE text file distributed
|
|
113
|
+
as part of the Derivative Works; within the Source form or
|
|
114
|
+
documentation, if provided along with the Derivative Works; or,
|
|
115
|
+
within a display generated by the Derivative Works, if and
|
|
116
|
+
wherever such third-party notices normally appear. The contents
|
|
117
|
+
of the NOTICE file are for informational purposes only and
|
|
118
|
+
do not modify the License. You may add Your own attribution
|
|
119
|
+
notices within Derivative Works that You distribute, alongside
|
|
120
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
121
|
+
that such additional attribution notices cannot be construed
|
|
122
|
+
as modifying the License.
|
|
123
|
+
|
|
124
|
+
You may add Your own copyright statement to Your modifications and
|
|
125
|
+
may provide additional or different license terms and conditions
|
|
126
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
127
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
128
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
129
|
+
the conditions stated in this License.
|
|
130
|
+
|
|
131
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
132
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
133
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
134
|
+
this License, without any additional terms or conditions.
|
|
135
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
136
|
+
the terms of any separate license agreement you may have executed
|
|
137
|
+
with Licensor regarding such Contributions.
|
|
138
|
+
|
|
139
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
140
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
141
|
+
except as required for reasonable and customary use in describing the
|
|
142
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
143
|
+
|
|
144
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
145
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
146
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
147
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
148
|
+
implied, including, without limitation, any warranties or conditions
|
|
149
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
150
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
151
|
+
appropriateness of using or redistributing the Work and assume any
|
|
152
|
+
risks associated with Your exercise of permissions under this License.
|
|
153
|
+
|
|
154
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
155
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
156
|
+
unless required by applicable law (such as deliberate and grossly
|
|
157
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
158
|
+
liable to You for damages, including any direct, indirect, special,
|
|
159
|
+
incidental, or consequential damages of any character arising as a
|
|
160
|
+
result of this License or out of the use or inability to use the
|
|
161
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
162
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
163
|
+
other commercial damages or losses), even if such Contributor
|
|
164
|
+
has been advised of the possibility of such damages.
|
|
165
|
+
|
|
166
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
167
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
168
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
169
|
+
or other liability obligations and/or rights consistent with this
|
|
170
|
+
License. However, in accepting such obligations, You may act only
|
|
171
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
172
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
173
|
+
defend, and hold each Contributor harmless for any liability
|
|
174
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
175
|
+
of your accepting any such warranty or additional liability.
|
|
176
|
+
|
|
177
|
+
END OF TERMS AND CONDITIONS
|
|
178
|
+
|
|
179
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
180
|
+
|
|
181
|
+
To apply the Apache License to your work, attach the following
|
|
182
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
183
|
+
replaced with your own identifying information. (Don't include
|
|
184
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
185
|
+
comment syntax for the file format. We also recommend that a
|
|
186
|
+
file or class name and description of purpose be included on the
|
|
187
|
+
same "printed page" as the copyright notice for easier
|
|
188
|
+
identification within third-party archives.
|
|
189
|
+
|
|
190
|
+
Copyright 2026 MNSTRY
|
|
191
|
+
|
|
192
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
193
|
+
you may not use this file except in compliance with the License.
|
|
194
|
+
You may obtain a copy of the License at
|
|
195
|
+
|
|
196
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
197
|
+
|
|
198
|
+
Unless required by applicable law or agreed to in writing, software
|
|
199
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
200
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
201
|
+
See the License for the specific language governing permissions and
|
|
202
|
+
limitations under the License.
|