magicite 1.0.0__tar.gz
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.
- magicite-1.0.0/.dockerignore +49 -0
- magicite-1.0.0/.gitignore +40 -0
- magicite-1.0.0/CHANGELOG.md +244 -0
- magicite-1.0.0/Dockerfile +143 -0
- magicite-1.0.0/Dockerfile.dev +59 -0
- magicite-1.0.0/LICENSE +202 -0
- magicite-1.0.0/PKG-INFO +423 -0
- magicite-1.0.0/README.md +385 -0
- magicite-1.0.0/docs/01-vision-and-hypotheses.md +154 -0
- magicite-1.0.0/docs/02-architecture.md +237 -0
- magicite-1.0.0/docs/03-learning-model.md +304 -0
- magicite-1.0.0/docs/04-engram-format.md +415 -0
- magicite-1.0.0/docs/05-protocol-and-signals.md +536 -0
- magicite-1.0.0/docs/06-trust-governance-lifecycle.md +320 -0
- magicite-1.0.0/docs/07-evaluation-and-observability.md +405 -0
- magicite-1.0.0/docs/AUTHORITY.md +111 -0
- magicite-1.0.0/docs/README.md +119 -0
- magicite-1.0.0/docs/adapters/claude-code.md +179 -0
- magicite-1.0.0/docs/adapters/dogfooding.md +262 -0
- magicite-1.0.0/docs/archive-redirects.json +9 -0
- magicite-1.0.0/docs/assets/magicite-logo.png +0 -0
- magicite-1.0.0/docs/decisions/001-stable-dense-v1-incumbent.md +96 -0
- magicite-1.0.0/docs/evaluation/composition-v0.3.json +361 -0
- magicite-1.0.0/docs/evaluation/v0.3-benchmarks.json +150 -0
- magicite-1.0.0/docs/evaluation/v0.3-results.json +73 -0
- magicite-1.0.0/docs/evaluation/v1/README.md +114 -0
- magicite-1.0.0/docs/evaluation/v1/fixtures/skillret-tiny/corpus_manifest.json +89 -0
- magicite-1.0.0/docs/evaluation/v1/fixtures/skillret-tiny/queries.json +72 -0
- magicite-1.0.0/docs/evaluation/v1/preregistration-template.json +50 -0
- magicite-1.0.0/docs/evaluation/v1/skillret-v1.1-source.json +101 -0
- magicite-1.0.0/docs/evaluation/v1/unevaluated.md +71 -0
- magicite-1.0.0/docs/generated/runtime-reference.json +1708 -0
- magicite-1.0.0/docs/install.md +74 -0
- magicite-1.0.0/docs/operations.md +521 -0
- magicite-1.0.0/docs/operator-tutorial.md +103 -0
- magicite-1.0.0/docs/qualification/calibration-consumer.md +149 -0
- magicite-1.0.0/docs/qualification/calibration-data.md +98 -0
- magicite-1.0.0/docs/qualification/candidate-install.md +72 -0
- magicite-1.0.0/docs/qualification/claude-code.md +141 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/README.md +21 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/byte-drift-denied.stderr.txt +1 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/byte-drift-denied.stdout.json +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/control-summary.json.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/execution-scope-clarification.json +10 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/README.md +1 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/candidate-one.txt +1 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/candidate-two.txt +1 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/judgment1.json +9 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/judgment2.json +9 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/labels.json +26 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/packet.json +86 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/partitions.json +14 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/pool.json +16 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/preregistration.json +4 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/provenance.json +83 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/review0.json +5 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/review1.json +5 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/review2.json +5 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/runtime.json +17 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/source0.json +11 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/source1.json +11 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/source2.json +11 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/time0.json +6 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/time1.json +6 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/time2.json +6 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed-freeze.json.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed-freeze.stderr.txt +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed-freeze.stdout.json.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed-open-denied.stderr.txt +1 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed-open-denied.stdout.json +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/focused-1.log +3 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/freeze-a.json.final-access.json +1 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/freeze-a.json.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/freeze-a.stderr.txt +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/freeze-a.stdout.json.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/freeze-b.json.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/freeze-b.stderr.txt +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/freeze-b.stdout.json.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/candidate-source.diff.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/checker-ci-a2-counterfactual.log.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/checker-ci-a2-reproduction-1.log.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/checker-ci-a2-reproduction-2.log.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/checker-ci-a2-reproductions.json.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/checker-ci-diagnosis.json.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/checker-probes-results.json.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/checker-probes.py.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/checker-temporal-results.json.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ci-16d66bb-failed.json.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ci-archive-a-failure-receipt.json.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ci-d314f89-failed.json.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ci-format-successor-watch.log.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ci-job-113292363509-failed.log.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ci-job-113292363524-failed.log.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ci-job-113298790523-failed.log.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ci-job-113298790635-failed.log.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ci-watch.log.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/docs-test-repair-pre-import-order.log.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/docs-test-repair-ruff.log.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/first-focused.log.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/focused-2.log.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/focused-3.log.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/generated-write.log.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/initial-red.log.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ledger-archive-a-failed-status.json.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ledger-archive-a2-failed-status.json.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/mypy-repair.log.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/root-cause-ci-a2-to-idg.envelope.json.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/root-cause-ci-a2-to-idg.md.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/suppressed-group-anchor.py.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/suppressed-group-red.log.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/test_docs_development_counterfactual.py.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/README.md +1 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/candidate-one.txt +1 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/candidate-two.txt +1 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/judgment1.json +9 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/judgment2.json +9 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/labels.json +26 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/packet.json +86 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/partitions.json +14 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/pool.json +16 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/preregistration.json +4 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/provenance.json +83 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/review0.json +5 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/review1.json +5 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/review2.json +5 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/runtime.json +17 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/source0.json +11 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/source1.json +11 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/source2.json +11 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/time0.json +6 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/time1.json +6 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/time2.json +6 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/inventory.json +814 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/ledger-source-c-status.json +69 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/open.stderr.txt +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/open.stdout.json +30 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/repeat-fresh-denied.stderr.txt +1 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/repeat-fresh-denied.stdout.json +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/replay.stderr.txt +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/replay.stdout.json +30 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/run-offline-proof.py.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/source-c-offline-execution.log +1 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/source-equivalence.json +228 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/test-contract-repair-focused.log +2 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/test-contract-repair-ruff.log +1 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/test-contract-repair.json +21 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/validate.stderr.txt +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/validate.stdout.json +78 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/verify.stderr.txt +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/verify.stdout.json.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/wrong-purpose-denied.stderr.txt +1 -0
- magicite-1.0.0/docs/qualification/evidence/calibration-data/wrong-purpose-denied.stdout.json +0 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/README.md +13 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/c3-operational-stop.json +36 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/criteria.json +1 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/exact-source-verification.json +23 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/expected-model.json +30 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/first-heldout-confirmation.json +11 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/first-heldout-exposure.json +15 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/focused-readiness.json +46 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/history.json +1 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/independent-c4-final-review.envelope.json +34 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/independent-c4-final-review.json +129 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/independent-c4-final-review.md +13 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/index.json +1 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/live-readiness.json +80 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/measured-ci.json +1 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/measured-ledger-status.json +65 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/observation.json +1 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/p01-baseline-summary.json +271 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/p02-independent-review.json +93 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/p02-summary.json +97 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/pool-preparation-summary.json +72 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/pool-reuse-receipt.json +24 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/producer-consumer-review.json +161 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/run-freeze.json +1 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/scoring-derivation.json +1 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/smoke-dense-v1-checkpoint.json +1 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/smoke-dense-v1-commands.jsonl +1 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/smoke-dense-v1-result.json +1 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/smoke-dense-v1.jsonl.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/smoke-experimental_adaptive-blend-v1-checkpoint.json +1 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/smoke-experimental_adaptive-blend-v1-commands.jsonl +1 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/smoke-experimental_adaptive-blend-v1-result.json +1 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/smoke-experimental_adaptive-blend-v1.jsonl.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/smoke-report.json.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/source-equivalence-inputs.json +1 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/test-authorization.json +13 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/test-dense-v1-checkpoint.json +1 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/test-dense-v1-commands.jsonl +1 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/test-dense-v1-result.json +1 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/test-dense-v1.jsonl.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/test-experimental_adaptive-blend-v1-checkpoint.json +1 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/test-experimental_adaptive-blend-v1-commands.jsonl +1 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/test-experimental_adaptive-blend-v1-result.json +1 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/test-experimental_adaptive-blend-v1.jsonl.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/test-report.json.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/test-scoring-projection.json.gz +0 -0
- magicite-1.0.0/docs/qualification/evidence/official-quality/train-sample.json +1 -0
- magicite-1.0.0/docs/qualification/evidence/production-empirical/independent-corpus-inventory.json +246 -0
- magicite-1.0.0/docs/qualification/evidence/production-empirical/independent-oracle-freeze.json +35 -0
- magicite-1.0.0/docs/qualification/evidence/production-empirical/independent-oracle-review.json +113 -0
- magicite-1.0.0/docs/qualification/evidence/production-empirical/independent-oracle.json +282 -0
- magicite-1.0.0/docs/qualification/evidence/production-empirical/independent-runtime-queries.json +82 -0
- magicite-1.0.0/docs/qualification/evidence/production-empirical/independent-scoring-labels.json +138 -0
- magicite-1.0.0/docs/qualification/linux-custody.md +72 -0
- magicite-1.0.0/docs/qualification/official-corpus.md +22 -0
- magicite-1.0.0/docs/qualification/official-quality.md +115 -0
- magicite-1.0.0/docs/qualification/production-empirical.md +29 -0
- magicite-1.0.0/docs/qualification/protected-benchmark.md +90 -0
- magicite-1.0.0/docs/quick-setup.md +205 -0
- magicite-1.0.0/docs/readme-claims.json +1 -0
- magicite-1.0.0/docs/releases/0.3.0-rc.1.md +40 -0
- magicite-1.0.0/docs/releases/0.3.0.md +41 -0
- magicite-1.0.0/docs/releases/0.3.1.md +18 -0
- magicite-1.0.0/docs/releases/1.0.0-rc.1.md +75 -0
- magicite-1.0.0/docs/releases/1.0.0-rc.2.md +56 -0
- magicite-1.0.0/docs/releases/1.0.0-rc.3.md +43 -0
- magicite-1.0.0/docs/releases/1.0.0-rc.4.md +52 -0
- magicite-1.0.0/docs/releases/1.0.0.md +79 -0
- magicite-1.0.0/docs/releases/v1/README.md +71 -0
- magicite-1.0.0/docs/releases/v1/criterion-ledger.json +6269 -0
- magicite-1.0.0/docs/releases/v1/evidence/checkpoint-process-death-provenance.json +36 -0
- magicite-1.0.0/docs/releases/v1/evidence/checkpoint-process-death.json +9 -0
- magicite-1.0.0/docs/releases/v1/evidence/checks.json +39 -0
- magicite-1.0.0/docs/releases/v1/evidence/docs.txt +1 -0
- magicite-1.0.0/docs/releases/v1/evidence/environment.json +13 -0
- magicite-1.0.0/docs/releases/v1/evidence/generated.txt +1 -0
- magicite-1.0.0/docs/releases/v1/evidence/hashing-smoke-provenance.json +36 -0
- magicite-1.0.0/docs/releases/v1/evidence/hashing-smoke.json +544 -0
- magicite-1.0.0/docs/releases/v1/evidence/learning-containment.json +59 -0
- magicite-1.0.0/docs/releases/v1/evidence/learning-fully-gated-or-unavailable.json +55 -0
- magicite-1.0.0/docs/releases/v1/evidence/mypy.txt +1 -0
- magicite-1.0.0/docs/releases/v1/evidence/policy-dream-isolation.json +51 -0
- magicite-1.0.0/docs/releases/v1/evidence/policy-explicit-experimental.json +51 -0
- magicite-1.0.0/docs/releases/v1/evidence/policy-nonadaptive-default.json +55 -0
- magicite-1.0.0/docs/releases/v1/evidence/policy-pinned-incumbent.json +63 -0
- magicite-1.0.0/docs/releases/v1/evidence/privacy-checkpoint-rpo.json +72 -0
- magicite-1.0.0/docs/releases/v1/evidence/privacy-data-map.json +58 -0
- magicite-1.0.0/docs/releases/v1/evidence/privacy-historical-cleanup.json +59 -0
- magicite-1.0.0/docs/releases/v1/evidence/privacy-lifecycle-tests.json +113 -0
- magicite-1.0.0/docs/releases/v1/evidence/privacy-no-default-raw.json +73 -0
- magicite-1.0.0/docs/releases/v1/evidence/probe-checkpoint-process-death.py +61 -0
- magicite-1.0.0/docs/releases/v1/evidence/pytest.txt +27 -0
- magicite-1.0.0/docs/releases/v1/evidence/reproduce-trust-mirror-loss.py +50 -0
- magicite-1.0.0/docs/releases/v1/evidence/review-record.json +23 -0
- magicite-1.0.0/docs/releases/v1/evidence/ruff.txt +1 -0
- magicite-1.0.0/docs/releases/v1/evidence/schema-frozen-schema.json +62 -0
- magicite-1.0.0/docs/releases/v1/evidence/schema-migration-downgrade-replay.json +72 -0
- magicite-1.0.0/docs/releases/v1/evidence/schema-roundtrip-corpus.json +51 -0
- magicite-1.0.0/docs/releases/v1/evidence/test-results.json +4191 -0
- magicite-1.0.0/docs/releases/v1/evidence/trust-diagnostic-provenance.json +36 -0
- magicite-1.0.0/docs/releases/v1/evidence/trust-mirror-loss.json +9 -0
- magicite-1.0.0/docs/releases/v1/gate-table.md +27 -0
- magicite-1.0.0/docs/releases/v1/privacy-data-map.md +25 -0
- magicite-1.0.0/docs/releases/v1/r2/README.md +102 -0
- magicite-1.0.0/docs/releases/v1/r2/criterion-ledger.json +8715 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/build_r2_package.py +1760 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/checkpoint-process-death-custody.json +10 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/checkpoint-process-death-provenance.json +49 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/checks.json +47 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/docs.txt +1 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/environment.json +87 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/generated.txt +1 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/historical-diagnostics-at-r2-source.json +35 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/junit.xml +1 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/learning-containment.json +137 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/learning-fully-gated-or-unavailable.json +133 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/mypy.txt +1 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/policy-dream-isolation.json +129 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/policy-explicit-experimental.json +129 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/policy-nonadaptive-default.json +133 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/policy-pinned-incumbent.json +141 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/privacy-checkpoint-rpo.json +150 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/privacy-data-map.json +136 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/privacy-historical-cleanup.json +137 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/privacy-lifecycle-tests.json +199 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/privacy-no-default-raw.json +151 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/probe-checkpoint-process-death-custody.py +111 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/pytest.txt +29 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/reproduce-trust-mirror-loss-custody.py +179 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/review-record.json +23 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/ruff.txt +1 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/schema-frozen-schema.json +140 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/schema-migration-downgrade-replay.json +150 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/schema-roundtrip-corpus.json +129 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/test-results.json +4979 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/trust-mirror-diagnostic-provenance.json +57 -0
- magicite-1.0.0/docs/releases/v1/r2/evidence/trust-mirror-loss-custody.json +68 -0
- magicite-1.0.0/docs/releases/v1/r2/gate-table.md +27 -0
- magicite-1.0.0/docs/releases/v1/r2/release-manifest.json +538 -0
- magicite-1.0.0/docs/releases/v1/r3/README.md +56 -0
- magicite-1.0.0/docs/releases/v1/r3/criterion-ledger.json +3608 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/build_r3_package.py +686 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/checks.json +134 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/docs.exit +1 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/docs.txt +1 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/environment.json +13 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/findings-register-68725d4.md +104 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/focused.exit +1 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/focused.txt +2 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/generated.exit +1 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/generated.txt +1 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/head.txt +1 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/historical-failure-summary.json +70 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/independent-adjacent-final.log +2 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/independent-adversarial-final.log +2 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/independent-c2-adversarial.log +2 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/independent-c2-focused.log +3 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/independent-focused-final.log +2 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/independent-package-references.log +10 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/independent-package-verify.log +5 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/independent-release-validator.log +26 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/independent_package_check.py.txt +29 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/inherited-provenance.json +31 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/junit.xml +1 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/mypy.exit +1 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/mypy.txt +1 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/package-review.json +49 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/package-review.md +52 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/primary-preservation.json +18 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/privacy-data-map.template.md +31 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/pytest.exit +1 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/pytest.txt +157 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/r3-open-items-68725d4.md +50 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/release-decision.json +42 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/release-negative-controls.exit +1 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/release-negative-controls.txt +2 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/review-c2.md +16 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/review-candidate-binding-c2.md +6 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/review-candidate-binding.md +11 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/review-final.md +25 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/ruff.exit +1 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/ruff.txt +1 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/source-bindings.json +100 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/status-after.txt +0 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/status-before.txt +0 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/test-results.json +18 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/test_independent_c2.py.txt +26 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/test_independent_review_final.py.txt +27 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/threat-model-68725d4.md +219 -0
- magicite-1.0.0/docs/releases/v1/r3/evidence/zero-write-doctor.json +54 -0
- magicite-1.0.0/docs/releases/v1/r3/gate-table.md +26 -0
- magicite-1.0.0/docs/releases/v1/r3/package-index.json +222 -0
- magicite-1.0.0/docs/releases/v1/r3/privacy-data-map.md +31 -0
- magicite-1.0.0/docs/releases/v1/r3/release-manifest.json +264 -0
- magicite-1.0.0/docs/releases/v1/release-manifest.json +473 -0
- magicite-1.0.0/docs/releases/v1/release-reconciliation-2026-10-11.md +35 -0
- magicite-1.0.0/docs/releases/v1/roadmap-proposal-2026-10-11.md +25 -0
- magicite-1.0.0/docs/releases/v1/trust-ledger-proposal.md +61 -0
- magicite-1.0.0/docs/research/exploratory/consolidated-research-graph-mcp-proposal.md +320 -0
- magicite-1.0.0/docs/research/exploratory/engram-format.md +174 -0
- magicite-1.0.0/docs/research/exploratory/graphs-from-euler-to-today.md +71 -0
- magicite-1.0.0/docs/research/exploratory/mcp20-server-dossier.md +872 -0
- magicite-1.0.0/docs/research/exploratory/neuroscience-knowledge-acquisition.md +133 -0
- magicite-1.0.0/docs/security/bounded-hardening-assessment.md +75 -0
- magicite-1.0.0/docs/setup.md +168 -0
- magicite-1.0.0/docs/support-policy.json +62 -0
- magicite-1.0.0/docs/v1-baselines.md +45 -0
- magicite-1.0.0/pyproject.toml +129 -0
- magicite-1.0.0/scripts/capture_mcp_stdio.py +256 -0
- magicite-1.0.0/scripts/check_docs.py +180 -0
- magicite-1.0.0/scripts/check_evaluation_results.py +214 -0
- magicite-1.0.0/scripts/check_generated_docs.py +132 -0
- magicite-1.0.0/scripts/check_provenance.py +38 -0
- magicite-1.0.0/scripts/check_release_manifest.py +338 -0
- magicite-1.0.0/scripts/check_supply_chain.py +205 -0
- magicite-1.0.0/scripts/docs_v1_contracts.py +122 -0
- magicite-1.0.0/scripts/dogfood_graph_check.py +175 -0
- magicite-1.0.0/scripts/dogfood_ids.py +89 -0
- magicite-1.0.0/scripts/dogfood_mcp_entry.py +97 -0
- magicite-1.0.0/scripts/dogfood_reset.py +140 -0
- magicite-1.0.0/scripts/dogfood_session.py +249 -0
- magicite-1.0.0/scripts/dogfood_tier_probe.py +108 -0
- magicite-1.0.0/scripts/prepare_performance_corpus.py +413 -0
- magicite-1.0.0/scripts/probe_custodian_fsync_order.py +571 -0
- magicite-1.0.0/scripts/qualify_calibration_data.py +96 -0
- magicite-1.0.0/scripts/qualify_claude_host.py +912 -0
- magicite-1.0.0/scripts/qualify_custody_linux.py +1038 -0
- magicite-1.0.0/scripts/qualify_distributions.py +325 -0
- magicite-1.0.0/scripts/qualify_official_quality.py +1136 -0
- magicite-1.0.0/scripts/qualify_performance_linux.sh +420 -0
- magicite-1.0.0/scripts/qualify_production_empirical.py +591 -0
- magicite-1.0.0/scripts/qualify_skillret_corpus.py +300 -0
- magicite-1.0.0/scripts/run_benchmark_matrix.py +1185 -0
- magicite-1.0.0/scripts/smoke_operator_tutorial.py +345 -0
- magicite-1.0.0/scripts/verify_wheel_install.py +623 -0
- magicite-1.0.0/src/magicite/__init__.py +0 -0
- magicite-1.0.0/src/magicite/__main__.py +760 -0
- magicite-1.0.0/src/magicite/config.py +531 -0
- magicite-1.0.0/src/magicite/core/__init__.py +0 -0
- magicite-1.0.0/src/magicite/core/activation.py +310 -0
- magicite-1.0.0/src/magicite/core/approvals.py +685 -0
- magicite-1.0.0/src/magicite/core/audit.py +161 -0
- magicite-1.0.0/src/magicite/core/backup.py +1763 -0
- magicite-1.0.0/src/magicite/core/bundles.py +507 -0
- magicite-1.0.0/src/magicite/core/calibration.py +661 -0
- magicite-1.0.0/src/magicite/core/calibration_admission.py +227 -0
- magicite-1.0.0/src/magicite/core/candidates.py +610 -0
- magicite-1.0.0/src/magicite/core/communities.py +156 -0
- magicite-1.0.0/src/magicite/core/comparison_budget.py +63 -0
- magicite-1.0.0/src/magicite/core/composition.py +1270 -0
- magicite-1.0.0/src/magicite/core/context.py +168 -0
- magicite-1.0.0/src/magicite/core/custody_admin.py +310 -0
- magicite-1.0.0/src/magicite/core/decay.py +365 -0
- magicite-1.0.0/src/magicite/core/decay_math.py +31 -0
- magicite-1.0.0/src/magicite/core/distill.py +308 -0
- magicite-1.0.0/src/magicite/core/dream.py +1186 -0
- magicite-1.0.0/src/magicite/core/edge_weight.py +98 -0
- magicite-1.0.0/src/magicite/core/eligibility.py +858 -0
- magicite-1.0.0/src/magicite/core/evaluation_context.py +76 -0
- magicite-1.0.0/src/magicite/core/evidence.py +3167 -0
- magicite-1.0.0/src/magicite/core/fingerprint_key.py +145 -0
- magicite-1.0.0/src/magicite/core/fitness.py +159 -0
- magicite-1.0.0/src/magicite/core/index_generation.py +856 -0
- magicite-1.0.0/src/magicite/core/lifecycle.py +521 -0
- magicite-1.0.0/src/magicite/core/migration.py +1340 -0
- magicite-1.0.0/src/magicite/core/plasticity.py +164 -0
- magicite-1.0.0/src/magicite/core/policy_store.py +805 -0
- magicite-1.0.0/src/magicite/core/recovery_gate.py +319 -0
- magicite-1.0.0/src/magicite/core/registry.py +2011 -0
- magicite-1.0.0/src/magicite/core/router.py +2553 -0
- magicite-1.0.0/src/magicite/core/routing_policy.py +221 -0
- magicite-1.0.0/src/magicite/core/session.py +191 -0
- magicite-1.0.0/src/magicite/core/signals.py +338 -0
- magicite-1.0.0/src/magicite/core/trust.py +921 -0
- magicite-1.0.0/src/magicite/core/trust_artifacts.py +428 -0
- magicite-1.0.0/src/magicite/core/trust_custodian.py +822 -0
- magicite-1.0.0/src/magicite/core/trust_custodian_transport.py +548 -0
- magicite-1.0.0/src/magicite/core/trust_journal.py +593 -0
- magicite-1.0.0/src/magicite/core/trust_legacy.py +646 -0
- magicite-1.0.0/src/magicite/core/trust_reconciliation.py +166 -0
- magicite-1.0.0/src/magicite/core/trust_rotation.py +101 -0
- magicite-1.0.0/src/magicite/core/trust_rotation_client.py +101 -0
- magicite-1.0.0/src/magicite/core/trust_rotation_service.py +121 -0
- magicite-1.0.0/src/magicite/core/writer_guard.py +171 -0
- magicite-1.0.0/src/magicite/embeddings/__init__.py +61 -0
- magicite-1.0.0/src/magicite/embeddings/base.py +37 -0
- magicite-1.0.0/src/magicite/embeddings/cache.py +76 -0
- magicite-1.0.0/src/magicite/embeddings/fastembed_provider.py +206 -0
- magicite-1.0.0/src/magicite/embeddings/hashing_provider.py +75 -0
- magicite-1.0.0/src/magicite/embeddings/ollama_provider.py +98 -0
- magicite-1.0.0/src/magicite/embeddings/reranker.py +68 -0
- magicite-1.0.0/src/magicite/engram/__init__.py +106 -0
- magicite-1.0.0/src/magicite/engram/assets.py +210 -0
- magicite-1.0.0/src/magicite/engram/digests.py +93 -0
- magicite-1.0.0/src/magicite/engram/ids.py +79 -0
- magicite-1.0.0/src/magicite/engram/lint.py +220 -0
- magicite-1.0.0/src/magicite/engram/model.py +252 -0
- magicite-1.0.0/src/magicite/engram/model_v1.py +250 -0
- magicite-1.0.0/src/magicite/engram/parser.py +330 -0
- magicite-1.0.0/src/magicite/engram/schema/engram-0.2.schema.json +176 -0
- magicite-1.0.0/src/magicite/engram/schema/engram-1.0.schema.json +325 -0
- magicite-1.0.0/src/magicite/engram/schema_validate.py +252 -0
- magicite-1.0.0/src/magicite/engram/skillmd.py +383 -0
- magicite-1.0.0/src/magicite/engram/transform.py +257 -0
- magicite-1.0.0/src/magicite/engram/version_constraints.py +80 -0
- magicite-1.0.0/src/magicite/engram/writer.py +599 -0
- magicite-1.0.0/src/magicite/errors.py +115 -0
- magicite-1.0.0/src/magicite/eval/__init__.py +73 -0
- magicite-1.0.0/src/magicite/eval/__main__.py +619 -0
- magicite-1.0.0/src/magicite/eval/ablations.py +206 -0
- magicite-1.0.0/src/magicite/eval/bench.py +519 -0
- magicite-1.0.0/src/magicite/eval/calibration_consumer.py +745 -0
- magicite-1.0.0/src/magicite/eval/composition_eval.py +166 -0
- magicite-1.0.0/src/magicite/eval/data_readiness.py +644 -0
- magicite-1.0.0/src/magicite/eval/digests.py +48 -0
- magicite-1.0.0/src/magicite/eval/envelopes.py +421 -0
- magicite-1.0.0/src/magicite/eval/external.py +166 -0
- magicite-1.0.0/src/magicite/eval/gold.py +175 -0
- magicite-1.0.0/src/magicite/eval/grouped_evaluation.py +891 -0
- magicite-1.0.0/src/magicite/eval/host_tasks.py +161 -0
- magicite-1.0.0/src/magicite/eval/manifests.py +395 -0
- magicite-1.0.0/src/magicite/eval/metrics.py +462 -0
- magicite-1.0.0/src/magicite/eval/operator_cli.py +565 -0
- magicite-1.0.0/src/magicite/eval/production.py +353 -0
- magicite-1.0.0/src/magicite/eval/profiles.py +356 -0
- magicite-1.0.0/src/magicite/eval/protected_benchmark.py +870 -0
- magicite-1.0.0/src/magicite/eval/quality.py +249 -0
- magicite-1.0.0/src/magicite/eval/query_context.py +24 -0
- magicite-1.0.0/src/magicite/eval/runner.py +130 -0
- magicite-1.0.0/src/magicite/eval/scale.py +53 -0
- magicite-1.0.0/src/magicite/eval/skillret.py +444 -0
- magicite-1.0.0/src/magicite/eval/unevaluated.py +197 -0
- magicite-1.0.0/src/magicite/eval/validate.py +582 -0
- magicite-1.0.0/src/magicite/eval/verdicts.py +432 -0
- magicite-1.0.0/src/magicite/mcp/__init__.py +0 -0
- magicite-1.0.0/src/magicite/mcp/app.py +579 -0
- magicite-1.0.0/src/magicite/mcp/bind_dream.py +95 -0
- magicite-1.0.0/src/magicite/mcp/bind_inspect.py +117 -0
- magicite-1.0.0/src/magicite/mcp/bind_lifecycle.py +343 -0
- magicite-1.0.0/src/magicite/mcp/bind_ops.py +616 -0
- magicite-1.0.0/src/magicite/mcp/bind_registry.py +114 -0
- magicite-1.0.0/src/magicite/mcp/bind_retrieval.py +646 -0
- magicite-1.0.0/src/magicite/mcp/bind_signals.py +102 -0
- magicite-1.0.0/src/magicite/mcp/redact.py +80 -0
- magicite-1.0.0/src/magicite/mcp/registry.py +146 -0
- magicite-1.0.0/src/magicite/mcp/schemas.py +572 -0
- magicite-1.0.0/src/magicite/obs/__init__.py +0 -0
- magicite-1.0.0/src/magicite/obs/doctor.py +720 -0
- magicite-1.0.0/src/magicite/obs/events.py +112 -0
- magicite-1.0.0/src/magicite/obs/kpi.py +203 -0
- magicite-1.0.0/src/magicite/obs/logging.py +54 -0
- magicite-1.0.0/src/magicite/project_init.py +499 -0
- magicite-1.0.0/src/magicite/storage/__init__.py +0 -0
- magicite-1.0.0/src/magicite/storage/authorizer.py +141 -0
- magicite-1.0.0/src/magicite/storage/db.py +154 -0
- magicite-1.0.0/src/magicite/storage/durable.py +542 -0
- magicite-1.0.0/src/magicite/storage/ephemeral.py +544 -0
- magicite-1.0.0/src/magicite/storage/lease.py +593 -0
- magicite-1.0.0/src/magicite/storage/migration_ops.py +345 -0
- magicite-1.0.0/src/magicite/storage/migrations/001_init.sql +206 -0
- magicite-1.0.0/src/magicite/storage/migrations/002_integrity_recovery.sql +9 -0
- magicite-1.0.0/src/magicite/storage/migrations/003_migration_authority.sql +53 -0
- magicite-1.0.0/src/magicite/storage/migrations/004_fulltext_index.sql +37 -0
- magicite-1.0.0/src/magicite/storage/migrations/005_bundle_trust.sql +37 -0
- magicite-1.0.0/src/magicite/storage/migrations/006_evidence_ledger.sql +48 -0
- magicite-1.0.0/src/magicite/storage/migrations/registry.py +109 -0
- magicite-1.0.0/src/magicite/storage/queries.py +378 -0
- magicite-1.0.0/tests/__init__.py +5 -0
- magicite-1.0.0/tests/acceptance/_stdio_escape_driver.py +73 -0
- magicite-1.0.0/tests/acceptance/test_declared_edge_weight.py +50 -0
- magicite-1.0.0/tests/acceptance/test_docker_smoke.py +471 -0
- magicite-1.0.0/tests/acceptance/test_dream_idempotent.py +119 -0
- magicite-1.0.0/tests/acceptance/test_install_channels.py +523 -0
- magicite-1.0.0/tests/acceptance/test_operator_tutorial.py +32 -0
- magicite-1.0.0/tests/acceptance/test_p0_hot_path.py +223 -0
- magicite-1.0.0/tests/acceptance/test_rebuild_invariant.py +448 -0
- magicite-1.0.0/tests/acceptance/test_stdio_cancellation.py +93 -0
- magicite-1.0.0/tests/acceptance/test_stdio_handshake.py +269 -0
- magicite-1.0.0/tests/acceptance/test_tool_manifest.py +59 -0
- magicite-1.0.0/tests/acceptance/test_v1_conformance.py +176 -0
- magicite-1.0.0/tests/acceptance/test_walking_skeleton.py +67 -0
- magicite-1.0.0/tests/conftest.py +148 -0
- magicite-1.0.0/tests/fixtures/adversarial/trust/manifest.json +3624 -0
- magicite-1.0.0/tests/fixtures/calibration-data/README.md +1 -0
- magicite-1.0.0/tests/fixtures/calibration-data/candidate-one.txt +1 -0
- magicite-1.0.0/tests/fixtures/calibration-data/candidate-two.txt +1 -0
- magicite-1.0.0/tests/fixtures/calibration-data/judgment1.json +9 -0
- magicite-1.0.0/tests/fixtures/calibration-data/judgment2.json +9 -0
- magicite-1.0.0/tests/fixtures/calibration-data/labels.json +26 -0
- magicite-1.0.0/tests/fixtures/calibration-data/packet.json +86 -0
- magicite-1.0.0/tests/fixtures/calibration-data/partitions.json +14 -0
- magicite-1.0.0/tests/fixtures/calibration-data/pool.json +16 -0
- magicite-1.0.0/tests/fixtures/calibration-data/preregistration.json +4 -0
- magicite-1.0.0/tests/fixtures/calibration-data/provenance.json +83 -0
- magicite-1.0.0/tests/fixtures/calibration-data/review0.json +5 -0
- magicite-1.0.0/tests/fixtures/calibration-data/review1.json +5 -0
- magicite-1.0.0/tests/fixtures/calibration-data/review2.json +5 -0
- magicite-1.0.0/tests/fixtures/calibration-data/runtime.json +17 -0
- magicite-1.0.0/tests/fixtures/calibration-data/source0.json +11 -0
- magicite-1.0.0/tests/fixtures/calibration-data/source1.json +11 -0
- magicite-1.0.0/tests/fixtures/calibration-data/source2.json +11 -0
- magicite-1.0.0/tests/fixtures/calibration-data/time0.json +6 -0
- magicite-1.0.0/tests/fixtures/calibration-data/time1.json +6 -0
- magicite-1.0.0/tests/fixtures/calibration-data/time2.json +6 -0
- magicite-1.0.0/tests/fixtures/composition-v1/host_verifier.py +273 -0
- magicite-1.0.0/tests/fixtures/composition-v1/structural-corpus.json +46 -0
- magicite-1.0.0/tests/fixtures/composition-v1/tasks/echo-ok.json +15 -0
- magicite-1.0.0/tests/fixtures/eligibility-v1/consumer-paths.json +127 -0
- magicite-1.0.0/tests/fixtures/engram-v1/assets/good/helper.sh +2 -0
- magicite-1.0.0/tests/fixtures/engram-v1/negative/asset-absolute.json +19 -0
- magicite-1.0.0/tests/fixtures/engram-v1/negative/asset-backslash.json +19 -0
- magicite-1.0.0/tests/fixtures/engram-v1/negative/asset-traversal.json +19 -0
- magicite-1.0.0/tests/fixtures/engram-v1/negative/invalid-semver-range.egr.md +32 -0
- magicite-1.0.0/tests/fixtures/engram-v1/negative/unknown-required-extension.egr.md +33 -0
- magicite-1.0.0/tests/fixtures/engram-v1/positive/sample-host-tooling.egr.md +89 -0
- magicite-1.0.0/tests/fixtures/engram-v1/relations/before-supersedes.egr.md +49 -0
- magicite-1.0.0/tests/fixtures/engram-v1/relations/shared-relation-fixtures.json +33 -0
- magicite-1.0.0/tests/fixtures/protocol-v1/host-support-manifest.json +50 -0
- magicite-1.0.0/tests/fixtures/protocol-v1/tool-manifest.snapshot.json +3407 -0
- magicite-1.0.0/tests/fixtures/protocol-v1/transcripts/claude-code.UNEVALUATED.json +6 -0
- magicite-1.0.0/tests/fixtures/protocol-v1/transcripts/stdio-generic.json +29 -0
- magicite-1.0.0/tests/fixtures/toy-registry/engrams/lutris-wine-prefix-setup.egr.md +50 -0
- magicite-1.0.0/tests/fixtures/toy-registry/engrams/nvidia-prime-render-offload.egr.md +50 -0
- magicite-1.0.0/tests/fixtures/toy-registry/engrams/proton-clean-install.egr.md +51 -0
- magicite-1.0.0/tests/fixtures/toy-registry/engrams/proton-ge-proton-downgrade.egr.md +54 -0
- magicite-1.0.0/tests/fixtures/toy-registry/engrams/proton-verify-installation.egr.md +51 -0
- magicite-1.0.0/tests/fixtures/toy-registry/engrams/steam-prefix-access.egr.md +50 -0
- magicite-1.0.0/tests/fixtures/toy-registry/engrams/steam-runtime-repair.egr.md +50 -0
- magicite-1.0.0/tests/fixtures/toy-registry/queries.jsonl +41 -0
- magicite-1.0.0/tests/fixtures/toy-registry/skills/proton-battleye-eac-toggle/SKILL.md +18 -0
- magicite-1.0.0/tests/fixtures/toy-registry/skills/steam-download-region-fix/SKILL.md +18 -0
- magicite-1.0.0/tests/fixtures/toy-registry/skills/wine-dxvk-cache-clear/SKILL.md +18 -0
- magicite-1.0.0/tests/fuzz/__init__.py +1 -0
- magicite-1.0.0/tests/fuzz/harness.py +328 -0
- magicite-1.0.0/tests/fuzz/test_bounded_fuzz.py +433 -0
- magicite-1.0.0/tests/integration/test_backup_restore_v1.py +839 -0
- magicite-1.0.0/tests/integration/test_bench.py +131 -0
- magicite-1.0.0/tests/integration/test_composition_v1.py +538 -0
- magicite-1.0.0/tests/integration/test_custody_linux_qualification.py +236 -0
- magicite-1.0.0/tests/integration/test_dream_crash_recovery.py +129 -0
- magicite-1.0.0/tests/integration/test_dream_cycle.py +171 -0
- magicite-1.0.0/tests/integration/test_evidence_durability.py +435 -0
- magicite-1.0.0/tests/integration/test_evidence_recovery.py +180 -0
- magicite-1.0.0/tests/integration/test_idempotency_recovery.py +149 -0
- magicite-1.0.0/tests/integration/test_index_generation.py +179 -0
- magicite-1.0.0/tests/integration/test_index_identity.py +193 -0
- magicite-1.0.0/tests/integration/test_lease_multiprocess.py +691 -0
- magicite-1.0.0/tests/integration/test_migration_v1.py +603 -0
- magicite-1.0.0/tests/integration/test_operator_cli_completeness.py +316 -0
- magicite-1.0.0/tests/integration/test_policy_fencing.py +255 -0
- magicite-1.0.0/tests/integration/test_project_init.py +158 -0
- magicite-1.0.0/tests/integration/test_recent_failure_context.py +43 -0
- magicite-1.0.0/tests/integration/test_register_import.py +161 -0
- magicite-1.0.0/tests/integration/test_route_end_to_end.py +1384 -0
- magicite-1.0.0/tests/integration/test_route_latency.py +263 -0
- magicite-1.0.0/tests/integration/test_route_reproducibility.py +43 -0
- magicite-1.0.0/tests/integration/test_skillmd_roundtrip.py +146 -0
- magicite-1.0.0/tests/integration/test_stable_policy_activation.py +232 -0
- magicite-1.0.0/tests/integration/test_th10_old_reader_downgrade.py +401 -0
- magicite-1.0.0/tests/integration/test_th_restore_overlay_authority.py +387 -0
- magicite-1.0.0/tests/integration/test_trust_adversarial_corpus.py +1298 -0
- magicite-1.0.0/tests/integration/test_trust_recovery.py +124 -0
- magicite-1.0.0/tests/integration/test_upgrade_v02.py +116 -0
- magicite-1.0.0/tests/support/__init__.py +1 -0
- magicite-1.0.0/tests/support/custody_adapter.py +209 -0
- magicite-1.0.0/tests/support/raises_recorder.py +64 -0
- magicite-1.0.0/tests/support/serve_with_fixture_custody.py +27 -0
- magicite-1.0.0/tests/unit/__init__.py +1 -0
- magicite-1.0.0/tests/unit/core/__init__.py +1 -0
- magicite-1.0.0/tests/unit/core/test_activation.py +121 -0
- magicite-1.0.0/tests/unit/core/test_approvals.py +268 -0
- magicite-1.0.0/tests/unit/core/test_audit.py +101 -0
- magicite-1.0.0/tests/unit/core/test_calibration.py +166 -0
- magicite-1.0.0/tests/unit/core/test_calibration_admission.py +316 -0
- magicite-1.0.0/tests/unit/core/test_candidates.py +330 -0
- magicite-1.0.0/tests/unit/core/test_communities.py +102 -0
- magicite-1.0.0/tests/unit/core/test_composition.py +304 -0
- magicite-1.0.0/tests/unit/core/test_custody_admin.py +294 -0
- magicite-1.0.0/tests/unit/core/test_custody_test_fixture.py +44 -0
- magicite-1.0.0/tests/unit/core/test_custody_writer_guard.py +229 -0
- magicite-1.0.0/tests/unit/core/test_decay.py +273 -0
- magicite-1.0.0/tests/unit/core/test_distill.py +110 -0
- magicite-1.0.0/tests/unit/core/test_dream.py +368 -0
- magicite-1.0.0/tests/unit/core/test_dream_recovery.py +110 -0
- magicite-1.0.0/tests/unit/core/test_edge_weight.py +135 -0
- magicite-1.0.0/tests/unit/core/test_eligibility.py +580 -0
- magicite-1.0.0/tests/unit/core/test_events.py +9 -0
- magicite-1.0.0/tests/unit/core/test_evidence.py +146 -0
- magicite-1.0.0/tests/unit/core/test_evidence_atlas_fixes.py +362 -0
- magicite-1.0.0/tests/unit/core/test_evidence_round2_integrity.py +345 -0
- magicite-1.0.0/tests/unit/core/test_evidence_round3_export_registry.py +229 -0
- magicite-1.0.0/tests/unit/core/test_evidence_round4_export_hardening.py +253 -0
- magicite-1.0.0/tests/unit/core/test_evidence_round5_marker_auth.py +240 -0
- magicite-1.0.0/tests/unit/core/test_evidence_round6_authority.py +259 -0
- magicite-1.0.0/tests/unit/core/test_evidence_round7_migrate_empty_only.py +147 -0
- magicite-1.0.0/tests/unit/core/test_fingerprint_key.py +166 -0
- magicite-1.0.0/tests/unit/core/test_fitness.py +183 -0
- magicite-1.0.0/tests/unit/core/test_fuzz_regressions.py +101 -0
- magicite-1.0.0/tests/unit/core/test_lifecycle.py +109 -0
- magicite-1.0.0/tests/unit/core/test_plasticity.py +148 -0
- magicite-1.0.0/tests/unit/core/test_policy_boundary.py +287 -0
- magicite-1.0.0/tests/unit/core/test_policy_governance_evidence.py +107 -0
- magicite-1.0.0/tests/unit/core/test_registry.py +20 -0
- magicite-1.0.0/tests/unit/core/test_registry_core.py +146 -0
- magicite-1.0.0/tests/unit/core/test_review_approve_busy_wait.py +363 -0
- magicite-1.0.0/tests/unit/core/test_router.py +361 -0
- magicite-1.0.0/tests/unit/core/test_router_core.py +140 -0
- magicite-1.0.0/tests/unit/core/test_router_policy.py +710 -0
- magicite-1.0.0/tests/unit/core/test_session.py +185 -0
- magicite-1.0.0/tests/unit/core/test_signals.py +333 -0
- magicite-1.0.0/tests/unit/core/test_similar_to_determinism.py +69 -0
- magicite-1.0.0/tests/unit/core/test_th_fault_ack_matrix.py +318 -0
- magicite-1.0.0/tests/unit/core/test_th_lease_post_commit.py +215 -0
- magicite-1.0.0/tests/unit/core/test_th_mutation_binding.py +315 -0
- magicite-1.0.0/tests/unit/core/test_th_peer_platform_fixtures.py +172 -0
- magicite-1.0.0/tests/unit/core/test_th_retry_matrix.py +322 -0
- magicite-1.0.0/tests/unit/core/test_th_single_snapshot_sites.py +516 -0
- magicite-1.0.0/tests/unit/core/test_trust_artifact_transform.py +270 -0
- magicite-1.0.0/tests/unit/core/test_trust_atlas_fixes.py +371 -0
- magicite-1.0.0/tests/unit/core/test_trust_authority_integration.py +1105 -0
- magicite-1.0.0/tests/unit/core/test_trust_bundle.py +93 -0
- magicite-1.0.0/tests/unit/core/test_trust_custodian.py +315 -0
- magicite-1.0.0/tests/unit/core/test_trust_custodian_transport.py +323 -0
- magicite-1.0.0/tests/unit/core/test_trust_history_paging.py +256 -0
- magicite-1.0.0/tests/unit/core/test_trust_intake.py +177 -0
- magicite-1.0.0/tests/unit/core/test_trust_journal.py +552 -0
- magicite-1.0.0/tests/unit/core/test_trust_legacy.py +660 -0
- magicite-1.0.0/tests/unit/core/test_trust_r2_import_safety.py +133 -0
- magicite-1.0.0/tests/unit/core/test_trust_r3_staging_journal.py +206 -0
- magicite-1.0.0/tests/unit/core/test_trust_r4_journal_auth.py +273 -0
- magicite-1.0.0/tests/unit/core/test_trust_r5_path_containment.py +180 -0
- magicite-1.0.0/tests/unit/core/test_trust_reconciliation.py +171 -0
- magicite-1.0.0/tests/unit/core/test_trust_rotation.py +273 -0
- magicite-1.0.0/tests/unit/core/test_trust_rotation_transport.py +432 -0
- magicite-1.0.0/tests/unit/embeddings/test_cache.py +100 -0
- magicite-1.0.0/tests/unit/embeddings/test_fastembed_provider.py +156 -0
- magicite-1.0.0/tests/unit/embeddings/test_hashing_provider.py +42 -0
- magicite-1.0.0/tests/unit/embeddings/test_ollama_provider.py +71 -0
- magicite-1.0.0/tests/unit/embeddings/test_provider_factory.py +85 -0
- magicite-1.0.0/tests/unit/engram/test_ids.py +38 -0
- magicite-1.0.0/tests/unit/engram/test_lint.py +82 -0
- magicite-1.0.0/tests/unit/engram/test_parser.py +110 -0
- magicite-1.0.0/tests/unit/engram/test_skillmd.py +264 -0
- magicite-1.0.0/tests/unit/engram/test_v1_schema.py +378 -0
- magicite-1.0.0/tests/unit/engram/test_writer.py +112 -0
- magicite-1.0.0/tests/unit/eval/test_ablations.py +118 -0
- magicite-1.0.0/tests/unit/eval/test_bench_baselines.py +253 -0
- magicite-1.0.0/tests/unit/eval/test_benchmark_matrix.py +596 -0
- magicite-1.0.0/tests/unit/eval/test_calibration_consumer.py +657 -0
- magicite-1.0.0/tests/unit/eval/test_data_readiness.py +345 -0
- magicite-1.0.0/tests/unit/eval/test_grouped_evaluation.py +423 -0
- magicite-1.0.0/tests/unit/eval/test_manifests.py +746 -0
- magicite-1.0.0/tests/unit/eval/test_metrics.py +189 -0
- magicite-1.0.0/tests/unit/eval/test_official_quality.py +107 -0
- magicite-1.0.0/tests/unit/eval/test_production_empirical.py +378 -0
- magicite-1.0.0/tests/unit/eval/test_protected_benchmark.py +630 -0
- magicite-1.0.0/tests/unit/eval/test_release_verdicts.py +246 -0
- magicite-1.0.0/tests/unit/eval/test_s14_audit.py +351 -0
- magicite-1.0.0/tests/unit/eval/test_scale_unevaluated.py +783 -0
- magicite-1.0.0/tests/unit/eval/test_skillret.py +227 -0
- magicite-1.0.0/tests/unit/mcp/__init__.py +1 -0
- magicite-1.0.0/tests/unit/mcp/test_bind_dream.py +78 -0
- magicite-1.0.0/tests/unit/mcp/test_bind_inspect.py +208 -0
- magicite-1.0.0/tests/unit/mcp/test_bind_lifecycle.py +263 -0
- magicite-1.0.0/tests/unit/mcp/test_bind_ops_cli.py +98 -0
- magicite-1.0.0/tests/unit/mcp/test_bind_registry_checkpoint.py +36 -0
- magicite-1.0.0/tests/unit/mcp/test_bind_retrieval.py +374 -0
- magicite-1.0.0/tests/unit/mcp/test_bind_signals.py +76 -0
- magicite-1.0.0/tests/unit/mcp/test_dispatch_call.py +191 -0
- magicite-1.0.0/tests/unit/mcp/test_export_containment.py +58 -0
- magicite-1.0.0/tests/unit/mcp/test_idempotency.py +209 -0
- magicite-1.0.0/tests/unit/mcp/test_redact.py +85 -0
- magicite-1.0.0/tests/unit/mcp/test_registry.py +41 -0
- magicite-1.0.0/tests/unit/mcp/test_schemas.py +51 -0
- magicite-1.0.0/tests/unit/mcp/test_typed_route_context.py +137 -0
- magicite-1.0.0/tests/unit/mcp/test_v1_retrieval.py +225 -0
- magicite-1.0.0/tests/unit/obs/__init__.py +1 -0
- magicite-1.0.0/tests/unit/obs/test_doctor.py +319 -0
- magicite-1.0.0/tests/unit/obs/test_events.py +69 -0
- magicite-1.0.0/tests/unit/obs/test_kpi.py +70 -0
- magicite-1.0.0/tests/unit/obs/test_th_custody_zero_write_canary.py +424 -0
- magicite-1.0.0/tests/unit/server/__init__.py +1 -0
- magicite-1.0.0/tests/unit/server/test_app.py +9 -0
- magicite-1.0.0/tests/unit/server/test_bind_inspect.py +9 -0
- magicite-1.0.0/tests/unit/server/test_bind_retrieval.py +9 -0
- magicite-1.0.0/tests/unit/storage/test_authorizer.py +257 -0
- magicite-1.0.0/tests/unit/storage/test_db.py +92 -0
- magicite-1.0.0/tests/unit/storage/test_durable.py +95 -0
- magicite-1.0.0/tests/unit/storage/test_ephemeral.py +228 -0
- magicite-1.0.0/tests/unit/storage/test_lease.py +296 -0
- magicite-1.0.0/tests/unit/storage/test_migration_ops.py +55 -0
- magicite-1.0.0/tests/unit/storage/test_migration_registry.py +34 -0
- magicite-1.0.0/tests/unit/storage/test_queries.py +40 -0
- magicite-1.0.0/tests/unit/test_cli_doctor.py +42 -0
- magicite-1.0.0/tests/unit/test_cli_serve_errors.py +84 -0
- magicite-1.0.0/tests/unit/test_cli_version.py +13 -0
- magicite-1.0.0/tests/unit/test_config.py +139 -0
- magicite-1.0.0/tests/unit/test_docs_v1.py +169 -0
- magicite-1.0.0/tests/unit/test_g3_enforcement.py +112 -0
- magicite-1.0.0/tests/unit/test_p0_enforcement.py +142 -0
- magicite-1.0.0/tests/unit/test_probe_custodian_fsync_order.py +238 -0
- magicite-1.0.0/tests/unit/test_project_init.py +336 -0
- magicite-1.0.0/tests/unit/test_qualify_calibration_data.py +67 -0
- magicite-1.0.0/tests/unit/test_qualify_distributions.py +42 -0
- magicite-1.0.0/tests/unit/test_qualify_official_quality.py +312 -0
- magicite-1.0.0/tests/unit/test_qualify_skillret_corpus.py +87 -0
- magicite-1.0.0/tests/unit/test_real_host_qualification.py +690 -0
- magicite-1.0.0/tests/unit/test_release_manifest.py +321 -0
- magicite-1.0.0/tests/unit/test_verify_wheel_install.py +144 -0
- magicite-1.0.0/tests/unit/test_version.py +41 -0
- magicite-1.0.0/uv.lock +2271 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Keep the build context small and hermetic.
|
|
2
|
+
# The production Dockerfile only copies pyproject.toml + README.md + src/;
|
|
3
|
+
# Dockerfile.dev also copies tests/. Everything else is noise, and some of
|
|
4
|
+
# it (`.magicite/`, `.spectra/`, `.eidolons/`, `.mcp.json`) must never end up baked into
|
|
5
|
+
# a published image.
|
|
6
|
+
|
|
7
|
+
.venv/
|
|
8
|
+
__pycache__/
|
|
9
|
+
*.pyc
|
|
10
|
+
*.pyo
|
|
11
|
+
*.pyd
|
|
12
|
+
.pytest_cache/
|
|
13
|
+
.mypy_cache/
|
|
14
|
+
.ruff_cache/
|
|
15
|
+
.hypothesis/
|
|
16
|
+
.coverage
|
|
17
|
+
htmlcov/
|
|
18
|
+
|
|
19
|
+
dist/
|
|
20
|
+
build/
|
|
21
|
+
*.egg-info/
|
|
22
|
+
|
|
23
|
+
# Registry/runtime state — never ships in the image; the container reads
|
|
24
|
+
# it from a bind-mounted VOLUME at runtime instead. `.magicite/` is
|
|
25
|
+
# Magicite's own; `.spectra/` is ESL/tonberry's and is equally unwelcome
|
|
26
|
+
# in a published image.
|
|
27
|
+
.magicite/
|
|
28
|
+
.spectra/
|
|
29
|
+
|
|
30
|
+
.eidolons/
|
|
31
|
+
.atlas/
|
|
32
|
+
.claude/
|
|
33
|
+
.codex/
|
|
34
|
+
.git/
|
|
35
|
+
.gitignore
|
|
36
|
+
.github/
|
|
37
|
+
|
|
38
|
+
.DS_Store
|
|
39
|
+
.idea/
|
|
40
|
+
.vscode/
|
|
41
|
+
*.swp
|
|
42
|
+
*.swo
|
|
43
|
+
|
|
44
|
+
# Never ship local secrets (or any MCP client config carrying tokens) into
|
|
45
|
+
# an image.
|
|
46
|
+
.env
|
|
47
|
+
.env.*
|
|
48
|
+
.mcp.json
|
|
49
|
+
eidolons.mcp.lock
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Machine-local MCP wiring (absolute paths, restricted mode)
|
|
2
|
+
.mcp.json
|
|
3
|
+
eidolons.mcp.lock
|
|
4
|
+
|
|
5
|
+
# Eidolons scratch state
|
|
6
|
+
# .atlas/ is entirely generated scout state (symbol index, graph db, locks)
|
|
7
|
+
.atlas/
|
|
8
|
+
.eidolons/.context/
|
|
9
|
+
.eidolons/memories/
|
|
10
|
+
|
|
11
|
+
# Python
|
|
12
|
+
__pycache__/
|
|
13
|
+
*.py[cod]
|
|
14
|
+
.venv/
|
|
15
|
+
*.egg-info/
|
|
16
|
+
.pytest_cache/
|
|
17
|
+
.mypy_cache/
|
|
18
|
+
.ruff_cache/
|
|
19
|
+
.coverage
|
|
20
|
+
htmlcov/
|
|
21
|
+
dist/
|
|
22
|
+
build/
|
|
23
|
+
|
|
24
|
+
# Magicite runtime state — the graph DB is a rebuildable index (CR-2).
|
|
25
|
+
# Set MAGICITE_COMMIT_DB=1 and remove these lines to track it instead.
|
|
26
|
+
skill-graph.db
|
|
27
|
+
skill-graph.db-wal
|
|
28
|
+
skill-graph.db-shm
|
|
29
|
+
|
|
30
|
+
# Ephemeral worktrees used for fail-before/pass-after proofs
|
|
31
|
+
.claude/worktrees/
|
|
32
|
+
|
|
33
|
+
# The three directories Config.ensure_dirs() creates at every `magicite serve`
|
|
34
|
+
# boot. Machine-local runtime state, not deliverables: approvals are pending
|
|
35
|
+
# proposals awaiting a local decision, and committing them would invite another
|
|
36
|
+
# machine to approve a proposal it never reviewed. The engram registry itself
|
|
37
|
+
# (.magicite/engrams/*.egr.md) IS tracked — it is the source of truth.
|
|
38
|
+
/.magicite/approvals/
|
|
39
|
+
/.magicite/runtime/
|
|
40
|
+
/.magicite/archive/
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project uses [Semantic Versioning](https://semver.org/). Version 1.0.0
|
|
7
|
+
bounds its promise to implemented functionality; it does not claim the research
|
|
8
|
+
hypothesis, scale budgets, or independent security certification are established.
|
|
9
|
+
Historical entries and their original limitations remain below.
|
|
10
|
+
|
|
11
|
+
## [Unreleased]
|
|
12
|
+
|
|
13
|
+
## [1.0.0] — 2026-10-11
|
|
14
|
+
|
|
15
|
+
- Release the existing local MCP knowledge workflow, stable dense default,
|
|
16
|
+
protected trust/lifecycle operations, and `magicite init --host claude`.
|
|
17
|
+
- Align installation and setup with GitHub wheel/source packages and signed OCI;
|
|
18
|
+
production PyPI remains deferred.
|
|
19
|
+
- Record the maintainer-approved functional scope and open qualification work
|
|
20
|
+
in [release notes](docs/releases/1.0.0.md).
|
|
21
|
+
|
|
22
|
+
## [0.3.1] — 2026-08-18
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
- SKILL.md import/export now preserves arbitrary Markdown bodies and host-specific
|
|
27
|
+
YAML frontmatter, recognizes colonless `Use when` / `NOT for` routing
|
|
28
|
+
markers, and fails before writing when a preserved body would be exported
|
|
29
|
+
lossily.
|
|
30
|
+
|
|
31
|
+
## [0.3.0] — 2026-08-18
|
|
32
|
+
|
|
33
|
+
The integrity-recovery release closes the runtime, evaluation, interface, and
|
|
34
|
+
verification drifts identified by the full 0.2 audit. It retains Python as the
|
|
35
|
+
single routing semantic reference; native C remains deferred until a measured
|
|
36
|
+
production hotspot can justify the extra implementation and integrity risk.
|
|
37
|
+
|
|
38
|
+
### Added
|
|
39
|
+
|
|
40
|
+
- Resumable, fenced Dream checkpoints and crash-recovery coverage.
|
|
41
|
+
- Process-level lease race and stale-writer verification.
|
|
42
|
+
- Recoverable idempotency reservations spanning effects, event commit, and
|
|
43
|
+
response persistence.
|
|
44
|
+
- Auditable approval decisions and resume transitions.
|
|
45
|
+
- An independently authored composition corpus, superseding evaluation
|
|
46
|
+
results, executable documentation contracts, and a 1k/10k benchmark matrix.
|
|
47
|
+
|
|
48
|
+
### Changed
|
|
49
|
+
|
|
50
|
+
- Routing uses a versioned canonical view, separate contraindication vectors,
|
|
51
|
+
shared production/evaluation activation primitives, and bounded exact cache
|
|
52
|
+
reuse.
|
|
53
|
+
- Embedding operation is offline by default and live introspection reports the
|
|
54
|
+
current lifecycle, verification, execution, and learned-state dimensions.
|
|
55
|
+
- CI and release inputs are immutable; the release image is signed and
|
|
56
|
+
accompanied by SBOM and provenance attestations.
|
|
57
|
+
|
|
58
|
+
## [0.3.0rc1] — 2026-08-18
|
|
59
|
+
|
|
60
|
+
Integrity-recovery release candidate. The final 0.3.0 tag remains blocked on
|
|
61
|
+
independent review and the acceptance gates in the governed recovery plan.
|
|
62
|
+
|
|
63
|
+
### Added
|
|
64
|
+
|
|
65
|
+
- Recoverable durable-write checkpoints, lease fencing, fail-closed registry
|
|
66
|
+
reconciliation, migration rollback safety, and idempotency recovery.
|
|
67
|
+
- A distinct contraindication routing view, production/baseline seed parity,
|
|
68
|
+
truthful live introspection, and resumable skill-body pagination.
|
|
69
|
+
- `docs/AUTHORITY.md`, archive redirects, prospective agent provenance, and
|
|
70
|
+
an explicit 0.3 release-gate record.
|
|
71
|
+
- Immutable GitHub Action SHAs and digest-pinned Python/uv container inputs.
|
|
72
|
+
|
|
73
|
+
### Changed
|
|
74
|
+
|
|
75
|
+
- Source operation is offline by default; model acquisition is explicit.
|
|
76
|
+
- The route/evaluation contract supersedes 0.2 baseline-(c) measurements that
|
|
77
|
+
used a different seed rule and omitted documented inhibition.
|
|
78
|
+
- Package metadata no longer embeds the image digest produced after the
|
|
79
|
+
package itself is built; the signed release record is the digest authority.
|
|
80
|
+
- Performance work uses generation-keyed index reuse and differential tests.
|
|
81
|
+
No native C implementation is included.
|
|
82
|
+
|
|
83
|
+
### Append-only errata for 0.1/0.2
|
|
84
|
+
|
|
85
|
+
- The frozen acceptance categories total 33 (19 event-driven, 3 state-driven,
|
|
86
|
+
5 ubiquitous, 6 unwanted-behavior), plus 9 addendum criteria; the prior
|
|
87
|
+
chronicle total of 35 was an accounting error.
|
|
88
|
+
- The runtime lifecycle is `nascent → probation → consolidated → promoted →
|
|
89
|
+
archived`; `active` and `dormant` in the 0.1 prose were stale design names.
|
|
90
|
+
- Declared edges use the accepted effective-strength floor; the 0.1 paragraph
|
|
91
|
+
saying they remained at zero effect is superseded.
|
|
92
|
+
- The `no_tag_capture` ablation is invalid and supports no Principle 0 claim.
|
|
93
|
+
Prior evidence is preserved; corrected results must be published separately.
|
|
94
|
+
|
|
95
|
+
## [0.2.0] — 2026-08-16
|
|
96
|
+
|
|
97
|
+
### Changed — BREAKING (data layout)
|
|
98
|
+
|
|
99
|
+
- **Magicite's project state moved from `.spectra/` to `.magicite/`.**
|
|
100
|
+
`.spectra/` belongs to ESL/tonberry, which owns `.spectra/changes/`; the two
|
|
101
|
+
tenants collided confusingly (Magicite's `.spectra/archive/` — decayed
|
|
102
|
+
engrams — sat one level from ESL's `.spectra/changes/archive/` — archived
|
|
103
|
+
change records). The ecosystem convention is one dot-directory per tool
|
|
104
|
+
(`.atlas/`, `.eidolons/`), and Magicite now follows it. `engrams/`,
|
|
105
|
+
`archive/`, `approvals/`, `runtime/`, `magicite.toml`, and `bench/` all live
|
|
106
|
+
under `.magicite/`. `.spectra/changes/` is untouched.
|
|
107
|
+
|
|
108
|
+
**Existing projects keep working without intervention.** Path resolution
|
|
109
|
+
falls back to `.spectra/` when `.magicite/` is absent *and* a real
|
|
110
|
+
`.spectra/engrams/` exists — a fresh project carrying only an ESL
|
|
111
|
+
`.spectra/changes/` tree is never dragged onto the old layout. `magicite
|
|
112
|
+
doctor` reports the fallback as a deprecation warning rather than staying
|
|
113
|
+
quiet; a silent fallback against an empty registry is the worst failure mode
|
|
114
|
+
a router has. The fallback is scheduled for removal in a future minor
|
|
115
|
+
version. Migration steps: `docs/operations.md` §15.
|
|
116
|
+
|
|
117
|
+
### Added
|
|
118
|
+
|
|
119
|
+
- `MAGICITE_DATA_DIR` overrides the data directory name, beating both the
|
|
120
|
+
default and the legacy fallback. Environment only — `magicite.toml` lives
|
|
121
|
+
inside the directory it would be naming.
|
|
122
|
+
- `magicite doctor` reports a `layout` section (`data_dir`, `legacy`,
|
|
123
|
+
`expected`) and warns on the deprecated location.
|
|
124
|
+
- A first-party engram registry for this repository itself (30 engrams,
|
|
125
|
+
`.magicite/engrams/`) plus the dogfood harness under `scripts/`. See
|
|
126
|
+
`docs/adapters/dogfooding.md`, including what dogfooding exposed: notably
|
|
127
|
+
that `triggers.negative` and `intent.not_when` have **no effect on
|
|
128
|
+
retrieval** in 0.1.0 — they are linted, fitness-scored, stored, and hashed
|
|
129
|
+
into the engram id, and consulted by nothing at query time.
|
|
130
|
+
|
|
131
|
+
### Unchanged
|
|
132
|
+
|
|
133
|
+
- The 16-tool MCP surface, routing behaviour, plasticity, and the trust gate.
|
|
134
|
+
This release moves files and resolves paths; it changes no decision the
|
|
135
|
+
router or the Dream worker makes. No claim in `docs/01`'s Falsification
|
|
136
|
+
Record is affected.
|
|
137
|
+
|
|
138
|
+
## [0.1.0] — 2026-08-15
|
|
139
|
+
|
|
140
|
+
Initial release: a local-first, plasticity-inspired skill router speaking
|
|
141
|
+
MCP over stdio, distributed as a self-contained, offline-capable
|
|
142
|
+
container.
|
|
143
|
+
|
|
144
|
+
### Honest limits, up front
|
|
145
|
+
|
|
146
|
+
This section exists because the alternative — a features list without the
|
|
147
|
+
measurements attached — is exactly the failure class this release is
|
|
148
|
+
built to avoid. Full detail, methodology, and caveats: `docs/01-vision-
|
|
149
|
+
and-hypotheses.md`'s **Falsification Record** and "What the Evidence
|
|
150
|
+
Licenses" section.
|
|
151
|
+
|
|
152
|
+
- **The full pipeline does not beat plain dense embedding on Hit@1.** At
|
|
153
|
+
70 skills / 210 queries, baseline (b) (dense embedding alone) scores
|
|
154
|
+
Hit@1 0.5476; the full Magicite pipeline (baseline d: embedding + graph
|
|
155
|
+
activation + learning) scores 0.5333. The gap is 3 queries out of 210 —
|
|
156
|
+
statistically indistinguishable (prior measurement: an 18-query gap,
|
|
157
|
+
p = 0.00053) — but it is not ahead. **H-BODY-b is falsified as
|
|
158
|
+
implemented.**
|
|
159
|
+
- **Authored graph structure (the design's actual central claim —
|
|
160
|
+
spreading activation over declared `needs`/`composes`/`inhibits`
|
|
161
|
+
edges, not re-derived embeddings) has zero supporting measurements and
|
|
162
|
+
two non-supporting ones.** Declared edges are written at `S_edge = 0.0`
|
|
163
|
+
until Dream potentiates them, so on any registry that has not been
|
|
164
|
+
through consolidation the activation graph contains only derived
|
|
165
|
+
`similar_to` kNN edges — re-deriving the cosine signal already scored
|
|
166
|
+
by the embedding arm — and the 11 declared `inhibits` relations in the
|
|
167
|
+
70-engram benchmark registry were measured to have never had any
|
|
168
|
+
production effect. **The design's central claim remains untested as
|
|
169
|
+
designed.**
|
|
170
|
+
- **Outcome-gated plasticity degraded held-out routing 3.6× under an
|
|
171
|
+
oracle teacher** (Hit@1 0.4697 → 0.1061), the opposite of the
|
|
172
|
+
prediction. Signal noise was not the binding constraint; the
|
|
173
|
+
score-combination rule is. **H-LEARN is falsified as implemented,
|
|
174
|
+
under uniform demand.**
|
|
175
|
+
- **Community-hierarchy rerank contributes nothing measurable at 70
|
|
176
|
+
skills** (ΔHit@3 = 0.0000); the log-decay-flattening claim is
|
|
177
|
+
inconclusive in both directions on the data collected so far.
|
|
178
|
+
- **Zero compositional queries were run.** Plan-expansion (H-COMPOSE)
|
|
179
|
+
is untested, not merely unvalidated.
|
|
180
|
+
|
|
181
|
+
These results come from a single-author benchmark (corpus, queries, and
|
|
182
|
+
annotation by one agent, one embedder, uniform learning workload) — see
|
|
183
|
+
`docs/01` for exactly what that bias does and does not license. The
|
|
184
|
+
0.4619 → 0.5333 improvement recorded in this release is **mechanism
|
|
185
|
+
repair** (a declared-edges amendment and an `inhib_gain` recalibration
|
|
186
|
+
that fixed defects actively suppressing measurement), not evidence that
|
|
187
|
+
the design hypothesis is correct.
|
|
188
|
+
|
|
189
|
+
### Added
|
|
190
|
+
|
|
191
|
+
- **16-tool MCP surface** over stdio: `register`, `sync`, `route`,
|
|
192
|
+
`load_skill_body`, `signal_use`, `signal_outcome`, `session_end`,
|
|
193
|
+
`consolidate`, `checkpoint`, `nucleate`, `sharpen`, `promote`,
|
|
194
|
+
`archive`, `flag_dead`, `introspect`, `export`.
|
|
195
|
+
- **`.egr.md` — a portable, human-readable, git-diffable skill format**
|
|
196
|
+
(YAML frontmatter + Markdown body), the sole source of truth for the
|
|
197
|
+
registry.
|
|
198
|
+
- **A fully rebuildable index.** `skill-graph.db` (SQLite/WAL) is a
|
|
199
|
+
derived cache: delete it and `sync()` reconstructs Tier A/B durable
|
|
200
|
+
state byte-identically from the `.egr.md` files on disk (the rebuild
|
|
201
|
+
invariant, `tests/acceptance/test_rebuild_invariant.py`).
|
|
202
|
+
- **Lifecycle governance**: a draft → probation → active/dormant →
|
|
203
|
+
archived state machine, approval-gated promotion/sharpening, an
|
|
204
|
+
append-only `provenance_journal` audit trail per engram, and trust
|
|
205
|
+
metadata for authored/imported/distilled origin.
|
|
206
|
+
- **Offline-hardened, self-contained container image.** The `fastembed`
|
|
207
|
+
ONNX embedding model (`BAAI/bge-small-en-v1.5`) is baked in at build
|
|
208
|
+
time; the image completes its MCP handshake and a full
|
|
209
|
+
`register()`/`route()` cycle with `--network none` and no network
|
|
210
|
+
egress at runtime (`tests/acceptance/test_docker_smoke.py`). Follows
|
|
211
|
+
the same hardened, sibling-MCP pattern this project's own `.mcp.json`
|
|
212
|
+
uses for `crystalium`/`atomos`/`atlas-aci`: non-root, capability-
|
|
213
|
+
dropped, digest-pinnable.
|
|
214
|
+
- **Three-tier signal ladder** (Tier-0 passive inference, Tier-1
|
|
215
|
+
tool-mediated self-report, Tier-2 host-adapter hook verification, with
|
|
216
|
+
server-side tier assignment) so learning degrades gracefully on hosts
|
|
217
|
+
without hook support, rather than requiring one.
|
|
218
|
+
- **`magicite doctor`** diagnostics: filesystem-class warnings for
|
|
219
|
+
`fcntl.flock()`-degraded mounts (NFS/CIFS), and an honest registry-size
|
|
220
|
+
report that never treats crossing a reference skill count as evidence
|
|
221
|
+
of a validated break-even.
|
|
222
|
+
|
|
223
|
+
### Fixed
|
|
224
|
+
|
|
225
|
+
- **`provenance_journal` entries appended during a Dream checkpoint or
|
|
226
|
+
archive were computed in memory but never persisted to the `.egr.md`
|
|
227
|
+
file.** `engram/writer.py::render_frontmatter`'s round-trip branch
|
|
228
|
+
refreshed `version`/`plasticity`/`peak_storage_strength`/`synapses` on
|
|
229
|
+
the parsed YAML carrier but never `provenance_journal` — so the
|
|
230
|
+
governance audit trail `docs/06-trust-governance-lifecycle.md` sells as
|
|
231
|
+
the mechanism for autonomous-mutation oversight silently no-opped on
|
|
232
|
+
every checkpoint write. Fixed; regression-proven
|
|
233
|
+
(`tests/acceptance/test_rebuild_invariant.py::
|
|
234
|
+
test_checkpoint_persists_provenance_journal_to_file`, fails against the
|
|
235
|
+
pre-fix code and passes after).
|
|
236
|
+
|
|
237
|
+
### Known gaps (tracked, not release-blocking)
|
|
238
|
+
|
|
239
|
+
- Compositional (`needs`/`yields`/`composes`) routing is implemented but
|
|
240
|
+
has zero measured evaluation coverage.
|
|
241
|
+
- The declared-edges amendment and `inhib_gain` recalibration repaired
|
|
242
|
+
measurement defects; they did not validate the graph-activation design
|
|
243
|
+
hypothesis, which remains the pre-registered reversal condition to
|
|
244
|
+
watch across future releases.
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# syntax=docker/dockerfile:1
|
|
2
|
+
#
|
|
3
|
+
# magicite — local-first, plasticity-inspired skill router speaking MCP
|
|
4
|
+
# over stdio. Production runtime image (spec §8 "Distribution & Packaging";
|
|
5
|
+
# AC-026, AC-031; Risk R4). Sibling-MCP pattern verified against this
|
|
6
|
+
# project's own `.mcp.json` (crystalium/atomos/atlas-aci/tonberry): a
|
|
7
|
+
# non-root, UID-pinned user; `--cap-drop ALL --security-opt
|
|
8
|
+
# no-new-privileges` at `docker run` time; digest-pinnable in production.
|
|
9
|
+
#
|
|
10
|
+
# ─────────────────────────────────────────────────────────────────────────
|
|
11
|
+
# The fastembed ONNX model (BAAI/bge-small-en-v1.5) is baked into the image
|
|
12
|
+
# at BUILD time below — the one legitimate network-touching step (`magicite
|
|
13
|
+
# fetch-model`) — so the container never reaches the network at runtime.
|
|
14
|
+
# MAGICITE_EMBEDDING_OFFLINE=1 is set as a hard runtime default: it is
|
|
15
|
+
# threaded through to fastembed's `local_files_only` kwarg
|
|
16
|
+
# (embeddings/fastembed_provider.py), so a cache miss raises immediately
|
|
17
|
+
# instead of ever attempting a fetch — the guarantee AC-026's "no network
|
|
18
|
+
# access" clause depends on, not just a documented convention.
|
|
19
|
+
#
|
|
20
|
+
# ─────────────────────────────────────────────────────────────────────────
|
|
21
|
+
# PRIVILEGE-BOUNDARY NOTE — read before deploying against a real registry.
|
|
22
|
+
#
|
|
23
|
+
# This image's default user is `magicite`, UID 10001 (a safe, never-root
|
|
24
|
+
# default for a bare `docker run image` with no `--user` override). But
|
|
25
|
+
# magicite is NOT a read-only tool the way atlas-aci is: register()/sync()/
|
|
26
|
+
# Dream write real files under the mounted project's `.magicite/` tree
|
|
27
|
+
# (engrams, the DB, dream.lock, approvals) — and `magicite serve` calls
|
|
28
|
+
# `Config.ensure_dirs()` UNCONDITIONALLY AT EVERY BOOT (creating
|
|
29
|
+
# `.magicite/{archive,approvals,runtime}` if absent), not only when a write
|
|
30
|
+
# tool is later called.
|
|
31
|
+
#
|
|
32
|
+
# CONFIRMED EMPIRICALLY (`tests/acceptance/test_docker_smoke.py`, M7): a
|
|
33
|
+
# bind mount preserves the HOST's file ownership, so a container started
|
|
34
|
+
# WITHOUT overriding `--user` to your own host uid:gid runs as UID 10001
|
|
35
|
+
# against a `project_root` it does not own — `ensure_dirs()` hits a bare
|
|
36
|
+
# `PermissionError` and the server never even completes `initialize`. This
|
|
37
|
+
# is stronger than a mere ownership-hygiene concern: **the container
|
|
38
|
+
# cannot function at all** against a real, host-owned project directory
|
|
39
|
+
# without the `--user` override. (If you pre-create/chown `.magicite/` to
|
|
40
|
+
# UID 10001 yourself, or the mount happens to be world-writable, boot will
|
|
41
|
+
# succeed but every file magicite creates is then owned by UID 10001, not
|
|
42
|
+
# you — the same privilege boundary FORGE's threat model (docs/02-
|
|
43
|
+
# architecture.md) assumes does NOT exist between the MCP client and the
|
|
44
|
+
# MCP server, since you can no longer freely edit/delete your own
|
|
45
|
+
# `.egr.md` files without `sudo chown` afterward.)
|
|
46
|
+
#
|
|
47
|
+
# The fix is the invocation, not the image: ALWAYS pass
|
|
48
|
+
# `--user "$(id -u):$(id -g)"` (or the literal `--user 1000:1000` this
|
|
49
|
+
# project's own `.mcp.json` and docs/adapters/claude-code.md use) when
|
|
50
|
+
# mounting a real project directory. That overrides the image's UID 10001
|
|
51
|
+
# default with your own, making the container process the SAME OS
|
|
52
|
+
# principal as the host client — no boundary introduced, matching every
|
|
53
|
+
# other project-file-touching sibling MCP (atomos, atlas-aci, tonberry).
|
|
54
|
+
# ─────────────────────────────────────────────────────────────────────────
|
|
55
|
+
#
|
|
56
|
+
# Quickstart (the safe, house-pattern invocation):
|
|
57
|
+
#
|
|
58
|
+
# docker run --rm -i \
|
|
59
|
+
# --user "$(id -u):$(id -g)" \
|
|
60
|
+
# --cap-drop ALL --security-opt no-new-privileges \
|
|
61
|
+
# -v "$PWD":"$PWD":z -w "$PWD" \
|
|
62
|
+
# ghcr.io/rynaro/magicite@sha256:<digest> \
|
|
63
|
+
# serve --project-root "$PWD"
|
|
64
|
+
#
|
|
65
|
+
# ─────────────────────────────────────────────────────────────────────────
|
|
66
|
+
|
|
67
|
+
FROM python:3.12-slim@sha256:2c941e860699f878900b0edc2403613c234d4b32eda3cc9fa7036991a2a63c4a AS builder
|
|
68
|
+
|
|
69
|
+
COPY --from=ghcr.io/astral-sh/uv:0.11.23@sha256:d0a0a753ab981624b49c97abc98821c1c09f4ca69d1ef5cee69c501be3d88479 /uv /usr/local/bin/uv
|
|
70
|
+
|
|
71
|
+
WORKDIR /build
|
|
72
|
+
COPY pyproject.toml uv.lock README.md ./
|
|
73
|
+
COPY src ./src
|
|
74
|
+
|
|
75
|
+
# Build the wheel directly. README.md is copied because pyproject.toml's
|
|
76
|
+
# `readme = "README.md"` field makes hatchling require it at build time.
|
|
77
|
+
RUN uv build --wheel --out-dir /dist
|
|
78
|
+
|
|
79
|
+
# Export the locked transitive deps (production, no dev extras) so the
|
|
80
|
+
# runtime stage installs the exact versions captured in uv.lock, not
|
|
81
|
+
# whatever pip resolves fresh against PyPI at image-build time.
|
|
82
|
+
RUN uv export --frozen --no-dev --no-emit-project --format requirements-txt \
|
|
83
|
+
--output-file /dist/requirements.txt
|
|
84
|
+
|
|
85
|
+
# ─────────────────────────────────────────────────────────────────────────
|
|
86
|
+
|
|
87
|
+
FROM python:3.12-slim@sha256:2c941e860699f878900b0edc2403613c234d4b32eda3cc9fa7036991a2a63c4a AS runtime
|
|
88
|
+
|
|
89
|
+
LABEL org.opencontainers.image.title="magicite" \
|
|
90
|
+
org.opencontainers.image.description="Local-first, plasticity-inspired skill router speaking MCP over stdio" \
|
|
91
|
+
org.opencontainers.image.licenses="Apache-2.0" \
|
|
92
|
+
org.opencontainers.image.source="https://github.com/Rynaro/magicite"
|
|
93
|
+
|
|
94
|
+
# The pinned slim index currently contains a fixed-but-not-yet-refreshed
|
|
95
|
+
# Debian util-linux package set (CVE-2026-53615). Apply repository security
|
|
96
|
+
# upgrades in the final stage so the Trivy HIGH/CRITICAL gate validates the
|
|
97
|
+
# actual runtime filesystem, then discard apt metadata from the image.
|
|
98
|
+
RUN apt-get update \
|
|
99
|
+
&& apt-get upgrade -y --no-install-recommends \
|
|
100
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
101
|
+
|
|
102
|
+
# Dedicated unprivileged user. UID pinned to 10001 so volume ownership is
|
|
103
|
+
# predictable across rebuilds (this is the DEFAULT, not the recommended
|
|
104
|
+
# runtime `--user` — see the privilege-boundary note above).
|
|
105
|
+
RUN useradd --create-home --uid 10001 magicite
|
|
106
|
+
|
|
107
|
+
COPY --from=builder /dist/requirements.txt /dist/*.whl /tmp/
|
|
108
|
+
# Install transitive deps from the lockfile-derived requirements.txt
|
|
109
|
+
# first, then the project wheel itself with --no-deps so pip cannot
|
|
110
|
+
# re-resolve and undo the lock-respecting install.
|
|
111
|
+
RUN pip install --no-cache-dir -r /tmp/requirements.txt \
|
|
112
|
+
&& pip install --no-cache-dir --no-deps /tmp/*.whl \
|
|
113
|
+
&& rm /tmp/*.whl /tmp/requirements.txt
|
|
114
|
+
|
|
115
|
+
# Bake the fastembed ONNX model at build time (spec §8, R4): the container
|
|
116
|
+
# must never reach the network at runtime. Root still owns the filesystem
|
|
117
|
+
# here, so fetch as root, then hand ownership to the runtime user — the
|
|
118
|
+
# baked cache only needs to be READABLE by whichever uid ends up running
|
|
119
|
+
# the container (UID 10001 by default, or an overriding --user), never
|
|
120
|
+
# written to at runtime (MAGICITE_EMBEDDING_OFFLINE=1 below forbids it).
|
|
121
|
+
ENV FASTEMBED_CACHE_PATH=/opt/magicite/models
|
|
122
|
+
RUN mkdir -p "$FASTEMBED_CACHE_PATH" \
|
|
123
|
+
&& magicite fetch-model \
|
|
124
|
+
&& chmod -R a+rX "$FASTEMBED_CACHE_PATH"
|
|
125
|
+
|
|
126
|
+
RUN mkdir -p /project && chown magicite:magicite /project
|
|
127
|
+
|
|
128
|
+
USER magicite
|
|
129
|
+
WORKDIR /project
|
|
130
|
+
|
|
131
|
+
VOLUME ["/project"]
|
|
132
|
+
|
|
133
|
+
ENV HOME=/tmp \
|
|
134
|
+
PYTHONUNBUFFERED=1 \
|
|
135
|
+
PYTHONDONTWRITEBYTECODE=1 \
|
|
136
|
+
MAGICITE_EMBEDDING_OFFLINE=1
|
|
137
|
+
|
|
138
|
+
# MCP stdio handles SIGINT cleanly; make `docker stop` fast by mapping
|
|
139
|
+
# SIGTERM → SIGINT instead of the default 10s grace-then-KILL.
|
|
140
|
+
STOPSIGNAL SIGINT
|
|
141
|
+
|
|
142
|
+
ENTRYPOINT ["magicite"]
|
|
143
|
+
CMD ["serve", "--project-root", "/project"]
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# syntax=docker/dockerfile:1
|
|
2
|
+
#
|
|
3
|
+
# magicite — dev-loop image.
|
|
4
|
+
#
|
|
5
|
+
# Separate from the production Dockerfile so the runtime image stays
|
|
6
|
+
# minimal (no pytest/ruff/mypy, no fastembed model bake needed for a dev
|
|
7
|
+
# loop that runs against MAGICITE_EMBEDDING_PROVIDER=hashing, this repo's
|
|
8
|
+
# own test convention). Source lives under /work so bind-mounted edits
|
|
9
|
+
# round-trip without rebuilds.
|
|
10
|
+
#
|
|
11
|
+
# ─────────────────────────────────────────────────────────────────────────
|
|
12
|
+
# Build once, run many:
|
|
13
|
+
#
|
|
14
|
+
# docker build -f Dockerfile.dev -t magicite-dev .
|
|
15
|
+
#
|
|
16
|
+
# # Interactive shell with everything pre-installed
|
|
17
|
+
# docker run --rm -it -v "$PWD":/work magicite-dev
|
|
18
|
+
#
|
|
19
|
+
# # One-shot commands
|
|
20
|
+
# docker run --rm -v "$PWD":/work magicite-dev uv run pytest -q
|
|
21
|
+
# docker run --rm -v "$PWD":/work magicite-dev uv run ruff check src/ tests/
|
|
22
|
+
# docker run --rm -v "$PWD":/work magicite-dev uv run mypy src/
|
|
23
|
+
#
|
|
24
|
+
# # Smoke-test the CLI
|
|
25
|
+
# docker run --rm -v "$PWD":/work magicite-dev uv run magicite tools
|
|
26
|
+
#
|
|
27
|
+
# The bind mount overlays /work with your host checkout, so edits on the
|
|
28
|
+
# host are immediately visible inside the container. The cached .venv from
|
|
29
|
+
# `uv sync` in the build stage is preserved because it lives outside /work
|
|
30
|
+
# (UV_PROJECT_ENVIRONMENT=/opt/venv).
|
|
31
|
+
# ─────────────────────────────────────────────────────────────────────────
|
|
32
|
+
|
|
33
|
+
# Digest pins match production Dockerfile / CI uv 0.11.23 so the image is
|
|
34
|
+
# reproducible and supply-chain-immutable (no floating `latest` tags).
|
|
35
|
+
FROM python:3.12-slim@sha256:2c941e860699f878900b0edc2403613c234d4b32eda3cc9fa7036991a2a63c4a
|
|
36
|
+
|
|
37
|
+
COPY --from=ghcr.io/astral-sh/uv:0.11.23@sha256:d0a0a753ab981624b49c97abc98821c1c09f4ca69d1ef5cee69c501be3d88479 /uv /usr/local/bin/uv
|
|
38
|
+
|
|
39
|
+
# Seed a venv outside /work so the bind mount can't shadow it.
|
|
40
|
+
ENV UV_PROJECT_ENVIRONMENT=/opt/venv \
|
|
41
|
+
PATH="/opt/venv/bin:$PATH" \
|
|
42
|
+
PYTHONUNBUFFERED=1 \
|
|
43
|
+
PYTHONDONTWRITEBYTECODE=1
|
|
44
|
+
|
|
45
|
+
WORKDIR /work
|
|
46
|
+
COPY pyproject.toml README.md ./
|
|
47
|
+
COPY src ./src
|
|
48
|
+
COPY tests ./tests
|
|
49
|
+
|
|
50
|
+
# `uv sync` installs the project in editable mode; hatchling reads
|
|
51
|
+
# `readme = "README.md"` from pyproject.toml, so the file must be here.
|
|
52
|
+
# `leiden` (python-igraph/leidenalg) is deliberately NOT installed here —
|
|
53
|
+
# it is an optional extra with real wheel-availability fragility on some
|
|
54
|
+
# platforms (Risk R5); CommunityDetector's automatic label_propagation
|
|
55
|
+
# fallback (AC-022) is exactly what a dev loop should exercise by default.
|
|
56
|
+
# Add `--extra leiden` locally if you need to test the Leiden path.
|
|
57
|
+
RUN uv sync --extra dev
|
|
58
|
+
|
|
59
|
+
CMD ["bash"]
|