@mnstry/atelier 0.2.0-alpha.12 → 0.2.0-alpha.13
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 +661 -0
- package/README.md +142 -6
- package/contracts/atelier-adoption-policy.v2.schema.json +55 -0
- package/contracts/atelier-architecture.v1.schema.json +258 -0
- package/contracts/atelier-boundary-delegations.v1.schema.json +161 -0
- package/contracts/atelier-boundary-owner-keys.v1.schema.json +98 -0
- package/contracts/atelier-build.v1.schema.json +1076 -0
- package/contracts/atelier-capability.v1.schema.json +1252 -0
- package/contracts/atelier-coordination.v1.schema.json +1050 -0
- package/contracts/atelier-evidence-navigation.v1.schema.json +603 -0
- package/contracts/atelier-harness.v1.schema.json +234 -0
- package/contracts/atelier-ingestion.v1.schema.json +806 -0
- package/contracts/atelier-inquiry.v1.schema.json +1772 -0
- package/contracts/atelier-instruction-adoption.v1.schema.json +490 -0
- package/contracts/atelier-interaction.v1.schema.json +553 -0
- package/contracts/atelier-judgment.v1.schema.json +690 -0
- package/contracts/atelier-knowledge.v1.schema.json +1512 -0
- package/contracts/atelier-learning.v1.schema.json +1095 -0
- package/contracts/atelier-migration.v3.schema.json +64 -0
- package/contracts/atelier-personal-workspace-manifest.v1.schema.json +87 -0
- package/contracts/atelier-personal-workspace-overlay.v1.schema.json +299 -0
- package/contracts/atelier-template-adoption.v1.schema.json +223 -0
- package/contracts/atelier-template-profile.v1.schema.json +1168 -0
- package/contracts/atelier-trackable.v1.schema.json +781 -0
- package/contracts/atelier-upgrade-plan.v3.schema.json +532 -0
- package/docs/architecture.md +89 -0
- package/docs/assurance-controls.md +2 -2
- package/docs/blocks/capability-stewardship.md +17 -0
- package/docs/blocks/claims.md +16 -3
- package/docs/blocks/inquiry-harnesses.md +19 -0
- package/docs/blocks/learning-harnesses.md +17 -0
- package/docs/capability-stewardship.md +269 -0
- package/docs/coordination.md +51 -0
- package/docs/decision-practices.md +111 -0
- package/docs/decisions.md +29 -0
- package/docs/evidence-navigation.md +237 -0
- package/docs/exact-upgrades.md +3 -2
- package/docs/ingestion.md +181 -0
- package/docs/inquiry-harnesses.md +211 -0
- package/docs/install.md +80 -3
- package/docs/intake-and-guides.md +5 -0
- package/docs/integration-contract-decisions.md +24 -2
- package/docs/interaction-and-reflection.md +72 -0
- package/docs/knowledge-graph.md +20 -0
- package/docs/knowledge-health/api.md +30 -0
- package/docs/knowledge-health/assessment/api.md +96 -0
- package/docs/knowledge-health/assessment/capabilities.md +40 -0
- package/docs/knowledge-health/assessment/evaluation.md +27 -0
- package/docs/knowledge-health/assessment/facilitator.md +30 -0
- package/docs/knowledge-health/assessment/quickstart.md +61 -0
- package/docs/knowledge-health/assessment/troubleshooting.md +23 -0
- package/docs/knowledge-health/devday/facilitator.md +16 -0
- package/docs/knowledge-health/devday/participant-response.md +22 -0
- package/docs/knowledge-health/devday/public-default.md +107 -0
- package/docs/knowledge-health/devday/quickstart.md +18 -0
- package/docs/knowledge-health/devday/support.md +22 -0
- package/docs/knowledge-health/exercise.md +17 -0
- package/docs/knowledge-health/facilitator.md +20 -0
- package/docs/knowledge-health/quickstart.md +94 -0
- package/docs/knowledge-health/readme.md +15 -0
- package/docs/knowledge-health/support.md +34 -0
- package/docs/knowledge-setup.md +248 -0
- package/docs/knowledge-workspace.md +264 -0
- package/docs/learning-harnesses.md +238 -0
- package/docs/learning.md +215 -0
- package/docs/local-services.md +181 -16
- package/docs/obsidian-contract.md +223 -15
- package/docs/obsidian-plugin.md +38 -4
- package/docs/obsidian.md +613 -51
- package/docs/optional-ingestion.md +83 -0
- package/docs/personal-workspace.md +257 -0
- package/docs/practical-judgment.md +92 -0
- package/docs/progressive-ingestion-acceptance.md +89 -0
- package/docs/progressive-ingestion.md +235 -0
- package/docs/project-command-inventory.md +1 -0
- package/docs/release-engineering.md +49 -0
- package/docs/repo-boundary-guard.md +94 -0
- package/docs/research-starter-quickstart.md +66 -0
- package/docs/research-starter.md +114 -0
- package/docs/semantic-ingestion.md +198 -0
- package/docs/semantic-operation.md +317 -0
- package/docs/skill-steward.md +6 -0
- package/docs/template-profile.md +164 -0
- package/docs/template-upgrades.md +114 -0
- package/docs/trackables.md +111 -0
- package/docs/upgrade.md +47 -2
- package/fixtures/atelier-architecture/binding/invalid/document.json +19 -0
- package/fixtures/atelier-architecture/binding/valid/document.json +19 -0
- package/fixtures/atelier-architecture/catalog/invalid/document.json +290 -0
- package/fixtures/atelier-architecture/catalog/valid/document.json +343 -0
- package/fixtures/atelier-build-contract/attempt/invalid/document.json +20 -0
- package/fixtures/atelier-build-contract/attempt/valid/document.json +19 -0
- package/fixtures/atelier-build-contract/candidate/invalid/document.json +24 -0
- package/fixtures/atelier-build-contract/candidate/valid/document.json +23 -0
- package/fixtures/atelier-build-contract/decision/invalid/document.json +31 -0
- package/fixtures/atelier-build-contract/decision/valid/document.json +30 -0
- package/fixtures/atelier-build-contract/delivery/invalid/document.json +18 -0
- package/fixtures/atelier-build-contract/delivery/valid/document.json +17 -0
- package/fixtures/atelier-build-contract/gate/invalid/document.json +22 -0
- package/fixtures/atelier-build-contract/gate/valid/document.json +21 -0
- package/fixtures/atelier-build-contract/ledger/invalid/document.json +270 -0
- package/fixtures/atelier-build-contract/ledger/valid/document.json +269 -0
- package/fixtures/atelier-build-contract/objective/invalid/document.json +73 -0
- package/fixtures/atelier-build-contract/objective/valid/document.json +72 -0
- package/fixtures/atelier-build-contract/progress/invalid/document.json +18 -0
- package/fixtures/atelier-build-contract/progress/valid/document.json +17 -0
- package/fixtures/atelier-capability-contract/adoption/invalid/document.json +71 -0
- package/fixtures/atelier-capability-contract/adoption/valid/document.json +70 -0
- package/fixtures/atelier-capability-contract/event/invalid/document.json +18 -0
- package/fixtures/atelier-capability-contract/event/valid/document.json +17 -0
- package/fixtures/atelier-capability-contract/journal/invalid/document.json +382 -0
- package/fixtures/atelier-capability-contract/journal/valid/document.json +381 -0
- package/fixtures/atelier-capability-contract/notice/invalid/document.json +8 -0
- package/fixtures/atelier-capability-contract/notice/valid/document.json +7 -0
- package/fixtures/atelier-capability-contract/package/invalid/document.json +59 -0
- package/fixtures/atelier-capability-contract/package/valid/document.json +58 -0
- package/fixtures/atelier-capability-contract/plan/invalid/document.json +107 -0
- package/fixtures/atelier-capability-contract/plan/valid/document.json +106 -0
- package/fixtures/atelier-capability-contract/release/invalid/document.json +85 -0
- package/fixtures/atelier-capability-contract/release/valid/document.json +84 -0
- package/fixtures/atelier-capability-contract/state/invalid/document.json +316 -0
- package/fixtures/atelier-capability-contract/state/valid/document.json +315 -0
- package/fixtures/atelier-coordination/dependency/invalid/document.json +37 -0
- package/fixtures/atelier-coordination/dependency/valid/document.json +36 -0
- package/fixtures/atelier-coordination/directive/invalid/document.json +25 -0
- package/fixtures/atelier-coordination/directive/valid/document.json +24 -0
- package/fixtures/atelier-coordination/disposition/invalid/document.json +34 -0
- package/fixtures/atelier-coordination/disposition/valid/document.json +33 -0
- package/fixtures/atelier-coordination/outcome/invalid/document.json +39 -0
- package/fixtures/atelier-coordination/outcome/valid/document.json +38 -0
- package/fixtures/atelier-coordination/recovery/invalid/document.json +34 -0
- package/fixtures/atelier-coordination/recovery/valid/document.json +33 -0
- package/fixtures/atelier-harness-contract/handoff/invalid/document.json +25 -0
- package/fixtures/atelier-harness-contract/handoff/valid/document.json +24 -0
- package/fixtures/atelier-ingestion/invalid/authority.json +19 -0
- package/fixtures/atelier-ingestion/semantic-baseline.json +26 -0
- package/fixtures/atelier-ingestion/semantic-operation.json +75 -0
- package/fixtures/atelier-ingestion/valid/plan-input.json +18 -0
- package/fixtures/atelier-inquiry-contract/assessment/invalid/document.json +41 -0
- package/fixtures/atelier-inquiry-contract/assessment/valid/document.json +40 -0
- package/fixtures/atelier-inquiry-contract/bundle/invalid/document.json +51 -0
- package/fixtures/atelier-inquiry-contract/bundle/valid/document.json +50 -0
- package/fixtures/atelier-inquiry-contract/campaign/invalid/document.json +17 -0
- package/fixtures/atelier-inquiry-contract/campaign/valid/document.json +16 -0
- package/fixtures/atelier-inquiry-contract/decision/invalid/document.json +22 -0
- package/fixtures/atelier-inquiry-contract/decision/valid/document.json +21 -0
- package/fixtures/atelier-inquiry-contract/feedback/invalid/document.json +19 -0
- package/fixtures/atelier-inquiry-contract/feedback/valid/document.json +18 -0
- package/fixtures/atelier-inquiry-contract/handoff/invalid/document.json +92 -0
- package/fixtures/atelier-inquiry-contract/handoff/valid/document.json +91 -0
- package/fixtures/atelier-inquiry-contract/hypothesis/invalid/document.json +20 -0
- package/fixtures/atelier-inquiry-contract/hypothesis/valid/document.json +19 -0
- package/fixtures/atelier-inquiry-contract/ledger/invalid/document.json +680 -0
- package/fixtures/atelier-inquiry-contract/ledger/valid/document.json +679 -0
- package/fixtures/atelier-inquiry-contract/legacy-assessment/invalid/document.json +19 -0
- package/fixtures/atelier-inquiry-contract/legacy-assessment/valid/document.json +18 -0
- package/fixtures/atelier-inquiry-contract/request/invalid/document.json +50 -0
- package/fixtures/atelier-inquiry-contract/request/valid/document.json +49 -0
- package/fixtures/atelier-inquiry-contract/source/invalid/document.json +18 -0
- package/fixtures/atelier-inquiry-contract/source/valid/document.json +17 -0
- package/fixtures/atelier-inquiry-contract/withdrawal/invalid/document.json +16 -0
- package/fixtures/atelier-inquiry-contract/withdrawal/valid/document.json +15 -0
- package/fixtures/atelier-instruction-adoption/context-receipt/invalid/document.json +18 -0
- package/fixtures/atelier-instruction-adoption/context-receipt/valid/document.json +17 -0
- package/fixtures/atelier-instruction-adoption/plan/invalid/document.json +63 -0
- package/fixtures/atelier-instruction-adoption/plan/valid/document.json +62 -0
- package/fixtures/atelier-instruction-adoption/receipt/invalid/document.json +22 -0
- package/fixtures/atelier-instruction-adoption/receipt/valid/document.json +21 -0
- package/fixtures/atelier-instruction-adoption/state/invalid/document.json +30 -0
- package/fixtures/atelier-instruction-adoption/state/valid/document.json +29 -0
- package/fixtures/atelier-interaction/act/invalid/document.json +25 -0
- package/fixtures/atelier-interaction/act/valid/document.json +24 -0
- package/fixtures/atelier-interaction/assessment/invalid/document.json +32 -0
- package/fixtures/atelier-interaction/assessment/valid/document.json +31 -0
- package/fixtures/atelier-interaction/observation/invalid/document.json +22 -0
- package/fixtures/atelier-interaction/observation/valid/document.json +21 -0
- package/fixtures/atelier-interaction/policy/invalid/document.json +20 -0
- package/fixtures/atelier-interaction/policy/valid/document.json +19 -0
- package/fixtures/atelier-judgment/case/invalid/document.json +76 -0
- package/fixtures/atelier-judgment/case/valid/document.json +75 -0
- package/fixtures/atelier-judgment/decision/invalid/document.json +38 -0
- package/fixtures/atelier-judgment/decision/valid/document.json +37 -0
- package/fixtures/atelier-judgment/native-decision.md +3 -0
- package/fixtures/atelier-judgment/practice-reconsideration/definition.json +92 -0
- package/fixtures/atelier-judgment/practice-reconsideration/scenario.json +435 -0
- package/fixtures/atelier-knowledge-contract/activation/invalid/document.json +26 -0
- package/fixtures/atelier-knowledge-contract/activation/valid/document.json +25 -0
- package/fixtures/atelier-knowledge-contract/contribution/invalid/document.json +34 -0
- package/fixtures/atelier-knowledge-contract/contribution/valid/document.json +33 -0
- package/fixtures/atelier-knowledge-contract/domain/invalid/document.json +41 -0
- package/fixtures/atelier-knowledge-contract/domain/valid/document.json +40 -0
- package/fixtures/atelier-knowledge-contract/domain-revision/invalid/document.json +46 -0
- package/fixtures/atelier-knowledge-contract/domain-revision/valid/document.json +45 -0
- package/fixtures/atelier-knowledge-contract/evaluation/invalid/document.json +21 -0
- package/fixtures/atelier-knowledge-contract/evaluation/valid/document.json +20 -0
- package/fixtures/atelier-knowledge-contract/ledger/invalid/document.json +318 -0
- package/fixtures/atelier-knowledge-contract/ledger/valid/document.json +317 -0
- package/fixtures/atelier-knowledge-contract/relation/invalid/document.json +25 -0
- package/fixtures/atelier-knowledge-contract/relation/valid/document.json +24 -0
- package/fixtures/atelier-knowledge-contract/review/invalid/document.json +18 -0
- package/fixtures/atelier-knowledge-contract/review/valid/document.json +17 -0
- package/fixtures/atelier-knowledge-contract/withdrawal/invalid/document.json +16 -0
- package/fixtures/atelier-knowledge-contract/withdrawal/valid/document.json +15 -0
- package/fixtures/atelier-learning/invalid/authority.json +14 -0
- package/fixtures/atelier-learning/valid/capture.json +13 -0
- package/fixtures/atelier-personal-workspace-contract/manifest/invalid/authority-key.json +17 -0
- package/fixtures/atelier-personal-workspace-contract/manifest/invalid/nonempty-ext.json +25 -0
- package/fixtures/atelier-personal-workspace-contract/manifest/invalid/wrong-schema.json +22 -0
- package/fixtures/atelier-personal-workspace-contract/manifest/valid/manifest.json +22 -0
- package/fixtures/atelier-personal-workspace-contract/overlay/invalid/authority-key.json +25 -0
- package/fixtures/atelier-personal-workspace-contract/overlay/invalid/unknown-top-level-field.json +27 -0
- package/fixtures/atelier-personal-workspace-contract/overlay/invalid/wrong-schema.json +24 -0
- package/fixtures/atelier-trackable/definition/invalid/document.json +15 -0
- package/fixtures/atelier-trackable/definition/valid/document.json +14 -0
- package/fixtures/atelier-trackable/request/invalid/document.json +23 -0
- package/fixtures/atelier-trackable/request/valid/document.json +22 -0
- package/fixtures/boundary-delegations/invalid/authority-key.v1.json +30 -0
- package/fixtures/boundary-delegations/invalid/push-operation.v1.json +28 -0
- package/fixtures/boundary-delegations/invalid/unsigned.v1.json +25 -0
- package/fixtures/boundary-delegations/valid/empty.v1.json +4 -0
- package/fixtures/boundary-delegations/valid/signed-operator.v1.json +30 -0
- package/fixtures/boundary-owner-keys/invalid/wrong-algorithm.v1.json +15 -0
- package/fixtures/boundary-owner-keys/invalid/wrong-curve.v1.json +15 -0
- package/fixtures/boundary-owner-keys/valid/one-owner.v1.json +17 -0
- package/fixtures/capability-packages/adoption.example.json +70 -0
- package/fixtures/capability-packages/evidence-review/capability-package.json +58 -0
- package/fixtures/capability-packages/evidence-review/capability-release.json +84 -0
- package/fixtures/capability-packages/evidence-review/evaluation.md +15 -0
- package/fixtures/capability-packages/evidence-review/skills/evidence-review/SKILL.md +22 -0
- package/fixtures/capability-packages/evidence-review/skills/evidence-review/references/ledger.md +7 -0
- package/fixtures/capability-packages/research/capability-package.json +88 -0
- package/fixtures/capability-packages/research/capability-release.json +134 -0
- package/fixtures/capability-packages/research/evaluation.md +15 -0
- package/fixtures/capability-packages/research/skills/research-integrate/SKILL.md +29 -0
- package/fixtures/capability-packages/research/skills/research-integrate/references/integration.md +10 -0
- package/fixtures/capability-packages/research/skills/research-plan/SKILL.md +27 -0
- package/fixtures/capability-packages/research/skills/research-plan/references/inquiries.md +26 -0
- package/fixtures/capability-packages/research/skills/research-synthesize/SKILL.md +23 -0
- package/fixtures/capability-packages/research/skills/research-synthesize/references/synthesis.md +12 -0
- package/fixtures/evidence-navigation/invalid/duplicate-operation.json +16 -0
- package/fixtures/evidence-navigation/invalid/instruction-kind.json +36 -0
- package/fixtures/evidence-navigation/invalid/invalid-digest.json +36 -0
- package/fixtures/evidence-navigation/invalid/invalid-time.json +36 -0
- package/fixtures/evidence-navigation/invalid/missing-attribution.json +35 -0
- package/fixtures/evidence-navigation/invalid/reserved-extension.json +19 -0
- package/fixtures/evidence-navigation/invalid/unattributed-acceptance.json +36 -0
- package/fixtures/evidence-navigation/invalid/uncoerced-version.json +16 -0
- package/fixtures/evidence-navigation/invalid/unknown-currency.json +17 -0
- package/fixtures/evidence-navigation/invalid/unknown-selector-field.json +37 -0
- package/fixtures/evidence-navigation/invalid/unsupported-operation.json +15 -0
- package/fixtures/evidence-navigation/valid/claim.json +36 -0
- package/fixtures/evidence-navigation/valid/host.json +16 -0
- package/fixtures/evidence-navigation/valid/profile.json +16 -0
- package/fixtures/evidence-navigation/valid/snapshot.json +17 -0
- package/fixtures/harness-packages/build-harness/capability-package.json +61 -0
- package/fixtures/harness-packages/build-harness/capability-release.json +82 -0
- package/fixtures/harness-packages/build-harness/evaluation.md +3 -0
- package/fixtures/harness-packages/build-harness/skills/atelier-build-harness/SKILL.md +59 -0
- package/fixtures/harness-packages/knowledge-harness/capability-package.json +61 -0
- package/fixtures/harness-packages/knowledge-harness/capability-release.json +82 -0
- package/fixtures/harness-packages/knowledge-harness/evaluation.md +3 -0
- package/fixtures/harness-packages/knowledge-harness/skills/atelier-knowledge-harness/SKILL.md +60 -0
- package/fixtures/harnesses/learning-cycle.json +780 -0
- package/fixtures/inquiry/workshop.json +675 -0
- package/fixtures/inquiry-packages/discovery-harness/capability-package.json +61 -0
- package/fixtures/inquiry-packages/discovery-harness/capability-release.json +82 -0
- package/fixtures/inquiry-packages/discovery-harness/evaluation.md +3 -0
- package/fixtures/inquiry-packages/discovery-harness/skills/atelier-discovery-harness/SKILL.md +48 -0
- package/fixtures/inquiry-packages/research-harness/capability-package.json +61 -0
- package/fixtures/inquiry-packages/research-harness/capability-release.json +82 -0
- package/fixtures/inquiry-packages/research-harness/evaluation.md +3 -0
- package/fixtures/inquiry-packages/research-harness/skills/atelier-research-harness/SKILL.md +43 -0
- package/fixtures/knowledge-health/calibration-suite.json +26 -0
- package/fixtures/knowledge-health/calibration-trial.json +37 -0
- package/fixtures/knowledge-health/corrected/checklist.md +18 -0
- package/fixtures/knowledge-health/devday/participant-record.json +19 -0
- package/fixtures/knowledge-health/expected-summary.json +27 -0
- package/fixtures/knowledge-health/workshop/README.md +20 -0
- package/fixtures/knowledge-health/workshop/atelier.project.json +7 -0
- package/fixtures/knowledge-health/workshop/knowledge-plan.json +65 -0
- package/fixtures/knowledge-health/workshop/records/checklist.md +18 -0
- package/fixtures/knowledge-health/workshop/records/workshop.md +18 -0
- package/fixtures/knowledge-health/workshop/repo-access.v1.json +5 -0
- package/fixtures/knowledge-health/workspace/atelier.project.json +18 -0
- package/fixtures/knowledge-health/workspace/knowledge-plan.json +74 -0
- package/fixtures/knowledge-health/workspace/records/checklist.md +18 -0
- package/fixtures/knowledge-health/workspace/records/pilot.md +16 -0
- package/fixtures/knowledge-health/workspace/repo-access.v1.json +9 -0
- package/fixtures/personal-workspace/overlay.json +24 -0
- package/fixtures/templates/local-library.v1.json +75 -0
- package/fixtures/templates/upgrade-contracts/adoption-policy.v2/invalid.json +16 -0
- package/fixtures/templates/upgrade-contracts/adoption-policy.v2/valid.json +13 -0
- package/fixtures/templates/upgrade-contracts/migration.v3/invalid.json +24 -0
- package/fixtures/templates/upgrade-contracts/migration.v3/valid.json +21 -0
- package/fixtures/templates/upgrade-contracts/template-adoption.v1/invalid.json +60 -0
- package/fixtures/templates/upgrade-contracts/template-adoption.v1/valid.json +57 -0
- package/fixtures/templates/upgrade-contracts/upgrade-plan.v3/invalid.json +85 -0
- package/fixtures/templates/upgrade-contracts/upgrade-plan.v3/valid.json +82 -0
- package/package.json +59 -5
- package/skills/claude/atelier-build-harness/SKILL.md +59 -0
- package/skills/claude/atelier-coordination/SKILL.md +32 -0
- package/skills/claude/atelier-discovery-harness/SKILL.md +48 -0
- package/skills/claude/atelier-guided-upgrade/SKILL.md +29 -0
- package/skills/claude/atelier-interaction/SKILL.md +34 -0
- package/skills/claude/atelier-knowledge-harness/SKILL.md +60 -0
- package/skills/claude/atelier-knowledge-setup/SKILL.md +72 -0
- package/skills/claude/atelier-practical-judgment/SKILL.md +64 -0
- package/skills/claude/atelier-research-harness/SKILL.md +43 -0
- package/skills/claude/atelier-skill-steward/SKILL.md +53 -0
- package/skills/claude/atelier-trackables/SKILL.md +40 -0
- package/skills/codex/atelier-build-harness/SKILL.md +59 -0
- package/skills/codex/atelier-coordination/SKILL.md +32 -0
- package/skills/codex/atelier-discovery-harness/SKILL.md +48 -0
- package/skills/codex/atelier-guided-upgrade/SKILL.md +29 -0
- package/skills/codex/atelier-interaction/SKILL.md +34 -0
- package/skills/codex/atelier-knowledge-harness/SKILL.md +60 -0
- package/skills/codex/atelier-knowledge-setup/SKILL.md +72 -0
- package/skills/codex/atelier-practical-judgment/SKILL.md +64 -0
- package/skills/codex/atelier-research-harness/SKILL.md +43 -0
- package/skills/codex/atelier-skill-steward/SKILL.md +53 -0
- package/skills/codex/atelier-trackables/SKILL.md +40 -0
- package/src/architecture/catalog.mjs +355 -0
- package/src/architecture/index.mjs +93 -0
- package/src/boundary/content-rules.mjs +4 -2
- package/src/boundary/delegation-command.mjs +158 -0
- package/src/boundary/delegation.mjs +396 -0
- package/src/boundary/policy.mjs +52 -10
- package/src/build/git.mjs +18 -0
- package/src/build/index.mjs +3 -0
- package/src/build/ledger.mjs +88 -0
- package/src/capabilities/adoption.mjs +381 -0
- package/src/capabilities/evidence.mjs +140 -0
- package/src/capabilities/files.mjs +124 -0
- package/src/capabilities/index.mjs +4 -0
- package/src/capabilities/instructions.mjs +250 -0
- package/src/capabilities/package.mjs +136 -0
- package/src/cli/command-failure.mjs +36 -0
- package/src/cli/execute-command.mjs +16 -2
- package/src/cli/run.mjs +65 -9
- package/src/coauthor/store.mjs +43 -2
- package/src/collaboration/proposals.mjs +189 -0
- package/src/commands/architecture.mjs +27 -0
- package/src/commands/boundary.mjs +3 -0
- package/src/commands/capability.mjs +73 -0
- package/src/commands/enroll.mjs +3 -0
- package/src/commands/harness.mjs +79 -0
- package/src/commands/ingest.mjs +39 -0
- package/src/commands/init.mjs +4 -1
- package/src/commands/inquiry.mjs +66 -0
- package/src/commands/knowledge-semantic.mjs +128 -0
- package/src/commands/knowledge.mjs +119 -0
- package/src/commands/learn.mjs +61 -0
- package/src/commands/obsidian.mjs +754 -63
- package/src/commands/practice.mjs +24 -0
- package/src/commands/setup.mjs +22 -2
- package/src/commands/trackable.mjs +19 -0
- package/src/contracts/corpus.mjs +30 -0
- package/src/coordination/index.mjs +110 -0
- package/src/evidence-navigation/contracts.mjs +60 -0
- package/src/evidence-navigation/evaluate.mjs +69 -0
- package/src/evidence-navigation/generation.mjs +22 -0
- package/src/evidence-navigation/index.mjs +2 -0
- package/src/evidence-navigation/local.mjs +167 -0
- package/src/evidence-navigation/schema.generated.mjs +604 -0
- package/src/evidence-navigation/types.mjs +12 -0
- package/src/export/atelier-export-contract.mjs +35 -8
- package/src/graph/enroll.mjs +248 -0
- package/src/graph/graph.mjs +17 -1
- package/src/graph/knowledge-graph.mjs +58 -8
- package/src/harnesses/contracts.mjs +41 -0
- package/src/harnesses/exchange.mjs +154 -0
- package/src/harnesses/feedback.mjs +16 -0
- package/src/harnesses/history.mjs +37 -0
- package/src/harnesses/index.mjs +4 -0
- package/src/harnesses/store.mjs +29 -0
- package/src/ingestion/contracts.mjs +41 -0
- package/src/ingestion/evaluation.mjs +119 -0
- package/src/ingestion/optional/composition/index.mjs +171 -0
- package/src/ingestion/optional/evaluation/index.mjs +219 -0
- package/src/ingestion/optional/graphify/composition-binding.mjs +60 -0
- package/src/ingestion/optional/graphify/composition_receiving.py +185 -0
- package/src/ingestion/optional/graphify/graphify_supplier.py +933 -0
- package/src/ingestion/optional/graphify/json_bridge.py +163 -0
- package/src/ingestion/optional/graphify/query_receiving.py +209 -0
- package/src/ingestion/optional/index.mjs +9 -0
- package/src/ingestion/optional/jev/bridge.mjs +166 -0
- package/src/ingestion/optional/jev/composition-binding.mjs +116 -0
- package/src/ingestion/optional/jev/judgments.mjs +174 -0
- package/src/ingestion/optional/jev/native-translation.mjs +32 -0
- package/src/ingestion/optional/lightrag/atelier_lightrag_supplier/__init__.py +7 -0
- package/src/ingestion/optional/lightrag/atelier_lightrag_supplier/adapter.py +966 -0
- package/src/ingestion/optional/lightrag/atelier_lightrag_supplier/artifacts.py +101 -0
- package/src/ingestion/optional/lightrag/atelier_lightrag_supplier/projection.py +146 -0
- package/src/ingestion/optional/lightrag/composition-binding.mjs +67 -0
- package/src/ingestion/optional/vanilla/composition-binding.mjs +102 -0
- package/src/ingestion/optional/vanilla/index.mjs +218 -0
- package/src/ingestion/optional/vanilla/native-normalization.mjs +187 -0
- package/src/ingestion/processors.mjs +218 -0
- package/src/ingestion/semantic.mjs +203 -0
- package/src/ingestion/store.mjs +372 -0
- package/src/inquiry/beliefs.mjs +32 -0
- package/src/inquiry/contracts.mjs +23 -0
- package/src/inquiry/index.mjs +5 -0
- package/src/inquiry/ledger.mjs +135 -0
- package/src/inquiry/lenses.mjs +15 -0
- package/src/inquiry/projection.mjs +77 -0
- package/src/inquiry/store.mjs +35 -0
- package/src/intake/read-scope.mjs +12 -0
- package/src/intake/store.mjs +69 -6
- package/src/interaction/index.mjs +91 -0
- package/src/judgment/index.mjs +82 -0
- package/src/judgment/practice-evaluation.mjs +70 -0
- package/src/judgment/practice.mjs +144 -0
- package/src/knowledge/context.mjs +217 -0
- package/src/knowledge/index.mjs +5 -0
- package/src/knowledge/ingestion.mjs +79 -0
- package/src/knowledge/intake.mjs +33 -0
- package/src/knowledge/ledger.mjs +110 -0
- package/src/knowledge/participatory/guidance.mjs +36 -0
- package/src/knowledge/participatory/guided-contribution.mjs +44 -0
- package/src/knowledge/participatory/index.mjs +2 -0
- package/src/knowledge/participatory/installed-workshop.mjs +108 -0
- package/src/knowledge/plan.mjs +67 -0
- package/src/knowledge/projection.mjs +43 -0
- package/src/knowledge/semantic-operation.mjs +567 -0
- package/src/knowledge/sessions.mjs +467 -0
- package/src/knowledge/workspace.mjs +295 -0
- package/src/knowledge-health/assessment.mjs +165 -0
- package/src/knowledge-health/capabilities.mjs +350 -0
- package/src/knowledge-health/context.mjs +62 -0
- package/src/knowledge-health/example.mjs +47 -0
- package/src/knowledge-health/index.mjs +10 -0
- package/src/knowledge-health/owner-join.mjs +88 -0
- package/src/knowledge-health/proof/common.mjs +24 -0
- package/src/knowledge-health/proof/installed-check.mjs +100 -0
- package/src/knowledge-health/proof/native-readback.mjs +37 -0
- package/src/knowledge-health/proof/rehearse.mjs +68 -0
- package/src/knowledge-health/proof/validate-participant.mjs +17 -0
- package/src/knowledge-health/proof/verify-native-capture.mjs +14 -0
- package/src/knowledge-health/proof/workshop-check.mjs +36 -0
- package/src/knowledge-health/rule-identity.mjs +44 -0
- package/src/knowledge-health/workshop-composition.mjs +19 -0
- package/src/knowledge-health/workshop-profile.mjs +176 -0
- package/src/knowledge-health/workshop.mjs +99 -0
- package/src/learning/adapters.mjs +68 -0
- package/src/learning/assistance.mjs +127 -0
- package/src/learning/contracts.mjs +65 -0
- package/src/learning/store.mjs +272 -0
- package/src/personal-workspace/index.mjs +391 -0
- package/src/personal-workspace/selection.mjs +385 -0
- package/src/project/config.mjs +8 -0
- package/src/project/durable-state.mjs +3 -1
- package/src/project/file-class.mjs +1 -1
- package/src/projection/obsidian/edits/apply.mjs +55 -16
- package/src/projection/obsidian/personal-workspace.mjs +436 -0
- package/src/projection/obsidian/proposals/adapter.mjs +47 -8
- package/src/projection/obsidian/proposals/observation.mjs +10 -2
- package/src/projection/obsidian/publication/publisher.mjs +142 -13
- package/src/projection/obsidian/publication/vault-list.mjs +4 -3
- package/src/projection/obsidian/recovery/index.mjs +4 -1
- package/src/projection/obsidian/recovery/store.mjs +160 -7
- package/src/projection/obsidian/selection-ui/contribution.mjs +6 -5
- package/src/readiness/readiness.mjs +10 -3
- package/src/reflection/index.mjs +56 -0
- package/src/runtime/obsidian/app-production-seams.mjs +48 -16
- package/src/runtime/obsidian/app-registration.mjs +175 -28
- package/src/runtime/obsidian/app-restart.mjs +154 -0
- package/src/runtime/obsidian/engine.mjs +163 -20
- package/src/runtime/obsidian/extension-points.mjs +1 -1
- package/src/runtime/obsidian/index.mjs +10 -7
- package/src/runtime/obsidian/launch-plan.mjs +7 -4
- package/src/runtime/obsidian/lifecycle.mjs +92 -12
- package/src/runtime/obsidian/login-item.mjs +332 -0
- package/src/runtime/obsidian/machine-settings.mjs +119 -12
- package/src/runtime/obsidian/opening.mjs +171 -37
- package/src/runtime/obsidian/pipeline.mjs +71 -3
- package/src/runtime/obsidian/plugin-channel.mjs +11 -3
- package/src/runtime/obsidian/plugin-choice.mjs +16 -4
- package/src/runtime/obsidian/plugin-drift.mjs +59 -11
- package/src/runtime/obsidian/plugin-presence.mjs +14 -1
- package/src/runtime/obsidian/process-identity.mjs +20 -10
- package/src/runtime/obsidian/project-views.mjs +282 -0
- package/src/runtime/obsidian/questions.mjs +48 -0
- package/src/runtime/obsidian/release-watch.mjs +56 -0
- package/src/runtime/obsidian/service-main.mjs +99 -16
- package/src/runtime/obsidian/service-manager-production.mjs +61 -0
- package/src/runtime/obsidian/service-managers.mjs +275 -0
- package/src/runtime/obsidian/service-record.mjs +87 -23
- package/src/runtime/obsidian/service.mjs +36 -3
- package/src/runtime/obsidian/startup-adapters.mjs +59 -21
- package/src/runtime/obsidian/unheld-evidence.mjs +84 -0
- package/src/runtime/obsidian/vault-location.mjs +300 -0
- package/src/runtime/obsidian/view-counts.mjs +34 -0
- package/src/server/local-sidecar.mjs +169 -2
- package/src/server/server.mjs +28 -2
- package/src/template-bindings/project.mjs +92 -0
- package/src/templates/profile.mjs +225 -0
- package/src/trackables/domain.mjs +175 -0
- package/src/trackables/store.mjs +114 -0
- package/src/ui/knowledge-page.mjs +1388 -0
- package/src/upgrade/explanation.mjs +1 -1
- package/src/upgrade/template-participant.mjs +171 -0
- package/src/upgrade/transaction.mjs +72 -25
- package/src/upgrade/upgrade.mjs +1 -0
- package/templates/external-project-workspace/pack-lifecycle.json +6 -1
- package/templates/knowledge-workspace/.gitattributes +2 -0
- package/templates/knowledge-workspace/AGENTS.md +27 -0
- package/templates/knowledge-workspace/README.md +44 -0
- package/templates/knowledge-workspace/atelier.project.json +22 -0
- package/templates/knowledge-workspace/gitignore +6 -0
- package/templates/knowledge-workspace/knowledge-plan.json +111 -0
- package/templates/knowledge-workspace/knowledge-plan.schema.json +281 -0
- package/templates/knowledge-workspace/records/forecast.md +22 -0
- package/templates/knowledge-workspace/records/inspection.md +25 -0
- package/templates/knowledge-workspace/records/telescope.md +24 -0
- package/templates/knowledge-workspace/repo-access.v1.json +9 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Optional ingestion suppliers
|
|
2
|
+
|
|
3
|
+
Atelier's semantic runner remains the source of truth for ingestion attempts,
|
|
4
|
+
captured output and proposed knowledge. The optional supplier APIs compose an
|
|
5
|
+
ordinary host-selected extractor with Jev judgments, Graphify operations and
|
|
6
|
+
LightRAG extraction or retrieval. No tool, account or Python SDK is required to
|
|
7
|
+
import the JavaScript APIs. Importing them performs no extraction or network call.
|
|
8
|
+
|
|
9
|
+
```js
|
|
10
|
+
import {
|
|
11
|
+
createComposition,
|
|
12
|
+
createVanillaCompositionBinding,
|
|
13
|
+
createCompositionJudgmentBinding,
|
|
14
|
+
createGraphifyCompositionBinding,
|
|
15
|
+
createLightRAGCompositionBinding,
|
|
16
|
+
PRESENCE_PROFILES,
|
|
17
|
+
} from '@mnstry/atelier/ingestion/optional'
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Each binding accepts the consuming host's existing ports. The vanilla binding
|
|
21
|
+
receives the semantic runner, the same-workspace intake capture callback and the
|
|
22
|
+
host's selected extractor. Jev receives the existing decision contracts and
|
|
23
|
+
prepared-request transport. Graphify and LightRAG receive an explicitly supplied
|
|
24
|
+
native dispatcher. A dispatcher must preserve the original operation receipt,
|
|
25
|
+
source bindings, artifacts, generation and retry-inclusive usage; an artifact
|
|
26
|
+
digest alone is not an authenticated operation receipt.
|
|
27
|
+
|
|
28
|
+
`createComposition` receives `bindings`, `operationRoles`, `invoke`,
|
|
29
|
+
`readKnowledgeView` and `eligible`. These are the existing capability, knowledge
|
|
30
|
+
and evidence owners' ports. The returned `execute` method accepts an explicit
|
|
31
|
+
route, input and question. Every supported presence profile retains vanilla;
|
|
32
|
+
select one extractor and one answerer for a route. Jev adds judgments rather
|
|
33
|
+
than a second extraction pass. LightRAG's coupled native answer is a distinct
|
|
34
|
+
route from retrieval followed by the ordinary answerer. Mere tool presence
|
|
35
|
+
never invokes it or selects a fallback.
|
|
36
|
+
|
|
37
|
+
The eight profiles are exposed by `PRESENCE_PROFILES`: vanilla alone, each single
|
|
38
|
+
optional tool, each pair and all three tools. Missing selected operations refuse
|
|
39
|
+
before execution. Accepted, current, located evidence can serve an answer;
|
|
40
|
+
native labels and scores do not create canonical identities or accepted claims.
|
|
41
|
+
Qualifiers, direction, time, negation and unresolved mappings survive ingestion.
|
|
42
|
+
Partial failures retain their original outputs and unknown costs. Retrying,
|
|
43
|
+
accepting knowledge, enabling a provider and publishing a projection remain
|
|
44
|
+
decisions of their existing owners.
|
|
45
|
+
|
|
46
|
+
## Native Python adapters
|
|
47
|
+
|
|
48
|
+
The package includes the authored adapter source under
|
|
49
|
+
`src/ingestion/optional/graphify/` and
|
|
50
|
+
`src/ingestion/optional/lightrag/atelier_lightrag_supplier/`. It does not bundle
|
|
51
|
+
the third-party SDKs or download them. A consuming host supplies its compatible
|
|
52
|
+
Python runtime, separately installed SDK, pinned source, isolated storage and
|
|
53
|
+
existing operation lifecycle.
|
|
54
|
+
|
|
55
|
+
Graphify's `json_bridge.py` supports a host-owned persistent process so dependent
|
|
56
|
+
operations share one supplier and generation. Preserve its separate source,
|
|
57
|
+
cache and artifact roots. Its operations include extraction, query, topology,
|
|
58
|
+
diagnostics, incremental updates and exports. The adapter uses POSIX filesystem
|
|
59
|
+
locking; a host must qualify its actual platform before selecting this route.
|
|
60
|
+
|
|
61
|
+
LightRAG's `LightRAGSupplier` accepts a native factory and role instrumentation
|
|
62
|
+
before initialization, with one event loop per workspace and generation. It
|
|
63
|
+
supports native insertion, custom knowledge projections, retrieval, coupled
|
|
64
|
+
answers and storage lifecycle. Accepted canonical projections and editable
|
|
65
|
+
native exploration use distinct workspaces. Native embeddings and model calls
|
|
66
|
+
remain explicitly configured host capabilities.
|
|
67
|
+
|
|
68
|
+
Source replacement, withdrawal, tool removal and recovery must use the current
|
|
69
|
+
source/evidence owners and the host's existing lifecycle. Unknown native cleanup
|
|
70
|
+
or provider execution is retained as unknown and grants no implicit replay.
|
|
71
|
+
|
|
72
|
+
## Qualification
|
|
73
|
+
|
|
74
|
+
`@mnstry/atelier/ingestion/qualification` exports the trial executor, accounting
|
|
75
|
+
and independent-assessment receiving helpers. They preserve failed attempts,
|
|
76
|
+
retries, shared costs and unknown accounting. Useful-answer scoring requires a
|
|
77
|
+
separate verified assessor receipt; a task's own success claim does not count.
|
|
78
|
+
|
|
79
|
+
The repository tests cover portable composition, all eight presence profiles,
|
|
80
|
+
invented judgments, receipt boundaries and failure custody. These establish
|
|
81
|
+
source behavior. Actual installed native workflows, provider authorization,
|
|
82
|
+
independent semantic quality and measured time or cost improvements require
|
|
83
|
+
qualification by the consuming host.
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
# Personal workspace composition
|
|
2
|
+
|
|
3
|
+
This module composes enrolled local repositories and private interpretation in
|
|
4
|
+
one Atelier graph. The person supplies a private home outside every enrolled
|
|
5
|
+
repository. Shared source files are never changed. Private authored inputs change
|
|
6
|
+
only through an explicit, confirmed restore (see below).
|
|
7
|
+
This is a local composition module. Host integration and release require
|
|
8
|
+
separate acceptance.
|
|
9
|
+
|
|
10
|
+
A manifest records enrollment, repository identity, and folder bindings. An
|
|
11
|
+
overlay contains annotations, connections, collections, saved repository
|
|
12
|
+
selections, and preferences. These closed documents grant no consent,
|
|
13
|
+
permission, policy exception, disclosure, or effect authority. Valid graph
|
|
14
|
+
metadata does not constrain a tool that can directly read the filesystem.
|
|
15
|
+
|
|
16
|
+
## Files and API
|
|
17
|
+
|
|
18
|
+
The caller passes `personalHome` explicitly; the module does not discover it
|
|
19
|
+
from the environment or the current directory. The caller owns these files:
|
|
20
|
+
|
|
21
|
+
- `atelier.personal.json`: `atelier-personal-workspace-manifest@v1`.
|
|
22
|
+
- `atelier.overlay.json`: `atelier-personal-workspace-overlay@v1`.
|
|
23
|
+
|
|
24
|
+
Both contracts live in `contracts/`. Paths in the private manifest are absolute
|
|
25
|
+
canonical paths. Bindings must not overlap; enrolled roots must not nest.
|
|
26
|
+
Each repo has a `repoId`, `root`, recorded `remote` (or `null`), and `enrolled`.
|
|
27
|
+
Overlay references are closed `{ repoId, nodeId }` pairs. Repository IDs are
|
|
28
|
+
stable local enrollment keys; matching a recorded remote is an offline change
|
|
29
|
+
check, not proof of upstream membership or provider identity.
|
|
30
|
+
|
|
31
|
+
The module entrypoint is `src/personal-workspace/index.mjs`; its public package
|
|
32
|
+
subpath is `@mnstry/atelier/personal-workspace`. The API consists of fifteen exports:
|
|
33
|
+
|
|
34
|
+
- `MANIFEST_SCHEMA` and `OVERLAY_SCHEMA`.
|
|
35
|
+
- `PersonalWorkspaceRefusal`.
|
|
36
|
+
- `loadPersonalManifest` and `loadPersonalOverlay`.
|
|
37
|
+
- `resolvePersonalWorkspace`.
|
|
38
|
+
- `planPersonalGeneration`, `materializePersonalGeneration`, and
|
|
39
|
+
`composePersonalWorkspace`.
|
|
40
|
+
- `selectPersonalGeneration`, `selectionConfirmDigest`, and
|
|
41
|
+
`readPersonalSelection`.
|
|
42
|
+
- `inventoryPersonalHome`.
|
|
43
|
+
- `planPersonalRestore` and `restorePersonalInputs`.
|
|
44
|
+
|
|
45
|
+
Package registration and installed-consumer qualification are separate from
|
|
46
|
+
module source qualification. A registered package can be used as follows:
|
|
47
|
+
|
|
48
|
+
```js
|
|
49
|
+
import {
|
|
50
|
+
resolvePersonalWorkspace,
|
|
51
|
+
planPersonalGeneration,
|
|
52
|
+
materializePersonalGeneration,
|
|
53
|
+
composePersonalWorkspace,
|
|
54
|
+
} from '@mnstry/atelier/personal-workspace'
|
|
55
|
+
|
|
56
|
+
const resolved = resolvePersonalWorkspace({ folder, personalHome })
|
|
57
|
+
if (resolved.status === 'resolved') {
|
|
58
|
+
const plan = planPersonalGeneration(resolved)
|
|
59
|
+
const written = materializePersonalGeneration(plan, { personalHome })
|
|
60
|
+
const result = composePersonalWorkspace({
|
|
61
|
+
personalHome,
|
|
62
|
+
generationId: written.generationId,
|
|
63
|
+
})
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
`loadPersonalManifest` and `loadPersonalOverlay` read and validate private
|
|
68
|
+
files. `resolvePersonalWorkspace` returns `resolved` or `none`; conflicting
|
|
69
|
+
bindings refuse. `planPersonalGeneration` is pure and accepts only a resolved
|
|
70
|
+
input from this module. These operations write nothing. Failures throw
|
|
71
|
+
`PersonalWorkspaceRefusal`, with a stable `code` and a sanitized message.
|
|
72
|
+
No paths, source excerpts, or graph diagnostic text are included in refusals.
|
|
73
|
+
|
|
74
|
+
Of the composition operations, only `materializePersonalGeneration` writes. (The
|
|
75
|
+
selection and restore operations below write their own records and, on an explicit
|
|
76
|
+
confirmed restore, the authored inputs.) It creates
|
|
77
|
+
`generations/<generationId>/` under the explicit private home. The id is a
|
|
78
|
+
digest of canonical schema-tagged manifest and overlay inputs, declared
|
|
79
|
+
stable references, and the canonical private-home location. Moving that home
|
|
80
|
+
produces a new generation; historical generations remain untouched. Compose
|
|
81
|
+
of a generation recording the old home refuses `generation-relocated`. Planning does not pretend to discover source nodes.
|
|
82
|
+
Materialization writes exclusive files to a private staging directory, fsyncs
|
|
83
|
+
them, verifies references through the canonical graph, and atomically renames
|
|
84
|
+
the generation. A failed reference check discards only that attempt's staging.
|
|
85
|
+
An interruption can leave a reported `stale-staging` directory; the module
|
|
86
|
+
never prunes it or historical generations automatically.
|
|
87
|
+
|
|
88
|
+
A committed generation contains `inputs.json`, `atelier.project.json`,
|
|
89
|
+
`shared/atelier.project.json` for independent shared-source comparison, private
|
|
90
|
+
Markdown under `overlay/`, and `generation.json` written last. The latter lists
|
|
91
|
+
every other file and its digest. The whole inventory is checked; additional,
|
|
92
|
+
missing, edited, or symlinked files refuse. Identical existing generations are
|
|
93
|
+
reused; conflicting ones refuse `generation-overwrite-refused`. There is no
|
|
94
|
+
mutable current pointer and no in-place schema migration.
|
|
95
|
+
|
|
96
|
+
Compose revalidates current authored inputs, roots, identity, the generation,
|
|
97
|
+
and every `(repoId, nodeId)` before returning a graph. Removing enrollment
|
|
98
|
+
while retaining references refuses `retained-removed-reference` before
|
|
99
|
+
planning. Missing or misowned IDs refuse `stale-reference`; path-derived IDs refuse
|
|
100
|
+
`unstable-reference`. Targets must declare an explicit `kg.id`. A source file
|
|
101
|
+
rename preserves references when its stable node ID stays the same. Changed
|
|
102
|
+
inputs refuse use of an old generation; old bytes remain untouched. Authored
|
|
103
|
+
note retention and recipient export are outside this module.
|
|
104
|
+
|
|
105
|
+
## Selection, inventory and restore
|
|
106
|
+
|
|
107
|
+
A generation is eligible only while it composes against the current authored
|
|
108
|
+
inputs, roots and enrollment, so at most one generation is eligible at a time.
|
|
109
|
+
These operations record a person's choices about that, and write only under the
|
|
110
|
+
private home. They never delete authored inputs, generations or records; they
|
|
111
|
+
remove only their own temporary files. Every failure is a
|
|
112
|
+
`PersonalWorkspaceRefusal` with a stable code and no path.
|
|
113
|
+
|
|
114
|
+
- `selectPersonalGeneration({ personalHome, generationId, confirm })` records an
|
|
115
|
+
explicit choice of the eligible generation. `confirm` is
|
|
116
|
+
`selectionConfirmDigest({ generationId, previous })`, computed over the head
|
|
117
|
+
that `readPersonalSelection` returns, so a choice shown against an older history
|
|
118
|
+
does not apply. Selections are append-only, numbered, hash-chained records under
|
|
119
|
+
`selections/`, each written completely before it is published, so a crash leaves
|
|
120
|
+
only a temporary file. Concurrent selections refuse `selection-concurrent`. An
|
|
121
|
+
ineligible generation refuses with its composition code, such as
|
|
122
|
+
`stale-generation`.
|
|
123
|
+
- `readPersonalSelection({ personalHome })` returns the current selection and
|
|
124
|
+
whether it is still eligible. A selection never keeps a generation eligible after
|
|
125
|
+
its inputs, roots or enrollment change. The chain proves internal consistency
|
|
126
|
+
only: an edited record whose successors were not re-linked, a gap, or a
|
|
127
|
+
reordering refuses `selection-history-corrupt`. Truncating, or consistently
|
|
128
|
+
rewriting, any trailing run of records (up to the whole history) yields another
|
|
129
|
+
valid chain; it changes the returned `head`, so a host that needs to detect it
|
|
130
|
+
keeps the head it last observed and compares it.
|
|
131
|
+
- `inventoryPersonalHome({ personalHome })` lists what these operations write, for
|
|
132
|
+
review before any deletion the person chooses: the authored files, each
|
|
133
|
+
generation with its eligibility, interrupted staging directories, every
|
|
134
|
+
selection and restore record, and any leftover temporary file, with sizes and
|
|
135
|
+
digests. An unreadable, oversized, non-regular or symlinked entry (authored
|
|
136
|
+
file, generation record or selection record) is listed without a digest, and a
|
|
137
|
+
corrupt selection history is flagged rather than failing the inventory.
|
|
138
|
+
Temporary files include restore aside copies (`.restore-<uuid>-aside-<file>.json`).
|
|
139
|
+
It is read-only.
|
|
140
|
+
- `planPersonalRestore({ personalHome, generationId })` plans restoring the
|
|
141
|
+
authored manifest and overlay that an earlier generation recorded. The
|
|
142
|
+
generation's `inputs.json` must reproduce its id from this private home, or the
|
|
143
|
+
plan refuses `generation-corrupt`; an oversized record refuses
|
|
144
|
+
`generation-inputs-too-large`. **A restore never widens enrollment or
|
|
145
|
+
bindings:** a repository the target enrolls must be enrolled now with the same
|
|
146
|
+
root and remote, and every binding it declares must be declared now. Otherwise
|
|
147
|
+
it refuses `rollback-readmits-repository` or `rollback-identity-changed` (with
|
|
148
|
+
the repository ids) or `rollback-readds-binding`, before any write.
|
|
149
|
+
Re-admission is the person's fresh edit; afterwards the same restore is
|
|
150
|
+
evaluated normally. The plan validates the target files and carries a summary
|
|
151
|
+
of the enrollment and bindings it removes and whether each file changes. A
|
|
152
|
+
restore that only narrows proceeds. Restored files are written in the
|
|
153
|
+
generation's canonical form (sorted keys, no indentation), not the person's
|
|
154
|
+
original formatting; planning and restoring briefly write private `.validate-*`
|
|
155
|
+
and `.restore-*` copies of authored data, which are removed afterwards and
|
|
156
|
+
listed by the inventory if a crash leaves them.
|
|
157
|
+
- `restorePersonalInputs(plan, { personalHome, confirm: plan.confirm })` accepts
|
|
158
|
+
only a plan returned by `planPersonalRestore`. It reads the current authored
|
|
159
|
+
files once, validates those exact bytes, requires them to match the plan, and
|
|
160
|
+
re-runs the widening check on them; inputs changed after planning refuse
|
|
161
|
+
`authored-input-changed`. It keeps those exact bytes in an append-only record
|
|
162
|
+
under `restores/`, stages and validates both restored files, then replaces each
|
|
163
|
+
by compare-and-swap: the current file is moved aside and verified to be the
|
|
164
|
+
bytes it read, and the restored file is linked into place, which fails if
|
|
165
|
+
another writer recreated the name. On any mismatch, or if the moved file cannot
|
|
166
|
+
be read (for example it is now oversized), it is put back, or kept as a listed
|
|
167
|
+
temporary file if its name was taken meanwhile, and the restore refuses
|
|
168
|
+
`authored-input-changed`. Writers that replace or recreate the file by path keep
|
|
169
|
+
their bytes. A writer still holding an open handle on the old file and editing
|
|
170
|
+
it in place can write into the moved copy, which a completed swap removes. The
|
|
171
|
+
name is briefly absent during each swap. A rerun after an interruption between
|
|
172
|
+
swaps completes the files not yet restored. If a crash leaves an authored name
|
|
173
|
+
absent while its moved copy remains, planning and restoring refuse
|
|
174
|
+
`restore-interrupted`. The moved copy is listed by the inventory, and the
|
|
175
|
+
restore record under `restores/` holds the replaced bytes, so the person can put
|
|
176
|
+
the file back before trying again. A restore does
|
|
177
|
+
not change the selection; selecting the restored generation is the person's next
|
|
178
|
+
explicit act.
|
|
179
|
+
|
|
180
|
+
Retention follows the person's decision: withdrawn material stops being eligible
|
|
181
|
+
immediately, while authored history, generations and these records stay until the
|
|
182
|
+
person reviews the inventory and explicitly confirms deletion. No deletion
|
|
183
|
+
operation is provided yet.
|
|
184
|
+
|
|
185
|
+
## Canonical graph and offline checks
|
|
186
|
+
|
|
187
|
+
Composition uses the existing supported project loader, project validation,
|
|
188
|
+
and canonical graph builder. Generated project paths are explicit and
|
|
189
|
+
relative to the generation, with a conservative private read boundary; this
|
|
190
|
+
never upgrades source authority. The graph includes shared source nodes and
|
|
191
|
+
private interpretation nodes, with declared `related` edges. Private aliases
|
|
192
|
+
and preferences do not rewrite source titles, facts, or classifications.
|
|
193
|
+
Private nodes are excluded from ordinary Markdown link scanning and targeting;
|
|
194
|
+
only their explicitly declared stable references create edges. A second build
|
|
195
|
+
through the same canonical API uses a generated config containing only shared
|
|
196
|
+
roots, in the private generation. Shared nodes, edges, and link diagnostics must
|
|
197
|
+
match the composed result, or `shared-facts-changed` refuses publication/output. Complex tags
|
|
198
|
+
round-trip through block-list frontmatter. Blank, padded, and duplicate tags
|
|
199
|
+
refuse `malformed-input` instead of being silently normalized. Untagged private
|
|
200
|
+
nodes receive the
|
|
201
|
+
fixed `personal-interpretation` tag instead of inferred shared-domain tags.
|
|
202
|
+
Generated scalars escape Unicode line separators. Composition verifies every private
|
|
203
|
+
node’s planned identity, title, classification, explicit ID, type, status, audience,
|
|
204
|
+
tags, relations, and declared edges; a mismatch refuses `overlay-semantics-mismatch`.
|
|
205
|
+
Saved views are stored selections, not executable queries or policy rules.
|
|
206
|
+
|
|
207
|
+
Bounded local Git reads are required for identity and the canonical ignore
|
|
208
|
+
census. No network, provider lookup, `gh`, Git fetch, hook execution, service,
|
|
209
|
+
database, credential operation, or shell is requested. The module refuses
|
|
210
|
+
ambient `GIT_*` variables, fsmonitor helpers in local, global, XDG, or system
|
|
211
|
+
configuration, and failed independent
|
|
212
|
+
ignore listings. It checks that ignored sources never enter the graph even
|
|
213
|
+
when the shared builder's ignore call fails open, including ignored sidecars.
|
|
214
|
+
An enrolled root must equal its Git worktree top level; a nested directory
|
|
215
|
+
refuses `repo-root-mismatch` before planning or writes.
|
|
216
|
+
Every module-owned Git probe disables fsmonitor. Its configuration probe uses
|
|
217
|
+
Git boolean-or-string typing so a valueless enabled setting is refused too.
|
|
218
|
+
On macOS, ignored-path comparisons normalize both Git and census spellings to
|
|
219
|
+
NFC, including sidecar paths and parent directories. Observed remote URLs are
|
|
220
|
+
sanitized before comparison; the authored identity must already be sanitized,
|
|
221
|
+
without user information, query parameters, or fragments. Credential-bearing
|
|
222
|
+
authored remote values refuse `remote-credentials-refused` and are never copied
|
|
223
|
+
to generations or returned observations. Project inputs have pinned
|
|
224
|
+
arguments and environment, no ambient overlays, and no path discovery.
|
|
225
|
+
|
|
226
|
+
Private generation roots must be outside every worktree, verified by ancestor
|
|
227
|
+
`.git` checks and a local Git probe. The overlay census must equal exactly the
|
|
228
|
+
materialized overlay documents. Private roots must be owned by the current
|
|
229
|
+
POSIX user and not writable by others. All roots, ancestors, and authored files
|
|
230
|
+
must be free of symlinks. Windows private-root qualification is not implemented
|
|
231
|
+
and refuses `private-root-unverifiable`.
|
|
232
|
+
|
|
233
|
+
Current source evidence hashes regular files with 64 KiB reads rather than whole
|
|
234
|
+
asset allocations. Unavailable or changing file evidence refuses `source-read-failed`
|
|
235
|
+
without returning local paths. This observation is not a transactional source snapshot.
|
|
236
|
+
|
|
237
|
+
## Evidence and limits
|
|
238
|
+
|
|
239
|
+
The tests use invented temporary repositories and private homes. They verify
|
|
240
|
+
canonical nodes and edges, unchanged source trees and authored inputs,
|
|
241
|
+
determinism, removal, identity replacement, closed schemas, ignore failure,
|
|
242
|
+
unsafe roots, corrupted generations, and interrupted writes. This proves the
|
|
243
|
+
bounded module behavior, not installed host enforcement or human acceptance.
|
|
244
|
+
|
|
245
|
+
`sourceRevisions` reports digests observed from the current canonical census
|
|
246
|
+
after the build. Shared repositories remain live, mutable files: this is not a
|
|
247
|
+
transactional snapshot or an upstream Git revision. Concurrent writers can
|
|
248
|
+
change source bytes between graph reads. Consumers requiring an immutable
|
|
249
|
+
source snapshot must supply one through a separately governed host boundary.
|
|
250
|
+
Similarly, checks in this module are not an OS sandbox, defense against a
|
|
251
|
+
hostile filesystem owner, or protection from concurrent root replacement.
|
|
252
|
+
|
|
253
|
+
The returned coverage is `manifest-only`, with `enforcement: none` for direct
|
|
254
|
+
filesystem access, disclosure, effects, and host sandboxing. A harness with
|
|
255
|
+
repository access still needs the applicable host and runtime boundaries.
|
|
256
|
+
Integration, independent review, hosted CI, publication, installation,
|
|
257
|
+
consent/effect enforcement, and acceptance are separate gates.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Practical Judgment and practice adoption
|
|
2
|
+
|
|
3
|
+
Practical Judgment supports deciding what matters and what is fitting in a
|
|
4
|
+
particular situation. It also supports cultivation: contrasting cases, warranted
|
|
5
|
+
exceptions, questions, distinct voices and reflection on consequences. A useful
|
|
6
|
+
deliberation can remain open or produce an action without producing a rule.
|
|
7
|
+
|
|
8
|
+
`@mnstry/atelier/judgment` validates portable cases and native architecture
|
|
9
|
+
decision snapshots. `inspectPracticalCase` preserves purpose, values, evidence,
|
|
10
|
+
alternatives, dissent, cultivation exercises and reconsideration conditions.
|
|
11
|
+
It does not score wisdom. The invented workshop fixtures demonstrate an open
|
|
12
|
+
deliberation and a decision whose implementation is still planned.
|
|
13
|
+
|
|
14
|
+
## Architecture decisions
|
|
15
|
+
|
|
16
|
+
`importArchitectureDecision({decision, sourceText})` verifies a declared native
|
|
17
|
+
source digest. Repository identity, ADR identity and source location stay intact.
|
|
18
|
+
The adapter does not allocate ADR numbers, authenticate an approver or infer
|
|
19
|
+
implementation from acceptance. Decision status, implementation evidence and
|
|
20
|
+
evidence currency remain separate. `renderArchitectureDecision` produces a
|
|
21
|
+
readable snapshot; its text does not replace the source repository's native form.
|
|
22
|
+
|
|
23
|
+
`prepareJudgmentContribution` preserves the typed case or decision inside an
|
|
24
|
+
ordinary Knowledge contribution. Review and activation still use the existing
|
|
25
|
+
Knowledge writer. `createJudgmentDependency` revalidates that typed payload and
|
|
26
|
+
the accepted contribution before issuing the existing Build handoff. Decision
|
|
27
|
+
imports additionally require matching native source bytes. The resulting
|
|
28
|
+
handoff retains the native states; it grants no implementation or approval
|
|
29
|
+
authority. Revisions use new Knowledge contributions and normal supersession,
|
|
30
|
+
review and dependency reconsideration. Do not change an old record in place.
|
|
31
|
+
|
|
32
|
+
## From feedback to intrinsic practice
|
|
33
|
+
|
|
34
|
+
The [learning lifecycle](learning.md) captures an observation, proposes a scoped
|
|
35
|
+
lesson, records an exact decision, then activates the accepted version for a
|
|
36
|
+
named harness. `capabilityEventToLearningInput` bridges version-bound capability
|
|
37
|
+
metadata into that lifecycle. It retains the reported cause, binding, release,
|
|
38
|
+
session and evidence digest. It neither invents a user quotation nor certifies
|
|
39
|
+
causality. A harness feedback wrapper can preserve causes that the older
|
|
40
|
+
capability event vocabulary cannot express.
|
|
41
|
+
|
|
42
|
+
For accepted instruction artifacts, use `atelier practice plan`, inspect the
|
|
43
|
+
returned text and exact plan digest, then `practice apply`. Requests are JSON
|
|
44
|
+
on stdin in the intended Git repository. Private state must be ignored under
|
|
45
|
+
`.atelier-local/`. The request names `workspaceId`, `scope`, `harnessId`,
|
|
46
|
+
`lessonId`, `target`, `slot` and `mode` (`adopt` or `retire`). Apply additionally
|
|
47
|
+
names `confirm`, the current plan digest.
|
|
48
|
+
|
|
49
|
+
The reference profile manages one marked block in a scoped `AGENTS.md` or
|
|
50
|
+
`CLAUDE.md`. It preserves surrounding text, states applicability and exceptions,
|
|
51
|
+
and leaves instruction precedence and tool permissions with the host. Skills
|
|
52
|
+
continue through capability releases and Skill Steward; checks remain inert
|
|
53
|
+
until an owning implementation explicitly realizes them. This adapter does not
|
|
54
|
+
execute a lesson as code or update arbitrary configuration files.
|
|
55
|
+
|
|
56
|
+
Re-plan and apply to adopt a reviewed revision into the same slot. Guidance is
|
|
57
|
+
preserved literally, including dollar signs; other slots and surrounding text
|
|
58
|
+
remain intact. Re-adopting unchanged guidance records the current adoption
|
|
59
|
+
without exchanging the destination file, and interrupted recording can recover.
|
|
60
|
+
|
|
61
|
+
Planning binds the complete current destination bytes and learning selection.
|
|
62
|
+
Applying refuses local drift, unowned slots, changed scope, ambiguous markers
|
|
63
|
+
and ineligible learning. The POSIX reference adapter uses non-overwriting
|
|
64
|
+
creation or the existing atomic file-exchange primitive. Displaced bytes remain
|
|
65
|
+
in private recovery storage. Unavailable exchange or volume mismatch refuses.
|
|
66
|
+
An interrupted operation is inspected with `practice status` and resumed with
|
|
67
|
+
`practice recover` using the pending plan digest. Concurrent changes remain
|
|
68
|
+
visible for reconciliation. If the source differs from both planned states,
|
|
69
|
+
`practice abandon` can retain the journal and recovery bytes without editing the
|
|
70
|
+
source. It requires the plan digest and the current destination digest reported
|
|
71
|
+
by status. Then prepare a new plan. Applied changes must be reconciled before
|
|
72
|
+
retirement; never delete recovery state to force an apply.
|
|
73
|
+
|
|
74
|
+
`practice context` takes target, slot, session, scope and harnessId. It returns
|
|
75
|
+
only current selected guidance and writes a context-delivery receipt. The
|
|
76
|
+
receipt means that the calling consumer received those exact bytes. A host must
|
|
77
|
+
actually integrate this seam; it does not establish that an agent obeyed them.
|
|
78
|
+
Assess changed behavior with applicable and inapplicable tasks afterward.
|
|
79
|
+
|
|
80
|
+
Withdrawal immediately excludes future calls through this context API. A
|
|
81
|
+
previously written instruction file still needs an explicit retirement plan.
|
|
82
|
+
`practice status` reports that discrepancy. A host that reads the file directly
|
|
83
|
+
does not inherit live withdrawal checks automatically. Separate repositories
|
|
84
|
+
make separate adoptions; another repository's customization is preserved.
|
|
85
|
+
|
|
86
|
+
## Open core and host responsibilities
|
|
87
|
+
|
|
88
|
+
All local inspection, adoption, history and recovery are usable without a hosted
|
|
89
|
+
account. Identity assertions and digests establish local consistency, not remote
|
|
90
|
+
authentication. Production hosts supply their own identity, access, scheduling,
|
|
91
|
+
actual conversation delivery and durable runtime acceptance. Personal or private
|
|
92
|
+
learning is not implicitly exported to a public graph or capability package.
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Progressive ingestion — proposed acceptance scenarios
|
|
2
|
+
|
|
3
|
+
Status: design acceptance criteria, not executable tests or passing results.
|
|
4
|
+
Read the [architecture proposal](progressive-ingestion.md) first. All public
|
|
5
|
+
fixtures must use newly invented content and structure. Private evaluation
|
|
6
|
+
material remains in its owner's environment.
|
|
7
|
+
|
|
8
|
+
## Reference journey
|
|
9
|
+
|
|
10
|
+
An invented equipment cooperative imports a service note, a parts table and a
|
|
11
|
+
scanned checklist. A person wants to understand which maintenance steps remain
|
|
12
|
+
unresolved. Inventory reports all sources and modalities. Text search becomes
|
|
13
|
+
available before interpretation finishes. A bounded extraction pass proposes
|
|
14
|
+
statements with citations. A conflicting replacement interval is shown with
|
|
15
|
+
both source passages and becomes a review question. Accepting one scoped
|
|
16
|
+
decision updates the derived view without rewriting either original.
|
|
17
|
+
|
|
18
|
+
Stop the process mid-batch, restart it, change one source and repeat the query.
|
|
19
|
+
Completed valid work is reused, uncertain work is reconciled and the affected
|
|
20
|
+
decision view becomes stale. Repeat through the local reference runner and,
|
|
21
|
+
separately, through any product host claiming support.
|
|
22
|
+
|
|
23
|
+
## Required cases
|
|
24
|
+
|
|
25
|
+
| ID | Invented situation | Required observable result |
|
|
26
|
+
| --- | --- | --- |
|
|
27
|
+
| C01 | A connector returns one page with an unknown total | Discovery reports its bounded scope; it cannot report complete-account coverage |
|
|
28
|
+
| C02 | A record contains text, speech, an image and an unknown part | Every part appears in the census; unsupported parts remain explicit |
|
|
29
|
+
| C03 | Empty speech, provider placeholder and real transcript coexist | Distinct outcomes and counts; placeholders cannot support a semantic claim |
|
|
30
|
+
| C04 | A table has formulas and a marked answer; a deck has multiple slides | Structure and exact locations are preserved or their omission is reported |
|
|
31
|
+
| C05 | Text uses multiple languages, combining marks and mixed newlines | Original bytes survive; normalized retrieval maps back to the cited evidence |
|
|
32
|
+
| C06 | Two attachments share bytes but have different origins | Storage may deduplicate; source identities and unresolved matches remain separate |
|
|
33
|
+
| C07 | Several logical records share one container | Rendering identities and locators remain distinct; no file-hash collision merges them |
|
|
34
|
+
| C08 | A source contains apparent instructions to the importer | Content remains inert evidence; access, tools and scope remain unchanged |
|
|
35
|
+
| C09 | A quote exists but does not support the proposed relation | Structural validity is reported separately from support; no automatic acceptance |
|
|
36
|
+
| C10 | A small model omits a rare exception in an otherwise valid result | Representative audit detects the omission; the relevant task qualification is revised |
|
|
37
|
+
| C11 | Two sources copy a common original | They cannot establish independent corroboration merely through separate IDs |
|
|
38
|
+
| C12 | A user-role message quotes someone else or a model | The role is preserved; authorship is not inferred without evidence |
|
|
39
|
+
| C13 | A conflict contains several positions with incomplete time evidence | All positions and gaps remain visible; container dates do not invent statement order |
|
|
40
|
+
| C14 | A search finds no supporting evidence, then a source is added | The negative claim identifies its search scope and becomes stale |
|
|
41
|
+
| C15 | A proposal's payload changes after attestation | The old attestation no longer applies; no automatic re-signing or hash rewriting |
|
|
42
|
+
| C16 | One record is malformed in a large batch | A per-record failure is retained; remaining checks run and aggregate status is incomplete |
|
|
43
|
+
| C17 | Output exists when an assignment is dispatched again | Reconcile the existing attempt; refuse conflicting writes and duplicate accounting |
|
|
44
|
+
| C18 | A worker stops before writing its completion record | Partial scratch is not promoted; resume preserves verified completed attempts |
|
|
45
|
+
| C19 | Source, model, rubric or extraction configuration changes | Only valid matching work is reused; affected descendants are invalidated |
|
|
46
|
+
| C20 | Permission narrows while source bytes remain unchanged | Cache access and generated views honor the new boundary immediately |
|
|
47
|
+
| C21 | A provider submission times out after possible acceptance | Attempt becomes uncertain; reconciliation precedes any paid retry |
|
|
48
|
+
| C22 | Several jobs compete for the remaining budget | Reservation prevents over-admission; actual and unknown costs are reported separately |
|
|
49
|
+
| C23 | An original becomes unavailable or a tool is uninstalled | Evidence availability changes honestly; authored records survive tool removal |
|
|
50
|
+
| C24 | Receipts validate but the search index omits their findings | The end-to-end retrieval gate fails despite valid receipts |
|
|
51
|
+
| C25 | An external provider is unavailable or not permitted | Local inventory, search and review remain useful; no silent provider substitution |
|
|
52
|
+
| C26 | A shared report would expose a private title, path or dependency | The shared output is refused or explicitly reduced without revealing withheld details |
|
|
53
|
+
|
|
54
|
+
Tests of controls need both a valid case and a changed-input refusal. Checking
|
|
55
|
+
fixture shape without invoking the consuming validator is insufficient. Hosts
|
|
56
|
+
add their own account, process, storage and transport tests; these portable cases
|
|
57
|
+
do not certify those host boundaries.
|
|
58
|
+
|
|
59
|
+
## Cost and quality qualification
|
|
60
|
+
|
|
61
|
+
Select a stratified sample spanning format, language, ambiguity, source quality,
|
|
62
|
+
length and consequence. Establish expected evidence and human judgments before
|
|
63
|
+
comparing processors. Separate calibration material from held-out evaluation;
|
|
64
|
+
keep rare exceptions and failure cases in both planning and acceptance criteria.
|
|
65
|
+
|
|
66
|
+
Compare a stronger-model baseline, a mixed routing pipeline and deterministic
|
|
67
|
+
processing where applicable. Record exact processor versions, prompts, rubric,
|
|
68
|
+
input hashes, retries, verifier effort and evidence-selection policy. A stronger
|
|
69
|
+
model's output is a comparator, not ground truth.
|
|
70
|
+
|
|
71
|
+
Measure:
|
|
72
|
+
|
|
73
|
+
- Cost and elapsed time to the first useful, searchable evidence.
|
|
74
|
+
- Missing expected evidence and unsupported claims, stratified by task.
|
|
75
|
+
- Correct source and locator bindings, with ambiguity retained appropriately.
|
|
76
|
+
- Human correction effort and cost per useful accepted result.
|
|
77
|
+
- Escalation and failure rates, including apparently successful sampled work.
|
|
78
|
+
- Cold-run cost, unchanged-run reuse and cost after a localized source change.
|
|
79
|
+
- Cancellation/recovery behavior and unresolved or unmetered usage.
|
|
80
|
+
|
|
81
|
+
Acceptance thresholds are set per task and consequence before the comparison.
|
|
82
|
+
Cost savings do not compensate for failing a required coverage or quality floor.
|
|
83
|
+
Reducing output volume must not make cost per accepted result look better while
|
|
84
|
+
hiding missed evidence. Report denominators, sample design and uncertainty;
|
|
85
|
+
multiple reports from one run are one case study, not independent replications.
|
|
86
|
+
|
|
87
|
+
No particular processor, price, reduction percentage or throughput target is
|
|
88
|
+
qualified by these documents. Publish aggregate results only after checking that
|
|
89
|
+
neither the cases nor their statistics disclose a private implementation.
|