@mnstry/atelier 0.2.0-alpha.1 → 0.2.0-alpha.11
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 +413 -0
- package/README.md +402 -205
- 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-repository-observation.v1.schema.json +163 -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/contracts/public-api-baseline.json +57 -0
- package/docs/assurance-controls.md +49 -0
- package/docs/atelier-runtime.md +28 -2
- package/docs/atelier-sync.md +172 -0
- package/docs/blocks/audience-visibility.md +9 -0
- package/docs/blocks/claims.md +61 -0
- package/docs/blocks/conformance-admission.md +15 -0
- package/docs/blocks/will-not-do.md +18 -0
- package/docs/coauthor-session.md +57 -0
- package/docs/connected-composition.md +75 -0
- package/docs/continuity.md +3 -4
- package/docs/decisions.md +167 -0
- package/docs/design.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 +99 -16
- 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/knowledge-graph.md +8 -4
- package/docs/local-review.md +84 -0
- package/docs/local-services.md +328 -0
- package/docs/local-state.md +107 -0
- package/docs/obsidian-contract.md +698 -0
- package/docs/obsidian.md +484 -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 +174 -12
- package/docs/repo-boundary-guard.md +12 -2
- package/docs/review-portability.md +55 -0
- package/docs/skill-steward.md +156 -0
- package/docs/upgrade.md +155 -5
- 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-repository-observation/invalid/complete-with-blocker.v1.json +18 -0
- package/fixtures/atelier-repository-observation/valid/complete-local.v1.json +48 -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/projects/sample-workspace/content/source.html.kg.json +4 -1
- package/fixtures/projects/source-formats-workspace/content/data.json.kg.json +4 -1
- package/fixtures/projects/source-formats-workspace/content/logo.png.kg.json +4 -1
- package/fixtures/projects/source-formats-workspace/content/metrics.csv.kg.json +4 -1
- package/fixtures/projects/source-formats-workspace/content/pipeline.yaml.kg.json +4 -1
- package/fixtures/ui/presentation/pane.v1.json +7 -0
- package/fixtures/ui/presentation/reference.v1.json +293 -0
- package/package.json +86 -10
- package/skills/claude/atelier-guided-coauthor/SKILL.md +49 -0
- package/skills/claude/atelier-guided-upgrade/SKILL.md +97 -0
- package/skills/claude/atelier-local-service/SKILL.md +47 -0
- package/skills/claude/atelier-open/SKILL.md +11 -5
- package/skills/claude/atelier-public-boundary/SKILL.md +31 -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-local-service/SKILL.md +47 -0
- package/skills/codex/atelier-open/SKILL.md +11 -5
- package/skills/codex/atelier-public-boundary/SKILL.md +31 -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/content-rules.mjs +283 -20
- package/src/boundary/policy.mjs +213 -91
- package/src/cli/execute-command.mjs +36 -0
- package/src/cli/project-options.mjs +58 -0
- package/src/cli/run.mjs +78 -10
- package/src/coauthor/session.mjs +161 -0
- package/src/coauthor/store.mjs +173 -0
- package/src/collaboration/event-ledger.mjs +348 -0
- package/src/collaboration/index.mjs +17 -0
- package/src/collaboration/inspection-bundle.mjs +223 -0
- package/src/collaboration/proposals.mjs +265 -65
- package/src/collaboration/review-contracts.mjs +25 -0
- package/src/collaboration/review-store.mjs +305 -0
- package/src/commands/attestation.mjs +20 -6
- package/src/commands/coauthor.mjs +26 -0
- package/src/commands/config.mjs +6 -1
- package/src/commands/disclosure.mjs +133 -0
- package/src/commands/distribution.mjs +2 -1
- package/src/commands/extension-pack.mjs +17 -9
- package/src/commands/init.mjs +46 -6
- package/src/commands/obsidian.mjs +371 -0
- package/src/commands/review.mjs +147 -0
- package/src/commands/server.mjs +1 -4
- package/src/commands/setup.mjs +51 -14
- package/src/commands/skills.mjs +199 -0
- package/src/commands/sync.mjs +107 -0
- package/src/composition/registry.mjs +27 -0
- package/src/composition/wire.mjs +122 -0
- package/src/contracts/corpus.mjs +35 -0
- package/src/decisions/contracts.d.mts +96 -0
- package/src/decisions/contracts.mjs +321 -0
- package/src/disclosure/content-scan.mjs +206 -0
- package/src/egress/check.mjs +7 -38
- package/src/egress/forbidden-egress.mjs +32 -18
- package/src/export/atelier-export-contract.mjs +16 -1
- package/src/extension-packs/lifecycle.mjs +154 -0
- package/src/graph/graph.mjs +176 -316
- package/src/graph/knowledge-graph.mjs +643 -43
- package/src/guides/contracts.mjs +54 -0
- package/src/harness/context-client.mjs +9 -1
- package/src/index.mjs +41 -0
- package/src/intake/store.mjs +119 -0
- package/src/preview/channel.mjs +89 -0
- package/src/project/config.mjs +112 -52
- package/src/project/durable-state.mjs +161 -0
- package/src/project/file-class.mjs +180 -0
- package/src/project/package-root.mjs +10 -0
- package/src/project/path-match.mjs +38 -15
- package/src/project/private-state.mjs +120 -0
- 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 +212 -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/git-adapter.mjs +189 -0
- package/src/runtime/local-state.mjs +439 -0
- package/src/runtime/obsidian/app-capability.mjs +138 -0
- package/src/runtime/obsidian/app-production-seams.mjs +107 -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 +280 -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-entry-path.mjs +9 -0
- package/src/runtime/obsidian/service-main.mjs +93 -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/repository-observation.mjs +491 -0
- package/src/runtime/supervisor.mjs +803 -0
- package/src/server/local-sidecar.mjs +125 -59
- package/src/server/security.mjs +89 -4
- package/src/server/server.mjs +4 -2
- package/src/skills/steward.mjs +780 -0
- package/src/support/feedback-report.mjs +4 -3
- 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 +65 -29
- 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,5 +1,418 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.0-alpha.11
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- `status` now gives the same reason-specific next step as `open` for a
|
|
8
|
+
publication that stopped because an Obsidian that may hold the vault could
|
|
9
|
+
not be coordinated with (`publisher-conflict`, reason
|
|
10
|
+
`editor-uncoordinated`). The text no longer names one cause, since the
|
|
11
|
+
reason has several: another vault open, a command line that did not answer,
|
|
12
|
+
an unknown process table (on Linux, any app on a system Electron), or an app
|
|
13
|
+
started during an app-closed publication. The advice depends on whether the
|
|
14
|
+
view was ever published. Before a first publication: quit Obsidian (on
|
|
15
|
+
Linux, also any app that runs on a system Electron) so the view is
|
|
16
|
+
published, then `atelier obsidian open` starts Obsidian on it. After one:
|
|
17
|
+
the same, or open the view in the app as it is with `atelier obsidian open
|
|
18
|
+
--allow-stale`. A concurrent publisher keeps its advice.
|
|
19
|
+
- The service's app qualification checks no version for an app that is not
|
|
20
|
+
running, and that answer is remembered for up to ten seconds. An editor
|
|
21
|
+
adapter built on it could coordinate with an Obsidian started inside that
|
|
22
|
+
window, whose version nobody had checked, and publish through it in-app.
|
|
23
|
+
The adapter now receives the qualification and does not coordinate, or ask
|
|
24
|
+
the app anything, unless a version was checked. An answer that checked no
|
|
25
|
+
version (the app was not running, or none was found) is no longer reused,
|
|
26
|
+
so the next publication after the app starts reads its version and
|
|
27
|
+
coordinates. A publication that stops this way is tried again on the next
|
|
28
|
+
change or at the next full reconciliation, every five minutes.
|
|
29
|
+
- On macOS the app is found only at `/Applications/Obsidian.app`. An
|
|
30
|
+
Obsidian installed elsewhere is `app-missing`: nothing is published through
|
|
31
|
+
it, and publication waits while it runs. This is now documented.
|
|
32
|
+
- On Linux an app started through a differently named link or launcher was
|
|
33
|
+
read as absent, because the process name is the name it was started
|
|
34
|
+
through. A process whose name is not recognised is now identified by the
|
|
35
|
+
executable `/proc/<pid>/exe` resolves to. A read failure other than a
|
|
36
|
+
process that exited or whose executable this user may not read, or a table
|
|
37
|
+
in which nothing resolves, is `unknown`.
|
|
38
|
+
- The `ps` call of the process probe had no timeout, so a hung `ps` blocked
|
|
39
|
+
the service. It is killed after five seconds and the reading is `unknown`.
|
|
40
|
+
- Documented that from 0.2.0-alpha.10 the app-free publication path runs in
|
|
41
|
+
production, with its re-probe window of up to two seconds plus one note
|
|
42
|
+
while Obsidian is not running (see "Known limits" in `docs/obsidian.md`).
|
|
43
|
+
|
|
44
|
+
## 0.2.0-alpha.10
|
|
45
|
+
|
|
46
|
+
### Fixed
|
|
47
|
+
|
|
48
|
+
- A first publication refused because Obsidian runs without that vault open
|
|
49
|
+
(`publisher-conflict`, reason `editor-uncoordinated`) now advises quitting
|
|
50
|
+
Obsidian so the view publishes directly, instead of waiting for "the other
|
|
51
|
+
publisher", which does not exist.
|
|
52
|
+
- The Obsidian process probe matched Atelier's own maintenance service: it
|
|
53
|
+
searched every argument of every process for an `obsidian` path segment, so
|
|
54
|
+
the service (`…/src/runtime/obsidian/service-main.mjs`) and anything naming
|
|
55
|
+
the private data root read as a running app. With the app quit, the service
|
|
56
|
+
reported `app-version-unsupported` and never published, and the app-free
|
|
57
|
+
publication path was blocked. The probe now reads `ps -A -o comm=` and
|
|
58
|
+
recognises the app by its executable: `Obsidian` and `Obsidian Helper…` on
|
|
59
|
+
macOS, `obsidian` on Linux. On Linux a system Electron process makes the
|
|
60
|
+
reading `unknown`, which is treated as a running app.
|
|
61
|
+
- An app running with no vault open answers every command-line call with
|
|
62
|
+
`Vault not found.`, which was read as a version and reported as
|
|
63
|
+
`version-unknown` or `version-unreadable`. It is now the reason
|
|
64
|
+
`no-vault-open` under the existing outcome `app-version-unsupported`, still
|
|
65
|
+
not qualified, and `status` and `open` say to open any vault in Obsidian or
|
|
66
|
+
quit it. `open` waits for an app it launched that is still opening the vault.
|
|
67
|
+
|
|
68
|
+
## 0.2.0-alpha.9
|
|
69
|
+
|
|
70
|
+
### Fixed
|
|
71
|
+
|
|
72
|
+
- The maintenance service process could not start from the shipped package:
|
|
73
|
+
its entry awaits the command contributions at top level, and the selection
|
|
74
|
+
contribution shipped in 0.2.0-alpha.8 reaches the entry again through
|
|
75
|
+
`opening.mjs` → `lifecycle.mjs`, so the process deadlocked on its own await
|
|
76
|
+
and exited 13 before it listened. `SERVICE_ENTRY_PATH` now lives in its own
|
|
77
|
+
module that nothing else depends on, and a test spawns the real entry.
|
|
78
|
+
|
|
79
|
+
## 0.2.0-alpha.8
|
|
80
|
+
|
|
81
|
+
### Added
|
|
82
|
+
|
|
83
|
+
- Add portable, typed advisory decision requests and results under
|
|
84
|
+
`@mnstry/atelier/decisions`, with versioned schemas, invented fixtures and
|
|
85
|
+
offline validation of evidence bindings, distributions and abstention.
|
|
86
|
+
Provider execution, credentials, budgets and authorization stay with the
|
|
87
|
+
host. See `docs/decisions.md`.
|
|
88
|
+
- Add an experimental, opt-in Obsidian projection. A project that enables
|
|
89
|
+
`ext["mnstry.atelier.obsidian"]` and declares views (`full`, `scoped` or
|
|
90
|
+
`focus`, with an optional bounded expansion) gets readable, linked notes of
|
|
91
|
+
the enrolled workspace in a vault outside every repository, under private
|
|
92
|
+
per-workspace storage. Nothing is published for a project that does not
|
|
93
|
+
enable it. See `docs/obsidian.md`, `docs/obsidian-contract.md` and
|
|
94
|
+
`docs/local-services.md`.
|
|
95
|
+
- Add eleven closed `atelier-obsidian-*.v1` schemas with valid and invalid
|
|
96
|
+
fixtures, each exported under its own `./contracts/` path.
|
|
97
|
+
- Add deterministic materialization: note paths made of a readable title and a
|
|
98
|
+
stable identity suffix, exact byte regions that invert to their source,
|
|
99
|
+
embedded assets, and audience and eligibility rules that fail closed. No
|
|
100
|
+
audience is admitted by default, which publishes an empty view.
|
|
101
|
+
- Add publication that coordinates with a running editor through conditional
|
|
102
|
+
operations, with journals, restart recovery and late-writer rechecks, so
|
|
103
|
+
that a concurrent write by a person or the app is retained rather than
|
|
104
|
+
overwritten. It depends on an atomic file exchange and is proven on macOS
|
|
105
|
+
arm64 with one app version; see the contract for what is open.
|
|
106
|
+
- Add a per-workspace loopback maintenance service and the noninteractive
|
|
107
|
+
`atelier obsidian` command (`status`, `scope`, `audience`, `mode`, `policy`,
|
|
108
|
+
`service`, `open`, `apply`, `proposals`, `conflicts`, `apply-policy`,
|
|
109
|
+
`selection`). Reaching the installed app or the operating system is never a
|
|
110
|
+
default: it needs `--adapter=obsidian-cli`. The app must be version 1.13.7
|
|
111
|
+
or later.
|
|
112
|
+
- Ship the selection contribution on the command: the one-line loader module
|
|
113
|
+
`src/runtime/obsidian/contributions/selection-ui.mjs` puts `selection`,
|
|
114
|
+
`conflicts` and `apply-policy` on `atelier obsidian`, beside `apply` and
|
|
115
|
+
`proposals`. The usage text names every contributed operation, and a
|
|
116
|
+
contributed operation declares under `options` which shared options it
|
|
117
|
+
takes, so `--actor` is refused everywhere but `apply run`.
|
|
118
|
+
- Preserve every edit made in the vault before anything is republished. A
|
|
119
|
+
body replacement is applied to its source manually, or automatically under
|
|
120
|
+
a scoped policy the user installs and can revoke; revocation is read again
|
|
121
|
+
before every write. An edit that is not a body replacement becomes a
|
|
122
|
+
copy-only proposal in the owning repository's proposal store and is never
|
|
123
|
+
applied. Atelier makes no Git commit for any of it.
|
|
124
|
+
- Add selection binding, apply-policy setup, a read-only conflict view and an
|
|
125
|
+
acceptance-receipt validator that is labelled schema validation only and
|
|
126
|
+
closes no gate.
|
|
127
|
+
- Add the package subpaths `./obsidian`, `./obsidian/contracts`,
|
|
128
|
+
`./obsidian/materialize`, `./obsidian/publication`, `./obsidian/recovery`,
|
|
129
|
+
`./obsidian/edits`, `./obsidian/proposals` and `./obsidian/selection`. The
|
|
130
|
+
package root exports nothing of the projection. Names ending
|
|
131
|
+
`ForOracleTests` are test mutation controls, not a supported API.
|
|
132
|
+
- `release:audit` now requires the Obsidian runtime, schemas and documents in
|
|
133
|
+
the tarball, requires every declared export to name a packed file, and
|
|
134
|
+
refuses scripts, tests, experiments, receipt directories, application
|
|
135
|
+
archives, receipts that name a real host or operator, and fixtures above 262,144
|
|
136
|
+
bytes. The path allowlist is unchanged. A package proof packs the tarball,
|
|
137
|
+
imports the subpaths from a bare consumer and publishes a synthetic
|
|
138
|
+
workspace into a temporary vault with no app.
|
|
139
|
+
- Known limits: Windows refuses publication and source apply because no atomic
|
|
140
|
+
exchange is known; the real-app suite has not been run on Linux, and x86_64
|
|
141
|
+
has not been run anywhere; macOS publication needs the stock system perl;
|
|
142
|
+
the app version has a floor and no ceiling; a vault body edit to a note
|
|
143
|
+
whose source uses CRLF becomes a proposal rather than an apply. No adopter
|
|
144
|
+
acceptance is recorded.
|
|
145
|
+
|
|
146
|
+
### Changed
|
|
147
|
+
|
|
148
|
+
- The resolver that produces `links_to` edges is now shared by the graph and
|
|
149
|
+
the projection, and its behaviour changed in five classes. Graph artifacts a
|
|
150
|
+
consumer has committed may differ after upgrading in exactly these classes
|
|
151
|
+
and no others; each is pinned in `test/graph-knowledge-graph.test.mjs` and
|
|
152
|
+
listed in `docs/obsidian-contract.md`. Regenerate committed graph artifacts
|
|
153
|
+
after upgrading and review the difference.
|
|
154
|
+
1. Links inside fenced code (backtick or tilde, any info string, up to three
|
|
155
|
+
spaces of indent, CRLF, CommonMark fence-length rules), inside inline
|
|
156
|
+
code and inside front matter no longer produce edges. Two stray backticks
|
|
157
|
+
that happen to pair across a link count as inline code, and links after
|
|
158
|
+
an unbalanced fence that runs to the end of the file are inside code.
|
|
159
|
+
2. A link to a directory resolves to that directory's `README.md`, then
|
|
160
|
+
`index.md`, testing eligibility per candidate. A link to a parent
|
|
161
|
+
directory now resolves where the earlier reader missed it.
|
|
162
|
+
3. A link that climbs above its own repository root and re-enters through
|
|
163
|
+
the checkout's directory name is reported as leaving the enrolled roots,
|
|
164
|
+
as before. It is never turned into a repository-local edge.
|
|
165
|
+
4. Malformed percent-encoding in a link is a `link-href-malformed` finding.
|
|
166
|
+
It no longer throws out of the graph build.
|
|
167
|
+
5. The workspace graph, not repository artifacts, additionally carries
|
|
168
|
+
wikilink edges and cross-repository Markdown-link edges, de-duplicated.
|
|
169
|
+
|
|
170
|
+
## 0.2.0-alpha.7
|
|
171
|
+
|
|
172
|
+
- Add a guided owner-agent upgrade skill and read-only `upgrade explain`
|
|
173
|
+
reports derived from saved plans. Retain consent and provenance limits,
|
|
174
|
+
distinguish staged installation from adoption, and route unsupported
|
|
175
|
+
workspaces through their existing operator procedure.
|
|
176
|
+
|
|
177
|
+
- Add explicit saved-plan local upgrade transactions with private receipts,
|
|
178
|
+
existing commit hooks and recovery inspection. Refuse unsupported Git
|
|
179
|
+
attributes before generated writes and explain abandoned preparation state.
|
|
180
|
+
- `lock write` now preserves valid migration and template history and refuses
|
|
181
|
+
a malformed previous lock. Inspect and repair or separately archive the
|
|
182
|
+
invalid lock before retrying; history is no longer silently overwritten.
|
|
183
|
+
|
|
184
|
+
- Add a source-only Astro reference consumer for build-time presentation tokens,
|
|
185
|
+
no-script reading/navigation, local-only form validation and cross-browser proof.
|
|
186
|
+
Keep public-page mechanics consumer-owned; add no Astro runtime dependency.
|
|
187
|
+
- Patch the existing fast-uri dependency and override to 3.1.7. Clarify ordinary
|
|
188
|
+
web-link navigation versus native host navigation requests.
|
|
189
|
+
|
|
190
|
+
- Validate proposed and retained adoption configurations together with their
|
|
191
|
+
policy before writing; refuse an existing default policy during blank init.
|
|
192
|
+
Compare manifests using their serialized JSON representation so omitted
|
|
193
|
+
optional fields do not make freshly generated output stale.
|
|
194
|
+
- Migration: unset or correct globally exported `MNSTRY_ATELIER_ACTOR` values
|
|
195
|
+
that are not declared in the current policy. Invalid explicit selectors now
|
|
196
|
+
refuse even shared-only and legacy-warning checks.
|
|
197
|
+
|
|
198
|
+
- Correct shared-only attribution so ambient platform identities cannot invent
|
|
199
|
+
an ownership requirement or trigger a network lookup. Preserve legacy-warning
|
|
200
|
+
semantics for derived identities; Sync remains strict. Match platform logins
|
|
201
|
+
only to declared logins, refuse prototype-name omissions and duplicate repos.
|
|
202
|
+
- Share manifest generation between project and upgrade, store a relative graph
|
|
203
|
+
path, and compare parsed content independently of object-key order.
|
|
204
|
+
- Resolve preview commands through the scoped package from root or parent installs;
|
|
205
|
+
qualify both layouts with installed health/page smoke tests. Existing preview
|
|
206
|
+
configs require an explicit user update.
|
|
207
|
+
- Validate retained adoption policy/lock state before writing, refuse implicit
|
|
208
|
+
drift acceptance, detect null-digest policy drift, and refuse init collisions
|
|
209
|
+
so retries cannot overwrite authored files or reset the lock.
|
|
210
|
+
|
|
211
|
+
- Repair starter document classifications, shared adoption policy validity and
|
|
212
|
+
initial adoption locks. Existing locks are retained so adoption cannot accept
|
|
213
|
+
managed-file drift implicitly.
|
|
214
|
+
- Resolve template previews through the locally installed scoped package.
|
|
215
|
+
- Refuse unknown or ambiguous actor declarations, prioritize platform login over
|
|
216
|
+
Git metadata, and never infer the current operator from commit history. Shared
|
|
217
|
+
policy declarations do not require ownership of private repos outside the
|
|
218
|
+
configured workspace. These checks remain attribution, not authentication.
|
|
219
|
+
- Check the generated projection manifest as well as its HTML for staleness.
|
|
220
|
+
|
|
221
|
+
- Add evidence-thresholded skill stewardship and exact-plan local projections;
|
|
222
|
+
refuse unmanaged collisions, managed drift and cross-workspace confirmations.
|
|
223
|
+
- Add bounded immutable source copies and extraction attempt receipts, retaining
|
|
224
|
+
originals and separating byte integrity from semantic acceptance.
|
|
225
|
+
- Add inert guide offers, revocable engagement and exact-payload consent contracts.
|
|
226
|
+
No remote execution, commercial authority or proprietary implementation ships.
|
|
227
|
+
See issues #33 and #34 and the skill stewardship and intake/guide documentation.
|
|
228
|
+
|
|
229
|
+
- Add experimental source-bound coauthor sessions, a private draft store, JSON
|
|
230
|
+
stdin CLI and portable guided-coauthor skill. Preserve original answers,
|
|
231
|
+
confirmation, durable receipts, bounded recovery and source-change refusal;
|
|
232
|
+
no canonical source edits or publication authority are introduced.
|
|
233
|
+
- Add an external-project adapter starter with declared source boundaries,
|
|
234
|
+
namespaced synthetic protocols, local-state exclusions and compatibility policy.
|
|
235
|
+
- Add evidence-bound local review runs, per-claim decisions, source-owner
|
|
236
|
+
handoffs, passage responses and reading-position recovery. Current decisions
|
|
237
|
+
refuse changed evidence and stale versions; local typed names remain asserted
|
|
238
|
+
identities and no source edits are applied automatically.
|
|
239
|
+
- Report installed provenance as declared origin, observed bytes or verified
|
|
240
|
+
checkout binding. Compare working bytes with commit objects, including Git
|
|
241
|
+
index hints, sanitize remote metadata, and fail exact-source checks when the
|
|
242
|
+
binding is unresolved. Piped provenance output is no longer truncated.
|
|
243
|
+
- Remove unsupported numeric claim confidence and explain legacy readiness
|
|
244
|
+
scores as input completeness. Supply the required run import-safety field.
|
|
245
|
+
- Add pack lifecycle qualification and dry-run migration guidance plus explicit,
|
|
246
|
+
disclosure-checked historical inspection bundles that never transfer approval.
|
|
247
|
+
- Extend the existing installed consumer gate across moved source layouts,
|
|
248
|
+
durable contributions, stale refusal and inspection-only portability.
|
|
249
|
+
|
|
250
|
+
## 0.2.0-alpha.6
|
|
251
|
+
|
|
252
|
+
- Share project-location parsing with extension-pack commands, including
|
|
253
|
+
repeated `--repo-path NAME=PATH` overrides and both argument forms. Malformed
|
|
254
|
+
shared options now fail before local-state creation. Add path-free resolution
|
|
255
|
+
diagnostics with `config check --explain`; read boundaries remain declared
|
|
256
|
+
by the project.
|
|
257
|
+
- Add Deliverable Zero for Atelier Sync: explicit single-repository
|
|
258
|
+
enrollment, a pinned direct-process Git adapter, executable repository
|
|
259
|
+
completeness observations, fast-forward-only reconciliation, per-repository
|
|
260
|
+
locking, hash-chained local operation traces, pause/resume control, and a
|
|
261
|
+
two-phase user-confirmed commit-and-publish path. No desktop shell, watcher
|
|
262
|
+
dependency, semantic conflict resolution, force operation, browser apply
|
|
263
|
+
endpoint, telemetry, or hidden upload is introduced.
|
|
264
|
+
- Raise the Sync Git floor to 2.40 so default global and system attributes can
|
|
265
|
+
be observed, bind publication to the single resolved push URL, refuse URL
|
|
266
|
+
rewrite ambiguity, strip every inherited `GIT_*` process control, keep
|
|
267
|
+
read-only commands mutation-free, and return non-zero exits for paused status
|
|
268
|
+
and failed publication.
|
|
269
|
+
|
|
270
|
+
## 0.2.0-alpha.5
|
|
271
|
+
|
|
272
|
+
- Harden boundary enforcement so path globs use segment-aware matching, an
|
|
273
|
+
explicitly empty or malformed content-rule policy is invalid, staged and
|
|
274
|
+
pushed binary evidence is scanned within bounded budgets, incomplete Git
|
|
275
|
+
reads fail closed, linked worktrees install hooks in the correct Git common
|
|
276
|
+
directory, and `boundary audit` defaults to the current working tree with an
|
|
277
|
+
explicit `--head` snapshot mode.
|
|
278
|
+
- Consolidate graph classification in one canonical engine. Markdown without a
|
|
279
|
+
`kg` block is now represented as `unclassified` with a private audience and
|
|
280
|
+
diagnostics; empty, partial, or malformed declarations remain blocking.
|
|
281
|
+
Generated projection directories remain derived from the file-class manifest
|
|
282
|
+
so graph validation and generated-only upgrade recovery cannot drift apart.
|
|
283
|
+
- Bind release egress verification to the exact `npm pack` inventory, including
|
|
284
|
+
test-shaped paths that are actually published, and make the legacy egress
|
|
285
|
+
checker a thin delegate to the canonical scanner. Packed fixture-suppression
|
|
286
|
+
markers are refused and reviewed local-computed suppressions are counted.
|
|
287
|
+
- Harden `atelier dev` so it binds only to loopback, requires a generated
|
|
288
|
+
`atelier.manifest.json`, serves only enrolled safe static files after
|
|
289
|
+
realpath validation, and applies host, fetch-site, origin, method, and nonce
|
|
290
|
+
checks to the relevant read and mutation routes.
|
|
291
|
+
- Make collaboration records fail closed with typed corrupt-record results,
|
|
292
|
+
bounded ledger reads, POSIX no-follow and cross-platform state-leaf identity
|
|
293
|
+
validation, content-bound event identifiers, write locking, explicit
|
|
294
|
+
compaction, and one-pass proposal-list materialization. Compatibility
|
|
295
|
+
snapshots are best-effort projections of committed events rather than a
|
|
296
|
+
second authority. Proposal authority now follows declared capabilities and
|
|
297
|
+
apply endpoints rather than action-like words, and the never-released
|
|
298
|
+
provider-analysis experiment was removed before it became part of a
|
|
299
|
+
published API.
|
|
300
|
+
- Render expected project and JSON failures as typed, actionable CLI messages
|
|
301
|
+
without stacks by default; set `ATELIER_DEBUG=1` to include diagnostic stacks.
|
|
302
|
+
- Strengthen release proof with negative-control mutations and a bare consumer
|
|
303
|
+
that installs without publisher overrides, validates its dependency tree,
|
|
304
|
+
and imports every declared package export. A candidate is packed once, bound
|
|
305
|
+
by SHA-256, and passed unchanged through tarball audit, consumer, and branded
|
|
306
|
+
distribution gates. The trusted-publishing workflow publishes that same
|
|
307
|
+
retained, audited tarball rather than repacking the source directory.
|
|
308
|
+
- Pin every JavaScript subpath and named export from `v0.2.0-alpha.4` in a
|
|
309
|
+
registry-verified compatibility baseline with immutable tag-commit and
|
|
310
|
+
public-artifact provenance. Release tooling refuses removals, provenance
|
|
311
|
+
drift, and binding modified source to an already-tagged package version.
|
|
312
|
+
- Add a portable `atelier disclosure check` command that scans tracked or
|
|
313
|
+
staged consumer content, requires private denylist coverage by default, and
|
|
314
|
+
refuses tracked repository-local denylist files. Portable and repository
|
|
315
|
+
sweeps now detect the full bounded family of private-key headers and refuse
|
|
316
|
+
binary or invalid-UTF-8 evidence instead of omitting it. Fork sweeps require
|
|
317
|
+
the trusted denylist secret and cannot fall back to the untrusted checkout.
|
|
318
|
+
Repository release sweeps also inspect every bounded blob introduced by the
|
|
319
|
+
commit range, so content added and deleted before the final tree cannot
|
|
320
|
+
become public history unseen.
|
|
321
|
+
- Add public agent instructions and mirrored skills for extracting reusable
|
|
322
|
+
mechanisms from private implementations without carrying tenant material
|
|
323
|
+
into Atelier, plus a managed local-service contract for durable loopback
|
|
324
|
+
authoring and review tools.
|
|
325
|
+
- Document the client-zero adapter rule that exact package identity, installed
|
|
326
|
+
dependency resolution, CLI version, and `atelier.lock.json` must agree. This
|
|
327
|
+
prevents a stale sibling checkout from satisfying a current adapter proof.
|
|
328
|
+
- Declare the audited `fast-uri` pin as a direct runtime dependency so packed
|
|
329
|
+
offline consumer installs resolve the same dependency closure as the source
|
|
330
|
+
checkout.
|
|
331
|
+
|
|
332
|
+
## 0.2.0-alpha.4
|
|
333
|
+
|
|
334
|
+
Presentation release. No contract changes and no runtime behaviour changes:
|
|
335
|
+
documents valid against `0.2.0-alpha.0` remain valid.
|
|
336
|
+
|
|
337
|
+
- **The README now explains the system before the package.** It begins with
|
|
338
|
+
the repository as a durable substrate, then shows how ontology, enforcement,
|
|
339
|
+
governed projections, and a local runtime make the same work usable by
|
|
340
|
+
people, teams, agents, and tools.
|
|
341
|
+
- **The story progresses with the reader.** Stewards and collaborators get the
|
|
342
|
+
purpose and working loop first; builders get the graph and library surfaces;
|
|
343
|
+
technical readers retain the exact, test-gated claims, limitations, and
|
|
344
|
+
conformance boundaries.
|
|
345
|
+
- **Methodology authoring is presented as the proving ground, not the
|
|
346
|
+
category.** The package can support any file-based body of work whose
|
|
347
|
+
structure, relationships, disclosure, and readiness must remain portable and
|
|
348
|
+
enforceable.
|
|
349
|
+
- **Package and installation metadata match the new public presentation.** The
|
|
350
|
+
prerelease remains explicitly pinned, and the coordinated MNSTRY developer
|
|
351
|
+
documentation carries the same conceptual spine.
|
|
352
|
+
- **Bundled client instructions match the released CLI.** The Codex and Claude
|
|
353
|
+
open-Atelier skills use `atelier dev` and point registry users to the scoped,
|
|
354
|
+
collision-free install path.
|
|
355
|
+
|
|
356
|
+
## 0.2.0-alpha.3
|
|
357
|
+
|
|
358
|
+
Documentation and metadata release. No contract changes and no runtime
|
|
359
|
+
behaviour changes: documents valid against `0.2.0-alpha.0` remain valid.
|
|
360
|
+
|
|
361
|
+
- **The package's promises are now under a gate.** The checkable claims,
|
|
362
|
+
the will-not-do list, the conformance/admission separation, and the
|
|
363
|
+
audience/visibility rule live canonically in `docs/blocks/`, the README
|
|
364
|
+
embeds them verbatim between markers, and a test fails when they drift.
|
|
365
|
+
Promises converge by machinery; framing diverges by audience.
|
|
366
|
+
- **The README is restructured as a depth ramp** — category and trust
|
|
367
|
+
posture first, the working loop with its visible result second, the
|
|
368
|
+
checkable claims third, boundaries fourth, architecture fifth, reference
|
|
369
|
+
last — and a new "Where the Atelier stops" section states the boundary
|
|
370
|
+
with MNSTRY's managed platform as a literal table.
|
|
371
|
+
- **Overbroad claims are corrected.** "Trustworthy enough for whatever you
|
|
372
|
+
govern with it" is gone from the README and `docs/design.md` — controls
|
|
373
|
+
shaped for one demanding case do not establish adequacy everywhere; the
|
|
374
|
+
agent-runtime passage now states the narrow, testable control rather
|
|
375
|
+
than a general safety claim; "does not contact external services" now
|
|
376
|
+
carries its documented `gh` exception inline; contract and test counts
|
|
377
|
+
are stated by command, not by number; the contributions text now matches
|
|
378
|
+
`CONTRIBUTING.md`'s outside-PRs-not-open-yet posture; and
|
|
379
|
+
`docs/continuity.md` speaks of npm publication in the present tense.
|
|
380
|
+
- **`npx` examples use the collision-free `mnstry-atelier` form.** The
|
|
381
|
+
unscoped npm name `atelier` belongs to an unrelated third-party package,
|
|
382
|
+
so a bare `npx atelier` outside an installed workspace runs someone
|
|
383
|
+
else's code. Every `npx` example on every surface now uses the branded
|
|
384
|
+
binary, `atelier` remains the documented command inside installed
|
|
385
|
+
workspaces, and `docs/install.md` no longer calls `mnstry-atelier` a
|
|
386
|
+
legacy alias — it is the safe form.
|
|
387
|
+
- **npm metadata describes the package from the outside.** A concrete
|
|
388
|
+
description, registry keywords, and a homepage that resolves to the
|
|
389
|
+
published documentation page.
|
|
390
|
+
|
|
391
|
+
## 0.2.0-alpha.2
|
|
392
|
+
|
|
393
|
+
Documentation and release-lane release. No contract changes and no runtime
|
|
394
|
+
behaviour changes: documents valid against `0.2.0-alpha.0` remain valid.
|
|
395
|
+
|
|
396
|
+
- **The README is rebuilt around the system rather than its first
|
|
397
|
+
application.** New `docs/design.md` states the design in five movements —
|
|
398
|
+
a repository with an ontology, rules that refuse, collaboration as governed
|
|
399
|
+
disclosure, a local runtime for humans and for agents, and a platform for
|
|
400
|
+
your own tool — each ending with the command that proves it. Methodology
|
|
401
|
+
authoring is stated as the first application, not the ceiling.
|
|
402
|
+
- **Publishing is automated on tag push** via npm trusted publishing (OIDC),
|
|
403
|
+
so releases carry a provenance attestation and no registry token is stored
|
|
404
|
+
anywhere. Two fail-closed guards: the tagged commit must be an ancestor of
|
|
405
|
+
`main`, and the tag must equal `package.json`'s version.
|
|
406
|
+
- **The disclosure scanner no longer flags the OIDC permission key.**
|
|
407
|
+
`id-token` is a GitHub Actions permission, not a credential; the exemption
|
|
408
|
+
is the literal `id-` prefix only, and every other compound still matches.
|
|
409
|
+
- **`0.2.0` was published in error and unpublished the same day.** A
|
|
410
|
+
`npm version patch` against an alpha resolves the prerelease to `0.2.0`
|
|
411
|
+
rather than advancing it, and `git push --follow-tags` delivered the tag
|
|
412
|
+
even though branch protection rejected the commit, so a release published
|
|
413
|
+
from a commit that never landed on `main`. That number is permanently
|
|
414
|
+
retired on npm. The ancestry guard above exists so this cannot recur.
|
|
415
|
+
|
|
3
416
|
## 0.2.0-alpha.1
|
|
4
417
|
|
|
5
418
|
First release published to the npm registry, under `@mnstry/atelier` with
|