@mnstry/atelier 0.2.0-alpha.6 → 0.2.0-alpha.8
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 +176 -0
- package/README.md +59 -15
- package/SECURITY.md +6 -1
- package/contracts/atelier-adoption-policy.v1.schema.json +49 -0
- package/contracts/atelier-coauthor.v1.schema.json +163 -0
- package/contracts/atelier-decision-request.v1.schema.json +476 -0
- package/contracts/atelier-decision-result.v1.schema.json +500 -0
- package/contracts/atelier-guide.v1.schema.json +227 -0
- package/contracts/atelier-intake.v1.schema.json +151 -0
- package/contracts/atelier-migration.v2.schema.json +61 -0
- package/contracts/atelier-obsidian-acceptance-receipt.v1.schema.json +211 -0
- package/contracts/atelier-obsidian-apply-policy.v1.schema.json +298 -0
- package/contracts/atelier-obsidian-corpus-profile.v1.schema.json +98 -0
- package/contracts/atelier-obsidian-edit-operation.v1.schema.json +138 -0
- package/contracts/atelier-obsidian-ext-settings.v1.schema.json +287 -0
- package/contracts/atelier-obsidian-generation-manifest.v1.schema.json +353 -0
- package/contracts/atelier-obsidian-proposal-receipt.v1.schema.json +110 -0
- package/contracts/atelier-obsidian-publication-journal.v1.schema.json +167 -0
- package/contracts/atelier-obsidian-scope.v1.schema.json +264 -0
- package/contracts/atelier-obsidian-service-state.v1.schema.json +149 -0
- package/contracts/atelier-obsidian-source-snapshot.v1.schema.json +179 -0
- package/contracts/atelier-pane-presentation.v1.schema.json +76 -0
- package/contracts/atelier-presentation.v1.schema.json +1293 -0
- package/contracts/atelier-review.v1.schema.json +1601 -0
- package/contracts/atelier-skill-steward.v1.schema.json +692 -0
- package/contracts/atelier-upgrade-plan.v2.schema.json +398 -0
- package/contracts/atelier-upgrade-receipt.v1.schema.json +99 -0
- package/contracts/atelier-vault-publication.v1.schema.json +58 -0
- package/docs/assurance-controls.md +9 -1
- package/docs/atelier-sync.md +5 -4
- package/docs/blocks/claims.md +15 -10
- package/docs/blocks/will-not-do.md +4 -1
- package/docs/coauthor-session.md +57 -0
- package/docs/connected-composition.md +75 -0
- package/docs/decisions.md +167 -0
- package/docs/exact-upgrades.md +159 -0
- package/docs/extension-pack-lifecycle.md +33 -0
- package/docs/guided-upgrades.md +99 -0
- package/docs/install.md +65 -9
- package/docs/intake-and-guides.md +65 -0
- package/docs/integration-and-review-plan.md +409 -0
- package/docs/integration-contract-decisions.md +22 -0
- package/docs/local-review.md +84 -0
- package/docs/local-services.md +227 -0
- package/docs/local-state.md +107 -0
- package/docs/obsidian-contract.md +687 -0
- package/docs/obsidian.md +387 -0
- package/docs/portable-presentation.md +328 -0
- package/docs/presentation-consumer-boundaries.md +75 -0
- package/docs/presentation-review-disposition.md +47 -0
- package/docs/project-command-inventory.md +38 -0
- package/docs/project-options.md +53 -0
- package/docs/release-engineering.md +88 -0
- package/docs/review-portability.md +55 -0
- package/docs/skill-steward.md +156 -0
- package/docs/upgrade.md +55 -2
- package/docs/vault-service.md +292 -0
- package/fixtures/atelier-coauthor/invalid/authority.v1.json +5 -0
- package/fixtures/atelier-coauthor/valid/config.v1.json +12 -0
- package/fixtures/atelier-guide/invalid/authority.v1.json +11 -0
- package/fixtures/atelier-guide/valid/capability.v1.json +10 -0
- package/fixtures/atelier-guide/valid/consent.v1.json +11 -0
- package/fixtures/atelier-guide/valid/engagement.v1.json +7 -0
- package/fixtures/atelier-guide/valid/offer.v1.json +10 -0
- package/fixtures/atelier-intake/invalid/authority.v1.json +9 -0
- package/fixtures/atelier-intake/valid/attempt.v1.json +8 -0
- package/fixtures/atelier-intake/valid/completion.v1.json +9 -0
- package/fixtures/atelier-intake/valid/source.v1.json +7 -0
- package/fixtures/atelier-review/invalid/authenticated-identity.v1.json +22 -0
- package/fixtures/atelier-review/valid/bound.v1.json +229 -0
- package/fixtures/atelier-review/valid/bundle.v1.json +267 -0
- package/fixtures/atelier-review/valid/contribution.v1.json +22 -0
- package/fixtures/atelier-review/valid/lifecycle.v1.json +14 -0
- package/fixtures/atelier-skill-steward/audit/invalid/source-mutation.v1.json +26 -0
- package/fixtures/atelier-skill-steward/audit/valid/clean.v1.json +26 -0
- package/fixtures/atelier-skill-steward/candidates/invalid/workflow-key.v1.json +37 -0
- package/fixtures/atelier-skill-steward/candidates/valid/create.v1.json +37 -0
- package/fixtures/atelier-skill-steward/lock/invalid/bad-digest.v1.json +18 -0
- package/fixtures/atelier-skill-steward/lock/valid/installed.v1.json +23 -0
- package/fixtures/atelier-skill-steward/plan/invalid/delete-action.v1.json +33 -0
- package/fixtures/atelier-skill-steward/plan/valid/add.v1.json +33 -0
- package/fixtures/atelier-upgrade-transaction/adoption-policy/invalid/example.json +12 -0
- package/fixtures/atelier-upgrade-transaction/adoption-policy/valid/example.json +11 -0
- package/fixtures/atelier-upgrade-transaction/migration/invalid/example.json +20 -0
- package/fixtures/atelier-upgrade-transaction/migration/valid/example.json +19 -0
- package/fixtures/atelier-upgrade-transaction/upgrade-plan/invalid/example.json +58 -0
- package/fixtures/atelier-upgrade-transaction/upgrade-plan/valid/example.json +57 -0
- package/fixtures/atelier-upgrade-transaction/upgrade-receipt/invalid/example.json +15 -0
- package/fixtures/atelier-upgrade-transaction/upgrade-receipt/valid/example.json +14 -0
- package/fixtures/atelier-vault-publication/invalid/publication.json +5 -0
- package/fixtures/atelier-vault-publication/valid/publication.json +11 -0
- package/fixtures/decisions/request/invalid/unknown-authority.v1.json +61 -0
- package/fixtures/decisions/request/valid/triage.v1.json +60 -0
- package/fixtures/decisions/result/invalid/execution-authority.v1.json +50 -0
- package/fixtures/decisions/result/valid/abstained.v1.json +23 -0
- package/fixtures/decisions/result/valid/assessed.v1.json +50 -0
- package/fixtures/obsidian/acceptance/ap05-extra-notes.json +14 -0
- package/fixtures/obsidian/acceptance/receipts/G07.valid.v1.json +63 -0
- package/fixtures/obsidian/acceptance/receipts/G13.valid.v1.json +69 -0
- package/fixtures/obsidian/acceptance/receipts/G14.valid.v1.json +62 -0
- package/fixtures/obsidian/acceptance/receipts/G15.valid.v1.json +56 -0
- package/fixtures/obsidian/acceptance/receipts/G16.valid.v1.json +73 -0
- package/fixtures/obsidian/acceptance/receipts/G17.valid.v1.json +75 -0
- package/fixtures/obsidian/acceptance/receipts/G18.valid.v1.json +64 -0
- package/fixtures/obsidian/acceptance/service-sentinels.json +10 -0
- package/fixtures/obsidian/contracts/acceptance-receipt/invalid/duplicate-evidence-name.v1.json +39 -0
- package/fixtures/obsidian/contracts/acceptance-receipt/invalid/evidence-by-absolute-path.v1.json +34 -0
- package/fixtures/obsidian/contracts/acceptance-receipt/invalid/missing-candidate-tree.v1.json +33 -0
- package/fixtures/obsidian/contracts/acceptance-receipt/invalid/no-evidence.v1.json +28 -0
- package/fixtures/obsidian/contracts/acceptance-receipt/invalid/unknown-outcome.v1.json +34 -0
- package/fixtures/obsidian/contracts/acceptance-receipt/invalid/unknown-top-level-field.v1.json +35 -0
- package/fixtures/obsidian/contracts/acceptance-receipt/valid/node-gate.v1.json +34 -0
- package/fixtures/obsidian/contracts/apply-policy/invalid/automatic-without-edit-class.v1.json +27 -0
- package/fixtures/obsidian/contracts/apply-policy/invalid/conflict-overwrite.v1.json +29 -0
- package/fixtures/obsidian/contracts/apply-policy/invalid/missing-policy-digest.v1.json +28 -0
- package/fixtures/obsidian/contracts/apply-policy/invalid/unbounded-batch.v1.json +29 -0
- package/fixtures/obsidian/contracts/apply-policy/invalid/unimplemented-edit-class.v1.json +30 -0
- package/fixtures/obsidian/contracts/apply-policy/invalid/unknown-mode.v1.json +29 -0
- package/fixtures/obsidian/contracts/apply-policy/invalid/unknown-selector-operator.v1.json +22 -0
- package/fixtures/obsidian/contracts/apply-policy/invalid/unknown-top-level-field.v1.json +30 -0
- package/fixtures/obsidian/contracts/apply-policy/valid/automatic-scoped.v1.json +29 -0
- package/fixtures/obsidian/contracts/apply-policy/valid/manual-default.v1.json +20 -0
- package/fixtures/obsidian/contracts/corpus-profile/invalid/absolute-path-in-ext.v1.json +30 -0
- package/fixtures/obsidian/contracts/corpus-profile/invalid/absolute-repository-root.v1.json +27 -0
- package/fixtures/obsidian/contracts/corpus-profile/invalid/duplicate-repository-id.v1.json +27 -0
- package/fixtures/obsidian/contracts/corpus-profile/invalid/overlapping-managed-roots.v1.json +27 -0
- package/fixtures/obsidian/contracts/corpus-profile/invalid/unknown-enrollment.v1.json +27 -0
- package/fixtures/obsidian/contracts/corpus-profile/invalid/unknown-top-level-field.v1.json +28 -0
- package/fixtures/obsidian/contracts/corpus-profile/valid/three-repositories.v1.json +27 -0
- package/fixtures/obsidian/contracts/edit-operation/invalid/absolute-recovery-ref.v1.json +21 -0
- package/fixtures/obsidian/contracts/edit-operation/invalid/inline-observed-bytes.v1.json +22 -0
- package/fixtures/obsidian/contracts/edit-operation/invalid/missing-base-digest.v1.json +20 -0
- package/fixtures/obsidian/contracts/edit-operation/invalid/short-idempotency-key.v1.json +21 -0
- package/fixtures/obsidian/contracts/edit-operation/invalid/unknown-kind.v1.json +21 -0
- package/fixtures/obsidian/contracts/edit-operation/valid/pending-body-replacement.v1.json +21 -0
- package/fixtures/obsidian/contracts/ext-settings/invalid/absolute-path-prefix.v1.json +28 -0
- package/fixtures/obsidian/contracts/ext-settings/invalid/apply-policy-in-portable-settings.v1.json +30 -0
- package/fixtures/obsidian/contracts/ext-settings/invalid/duplicate-scope-id.v1.json +27 -0
- package/fixtures/obsidian/contracts/ext-settings/invalid/machine-local-vault-path.v1.json +28 -0
- package/fixtures/obsidian/contracts/ext-settings/invalid/service-port-in-portable-settings.v1.json +28 -0
- package/fixtures/obsidian/contracts/ext-settings/invalid/unknown-default-scope.v1.json +27 -0
- package/fixtures/obsidian/contracts/ext-settings/valid/disabled.v1.json +5 -0
- package/fixtures/obsidian/contracts/ext-settings/valid/enabled-with-scopes.v1.json +27 -0
- package/fixtures/obsidian/contracts/generation-manifest/invalid/absolute-note-path.v1.json +114 -0
- package/fixtures/obsidian/contracts/generation-manifest/invalid/complete-with-unwritten-notes.v1.json +114 -0
- package/fixtures/obsidian/contracts/generation-manifest/invalid/derived-link-claimed-declared.v1.json +114 -0
- package/fixtures/obsidian/contracts/generation-manifest/invalid/duplicate-note-identity.v1.json +114 -0
- package/fixtures/obsidian/contracts/generation-manifest/invalid/in-scope-endpoint-missing.v1.json +114 -0
- package/fixtures/obsidian/contracts/generation-manifest/invalid/title-only-note-path.v1.json +114 -0
- package/fixtures/obsidian/contracts/generation-manifest/invalid/unknown-note-field.v1.json +115 -0
- package/fixtures/obsidian/contracts/generation-manifest/invalid/unknown-relation-type.v1.json +114 -0
- package/fixtures/obsidian/contracts/generation-manifest/invalid/withheld-endpoint.v1.json +114 -0
- package/fixtures/obsidian/contracts/generation-manifest/valid/two-notes.v1.json +114 -0
- package/fixtures/obsidian/contracts/oracles/scope-cases.json +412 -0
- package/fixtures/obsidian/contracts/proposal-receipt/invalid/accepted-without-proposal-id.v1.json +12 -0
- package/fixtures/obsidian/contracts/proposal-receipt/invalid/missing-adapter-operation-id.v1.json +11 -0
- package/fixtures/obsidian/contracts/proposal-receipt/invalid/unknown-backpressure-outcome.v1.json +12 -0
- package/fixtures/obsidian/contracts/proposal-receipt/invalid/unknown-top-level-field.v1.json +13 -0
- package/fixtures/obsidian/contracts/proposal-receipt/valid/accepted-new.v1.json +12 -0
- package/fixtures/obsidian/contracts/proposal-receipt/valid/deferred.v1.json +12 -0
- package/fixtures/obsidian/contracts/publication-journal/invalid/absolute-recovery-ref.v1.json +47 -0
- package/fixtures/obsidian/contracts/publication-journal/invalid/duplicate-sequence.v1.json +47 -0
- package/fixtures/obsidian/contracts/publication-journal/invalid/empty-protocol-id.v1.json +47 -0
- package/fixtures/obsidian/contracts/publication-journal/invalid/missing-protocol-id.v1.json +46 -0
- package/fixtures/obsidian/contracts/publication-journal/invalid/unknown-entry-field.v1.json +48 -0
- package/fixtures/obsidian/contracts/publication-journal/invalid/unknown-state.v1.json +47 -0
- package/fixtures/obsidian/contracts/publication-journal/valid/committed.v1.json +47 -0
- package/fixtures/obsidian/contracts/publication-journal/valid/updating-after-restart.v1.json +22 -0
- package/fixtures/obsidian/contracts/scope/invalid/absolute-path-prefix.v1.json +15 -0
- package/fixtures/obsidian/contracts/scope/invalid/duplicate-ids.v1.json +18 -0
- package/fixtures/obsidian/contracts/scope/invalid/expansion-without-node-budget.v1.json +40 -0
- package/fixtures/obsidian/contracts/scope/invalid/full-mode-with-subset.v1.json +8 -0
- package/fixtures/obsidian/contracts/scope/invalid/unknown-mode.v1.json +41 -0
- package/fixtures/obsidian/contracts/scope/invalid/unknown-selector-key.v1.json +15 -0
- package/fixtures/obsidian/contracts/scope/invalid/unknown-selector-operator.v1.json +14 -0
- package/fixtures/obsidian/contracts/scope/invalid/unknown-top-level-field.v1.json +42 -0
- package/fixtures/obsidian/contracts/scope/valid/explicit-empty.v1.json +8 -0
- package/fixtures/obsidian/contracts/scope/valid/focus.v1.json +11 -0
- package/fixtures/obsidian/contracts/scope/valid/full.v1.json +8 -0
- package/fixtures/obsidian/contracts/scope/valid/scoped-set-expression.v1.json +41 -0
- package/fixtures/obsidian/contracts/service-state/invalid/hostname-instead-of-literal-loopback.v1.json +23 -0
- package/fixtures/obsidian/contracts/service-state/invalid/missing-consent.v1.json +18 -0
- package/fixtures/obsidian/contracts/service-state/invalid/privileged-port.v1.json +23 -0
- package/fixtures/obsidian/contracts/service-state/invalid/unknown-top-level-field.v1.json +24 -0
- package/fixtures/obsidian/contracts/service-state/invalid/wildcard-bind.v1.json +23 -0
- package/fixtures/obsidian/contracts/service-state/valid/healthy.v1.json +23 -0
- package/fixtures/obsidian/contracts/source-snapshot/invalid/absolute-file-path.v1.json +48 -0
- package/fixtures/obsidian/contracts/source-snapshot/invalid/duplicate-repository-id.v1.json +48 -0
- package/fixtures/obsidian/contracts/source-snapshot/invalid/mixed-read.v1.json +48 -0
- package/fixtures/obsidian/contracts/source-snapshot/invalid/parent-traversal-path.v1.json +48 -0
- package/fixtures/obsidian/contracts/source-snapshot/invalid/unknown-file-field.v1.json +49 -0
- package/fixtures/obsidian/contracts/source-snapshot/valid/two-repositories.v1.json +48 -0
- package/fixtures/obsidian/edits/workspace.json +65 -0
- package/fixtures/obsidian/materialization/expected-full.json +99 -0
- package/fixtures/obsidian/materialization/expected-scoped.json +39 -0
- package/fixtures/obsidian/materialization/workspace.json +54 -0
- package/fixtures/obsidian/proposals/expected-shapes.json +11 -0
- package/fixtures/ui/presentation/pane.v1.json +7 -0
- package/fixtures/ui/presentation/reference.v1.json +293 -0
- package/package.json +57 -6
- package/skills/claude/atelier-guided-coauthor/SKILL.md +49 -0
- package/skills/claude/atelier-guided-upgrade/SKILL.md +97 -0
- package/skills/claude/atelier-open/SKILL.md +5 -0
- package/skills/claude/atelier-skill-steward/SKILL.md +62 -0
- package/skills/claude/mnstry-readiness/SKILL.md +5 -0
- package/skills/codex/atelier-guided-coauthor/SKILL.md +49 -0
- package/skills/codex/atelier-guided-upgrade/SKILL.md +97 -0
- package/skills/codex/atelier-open/SKILL.md +5 -0
- package/skills/codex/atelier-skill-steward/SKILL.md +62 -0
- package/skills/codex/mnstry-readiness/SKILL.md +5 -0
- package/src/access/preview-enforcer.mjs +84 -0
- package/src/boundary/policy.mjs +57 -25
- package/src/cli/project-options.mjs +58 -0
- package/src/cli/run.mjs +43 -3
- package/src/coauthor/session.mjs +161 -0
- package/src/coauthor/store.mjs +173 -0
- package/src/collaboration/event-ledger.mjs +16 -33
- package/src/collaboration/inspection-bundle.mjs +223 -0
- package/src/collaboration/review-contracts.mjs +25 -0
- package/src/collaboration/review-store.mjs +305 -0
- package/src/commands/coauthor.mjs +26 -0
- package/src/commands/config.mjs +6 -1
- package/src/commands/extension-pack.mjs +15 -8
- package/src/commands/init.mjs +44 -5
- package/src/commands/obsidian.mjs +368 -0
- package/src/commands/review.mjs +147 -0
- package/src/commands/setup.mjs +51 -14
- package/src/commands/skills.mjs +199 -0
- package/src/commands/sync.mjs +8 -1
- package/src/composition/registry.mjs +27 -0
- package/src/composition/wire.mjs +122 -0
- package/src/contracts/corpus.mjs +29 -0
- package/src/decisions/contracts.d.mts +96 -0
- package/src/decisions/contracts.mjs +321 -0
- package/src/disclosure/content-scan.mjs +13 -0
- package/src/export/atelier-export-contract.mjs +16 -1
- package/src/extension-packs/lifecycle.mjs +154 -0
- package/src/graph/graph.mjs +64 -2
- package/src/graph/knowledge-graph.mjs +548 -24
- package/src/guides/contracts.mjs +54 -0
- package/src/intake/store.mjs +119 -0
- package/src/preview/channel.mjs +89 -0
- package/src/project/config.mjs +26 -27
- package/src/project/durable-state.mjs +161 -0
- package/src/project/file-class.mjs +166 -0
- package/src/project/private-state.mjs +11 -1
- package/src/projection/obsidian/contracts.mjs +571 -0
- package/src/projection/obsidian/edits/align.mjs +169 -0
- package/src/projection/obsidian/edits/apply.mjs +889 -0
- package/src/projection/obsidian/edits/arbitrate.mjs +414 -0
- package/src/projection/obsidian/edits/contribution.mjs +108 -0
- package/src/projection/obsidian/edits/index.mjs +19 -0
- package/src/projection/obsidian/edits/object-identity.mjs +61 -0
- package/src/projection/obsidian/edits/object-store.mjs +517 -0
- package/src/projection/obsidian/edits/observe.mjs +123 -0
- package/src/projection/obsidian/edits/policy.mjs +123 -0
- package/src/projection/obsidian/edits/regions.mjs +648 -0
- package/src/projection/obsidian/materialize/byte-lens.mjs +98 -0
- package/src/projection/obsidian/materialize/index.mjs +7 -0
- package/src/projection/obsidian/materialize/path-registry.mjs +105 -0
- package/src/projection/obsidian/materialize/prepare-view.mjs +746 -0
- package/src/projection/obsidian/materialize/settings.mjs +57 -0
- package/src/projection/obsidian/materialize/stage.mjs +27 -0
- package/src/projection/obsidian/proposals/adapter.mjs +572 -0
- package/src/projection/obsidian/proposals/backpressure.mjs +113 -0
- package/src/projection/obsidian/proposals/contribution.mjs +55 -0
- package/src/projection/obsidian/proposals/index.mjs +23 -0
- package/src/projection/obsidian/proposals/observation.mjs +216 -0
- package/src/projection/obsidian/proposals/queue.mjs +277 -0
- package/src/projection/obsidian/proposals/router.mjs +168 -0
- package/src/projection/obsidian/publication/bridge-script.mjs +266 -0
- package/src/projection/obsidian/publication/exchange.mjs +117 -0
- package/src/projection/obsidian/publication/index.mjs +5 -0
- package/src/projection/obsidian/publication/publisher.mjs +588 -0
- package/src/projection/obsidian/publication/test-seam.mjs +16 -0
- package/src/projection/obsidian/publication/transport.mjs +139 -0
- package/src/projection/obsidian/recovery/index.mjs +6 -0
- package/src/projection/obsidian/recovery/journal.mjs +134 -0
- package/src/projection/obsidian/recovery/late-writer.mjs +46 -0
- package/src/projection/obsidian/recovery/restart.mjs +316 -0
- package/src/projection/obsidian/recovery/store.mjs +234 -0
- package/src/projection/obsidian/selection-ui/conflict-view.mjs +91 -0
- package/src/projection/obsidian/selection-ui/contribution.mjs +141 -0
- package/src/projection/obsidian/selection-ui/focus.mjs +82 -0
- package/src/projection/obsidian/selection-ui/index.mjs +12 -0
- package/src/projection/obsidian/selection-ui/policy-setup.mjs +107 -0
- package/src/projection/obsidian/selection-ui/receipt.mjs +173 -0
- package/src/projection/obsidian/selection-ui/selection-state.mjs +122 -0
- package/src/projection/obsidian/selection-ui/selection.mjs +109 -0
- package/src/projection/project.mjs +28 -19
- package/src/readiness-protocols/evidence.mjs +282 -0
- package/src/readiness-protocols/runtime.mjs +4 -3
- package/src/readiness-protocols/source-read.mjs +39 -0
- package/src/runtime/obsidian/app-capability.mjs +110 -0
- package/src/runtime/obsidian/app-production-seams.mjs +96 -0
- package/src/runtime/obsidian/contributions/proposal-adapter.mjs +4 -0
- package/src/runtime/obsidian/contributions/selection-ui.mjs +4 -0
- package/src/runtime/obsidian/contributions/source-apply.mjs +4 -0
- package/src/runtime/obsidian/contributions.mjs +27 -0
- package/src/runtime/obsidian/documents.mjs +37 -0
- package/src/runtime/obsidian/enablement.mjs +53 -0
- package/src/runtime/obsidian/engine.mjs +532 -0
- package/src/runtime/obsidian/errors.mjs +14 -0
- package/src/runtime/obsidian/extension-points.mjs +103 -0
- package/src/runtime/obsidian/index.mjs +34 -0
- package/src/runtime/obsidian/lifecycle.mjs +258 -0
- package/src/runtime/obsidian/machine-settings.mjs +260 -0
- package/src/runtime/obsidian/observation.mjs +158 -0
- package/src/runtime/obsidian/opening.mjs +243 -0
- package/src/runtime/obsidian/pending-edits.mjs +141 -0
- package/src/runtime/obsidian/pipeline.mjs +122 -0
- package/src/runtime/obsidian/private-lock.mjs +156 -0
- package/src/runtime/obsidian/process-identity.mjs +58 -0
- package/src/runtime/obsidian/service-client.mjs +66 -0
- package/src/runtime/obsidian/service-main.mjs +89 -0
- package/src/runtime/obsidian/service-record.mjs +169 -0
- package/src/runtime/obsidian/service-server.mjs +121 -0
- package/src/runtime/obsidian/service.mjs +216 -0
- package/src/runtime/obsidian/startup-adapters.mjs +87 -0
- package/src/runtime/obsidian/state-store.mjs +180 -0
- package/src/runtime/obsidian/sync-notice.mjs +33 -0
- package/src/runtime/obsidian/tick-loop.mjs +84 -0
- package/src/runtime/obsidian/watchers.mjs +36 -0
- package/src/runtime/supervisor.mjs +16 -1
- package/src/server/local-sidecar.mjs +44 -0
- package/src/server/server.mjs +1 -0
- package/src/skills/steward.mjs +780 -0
- package/src/ui/presentation/browser.mjs +278 -0
- package/src/ui/presentation/contract.mjs +116 -0
- package/src/ui/presentation/index.mjs +7 -0
- package/src/ui/presentation/native.mjs +153 -0
- package/src/ui/presentation/proof.mjs +57 -0
- package/src/ui/presentation/schema-check.mjs +30 -0
- package/src/ui/presentation/schema.generated.mjs +1371 -0
- package/src/ui/presentation/state.mjs +43 -0
- package/src/ui/presentation/styles.mjs +67 -0
- package/src/ui/presentation/tokens.mjs +74 -0
- package/src/ui/presentation/web.mjs +85 -0
- package/src/ui/review-page.mjs +32 -0
- package/src/upgrade/explanation.mjs +33 -0
- package/src/upgrade/provenance.mjs +338 -0
- package/src/upgrade/transaction-files.mjs +103 -0
- package/src/upgrade/transaction.mjs +475 -0
- package/src/upgrade/upgrade.mjs +63 -28
- package/src/vault/hosts.mjs +21 -0
- package/src/vault/identity.mjs +19 -0
- package/src/vault/index.mjs +7 -0
- package/src/vault/interface.mjs +11 -0
- package/src/vault/metadata.mjs +31 -0
- package/src/vault/privacy.mjs +148 -0
- package/src/vault/probe.mjs +89 -0
- package/src/vault/service.mjs +131 -0
- package/src/vault/source.mjs +45 -0
- package/src/vault/storage.mjs +23 -0
- package/templates/distribution-workspace/.claude/launch.json +6 -2
- package/templates/distribution-workspace/gitignore +1 -0
- package/templates/distribution-workspace/project/README.md +2 -2
- package/templates/external-project-workspace/README.md +45 -0
- package/templates/external-project-workspace/answers.example.json +4 -0
- package/templates/external-project-workspace/atelier.project.json +40 -0
- package/templates/external-project-workspace/boundary-policy.v1.json +60 -0
- package/templates/external-project-workspace/gitignore +8 -0
- package/templates/external-project-workspace/pack-lifecycle.json +14 -0
- package/templates/external-project-workspace/packs/protocols/contract-gate.v1.json +109 -0
- package/templates/external-project-workspace/packs/sample-pack.v1.json +48 -0
- package/templates/external-project-workspace/repo-access.v1.json +9 -0
- package/templates/external-project-workspace/source/README.md +11 -0
- package/templates/launch.json +6 -2
- package/templates/private-domain-workspace/.claude/launch.json +6 -2
- package/templates/private-domain-workspace/domain/README.md +2 -2
- package/templates/private-domain-workspace/gitignore +1 -0
- package/templates/shared-project-workspace/.claude/launch.json +6 -2
- package/templates/shared-project-workspace/gitignore +1 -0
- package/templates/shared-project-workspace/project/README.md +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,183 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.0-alpha.8
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- Add portable, typed advisory decision requests and results under
|
|
8
|
+
`@mnstry/atelier/decisions`, with versioned schemas, invented fixtures and
|
|
9
|
+
offline validation of evidence bindings, distributions and abstention.
|
|
10
|
+
Provider execution, credentials, budgets and authorization stay with the
|
|
11
|
+
host. See `docs/decisions.md`.
|
|
12
|
+
- Add an experimental, opt-in Obsidian projection. A project that enables
|
|
13
|
+
`ext["mnstry.atelier.obsidian"]` and declares views (`full`, `scoped` or
|
|
14
|
+
`focus`, with an optional bounded expansion) gets readable, linked notes of
|
|
15
|
+
the enrolled workspace in a vault outside every repository, under private
|
|
16
|
+
per-workspace storage. Nothing is published for a project that does not
|
|
17
|
+
enable it. See `docs/obsidian.md`, `docs/obsidian-contract.md` and
|
|
18
|
+
`docs/local-services.md`.
|
|
19
|
+
- Add eleven closed `atelier-obsidian-*.v1` schemas with valid and invalid
|
|
20
|
+
fixtures, each exported under its own `./contracts/` path.
|
|
21
|
+
- Add deterministic materialization: note paths made of a readable title and a
|
|
22
|
+
stable identity suffix, exact byte regions that invert to their source,
|
|
23
|
+
embedded assets, and audience and eligibility rules that fail closed. No
|
|
24
|
+
audience is admitted by default, which publishes an empty view.
|
|
25
|
+
- Add publication that coordinates with a running editor through conditional
|
|
26
|
+
operations, with journals, restart recovery and late-writer rechecks, so
|
|
27
|
+
that a concurrent write by a person or the app is retained rather than
|
|
28
|
+
overwritten. It depends on an atomic file exchange and is proven on macOS
|
|
29
|
+
arm64 with one app version; see the contract for what is open.
|
|
30
|
+
- Add a per-workspace loopback maintenance service and the noninteractive
|
|
31
|
+
`atelier obsidian` command (`status`, `scope`, `audience`, `mode`, `policy`,
|
|
32
|
+
`service`, `open`, `apply`, `proposals`, `conflicts`, `apply-policy`,
|
|
33
|
+
`selection`). Reaching the installed app or the operating system is never a
|
|
34
|
+
default: it needs `--adapter=obsidian-cli`. The app must be version 1.13.7
|
|
35
|
+
or later.
|
|
36
|
+
- Ship the selection contribution on the command: the one-line loader module
|
|
37
|
+
`src/runtime/obsidian/contributions/selection-ui.mjs` puts `selection`,
|
|
38
|
+
`conflicts` and `apply-policy` on `atelier obsidian`, beside `apply` and
|
|
39
|
+
`proposals`. The usage text names every contributed operation, and a
|
|
40
|
+
contributed operation declares under `options` which shared options it
|
|
41
|
+
takes, so `--actor` is refused everywhere but `apply run`.
|
|
42
|
+
- Preserve every edit made in the vault before anything is republished. A
|
|
43
|
+
body replacement is applied to its source manually, or automatically under
|
|
44
|
+
a scoped policy the user installs and can revoke; revocation is read again
|
|
45
|
+
before every write. An edit that is not a body replacement becomes a
|
|
46
|
+
copy-only proposal in the owning repository's proposal store and is never
|
|
47
|
+
applied. Atelier makes no Git commit for any of it.
|
|
48
|
+
- Add selection binding, apply-policy setup, a read-only conflict view and an
|
|
49
|
+
acceptance-receipt validator that is labelled schema validation only and
|
|
50
|
+
closes no gate.
|
|
51
|
+
- Add the package subpaths `./obsidian`, `./obsidian/contracts`,
|
|
52
|
+
`./obsidian/materialize`, `./obsidian/publication`, `./obsidian/recovery`,
|
|
53
|
+
`./obsidian/edits`, `./obsidian/proposals` and `./obsidian/selection`. The
|
|
54
|
+
package root exports nothing of the projection. Names ending
|
|
55
|
+
`ForOracleTests` are test mutation controls, not a supported API.
|
|
56
|
+
- `release:audit` now requires the Obsidian runtime, schemas and documents in
|
|
57
|
+
the tarball, requires every declared export to name a packed file, and
|
|
58
|
+
refuses scripts, tests, experiments, receipt directories, application
|
|
59
|
+
archives, receipts that name a real host or operator, and fixtures above 262,144
|
|
60
|
+
bytes. The path allowlist is unchanged. A package proof packs the tarball,
|
|
61
|
+
imports the subpaths from a bare consumer and publishes a synthetic
|
|
62
|
+
workspace into a temporary vault with no app.
|
|
63
|
+
- Known limits: Windows refuses publication and source apply because no atomic
|
|
64
|
+
exchange is known; the real-app suite has not been run on Linux, and x86_64
|
|
65
|
+
has not been run anywhere; macOS publication needs the stock system perl;
|
|
66
|
+
the app version has a floor and no ceiling; a vault body edit to a note
|
|
67
|
+
whose source uses CRLF becomes a proposal rather than an apply. No adopter
|
|
68
|
+
acceptance is recorded.
|
|
69
|
+
|
|
70
|
+
### Changed
|
|
71
|
+
|
|
72
|
+
- The resolver that produces `links_to` edges is now shared by the graph and
|
|
73
|
+
the projection, and its behaviour changed in five classes. Graph artifacts a
|
|
74
|
+
consumer has committed may differ after upgrading in exactly these classes
|
|
75
|
+
and no others; each is pinned in `test/graph-knowledge-graph.test.mjs` and
|
|
76
|
+
listed in `docs/obsidian-contract.md`. Regenerate committed graph artifacts
|
|
77
|
+
after upgrading and review the difference.
|
|
78
|
+
1. Links inside fenced code (backtick or tilde, any info string, up to three
|
|
79
|
+
spaces of indent, CRLF, CommonMark fence-length rules), inside inline
|
|
80
|
+
code and inside front matter no longer produce edges. Two stray backticks
|
|
81
|
+
that happen to pair across a link count as inline code, and links after
|
|
82
|
+
an unbalanced fence that runs to the end of the file are inside code.
|
|
83
|
+
2. A link to a directory resolves to that directory's `README.md`, then
|
|
84
|
+
`index.md`, testing eligibility per candidate. A link to a parent
|
|
85
|
+
directory now resolves where the earlier reader missed it.
|
|
86
|
+
3. A link that climbs above its own repository root and re-enters through
|
|
87
|
+
the checkout's directory name is reported as leaving the enrolled roots,
|
|
88
|
+
as before. It is never turned into a repository-local edge.
|
|
89
|
+
4. Malformed percent-encoding in a link is a `link-href-malformed` finding.
|
|
90
|
+
It no longer throws out of the graph build.
|
|
91
|
+
5. The workspace graph, not repository artifacts, additionally carries
|
|
92
|
+
wikilink edges and cross-repository Markdown-link edges, de-duplicated.
|
|
93
|
+
|
|
94
|
+
## 0.2.0-alpha.7
|
|
95
|
+
|
|
96
|
+
- Add a guided owner-agent upgrade skill and read-only `upgrade explain`
|
|
97
|
+
reports derived from saved plans. Retain consent and provenance limits,
|
|
98
|
+
distinguish staged installation from adoption, and route unsupported
|
|
99
|
+
workspaces through their existing operator procedure.
|
|
100
|
+
|
|
101
|
+
- Add explicit saved-plan local upgrade transactions with private receipts,
|
|
102
|
+
existing commit hooks and recovery inspection. Refuse unsupported Git
|
|
103
|
+
attributes before generated writes and explain abandoned preparation state.
|
|
104
|
+
- `lock write` now preserves valid migration and template history and refuses
|
|
105
|
+
a malformed previous lock. Inspect and repair or separately archive the
|
|
106
|
+
invalid lock before retrying; history is no longer silently overwritten.
|
|
107
|
+
|
|
108
|
+
- Add a source-only Astro reference consumer for build-time presentation tokens,
|
|
109
|
+
no-script reading/navigation, local-only form validation and cross-browser proof.
|
|
110
|
+
Keep public-page mechanics consumer-owned; add no Astro runtime dependency.
|
|
111
|
+
- Patch the existing fast-uri dependency and override to 3.1.7. Clarify ordinary
|
|
112
|
+
web-link navigation versus native host navigation requests.
|
|
113
|
+
|
|
114
|
+
- Validate proposed and retained adoption configurations together with their
|
|
115
|
+
policy before writing; refuse an existing default policy during blank init.
|
|
116
|
+
Compare manifests using their serialized JSON representation so omitted
|
|
117
|
+
optional fields do not make freshly generated output stale.
|
|
118
|
+
- Migration: unset or correct globally exported `MNSTRY_ATELIER_ACTOR` values
|
|
119
|
+
that are not declared in the current policy. Invalid explicit selectors now
|
|
120
|
+
refuse even shared-only and legacy-warning checks.
|
|
121
|
+
|
|
122
|
+
- Correct shared-only attribution so ambient platform identities cannot invent
|
|
123
|
+
an ownership requirement or trigger a network lookup. Preserve legacy-warning
|
|
124
|
+
semantics for derived identities; Sync remains strict. Match platform logins
|
|
125
|
+
only to declared logins, refuse prototype-name omissions and duplicate repos.
|
|
126
|
+
- Share manifest generation between project and upgrade, store a relative graph
|
|
127
|
+
path, and compare parsed content independently of object-key order.
|
|
128
|
+
- Resolve preview commands through the scoped package from root or parent installs;
|
|
129
|
+
qualify both layouts with installed health/page smoke tests. Existing preview
|
|
130
|
+
configs require an explicit user update.
|
|
131
|
+
- Validate retained adoption policy/lock state before writing, refuse implicit
|
|
132
|
+
drift acceptance, detect null-digest policy drift, and refuse init collisions
|
|
133
|
+
so retries cannot overwrite authored files or reset the lock.
|
|
134
|
+
|
|
135
|
+
- Repair starter document classifications, shared adoption policy validity and
|
|
136
|
+
initial adoption locks. Existing locks are retained so adoption cannot accept
|
|
137
|
+
managed-file drift implicitly.
|
|
138
|
+
- Resolve template previews through the locally installed scoped package.
|
|
139
|
+
- Refuse unknown or ambiguous actor declarations, prioritize platform login over
|
|
140
|
+
Git metadata, and never infer the current operator from commit history. Shared
|
|
141
|
+
policy declarations do not require ownership of private repos outside the
|
|
142
|
+
configured workspace. These checks remain attribution, not authentication.
|
|
143
|
+
- Check the generated projection manifest as well as its HTML for staleness.
|
|
144
|
+
|
|
145
|
+
- Add evidence-thresholded skill stewardship and exact-plan local projections;
|
|
146
|
+
refuse unmanaged collisions, managed drift and cross-workspace confirmations.
|
|
147
|
+
- Add bounded immutable source copies and extraction attempt receipts, retaining
|
|
148
|
+
originals and separating byte integrity from semantic acceptance.
|
|
149
|
+
- Add inert guide offers, revocable engagement and exact-payload consent contracts.
|
|
150
|
+
No remote execution, commercial authority or proprietary implementation ships.
|
|
151
|
+
See issues #33 and #34 and the skill stewardship and intake/guide documentation.
|
|
152
|
+
|
|
153
|
+
- Add experimental source-bound coauthor sessions, a private draft store, JSON
|
|
154
|
+
stdin CLI and portable guided-coauthor skill. Preserve original answers,
|
|
155
|
+
confirmation, durable receipts, bounded recovery and source-change refusal;
|
|
156
|
+
no canonical source edits or publication authority are introduced.
|
|
157
|
+
- Add an external-project adapter starter with declared source boundaries,
|
|
158
|
+
namespaced synthetic protocols, local-state exclusions and compatibility policy.
|
|
159
|
+
- Add evidence-bound local review runs, per-claim decisions, source-owner
|
|
160
|
+
handoffs, passage responses and reading-position recovery. Current decisions
|
|
161
|
+
refuse changed evidence and stale versions; local typed names remain asserted
|
|
162
|
+
identities and no source edits are applied automatically.
|
|
163
|
+
- Report installed provenance as declared origin, observed bytes or verified
|
|
164
|
+
checkout binding. Compare working bytes with commit objects, including Git
|
|
165
|
+
index hints, sanitize remote metadata, and fail exact-source checks when the
|
|
166
|
+
binding is unresolved. Piped provenance output is no longer truncated.
|
|
167
|
+
- Remove unsupported numeric claim confidence and explain legacy readiness
|
|
168
|
+
scores as input completeness. Supply the required run import-safety field.
|
|
169
|
+
- Add pack lifecycle qualification and dry-run migration guidance plus explicit,
|
|
170
|
+
disclosure-checked historical inspection bundles that never transfer approval.
|
|
171
|
+
- Extend the existing installed consumer gate across moved source layouts,
|
|
172
|
+
durable contributions, stale refusal and inspection-only portability.
|
|
173
|
+
|
|
3
174
|
## 0.2.0-alpha.6
|
|
4
175
|
|
|
176
|
+
- Share project-location parsing with extension-pack commands, including
|
|
177
|
+
repeated `--repo-path NAME=PATH` overrides and both argument forms. Malformed
|
|
178
|
+
shared options now fail before local-state creation. Add path-free resolution
|
|
179
|
+
diagnostics with `config check --explain`; read boundaries remain declared
|
|
180
|
+
by the project.
|
|
5
181
|
- Add Deliverable Zero for Atelier Sync: explicit single-repository
|
|
6
182
|
enrollment, a pinned direct-process Git adapter, executable repository
|
|
7
183
|
completeness observations, fast-forward-only reconciliation, per-repository
|
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ The Atelier adds that missing layer without taking the work away from you. It
|
|
|
12
12
|
turns a repository into an ontology-governed knowledge graph, gives rules the
|
|
13
13
|
power to refuse invalid states, and produces bounded views for people, teams,
|
|
14
14
|
agents, and tools. Git remains the source of record. Your files remain readable.
|
|
15
|
-
The runtime remains local.
|
|
15
|
+
The authoring runtime remains local; optional vault adapters run in an explicitly configured host.
|
|
16
16
|
|
|
17
17
|
That makes the same repository useful at several levels:
|
|
18
18
|
|
|
@@ -33,6 +33,12 @@ its definition or ceiling.
|
|
|
33
33
|
|
|
34
34
|
## From files to a working system
|
|
35
35
|
|
|
36
|
+
For local-harness authoring, see [durable coauthor sessions](docs/coauthor-session.md)
|
|
37
|
+
and [skill stewardship and managed installation](docs/skill-steward.md).
|
|
38
|
+
[Immutable intake and guide contracts](docs/intake-and-guides.md) extend existing
|
|
39
|
+
processing and hosted-tool adapters without adding remote execution or publication
|
|
40
|
+
authority. These alpha capabilities require explicit consumer integration.
|
|
41
|
+
|
|
36
42
|
```text
|
|
37
43
|
files you own
|
|
38
44
|
↓ declare identity, type, audience, and relationships
|
|
@@ -48,7 +54,7 @@ governed projections
|
|
|
48
54
|
You can see the complete loop in a disposable sample workspace:
|
|
49
55
|
|
|
50
56
|
```bash
|
|
51
|
-
npm install --save-dev @mnstry/atelier@0.2.0-alpha.
|
|
57
|
+
npm install --save-dev @mnstry/atelier@0.2.0-alpha.8
|
|
52
58
|
npx mnstry-atelier init --fixture=sample-workspace --target ./sample
|
|
53
59
|
npx mnstry-atelier graph --project ./sample/atelier.project.json
|
|
54
60
|
npx mnstry-atelier project --project ./sample/atelier.project.json
|
|
@@ -236,6 +242,12 @@ executable API reference. [Distribution contracts](./docs/distributions.md) expl
|
|
|
236
242
|
how a governed subset can be packaged for another surface without widening its
|
|
237
243
|
audience.
|
|
238
244
|
|
|
245
|
+
The [advisory decision contract](./docs/decisions.md) gives hosts bounded
|
|
246
|
+
choice, score and boolean questions with evidence references and recorded
|
|
247
|
+
uncertainty. `@mnstry/atelier/decisions` validates these records offline.
|
|
248
|
+
The host supplies optional provider execution and retains authorization;
|
|
249
|
+
an assessment carries proposal-only authority.
|
|
250
|
+
|
|
239
251
|
## Where the Atelier stops
|
|
240
252
|
|
|
241
253
|
The open package owns repository-side structure and proof. A managed runtime
|
|
@@ -258,20 +270,25 @@ This package makes three promises. None of them asks for your trust — each
|
|
|
258
270
|
one names the command that proves it.
|
|
259
271
|
|
|
260
272
|
**There is no silent egress; every network path is named.** There is no
|
|
261
|
-
telemetry, update check, crash reporting,
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
273
|
+
telemetry, update check, crash reporting, or model provider path in the package.
|
|
274
|
+
The optional vault API adds explicit host-bound artifact uploads and reads; it
|
|
275
|
+
is never activated by local authoring commands. Its injected storage, database
|
|
276
|
+
and identity SDKs may use the network and require separate hosted qualification. The exceptions are explicit: `boundary check` and
|
|
277
|
+
`upgrade` (including `--dry-run` and `--apply`) may invoke `gh api user` only when
|
|
278
|
+
an operated private-domain repository needs owner attribution, no explicit selector or `GITHUB_ACTOR` was supplied, and no
|
|
279
|
+
configured Git email maps to an actor. Shared-only boundary checks skip derived
|
|
280
|
+
identity lookup. Invalid explicit selectors are refused without fallback;
|
|
281
|
+
platform logins must uniquely match declared login mappings. Repository identity
|
|
282
|
+
checks may invoke `gh api repos/...` to resolve a canonical GitHub identity.
|
|
283
|
+
Those authenticated requests use your own `gh` credentials. Recorded repository
|
|
284
|
+
identities let identity checks keep working when the provider is unavailable.
|
|
285
|
+
See `docs/install.md` for the full attribution precedence and mode semantics.
|
|
286
|
+
Explicitly enrolled Atelier Sync may also run bounded Git fetches
|
|
270
287
|
for observation/reconciliation and one non-force push only when the exact
|
|
271
288
|
reviewed commit plan requested and confirmed it, no earlier local commit is
|
|
272
289
|
waiting to be published, and HEAD still names the verified commit object. Sync
|
|
273
290
|
never uses the network actor fallback, follows tags, or recursively publishes
|
|
274
|
-
submodule refs. The
|
|
291
|
+
submodule refs. The local authoring HTTP client
|
|
275
292
|
refuses non-loopback URLs, the served pages authorize no external origin, and
|
|
276
293
|
release audit scans every executable or markup file in the exact `npm pack`
|
|
277
294
|
inventory for egress primitives. The standalone gate also scans executable and
|
|
@@ -318,13 +335,16 @@ receive.
|
|
|
318
335
|
- It does not write to a MNSTRY runtime database.
|
|
319
336
|
- It does not import, provision, publish, or send project content to a MNSTRY
|
|
320
337
|
managed runtime.
|
|
321
|
-
- Conformance remains offline.
|
|
338
|
+
- Conformance remains offline. Local CLI network access is limited to the documented
|
|
322
339
|
`gh` actor-resolution fallback and explicitly enrolled Atelier Sync Git
|
|
323
340
|
operations: bounded fetch for observation/reconciliation, and non-force push
|
|
324
341
|
only when the exact reviewed commit plan requested and confirmed it, no
|
|
325
342
|
earlier local commit remains unpublished, and HEAD still names the verified
|
|
326
343
|
commit object; Sync does not use network actor fallback, follow tags, or
|
|
327
344
|
recursively publish submodule refs.
|
|
345
|
+
- Optional vault adapters use explicitly injected host SDKs and transports. The
|
|
346
|
+
host owns their network access, authentication and infrastructure; importing
|
|
347
|
+
the kit does not create a service or make a network request.
|
|
328
348
|
- It does not execute model-assisted analysis or any model provider.
|
|
329
349
|
- It does not include client project content.
|
|
330
350
|
|
|
@@ -358,7 +378,7 @@ Node.js `>=22.18.0 <23` is required. Pin the prerelease while the package
|
|
|
358
378
|
remains in alpha:
|
|
359
379
|
|
|
360
380
|
```bash
|
|
361
|
-
npm install --save-dev @mnstry/atelier@0.2.0-alpha.
|
|
381
|
+
npm install --save-dev @mnstry/atelier@0.2.0-alpha.8
|
|
362
382
|
```
|
|
363
383
|
|
|
364
384
|
Then choose the path that matches what you are building:
|
|
@@ -372,10 +392,12 @@ Then choose the path that matches what you are building:
|
|
|
372
392
|
- [Continuity commitments](./docs/continuity.md)
|
|
373
393
|
- [Assurance controls and evidence map](./docs/assurance-controls.md)
|
|
374
394
|
- [Upgrade notes](./docs/upgrade.md)
|
|
395
|
+
- [Upgrade with your agent](./docs/guided-upgrades.md)
|
|
396
|
+
- [Obsidian projection](./docs/obsidian.md)
|
|
375
397
|
|
|
376
398
|
## Status and command reference
|
|
377
399
|
|
|
378
|
-
Current package: `@mnstry/atelier@0.2.0-alpha.
|
|
400
|
+
Current package: `@mnstry/atelier@0.2.0-alpha.8`.
|
|
379
401
|
|
|
380
402
|
The alpha package is usable and contract-tested, but its library API may still
|
|
381
403
|
change before a stable release. Pin the exact version in production toolchains.
|
|
@@ -413,3 +435,25 @@ full command behavior is also covered by the package's executable tests.
|
|
|
413
435
|
|
|
414
436
|
Contributions are welcome through [the contribution guide](./CONTRIBUTING.md).
|
|
415
437
|
MNSTRY Atelier is released under [Apache-2.0](./LICENSE).
|
|
438
|
+
|
|
439
|
+
## Experimental hosted vault contract
|
|
440
|
+
|
|
441
|
+
An optional [private artifact vault service](docs/vault-service.md) supplies a
|
|
442
|
+
provider-independent ownership boundary and explicit Vercel/Cloudflare storage
|
|
443
|
+
bindings. It is not enabled by local CLI commands. Hosting adapters can perform
|
|
444
|
+
network I/O only when explicitly installed and invoked by a consuming host.
|
|
445
|
+
Browser identity integration and hosted acceptance remain unqualified.
|
|
446
|
+
|
|
447
|
+
## Experimental Obsidian projection
|
|
448
|
+
|
|
449
|
+
An opt-in projection publishes readable, linked notes of an enrolled workspace
|
|
450
|
+
into a vault outside every repository, keeps them current, and preserves every
|
|
451
|
+
edit made in the editor before anything is republished. A body edit is applied
|
|
452
|
+
to its source manually or under a scoped policy the user installs; anything
|
|
453
|
+
structural stays a copy-only proposal. Atelier never commits to Git for it.
|
|
454
|
+
It is disabled unless a project enables it, and it is proven on one platform
|
|
455
|
+
and one app version. Read [what it does and its known limits](docs/obsidian.md),
|
|
456
|
+
the [contract](docs/obsidian-contract.md) and the
|
|
457
|
+
[maintenance service](docs/local-services.md) before relying on it. The
|
|
458
|
+
package subpaths are `@mnstry/atelier/obsidian` and
|
|
459
|
+
`@mnstry/atelier/obsidian/*`.
|
package/SECURITY.md
CHANGED
|
@@ -42,9 +42,14 @@ you have to sign.
|
|
|
42
42
|
These are the claims the package makes. Defeating any of them is a
|
|
43
43
|
vulnerability, and the more quietly it can be defeated, the more severe:
|
|
44
44
|
|
|
45
|
-
- **Egress.** Any network send path
|
|
45
|
+
- **Egress.** Any undocumented network send path, any vault SDK invocation
|
|
46
|
+
without explicit host integration, or any way to make
|
|
46
47
|
the local sidecar reachable off loopback or serve a policy that authorizes
|
|
47
48
|
an external origin.
|
|
49
|
+
- **Vault ownership.** Any hosted artifact or asset served without a verified
|
|
50
|
+
owner identity, cross-vault credential use, or publication that bypasses the
|
|
51
|
+
atomic owner/revision check. The experimental contract still requires hosted
|
|
52
|
+
qualification; local conformance tests are not a production safety claim.
|
|
48
53
|
- **Boundary guard.** Any way to get private or sensitive source into a
|
|
49
54
|
shared repo, to stage a protected local file, or to promote private-domain
|
|
50
55
|
material without the required disclosure record — while the guard reports
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://mnstry.ai/schemas/atelier/atelier-adoption-policy.v1.schema.json",
|
|
4
|
+
"$comment": "contract revision 1.0.0",
|
|
5
|
+
"title": "mnstry.atelier-adoption-policy@v1",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"schema",
|
|
10
|
+
"enabled",
|
|
11
|
+
"mode",
|
|
12
|
+
"maxAgeSeconds",
|
|
13
|
+
"recoveryCoverage",
|
|
14
|
+
"allowedEffects"
|
|
15
|
+
],
|
|
16
|
+
"properties": {
|
|
17
|
+
"schema": {
|
|
18
|
+
"const": "mnstry.atelier-adoption-policy@v1"
|
|
19
|
+
},
|
|
20
|
+
"enabled": {
|
|
21
|
+
"type": "boolean"
|
|
22
|
+
},
|
|
23
|
+
"mode": {
|
|
24
|
+
"const": "manual-exact-plan"
|
|
25
|
+
},
|
|
26
|
+
"maxAgeSeconds": {
|
|
27
|
+
"type": "integer",
|
|
28
|
+
"minimum": 1,
|
|
29
|
+
"maximum": 86400
|
|
30
|
+
},
|
|
31
|
+
"recoveryCoverage": {
|
|
32
|
+
"const": "local-only"
|
|
33
|
+
},
|
|
34
|
+
"allowedEffects": {
|
|
35
|
+
"const": [
|
|
36
|
+
"lock-and-projections",
|
|
37
|
+
"git-commit"
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
"ext": {
|
|
41
|
+
"type": "object",
|
|
42
|
+
"description": "Namespaced annotations only. Unknown members MUST be ignored and convey no authority."
|
|
43
|
+
},
|
|
44
|
+
"contractVersion": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"pattern": "^1\\.[0-9]+\\.[0-9]+$"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://mnstry.ai/schemas/atelier/atelier-coauthor.v1.schema.json",
|
|
4
|
+
"$comment": "contract revision 1.0.0",
|
|
5
|
+
"title": "Private coauthor configuration and draft",
|
|
6
|
+
"oneOf": [
|
|
7
|
+
{
|
|
8
|
+
"$ref": "#/$defs/config"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"$ref": "#/$defs/draft"
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"$defs": {
|
|
15
|
+
"config": {
|
|
16
|
+
"type": "object",
|
|
17
|
+
"additionalProperties": false,
|
|
18
|
+
"properties": {
|
|
19
|
+
"id": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"minLength": 1,
|
|
22
|
+
"maxLength": 100000
|
|
23
|
+
},
|
|
24
|
+
"fields": {
|
|
25
|
+
"type": "array",
|
|
26
|
+
"minItems": 1,
|
|
27
|
+
"maxItems": 1000,
|
|
28
|
+
"items": {
|
|
29
|
+
"type": "object",
|
|
30
|
+
"additionalProperties": false,
|
|
31
|
+
"properties": {
|
|
32
|
+
"id": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"minLength": 1,
|
|
35
|
+
"maxLength": 100000
|
|
36
|
+
},
|
|
37
|
+
"source": {
|
|
38
|
+
"type": "object",
|
|
39
|
+
"additionalProperties": false,
|
|
40
|
+
"properties": {
|
|
41
|
+
"ref": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"minLength": 1,
|
|
44
|
+
"maxLength": 100000
|
|
45
|
+
},
|
|
46
|
+
"digest": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"pattern": "^[a-f0-9]{64}$"
|
|
49
|
+
},
|
|
50
|
+
"ext": {
|
|
51
|
+
"type": "object",
|
|
52
|
+
"description": "Reserved inert metadata; does not grant authority."
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"required": [
|
|
56
|
+
"ref",
|
|
57
|
+
"digest"
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
"ext": {
|
|
61
|
+
"type": "object",
|
|
62
|
+
"description": "Reserved inert metadata; does not grant authority."
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"required": [
|
|
66
|
+
"id",
|
|
67
|
+
"source"
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"contractVersion": {
|
|
72
|
+
"type": "string",
|
|
73
|
+
"pattern": "^1\\.[0-9]+\\.[0-9]+$"
|
|
74
|
+
},
|
|
75
|
+
"ext": {
|
|
76
|
+
"type": "object",
|
|
77
|
+
"description": "Reserved inert metadata; does not grant authority."
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"required": [
|
|
81
|
+
"id",
|
|
82
|
+
"fields"
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
"draft": {
|
|
86
|
+
"type": "object",
|
|
87
|
+
"additionalProperties": false,
|
|
88
|
+
"properties": {
|
|
89
|
+
"schema": {
|
|
90
|
+
"const": "atelier-coauthor-draft@v1"
|
|
91
|
+
},
|
|
92
|
+
"status": {
|
|
93
|
+
"const": "draft"
|
|
94
|
+
},
|
|
95
|
+
"text": {
|
|
96
|
+
"type": "string",
|
|
97
|
+
"minLength": 1,
|
|
98
|
+
"maxLength": 100000
|
|
99
|
+
},
|
|
100
|
+
"receipt": {
|
|
101
|
+
"type": "object",
|
|
102
|
+
"additionalProperties": false,
|
|
103
|
+
"properties": {
|
|
104
|
+
"sessionId": {
|
|
105
|
+
"type": "string",
|
|
106
|
+
"minLength": 1,
|
|
107
|
+
"maxLength": 100000
|
|
108
|
+
},
|
|
109
|
+
"requestId": {
|
|
110
|
+
"type": "string",
|
|
111
|
+
"minLength": 1,
|
|
112
|
+
"maxLength": 100000
|
|
113
|
+
},
|
|
114
|
+
"fieldId": {
|
|
115
|
+
"type": "string",
|
|
116
|
+
"minLength": 1,
|
|
117
|
+
"maxLength": 100000
|
|
118
|
+
},
|
|
119
|
+
"sourceRef": {
|
|
120
|
+
"type": "string",
|
|
121
|
+
"minLength": 1,
|
|
122
|
+
"maxLength": 100000
|
|
123
|
+
},
|
|
124
|
+
"sourceDigest": {
|
|
125
|
+
"type": "string",
|
|
126
|
+
"pattern": "^[a-f0-9]{64}$"
|
|
127
|
+
},
|
|
128
|
+
"valueDigest": {
|
|
129
|
+
"type": "string",
|
|
130
|
+
"pattern": "^[a-f0-9]{64}$"
|
|
131
|
+
},
|
|
132
|
+
"ext": {
|
|
133
|
+
"type": "object",
|
|
134
|
+
"description": "Reserved inert metadata; does not grant authority."
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
"required": [
|
|
138
|
+
"sessionId",
|
|
139
|
+
"requestId",
|
|
140
|
+
"fieldId",
|
|
141
|
+
"sourceRef",
|
|
142
|
+
"sourceDigest",
|
|
143
|
+
"valueDigest"
|
|
144
|
+
]
|
|
145
|
+
},
|
|
146
|
+
"contractVersion": {
|
|
147
|
+
"type": "string",
|
|
148
|
+
"pattern": "^1\\.[0-9]+\\.[0-9]+$"
|
|
149
|
+
},
|
|
150
|
+
"ext": {
|
|
151
|
+
"type": "object",
|
|
152
|
+
"description": "Reserved inert metadata; does not grant authority."
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
"required": [
|
|
156
|
+
"schema",
|
|
157
|
+
"status",
|
|
158
|
+
"text",
|
|
159
|
+
"receipt"
|
|
160
|
+
]
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|