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.
Files changed (763) hide show
  1. magicite-1.0.0/.dockerignore +49 -0
  2. magicite-1.0.0/.gitignore +40 -0
  3. magicite-1.0.0/CHANGELOG.md +244 -0
  4. magicite-1.0.0/Dockerfile +143 -0
  5. magicite-1.0.0/Dockerfile.dev +59 -0
  6. magicite-1.0.0/LICENSE +202 -0
  7. magicite-1.0.0/PKG-INFO +423 -0
  8. magicite-1.0.0/README.md +385 -0
  9. magicite-1.0.0/docs/01-vision-and-hypotheses.md +154 -0
  10. magicite-1.0.0/docs/02-architecture.md +237 -0
  11. magicite-1.0.0/docs/03-learning-model.md +304 -0
  12. magicite-1.0.0/docs/04-engram-format.md +415 -0
  13. magicite-1.0.0/docs/05-protocol-and-signals.md +536 -0
  14. magicite-1.0.0/docs/06-trust-governance-lifecycle.md +320 -0
  15. magicite-1.0.0/docs/07-evaluation-and-observability.md +405 -0
  16. magicite-1.0.0/docs/AUTHORITY.md +111 -0
  17. magicite-1.0.0/docs/README.md +119 -0
  18. magicite-1.0.0/docs/adapters/claude-code.md +179 -0
  19. magicite-1.0.0/docs/adapters/dogfooding.md +262 -0
  20. magicite-1.0.0/docs/archive-redirects.json +9 -0
  21. magicite-1.0.0/docs/assets/magicite-logo.png +0 -0
  22. magicite-1.0.0/docs/decisions/001-stable-dense-v1-incumbent.md +96 -0
  23. magicite-1.0.0/docs/evaluation/composition-v0.3.json +361 -0
  24. magicite-1.0.0/docs/evaluation/v0.3-benchmarks.json +150 -0
  25. magicite-1.0.0/docs/evaluation/v0.3-results.json +73 -0
  26. magicite-1.0.0/docs/evaluation/v1/README.md +114 -0
  27. magicite-1.0.0/docs/evaluation/v1/fixtures/skillret-tiny/corpus_manifest.json +89 -0
  28. magicite-1.0.0/docs/evaluation/v1/fixtures/skillret-tiny/queries.json +72 -0
  29. magicite-1.0.0/docs/evaluation/v1/preregistration-template.json +50 -0
  30. magicite-1.0.0/docs/evaluation/v1/skillret-v1.1-source.json +101 -0
  31. magicite-1.0.0/docs/evaluation/v1/unevaluated.md +71 -0
  32. magicite-1.0.0/docs/generated/runtime-reference.json +1708 -0
  33. magicite-1.0.0/docs/install.md +74 -0
  34. magicite-1.0.0/docs/operations.md +521 -0
  35. magicite-1.0.0/docs/operator-tutorial.md +103 -0
  36. magicite-1.0.0/docs/qualification/calibration-consumer.md +149 -0
  37. magicite-1.0.0/docs/qualification/calibration-data.md +98 -0
  38. magicite-1.0.0/docs/qualification/candidate-install.md +72 -0
  39. magicite-1.0.0/docs/qualification/claude-code.md +141 -0
  40. magicite-1.0.0/docs/qualification/evidence/calibration-data/README.md +21 -0
  41. magicite-1.0.0/docs/qualification/evidence/calibration-data/byte-drift-denied.stderr.txt +1 -0
  42. magicite-1.0.0/docs/qualification/evidence/calibration-data/byte-drift-denied.stdout.json +0 -0
  43. magicite-1.0.0/docs/qualification/evidence/calibration-data/control-summary.json.gz +0 -0
  44. magicite-1.0.0/docs/qualification/evidence/calibration-data/execution-scope-clarification.json +10 -0
  45. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/README.md +1 -0
  46. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/candidate-one.txt +1 -0
  47. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/candidate-two.txt +1 -0
  48. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/judgment1.json +9 -0
  49. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/judgment2.json +9 -0
  50. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/labels.json +26 -0
  51. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/packet.json +86 -0
  52. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/partitions.json +14 -0
  53. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/pool.json +16 -0
  54. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/preregistration.json +4 -0
  55. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/provenance.json +83 -0
  56. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/review0.json +5 -0
  57. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/review1.json +5 -0
  58. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/review2.json +5 -0
  59. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/runtime.json +17 -0
  60. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/source0.json +11 -0
  61. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/source1.json +11 -0
  62. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/source2.json +11 -0
  63. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/time0.json +6 -0
  64. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/time1.json +6 -0
  65. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed/time2.json +6 -0
  66. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed-freeze.json.gz +0 -0
  67. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed-freeze.stderr.txt +0 -0
  68. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed-freeze.stdout.json.gz +0 -0
  69. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed-open-denied.stderr.txt +1 -0
  70. magicite-1.0.0/docs/qualification/evidence/calibration-data/exposed-open-denied.stdout.json +0 -0
  71. magicite-1.0.0/docs/qualification/evidence/calibration-data/focused-1.log +3 -0
  72. magicite-1.0.0/docs/qualification/evidence/calibration-data/freeze-a.json.final-access.json +1 -0
  73. magicite-1.0.0/docs/qualification/evidence/calibration-data/freeze-a.json.gz +0 -0
  74. magicite-1.0.0/docs/qualification/evidence/calibration-data/freeze-a.stderr.txt +0 -0
  75. magicite-1.0.0/docs/qualification/evidence/calibration-data/freeze-a.stdout.json.gz +0 -0
  76. magicite-1.0.0/docs/qualification/evidence/calibration-data/freeze-b.json.gz +0 -0
  77. magicite-1.0.0/docs/qualification/evidence/calibration-data/freeze-b.stderr.txt +0 -0
  78. magicite-1.0.0/docs/qualification/evidence/calibration-data/freeze-b.stdout.json.gz +0 -0
  79. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/candidate-source.diff.gz +0 -0
  80. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/checker-ci-a2-counterfactual.log.gz +0 -0
  81. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/checker-ci-a2-reproduction-1.log.gz +0 -0
  82. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/checker-ci-a2-reproduction-2.log.gz +0 -0
  83. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/checker-ci-a2-reproductions.json.gz +0 -0
  84. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/checker-ci-diagnosis.json.gz +0 -0
  85. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/checker-probes-results.json.gz +0 -0
  86. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/checker-probes.py.gz +0 -0
  87. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/checker-temporal-results.json.gz +0 -0
  88. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ci-16d66bb-failed.json.gz +0 -0
  89. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ci-archive-a-failure-receipt.json.gz +0 -0
  90. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ci-d314f89-failed.json.gz +0 -0
  91. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ci-format-successor-watch.log.gz +0 -0
  92. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ci-job-113292363509-failed.log.gz +0 -0
  93. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ci-job-113292363524-failed.log.gz +0 -0
  94. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ci-job-113298790523-failed.log.gz +0 -0
  95. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ci-job-113298790635-failed.log.gz +0 -0
  96. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ci-watch.log.gz +0 -0
  97. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/docs-test-repair-pre-import-order.log.gz +0 -0
  98. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/docs-test-repair-ruff.log.gz +0 -0
  99. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/first-focused.log.gz +0 -0
  100. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/focused-2.log.gz +0 -0
  101. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/focused-3.log.gz +0 -0
  102. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/generated-write.log.gz +0 -0
  103. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/initial-red.log.gz +0 -0
  104. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ledger-archive-a-failed-status.json.gz +0 -0
  105. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/ledger-archive-a2-failed-status.json.gz +0 -0
  106. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/mypy-repair.log.gz +0 -0
  107. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/root-cause-ci-a2-to-idg.envelope.json.gz +0 -0
  108. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/root-cause-ci-a2-to-idg.md.gz +0 -0
  109. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/suppressed-group-anchor.py.gz +0 -0
  110. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/suppressed-group-red.log.gz +0 -0
  111. magicite-1.0.0/docs/qualification/evidence/calibration-data/historical-failures/test_docs_development_counterfactual.py.gz +0 -0
  112. magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/README.md +1 -0
  113. magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/candidate-one.txt +1 -0
  114. magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/candidate-two.txt +1 -0
  115. magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/judgment1.json +9 -0
  116. magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/judgment2.json +9 -0
  117. magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/labels.json +26 -0
  118. magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/packet.json +86 -0
  119. magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/partitions.json +14 -0
  120. magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/pool.json +16 -0
  121. magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/preregistration.json +4 -0
  122. magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/provenance.json +83 -0
  123. magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/review0.json +5 -0
  124. magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/review1.json +5 -0
  125. magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/review2.json +5 -0
  126. magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/runtime.json +17 -0
  127. magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/source0.json +11 -0
  128. magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/source1.json +11 -0
  129. magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/source2.json +11 -0
  130. magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/time0.json +6 -0
  131. magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/time1.json +6 -0
  132. magicite-1.0.0/docs/qualification/evidence/calibration-data/inputs/time2.json +6 -0
  133. magicite-1.0.0/docs/qualification/evidence/calibration-data/inventory.json +814 -0
  134. magicite-1.0.0/docs/qualification/evidence/calibration-data/ledger-source-c-status.json +69 -0
  135. magicite-1.0.0/docs/qualification/evidence/calibration-data/open.stderr.txt +0 -0
  136. magicite-1.0.0/docs/qualification/evidence/calibration-data/open.stdout.json +30 -0
  137. magicite-1.0.0/docs/qualification/evidence/calibration-data/repeat-fresh-denied.stderr.txt +1 -0
  138. magicite-1.0.0/docs/qualification/evidence/calibration-data/repeat-fresh-denied.stdout.json +0 -0
  139. magicite-1.0.0/docs/qualification/evidence/calibration-data/replay.stderr.txt +0 -0
  140. magicite-1.0.0/docs/qualification/evidence/calibration-data/replay.stdout.json +30 -0
  141. magicite-1.0.0/docs/qualification/evidence/calibration-data/run-offline-proof.py.gz +0 -0
  142. magicite-1.0.0/docs/qualification/evidence/calibration-data/source-c-offline-execution.log +1 -0
  143. magicite-1.0.0/docs/qualification/evidence/calibration-data/source-equivalence.json +228 -0
  144. magicite-1.0.0/docs/qualification/evidence/calibration-data/test-contract-repair-focused.log +2 -0
  145. magicite-1.0.0/docs/qualification/evidence/calibration-data/test-contract-repair-ruff.log +1 -0
  146. magicite-1.0.0/docs/qualification/evidence/calibration-data/test-contract-repair.json +21 -0
  147. magicite-1.0.0/docs/qualification/evidence/calibration-data/validate.stderr.txt +0 -0
  148. magicite-1.0.0/docs/qualification/evidence/calibration-data/validate.stdout.json +78 -0
  149. magicite-1.0.0/docs/qualification/evidence/calibration-data/verify.stderr.txt +0 -0
  150. magicite-1.0.0/docs/qualification/evidence/calibration-data/verify.stdout.json.gz +0 -0
  151. magicite-1.0.0/docs/qualification/evidence/calibration-data/wrong-purpose-denied.stderr.txt +1 -0
  152. magicite-1.0.0/docs/qualification/evidence/calibration-data/wrong-purpose-denied.stdout.json +0 -0
  153. magicite-1.0.0/docs/qualification/evidence/official-quality/README.md +13 -0
  154. magicite-1.0.0/docs/qualification/evidence/official-quality/c3-operational-stop.json +36 -0
  155. magicite-1.0.0/docs/qualification/evidence/official-quality/criteria.json +1 -0
  156. magicite-1.0.0/docs/qualification/evidence/official-quality/exact-source-verification.json +23 -0
  157. magicite-1.0.0/docs/qualification/evidence/official-quality/expected-model.json +30 -0
  158. magicite-1.0.0/docs/qualification/evidence/official-quality/first-heldout-confirmation.json +11 -0
  159. magicite-1.0.0/docs/qualification/evidence/official-quality/first-heldout-exposure.json +15 -0
  160. magicite-1.0.0/docs/qualification/evidence/official-quality/focused-readiness.json +46 -0
  161. magicite-1.0.0/docs/qualification/evidence/official-quality/history.json +1 -0
  162. magicite-1.0.0/docs/qualification/evidence/official-quality/independent-c4-final-review.envelope.json +34 -0
  163. magicite-1.0.0/docs/qualification/evidence/official-quality/independent-c4-final-review.json +129 -0
  164. magicite-1.0.0/docs/qualification/evidence/official-quality/independent-c4-final-review.md +13 -0
  165. magicite-1.0.0/docs/qualification/evidence/official-quality/index.json +1 -0
  166. magicite-1.0.0/docs/qualification/evidence/official-quality/live-readiness.json +80 -0
  167. magicite-1.0.0/docs/qualification/evidence/official-quality/measured-ci.json +1 -0
  168. magicite-1.0.0/docs/qualification/evidence/official-quality/measured-ledger-status.json +65 -0
  169. magicite-1.0.0/docs/qualification/evidence/official-quality/observation.json +1 -0
  170. magicite-1.0.0/docs/qualification/evidence/official-quality/p01-baseline-summary.json +271 -0
  171. magicite-1.0.0/docs/qualification/evidence/official-quality/p02-independent-review.json +93 -0
  172. magicite-1.0.0/docs/qualification/evidence/official-quality/p02-summary.json +97 -0
  173. magicite-1.0.0/docs/qualification/evidence/official-quality/pool-preparation-summary.json +72 -0
  174. magicite-1.0.0/docs/qualification/evidence/official-quality/pool-reuse-receipt.json +24 -0
  175. magicite-1.0.0/docs/qualification/evidence/official-quality/producer-consumer-review.json +161 -0
  176. magicite-1.0.0/docs/qualification/evidence/official-quality/run-freeze.json +1 -0
  177. magicite-1.0.0/docs/qualification/evidence/official-quality/scoring-derivation.json +1 -0
  178. magicite-1.0.0/docs/qualification/evidence/official-quality/smoke-dense-v1-checkpoint.json +1 -0
  179. magicite-1.0.0/docs/qualification/evidence/official-quality/smoke-dense-v1-commands.jsonl +1 -0
  180. magicite-1.0.0/docs/qualification/evidence/official-quality/smoke-dense-v1-result.json +1 -0
  181. magicite-1.0.0/docs/qualification/evidence/official-quality/smoke-dense-v1.jsonl.gz +0 -0
  182. magicite-1.0.0/docs/qualification/evidence/official-quality/smoke-experimental_adaptive-blend-v1-checkpoint.json +1 -0
  183. magicite-1.0.0/docs/qualification/evidence/official-quality/smoke-experimental_adaptive-blend-v1-commands.jsonl +1 -0
  184. magicite-1.0.0/docs/qualification/evidence/official-quality/smoke-experimental_adaptive-blend-v1-result.json +1 -0
  185. magicite-1.0.0/docs/qualification/evidence/official-quality/smoke-experimental_adaptive-blend-v1.jsonl.gz +0 -0
  186. magicite-1.0.0/docs/qualification/evidence/official-quality/smoke-report.json.gz +0 -0
  187. magicite-1.0.0/docs/qualification/evidence/official-quality/source-equivalence-inputs.json +1 -0
  188. magicite-1.0.0/docs/qualification/evidence/official-quality/test-authorization.json +13 -0
  189. magicite-1.0.0/docs/qualification/evidence/official-quality/test-dense-v1-checkpoint.json +1 -0
  190. magicite-1.0.0/docs/qualification/evidence/official-quality/test-dense-v1-commands.jsonl +1 -0
  191. magicite-1.0.0/docs/qualification/evidence/official-quality/test-dense-v1-result.json +1 -0
  192. magicite-1.0.0/docs/qualification/evidence/official-quality/test-dense-v1.jsonl.gz +0 -0
  193. magicite-1.0.0/docs/qualification/evidence/official-quality/test-experimental_adaptive-blend-v1-checkpoint.json +1 -0
  194. magicite-1.0.0/docs/qualification/evidence/official-quality/test-experimental_adaptive-blend-v1-commands.jsonl +1 -0
  195. magicite-1.0.0/docs/qualification/evidence/official-quality/test-experimental_adaptive-blend-v1-result.json +1 -0
  196. magicite-1.0.0/docs/qualification/evidence/official-quality/test-experimental_adaptive-blend-v1.jsonl.gz +0 -0
  197. magicite-1.0.0/docs/qualification/evidence/official-quality/test-report.json.gz +0 -0
  198. magicite-1.0.0/docs/qualification/evidence/official-quality/test-scoring-projection.json.gz +0 -0
  199. magicite-1.0.0/docs/qualification/evidence/official-quality/train-sample.json +1 -0
  200. magicite-1.0.0/docs/qualification/evidence/production-empirical/independent-corpus-inventory.json +246 -0
  201. magicite-1.0.0/docs/qualification/evidence/production-empirical/independent-oracle-freeze.json +35 -0
  202. magicite-1.0.0/docs/qualification/evidence/production-empirical/independent-oracle-review.json +113 -0
  203. magicite-1.0.0/docs/qualification/evidence/production-empirical/independent-oracle.json +282 -0
  204. magicite-1.0.0/docs/qualification/evidence/production-empirical/independent-runtime-queries.json +82 -0
  205. magicite-1.0.0/docs/qualification/evidence/production-empirical/independent-scoring-labels.json +138 -0
  206. magicite-1.0.0/docs/qualification/linux-custody.md +72 -0
  207. magicite-1.0.0/docs/qualification/official-corpus.md +22 -0
  208. magicite-1.0.0/docs/qualification/official-quality.md +115 -0
  209. magicite-1.0.0/docs/qualification/production-empirical.md +29 -0
  210. magicite-1.0.0/docs/qualification/protected-benchmark.md +90 -0
  211. magicite-1.0.0/docs/quick-setup.md +205 -0
  212. magicite-1.0.0/docs/readme-claims.json +1 -0
  213. magicite-1.0.0/docs/releases/0.3.0-rc.1.md +40 -0
  214. magicite-1.0.0/docs/releases/0.3.0.md +41 -0
  215. magicite-1.0.0/docs/releases/0.3.1.md +18 -0
  216. magicite-1.0.0/docs/releases/1.0.0-rc.1.md +75 -0
  217. magicite-1.0.0/docs/releases/1.0.0-rc.2.md +56 -0
  218. magicite-1.0.0/docs/releases/1.0.0-rc.3.md +43 -0
  219. magicite-1.0.0/docs/releases/1.0.0-rc.4.md +52 -0
  220. magicite-1.0.0/docs/releases/1.0.0.md +79 -0
  221. magicite-1.0.0/docs/releases/v1/README.md +71 -0
  222. magicite-1.0.0/docs/releases/v1/criterion-ledger.json +6269 -0
  223. magicite-1.0.0/docs/releases/v1/evidence/checkpoint-process-death-provenance.json +36 -0
  224. magicite-1.0.0/docs/releases/v1/evidence/checkpoint-process-death.json +9 -0
  225. magicite-1.0.0/docs/releases/v1/evidence/checks.json +39 -0
  226. magicite-1.0.0/docs/releases/v1/evidence/docs.txt +1 -0
  227. magicite-1.0.0/docs/releases/v1/evidence/environment.json +13 -0
  228. magicite-1.0.0/docs/releases/v1/evidence/generated.txt +1 -0
  229. magicite-1.0.0/docs/releases/v1/evidence/hashing-smoke-provenance.json +36 -0
  230. magicite-1.0.0/docs/releases/v1/evidence/hashing-smoke.json +544 -0
  231. magicite-1.0.0/docs/releases/v1/evidence/learning-containment.json +59 -0
  232. magicite-1.0.0/docs/releases/v1/evidence/learning-fully-gated-or-unavailable.json +55 -0
  233. magicite-1.0.0/docs/releases/v1/evidence/mypy.txt +1 -0
  234. magicite-1.0.0/docs/releases/v1/evidence/policy-dream-isolation.json +51 -0
  235. magicite-1.0.0/docs/releases/v1/evidence/policy-explicit-experimental.json +51 -0
  236. magicite-1.0.0/docs/releases/v1/evidence/policy-nonadaptive-default.json +55 -0
  237. magicite-1.0.0/docs/releases/v1/evidence/policy-pinned-incumbent.json +63 -0
  238. magicite-1.0.0/docs/releases/v1/evidence/privacy-checkpoint-rpo.json +72 -0
  239. magicite-1.0.0/docs/releases/v1/evidence/privacy-data-map.json +58 -0
  240. magicite-1.0.0/docs/releases/v1/evidence/privacy-historical-cleanup.json +59 -0
  241. magicite-1.0.0/docs/releases/v1/evidence/privacy-lifecycle-tests.json +113 -0
  242. magicite-1.0.0/docs/releases/v1/evidence/privacy-no-default-raw.json +73 -0
  243. magicite-1.0.0/docs/releases/v1/evidence/probe-checkpoint-process-death.py +61 -0
  244. magicite-1.0.0/docs/releases/v1/evidence/pytest.txt +27 -0
  245. magicite-1.0.0/docs/releases/v1/evidence/reproduce-trust-mirror-loss.py +50 -0
  246. magicite-1.0.0/docs/releases/v1/evidence/review-record.json +23 -0
  247. magicite-1.0.0/docs/releases/v1/evidence/ruff.txt +1 -0
  248. magicite-1.0.0/docs/releases/v1/evidence/schema-frozen-schema.json +62 -0
  249. magicite-1.0.0/docs/releases/v1/evidence/schema-migration-downgrade-replay.json +72 -0
  250. magicite-1.0.0/docs/releases/v1/evidence/schema-roundtrip-corpus.json +51 -0
  251. magicite-1.0.0/docs/releases/v1/evidence/test-results.json +4191 -0
  252. magicite-1.0.0/docs/releases/v1/evidence/trust-diagnostic-provenance.json +36 -0
  253. magicite-1.0.0/docs/releases/v1/evidence/trust-mirror-loss.json +9 -0
  254. magicite-1.0.0/docs/releases/v1/gate-table.md +27 -0
  255. magicite-1.0.0/docs/releases/v1/privacy-data-map.md +25 -0
  256. magicite-1.0.0/docs/releases/v1/r2/README.md +102 -0
  257. magicite-1.0.0/docs/releases/v1/r2/criterion-ledger.json +8715 -0
  258. magicite-1.0.0/docs/releases/v1/r2/evidence/build_r2_package.py +1760 -0
  259. magicite-1.0.0/docs/releases/v1/r2/evidence/checkpoint-process-death-custody.json +10 -0
  260. magicite-1.0.0/docs/releases/v1/r2/evidence/checkpoint-process-death-provenance.json +49 -0
  261. magicite-1.0.0/docs/releases/v1/r2/evidence/checks.json +47 -0
  262. magicite-1.0.0/docs/releases/v1/r2/evidence/docs.txt +1 -0
  263. magicite-1.0.0/docs/releases/v1/r2/evidence/environment.json +87 -0
  264. magicite-1.0.0/docs/releases/v1/r2/evidence/generated.txt +1 -0
  265. magicite-1.0.0/docs/releases/v1/r2/evidence/historical-diagnostics-at-r2-source.json +35 -0
  266. magicite-1.0.0/docs/releases/v1/r2/evidence/junit.xml +1 -0
  267. magicite-1.0.0/docs/releases/v1/r2/evidence/learning-containment.json +137 -0
  268. magicite-1.0.0/docs/releases/v1/r2/evidence/learning-fully-gated-or-unavailable.json +133 -0
  269. magicite-1.0.0/docs/releases/v1/r2/evidence/mypy.txt +1 -0
  270. magicite-1.0.0/docs/releases/v1/r2/evidence/policy-dream-isolation.json +129 -0
  271. magicite-1.0.0/docs/releases/v1/r2/evidence/policy-explicit-experimental.json +129 -0
  272. magicite-1.0.0/docs/releases/v1/r2/evidence/policy-nonadaptive-default.json +133 -0
  273. magicite-1.0.0/docs/releases/v1/r2/evidence/policy-pinned-incumbent.json +141 -0
  274. magicite-1.0.0/docs/releases/v1/r2/evidence/privacy-checkpoint-rpo.json +150 -0
  275. magicite-1.0.0/docs/releases/v1/r2/evidence/privacy-data-map.json +136 -0
  276. magicite-1.0.0/docs/releases/v1/r2/evidence/privacy-historical-cleanup.json +137 -0
  277. magicite-1.0.0/docs/releases/v1/r2/evidence/privacy-lifecycle-tests.json +199 -0
  278. magicite-1.0.0/docs/releases/v1/r2/evidence/privacy-no-default-raw.json +151 -0
  279. magicite-1.0.0/docs/releases/v1/r2/evidence/probe-checkpoint-process-death-custody.py +111 -0
  280. magicite-1.0.0/docs/releases/v1/r2/evidence/pytest.txt +29 -0
  281. magicite-1.0.0/docs/releases/v1/r2/evidence/reproduce-trust-mirror-loss-custody.py +179 -0
  282. magicite-1.0.0/docs/releases/v1/r2/evidence/review-record.json +23 -0
  283. magicite-1.0.0/docs/releases/v1/r2/evidence/ruff.txt +1 -0
  284. magicite-1.0.0/docs/releases/v1/r2/evidence/schema-frozen-schema.json +140 -0
  285. magicite-1.0.0/docs/releases/v1/r2/evidence/schema-migration-downgrade-replay.json +150 -0
  286. magicite-1.0.0/docs/releases/v1/r2/evidence/schema-roundtrip-corpus.json +129 -0
  287. magicite-1.0.0/docs/releases/v1/r2/evidence/test-results.json +4979 -0
  288. magicite-1.0.0/docs/releases/v1/r2/evidence/trust-mirror-diagnostic-provenance.json +57 -0
  289. magicite-1.0.0/docs/releases/v1/r2/evidence/trust-mirror-loss-custody.json +68 -0
  290. magicite-1.0.0/docs/releases/v1/r2/gate-table.md +27 -0
  291. magicite-1.0.0/docs/releases/v1/r2/release-manifest.json +538 -0
  292. magicite-1.0.0/docs/releases/v1/r3/README.md +56 -0
  293. magicite-1.0.0/docs/releases/v1/r3/criterion-ledger.json +3608 -0
  294. magicite-1.0.0/docs/releases/v1/r3/evidence/build_r3_package.py +686 -0
  295. magicite-1.0.0/docs/releases/v1/r3/evidence/checks.json +134 -0
  296. magicite-1.0.0/docs/releases/v1/r3/evidence/docs.exit +1 -0
  297. magicite-1.0.0/docs/releases/v1/r3/evidence/docs.txt +1 -0
  298. magicite-1.0.0/docs/releases/v1/r3/evidence/environment.json +13 -0
  299. magicite-1.0.0/docs/releases/v1/r3/evidence/findings-register-68725d4.md +104 -0
  300. magicite-1.0.0/docs/releases/v1/r3/evidence/focused.exit +1 -0
  301. magicite-1.0.0/docs/releases/v1/r3/evidence/focused.txt +2 -0
  302. magicite-1.0.0/docs/releases/v1/r3/evidence/generated.exit +1 -0
  303. magicite-1.0.0/docs/releases/v1/r3/evidence/generated.txt +1 -0
  304. magicite-1.0.0/docs/releases/v1/r3/evidence/head.txt +1 -0
  305. magicite-1.0.0/docs/releases/v1/r3/evidence/historical-failure-summary.json +70 -0
  306. magicite-1.0.0/docs/releases/v1/r3/evidence/independent-adjacent-final.log +2 -0
  307. magicite-1.0.0/docs/releases/v1/r3/evidence/independent-adversarial-final.log +2 -0
  308. magicite-1.0.0/docs/releases/v1/r3/evidence/independent-c2-adversarial.log +2 -0
  309. magicite-1.0.0/docs/releases/v1/r3/evidence/independent-c2-focused.log +3 -0
  310. magicite-1.0.0/docs/releases/v1/r3/evidence/independent-focused-final.log +2 -0
  311. magicite-1.0.0/docs/releases/v1/r3/evidence/independent-package-references.log +10 -0
  312. magicite-1.0.0/docs/releases/v1/r3/evidence/independent-package-verify.log +5 -0
  313. magicite-1.0.0/docs/releases/v1/r3/evidence/independent-release-validator.log +26 -0
  314. magicite-1.0.0/docs/releases/v1/r3/evidence/independent_package_check.py.txt +29 -0
  315. magicite-1.0.0/docs/releases/v1/r3/evidence/inherited-provenance.json +31 -0
  316. magicite-1.0.0/docs/releases/v1/r3/evidence/junit.xml +1 -0
  317. magicite-1.0.0/docs/releases/v1/r3/evidence/mypy.exit +1 -0
  318. magicite-1.0.0/docs/releases/v1/r3/evidence/mypy.txt +1 -0
  319. magicite-1.0.0/docs/releases/v1/r3/evidence/package-review.json +49 -0
  320. magicite-1.0.0/docs/releases/v1/r3/evidence/package-review.md +52 -0
  321. magicite-1.0.0/docs/releases/v1/r3/evidence/primary-preservation.json +18 -0
  322. magicite-1.0.0/docs/releases/v1/r3/evidence/privacy-data-map.template.md +31 -0
  323. magicite-1.0.0/docs/releases/v1/r3/evidence/pytest.exit +1 -0
  324. magicite-1.0.0/docs/releases/v1/r3/evidence/pytest.txt +157 -0
  325. magicite-1.0.0/docs/releases/v1/r3/evidence/r3-open-items-68725d4.md +50 -0
  326. magicite-1.0.0/docs/releases/v1/r3/evidence/release-decision.json +42 -0
  327. magicite-1.0.0/docs/releases/v1/r3/evidence/release-negative-controls.exit +1 -0
  328. magicite-1.0.0/docs/releases/v1/r3/evidence/release-negative-controls.txt +2 -0
  329. magicite-1.0.0/docs/releases/v1/r3/evidence/review-c2.md +16 -0
  330. magicite-1.0.0/docs/releases/v1/r3/evidence/review-candidate-binding-c2.md +6 -0
  331. magicite-1.0.0/docs/releases/v1/r3/evidence/review-candidate-binding.md +11 -0
  332. magicite-1.0.0/docs/releases/v1/r3/evidence/review-final.md +25 -0
  333. magicite-1.0.0/docs/releases/v1/r3/evidence/ruff.exit +1 -0
  334. magicite-1.0.0/docs/releases/v1/r3/evidence/ruff.txt +1 -0
  335. magicite-1.0.0/docs/releases/v1/r3/evidence/source-bindings.json +100 -0
  336. magicite-1.0.0/docs/releases/v1/r3/evidence/status-after.txt +0 -0
  337. magicite-1.0.0/docs/releases/v1/r3/evidence/status-before.txt +0 -0
  338. magicite-1.0.0/docs/releases/v1/r3/evidence/test-results.json +18 -0
  339. magicite-1.0.0/docs/releases/v1/r3/evidence/test_independent_c2.py.txt +26 -0
  340. magicite-1.0.0/docs/releases/v1/r3/evidence/test_independent_review_final.py.txt +27 -0
  341. magicite-1.0.0/docs/releases/v1/r3/evidence/threat-model-68725d4.md +219 -0
  342. magicite-1.0.0/docs/releases/v1/r3/evidence/zero-write-doctor.json +54 -0
  343. magicite-1.0.0/docs/releases/v1/r3/gate-table.md +26 -0
  344. magicite-1.0.0/docs/releases/v1/r3/package-index.json +222 -0
  345. magicite-1.0.0/docs/releases/v1/r3/privacy-data-map.md +31 -0
  346. magicite-1.0.0/docs/releases/v1/r3/release-manifest.json +264 -0
  347. magicite-1.0.0/docs/releases/v1/release-manifest.json +473 -0
  348. magicite-1.0.0/docs/releases/v1/release-reconciliation-2026-10-11.md +35 -0
  349. magicite-1.0.0/docs/releases/v1/roadmap-proposal-2026-10-11.md +25 -0
  350. magicite-1.0.0/docs/releases/v1/trust-ledger-proposal.md +61 -0
  351. magicite-1.0.0/docs/research/exploratory/consolidated-research-graph-mcp-proposal.md +320 -0
  352. magicite-1.0.0/docs/research/exploratory/engram-format.md +174 -0
  353. magicite-1.0.0/docs/research/exploratory/graphs-from-euler-to-today.md +71 -0
  354. magicite-1.0.0/docs/research/exploratory/mcp20-server-dossier.md +872 -0
  355. magicite-1.0.0/docs/research/exploratory/neuroscience-knowledge-acquisition.md +133 -0
  356. magicite-1.0.0/docs/security/bounded-hardening-assessment.md +75 -0
  357. magicite-1.0.0/docs/setup.md +168 -0
  358. magicite-1.0.0/docs/support-policy.json +62 -0
  359. magicite-1.0.0/docs/v1-baselines.md +45 -0
  360. magicite-1.0.0/pyproject.toml +129 -0
  361. magicite-1.0.0/scripts/capture_mcp_stdio.py +256 -0
  362. magicite-1.0.0/scripts/check_docs.py +180 -0
  363. magicite-1.0.0/scripts/check_evaluation_results.py +214 -0
  364. magicite-1.0.0/scripts/check_generated_docs.py +132 -0
  365. magicite-1.0.0/scripts/check_provenance.py +38 -0
  366. magicite-1.0.0/scripts/check_release_manifest.py +338 -0
  367. magicite-1.0.0/scripts/check_supply_chain.py +205 -0
  368. magicite-1.0.0/scripts/docs_v1_contracts.py +122 -0
  369. magicite-1.0.0/scripts/dogfood_graph_check.py +175 -0
  370. magicite-1.0.0/scripts/dogfood_ids.py +89 -0
  371. magicite-1.0.0/scripts/dogfood_mcp_entry.py +97 -0
  372. magicite-1.0.0/scripts/dogfood_reset.py +140 -0
  373. magicite-1.0.0/scripts/dogfood_session.py +249 -0
  374. magicite-1.0.0/scripts/dogfood_tier_probe.py +108 -0
  375. magicite-1.0.0/scripts/prepare_performance_corpus.py +413 -0
  376. magicite-1.0.0/scripts/probe_custodian_fsync_order.py +571 -0
  377. magicite-1.0.0/scripts/qualify_calibration_data.py +96 -0
  378. magicite-1.0.0/scripts/qualify_claude_host.py +912 -0
  379. magicite-1.0.0/scripts/qualify_custody_linux.py +1038 -0
  380. magicite-1.0.0/scripts/qualify_distributions.py +325 -0
  381. magicite-1.0.0/scripts/qualify_official_quality.py +1136 -0
  382. magicite-1.0.0/scripts/qualify_performance_linux.sh +420 -0
  383. magicite-1.0.0/scripts/qualify_production_empirical.py +591 -0
  384. magicite-1.0.0/scripts/qualify_skillret_corpus.py +300 -0
  385. magicite-1.0.0/scripts/run_benchmark_matrix.py +1185 -0
  386. magicite-1.0.0/scripts/smoke_operator_tutorial.py +345 -0
  387. magicite-1.0.0/scripts/verify_wheel_install.py +623 -0
  388. magicite-1.0.0/src/magicite/__init__.py +0 -0
  389. magicite-1.0.0/src/magicite/__main__.py +760 -0
  390. magicite-1.0.0/src/magicite/config.py +531 -0
  391. magicite-1.0.0/src/magicite/core/__init__.py +0 -0
  392. magicite-1.0.0/src/magicite/core/activation.py +310 -0
  393. magicite-1.0.0/src/magicite/core/approvals.py +685 -0
  394. magicite-1.0.0/src/magicite/core/audit.py +161 -0
  395. magicite-1.0.0/src/magicite/core/backup.py +1763 -0
  396. magicite-1.0.0/src/magicite/core/bundles.py +507 -0
  397. magicite-1.0.0/src/magicite/core/calibration.py +661 -0
  398. magicite-1.0.0/src/magicite/core/calibration_admission.py +227 -0
  399. magicite-1.0.0/src/magicite/core/candidates.py +610 -0
  400. magicite-1.0.0/src/magicite/core/communities.py +156 -0
  401. magicite-1.0.0/src/magicite/core/comparison_budget.py +63 -0
  402. magicite-1.0.0/src/magicite/core/composition.py +1270 -0
  403. magicite-1.0.0/src/magicite/core/context.py +168 -0
  404. magicite-1.0.0/src/magicite/core/custody_admin.py +310 -0
  405. magicite-1.0.0/src/magicite/core/decay.py +365 -0
  406. magicite-1.0.0/src/magicite/core/decay_math.py +31 -0
  407. magicite-1.0.0/src/magicite/core/distill.py +308 -0
  408. magicite-1.0.0/src/magicite/core/dream.py +1186 -0
  409. magicite-1.0.0/src/magicite/core/edge_weight.py +98 -0
  410. magicite-1.0.0/src/magicite/core/eligibility.py +858 -0
  411. magicite-1.0.0/src/magicite/core/evaluation_context.py +76 -0
  412. magicite-1.0.0/src/magicite/core/evidence.py +3167 -0
  413. magicite-1.0.0/src/magicite/core/fingerprint_key.py +145 -0
  414. magicite-1.0.0/src/magicite/core/fitness.py +159 -0
  415. magicite-1.0.0/src/magicite/core/index_generation.py +856 -0
  416. magicite-1.0.0/src/magicite/core/lifecycle.py +521 -0
  417. magicite-1.0.0/src/magicite/core/migration.py +1340 -0
  418. magicite-1.0.0/src/magicite/core/plasticity.py +164 -0
  419. magicite-1.0.0/src/magicite/core/policy_store.py +805 -0
  420. magicite-1.0.0/src/magicite/core/recovery_gate.py +319 -0
  421. magicite-1.0.0/src/magicite/core/registry.py +2011 -0
  422. magicite-1.0.0/src/magicite/core/router.py +2553 -0
  423. magicite-1.0.0/src/magicite/core/routing_policy.py +221 -0
  424. magicite-1.0.0/src/magicite/core/session.py +191 -0
  425. magicite-1.0.0/src/magicite/core/signals.py +338 -0
  426. magicite-1.0.0/src/magicite/core/trust.py +921 -0
  427. magicite-1.0.0/src/magicite/core/trust_artifacts.py +428 -0
  428. magicite-1.0.0/src/magicite/core/trust_custodian.py +822 -0
  429. magicite-1.0.0/src/magicite/core/trust_custodian_transport.py +548 -0
  430. magicite-1.0.0/src/magicite/core/trust_journal.py +593 -0
  431. magicite-1.0.0/src/magicite/core/trust_legacy.py +646 -0
  432. magicite-1.0.0/src/magicite/core/trust_reconciliation.py +166 -0
  433. magicite-1.0.0/src/magicite/core/trust_rotation.py +101 -0
  434. magicite-1.0.0/src/magicite/core/trust_rotation_client.py +101 -0
  435. magicite-1.0.0/src/magicite/core/trust_rotation_service.py +121 -0
  436. magicite-1.0.0/src/magicite/core/writer_guard.py +171 -0
  437. magicite-1.0.0/src/magicite/embeddings/__init__.py +61 -0
  438. magicite-1.0.0/src/magicite/embeddings/base.py +37 -0
  439. magicite-1.0.0/src/magicite/embeddings/cache.py +76 -0
  440. magicite-1.0.0/src/magicite/embeddings/fastembed_provider.py +206 -0
  441. magicite-1.0.0/src/magicite/embeddings/hashing_provider.py +75 -0
  442. magicite-1.0.0/src/magicite/embeddings/ollama_provider.py +98 -0
  443. magicite-1.0.0/src/magicite/embeddings/reranker.py +68 -0
  444. magicite-1.0.0/src/magicite/engram/__init__.py +106 -0
  445. magicite-1.0.0/src/magicite/engram/assets.py +210 -0
  446. magicite-1.0.0/src/magicite/engram/digests.py +93 -0
  447. magicite-1.0.0/src/magicite/engram/ids.py +79 -0
  448. magicite-1.0.0/src/magicite/engram/lint.py +220 -0
  449. magicite-1.0.0/src/magicite/engram/model.py +252 -0
  450. magicite-1.0.0/src/magicite/engram/model_v1.py +250 -0
  451. magicite-1.0.0/src/magicite/engram/parser.py +330 -0
  452. magicite-1.0.0/src/magicite/engram/schema/engram-0.2.schema.json +176 -0
  453. magicite-1.0.0/src/magicite/engram/schema/engram-1.0.schema.json +325 -0
  454. magicite-1.0.0/src/magicite/engram/schema_validate.py +252 -0
  455. magicite-1.0.0/src/magicite/engram/skillmd.py +383 -0
  456. magicite-1.0.0/src/magicite/engram/transform.py +257 -0
  457. magicite-1.0.0/src/magicite/engram/version_constraints.py +80 -0
  458. magicite-1.0.0/src/magicite/engram/writer.py +599 -0
  459. magicite-1.0.0/src/magicite/errors.py +115 -0
  460. magicite-1.0.0/src/magicite/eval/__init__.py +73 -0
  461. magicite-1.0.0/src/magicite/eval/__main__.py +619 -0
  462. magicite-1.0.0/src/magicite/eval/ablations.py +206 -0
  463. magicite-1.0.0/src/magicite/eval/bench.py +519 -0
  464. magicite-1.0.0/src/magicite/eval/calibration_consumer.py +745 -0
  465. magicite-1.0.0/src/magicite/eval/composition_eval.py +166 -0
  466. magicite-1.0.0/src/magicite/eval/data_readiness.py +644 -0
  467. magicite-1.0.0/src/magicite/eval/digests.py +48 -0
  468. magicite-1.0.0/src/magicite/eval/envelopes.py +421 -0
  469. magicite-1.0.0/src/magicite/eval/external.py +166 -0
  470. magicite-1.0.0/src/magicite/eval/gold.py +175 -0
  471. magicite-1.0.0/src/magicite/eval/grouped_evaluation.py +891 -0
  472. magicite-1.0.0/src/magicite/eval/host_tasks.py +161 -0
  473. magicite-1.0.0/src/magicite/eval/manifests.py +395 -0
  474. magicite-1.0.0/src/magicite/eval/metrics.py +462 -0
  475. magicite-1.0.0/src/magicite/eval/operator_cli.py +565 -0
  476. magicite-1.0.0/src/magicite/eval/production.py +353 -0
  477. magicite-1.0.0/src/magicite/eval/profiles.py +356 -0
  478. magicite-1.0.0/src/magicite/eval/protected_benchmark.py +870 -0
  479. magicite-1.0.0/src/magicite/eval/quality.py +249 -0
  480. magicite-1.0.0/src/magicite/eval/query_context.py +24 -0
  481. magicite-1.0.0/src/magicite/eval/runner.py +130 -0
  482. magicite-1.0.0/src/magicite/eval/scale.py +53 -0
  483. magicite-1.0.0/src/magicite/eval/skillret.py +444 -0
  484. magicite-1.0.0/src/magicite/eval/unevaluated.py +197 -0
  485. magicite-1.0.0/src/magicite/eval/validate.py +582 -0
  486. magicite-1.0.0/src/magicite/eval/verdicts.py +432 -0
  487. magicite-1.0.0/src/magicite/mcp/__init__.py +0 -0
  488. magicite-1.0.0/src/magicite/mcp/app.py +579 -0
  489. magicite-1.0.0/src/magicite/mcp/bind_dream.py +95 -0
  490. magicite-1.0.0/src/magicite/mcp/bind_inspect.py +117 -0
  491. magicite-1.0.0/src/magicite/mcp/bind_lifecycle.py +343 -0
  492. magicite-1.0.0/src/magicite/mcp/bind_ops.py +616 -0
  493. magicite-1.0.0/src/magicite/mcp/bind_registry.py +114 -0
  494. magicite-1.0.0/src/magicite/mcp/bind_retrieval.py +646 -0
  495. magicite-1.0.0/src/magicite/mcp/bind_signals.py +102 -0
  496. magicite-1.0.0/src/magicite/mcp/redact.py +80 -0
  497. magicite-1.0.0/src/magicite/mcp/registry.py +146 -0
  498. magicite-1.0.0/src/magicite/mcp/schemas.py +572 -0
  499. magicite-1.0.0/src/magicite/obs/__init__.py +0 -0
  500. magicite-1.0.0/src/magicite/obs/doctor.py +720 -0
  501. magicite-1.0.0/src/magicite/obs/events.py +112 -0
  502. magicite-1.0.0/src/magicite/obs/kpi.py +203 -0
  503. magicite-1.0.0/src/magicite/obs/logging.py +54 -0
  504. magicite-1.0.0/src/magicite/project_init.py +499 -0
  505. magicite-1.0.0/src/magicite/storage/__init__.py +0 -0
  506. magicite-1.0.0/src/magicite/storage/authorizer.py +141 -0
  507. magicite-1.0.0/src/magicite/storage/db.py +154 -0
  508. magicite-1.0.0/src/magicite/storage/durable.py +542 -0
  509. magicite-1.0.0/src/magicite/storage/ephemeral.py +544 -0
  510. magicite-1.0.0/src/magicite/storage/lease.py +593 -0
  511. magicite-1.0.0/src/magicite/storage/migration_ops.py +345 -0
  512. magicite-1.0.0/src/magicite/storage/migrations/001_init.sql +206 -0
  513. magicite-1.0.0/src/magicite/storage/migrations/002_integrity_recovery.sql +9 -0
  514. magicite-1.0.0/src/magicite/storage/migrations/003_migration_authority.sql +53 -0
  515. magicite-1.0.0/src/magicite/storage/migrations/004_fulltext_index.sql +37 -0
  516. magicite-1.0.0/src/magicite/storage/migrations/005_bundle_trust.sql +37 -0
  517. magicite-1.0.0/src/magicite/storage/migrations/006_evidence_ledger.sql +48 -0
  518. magicite-1.0.0/src/magicite/storage/migrations/registry.py +109 -0
  519. magicite-1.0.0/src/magicite/storage/queries.py +378 -0
  520. magicite-1.0.0/tests/__init__.py +5 -0
  521. magicite-1.0.0/tests/acceptance/_stdio_escape_driver.py +73 -0
  522. magicite-1.0.0/tests/acceptance/test_declared_edge_weight.py +50 -0
  523. magicite-1.0.0/tests/acceptance/test_docker_smoke.py +471 -0
  524. magicite-1.0.0/tests/acceptance/test_dream_idempotent.py +119 -0
  525. magicite-1.0.0/tests/acceptance/test_install_channels.py +523 -0
  526. magicite-1.0.0/tests/acceptance/test_operator_tutorial.py +32 -0
  527. magicite-1.0.0/tests/acceptance/test_p0_hot_path.py +223 -0
  528. magicite-1.0.0/tests/acceptance/test_rebuild_invariant.py +448 -0
  529. magicite-1.0.0/tests/acceptance/test_stdio_cancellation.py +93 -0
  530. magicite-1.0.0/tests/acceptance/test_stdio_handshake.py +269 -0
  531. magicite-1.0.0/tests/acceptance/test_tool_manifest.py +59 -0
  532. magicite-1.0.0/tests/acceptance/test_v1_conformance.py +176 -0
  533. magicite-1.0.0/tests/acceptance/test_walking_skeleton.py +67 -0
  534. magicite-1.0.0/tests/conftest.py +148 -0
  535. magicite-1.0.0/tests/fixtures/adversarial/trust/manifest.json +3624 -0
  536. magicite-1.0.0/tests/fixtures/calibration-data/README.md +1 -0
  537. magicite-1.0.0/tests/fixtures/calibration-data/candidate-one.txt +1 -0
  538. magicite-1.0.0/tests/fixtures/calibration-data/candidate-two.txt +1 -0
  539. magicite-1.0.0/tests/fixtures/calibration-data/judgment1.json +9 -0
  540. magicite-1.0.0/tests/fixtures/calibration-data/judgment2.json +9 -0
  541. magicite-1.0.0/tests/fixtures/calibration-data/labels.json +26 -0
  542. magicite-1.0.0/tests/fixtures/calibration-data/packet.json +86 -0
  543. magicite-1.0.0/tests/fixtures/calibration-data/partitions.json +14 -0
  544. magicite-1.0.0/tests/fixtures/calibration-data/pool.json +16 -0
  545. magicite-1.0.0/tests/fixtures/calibration-data/preregistration.json +4 -0
  546. magicite-1.0.0/tests/fixtures/calibration-data/provenance.json +83 -0
  547. magicite-1.0.0/tests/fixtures/calibration-data/review0.json +5 -0
  548. magicite-1.0.0/tests/fixtures/calibration-data/review1.json +5 -0
  549. magicite-1.0.0/tests/fixtures/calibration-data/review2.json +5 -0
  550. magicite-1.0.0/tests/fixtures/calibration-data/runtime.json +17 -0
  551. magicite-1.0.0/tests/fixtures/calibration-data/source0.json +11 -0
  552. magicite-1.0.0/tests/fixtures/calibration-data/source1.json +11 -0
  553. magicite-1.0.0/tests/fixtures/calibration-data/source2.json +11 -0
  554. magicite-1.0.0/tests/fixtures/calibration-data/time0.json +6 -0
  555. magicite-1.0.0/tests/fixtures/calibration-data/time1.json +6 -0
  556. magicite-1.0.0/tests/fixtures/calibration-data/time2.json +6 -0
  557. magicite-1.0.0/tests/fixtures/composition-v1/host_verifier.py +273 -0
  558. magicite-1.0.0/tests/fixtures/composition-v1/structural-corpus.json +46 -0
  559. magicite-1.0.0/tests/fixtures/composition-v1/tasks/echo-ok.json +15 -0
  560. magicite-1.0.0/tests/fixtures/eligibility-v1/consumer-paths.json +127 -0
  561. magicite-1.0.0/tests/fixtures/engram-v1/assets/good/helper.sh +2 -0
  562. magicite-1.0.0/tests/fixtures/engram-v1/negative/asset-absolute.json +19 -0
  563. magicite-1.0.0/tests/fixtures/engram-v1/negative/asset-backslash.json +19 -0
  564. magicite-1.0.0/tests/fixtures/engram-v1/negative/asset-traversal.json +19 -0
  565. magicite-1.0.0/tests/fixtures/engram-v1/negative/invalid-semver-range.egr.md +32 -0
  566. magicite-1.0.0/tests/fixtures/engram-v1/negative/unknown-required-extension.egr.md +33 -0
  567. magicite-1.0.0/tests/fixtures/engram-v1/positive/sample-host-tooling.egr.md +89 -0
  568. magicite-1.0.0/tests/fixtures/engram-v1/relations/before-supersedes.egr.md +49 -0
  569. magicite-1.0.0/tests/fixtures/engram-v1/relations/shared-relation-fixtures.json +33 -0
  570. magicite-1.0.0/tests/fixtures/protocol-v1/host-support-manifest.json +50 -0
  571. magicite-1.0.0/tests/fixtures/protocol-v1/tool-manifest.snapshot.json +3407 -0
  572. magicite-1.0.0/tests/fixtures/protocol-v1/transcripts/claude-code.UNEVALUATED.json +6 -0
  573. magicite-1.0.0/tests/fixtures/protocol-v1/transcripts/stdio-generic.json +29 -0
  574. magicite-1.0.0/tests/fixtures/toy-registry/engrams/lutris-wine-prefix-setup.egr.md +50 -0
  575. magicite-1.0.0/tests/fixtures/toy-registry/engrams/nvidia-prime-render-offload.egr.md +50 -0
  576. magicite-1.0.0/tests/fixtures/toy-registry/engrams/proton-clean-install.egr.md +51 -0
  577. magicite-1.0.0/tests/fixtures/toy-registry/engrams/proton-ge-proton-downgrade.egr.md +54 -0
  578. magicite-1.0.0/tests/fixtures/toy-registry/engrams/proton-verify-installation.egr.md +51 -0
  579. magicite-1.0.0/tests/fixtures/toy-registry/engrams/steam-prefix-access.egr.md +50 -0
  580. magicite-1.0.0/tests/fixtures/toy-registry/engrams/steam-runtime-repair.egr.md +50 -0
  581. magicite-1.0.0/tests/fixtures/toy-registry/queries.jsonl +41 -0
  582. magicite-1.0.0/tests/fixtures/toy-registry/skills/proton-battleye-eac-toggle/SKILL.md +18 -0
  583. magicite-1.0.0/tests/fixtures/toy-registry/skills/steam-download-region-fix/SKILL.md +18 -0
  584. magicite-1.0.0/tests/fixtures/toy-registry/skills/wine-dxvk-cache-clear/SKILL.md +18 -0
  585. magicite-1.0.0/tests/fuzz/__init__.py +1 -0
  586. magicite-1.0.0/tests/fuzz/harness.py +328 -0
  587. magicite-1.0.0/tests/fuzz/test_bounded_fuzz.py +433 -0
  588. magicite-1.0.0/tests/integration/test_backup_restore_v1.py +839 -0
  589. magicite-1.0.0/tests/integration/test_bench.py +131 -0
  590. magicite-1.0.0/tests/integration/test_composition_v1.py +538 -0
  591. magicite-1.0.0/tests/integration/test_custody_linux_qualification.py +236 -0
  592. magicite-1.0.0/tests/integration/test_dream_crash_recovery.py +129 -0
  593. magicite-1.0.0/tests/integration/test_dream_cycle.py +171 -0
  594. magicite-1.0.0/tests/integration/test_evidence_durability.py +435 -0
  595. magicite-1.0.0/tests/integration/test_evidence_recovery.py +180 -0
  596. magicite-1.0.0/tests/integration/test_idempotency_recovery.py +149 -0
  597. magicite-1.0.0/tests/integration/test_index_generation.py +179 -0
  598. magicite-1.0.0/tests/integration/test_index_identity.py +193 -0
  599. magicite-1.0.0/tests/integration/test_lease_multiprocess.py +691 -0
  600. magicite-1.0.0/tests/integration/test_migration_v1.py +603 -0
  601. magicite-1.0.0/tests/integration/test_operator_cli_completeness.py +316 -0
  602. magicite-1.0.0/tests/integration/test_policy_fencing.py +255 -0
  603. magicite-1.0.0/tests/integration/test_project_init.py +158 -0
  604. magicite-1.0.0/tests/integration/test_recent_failure_context.py +43 -0
  605. magicite-1.0.0/tests/integration/test_register_import.py +161 -0
  606. magicite-1.0.0/tests/integration/test_route_end_to_end.py +1384 -0
  607. magicite-1.0.0/tests/integration/test_route_latency.py +263 -0
  608. magicite-1.0.0/tests/integration/test_route_reproducibility.py +43 -0
  609. magicite-1.0.0/tests/integration/test_skillmd_roundtrip.py +146 -0
  610. magicite-1.0.0/tests/integration/test_stable_policy_activation.py +232 -0
  611. magicite-1.0.0/tests/integration/test_th10_old_reader_downgrade.py +401 -0
  612. magicite-1.0.0/tests/integration/test_th_restore_overlay_authority.py +387 -0
  613. magicite-1.0.0/tests/integration/test_trust_adversarial_corpus.py +1298 -0
  614. magicite-1.0.0/tests/integration/test_trust_recovery.py +124 -0
  615. magicite-1.0.0/tests/integration/test_upgrade_v02.py +116 -0
  616. magicite-1.0.0/tests/support/__init__.py +1 -0
  617. magicite-1.0.0/tests/support/custody_adapter.py +209 -0
  618. magicite-1.0.0/tests/support/raises_recorder.py +64 -0
  619. magicite-1.0.0/tests/support/serve_with_fixture_custody.py +27 -0
  620. magicite-1.0.0/tests/unit/__init__.py +1 -0
  621. magicite-1.0.0/tests/unit/core/__init__.py +1 -0
  622. magicite-1.0.0/tests/unit/core/test_activation.py +121 -0
  623. magicite-1.0.0/tests/unit/core/test_approvals.py +268 -0
  624. magicite-1.0.0/tests/unit/core/test_audit.py +101 -0
  625. magicite-1.0.0/tests/unit/core/test_calibration.py +166 -0
  626. magicite-1.0.0/tests/unit/core/test_calibration_admission.py +316 -0
  627. magicite-1.0.0/tests/unit/core/test_candidates.py +330 -0
  628. magicite-1.0.0/tests/unit/core/test_communities.py +102 -0
  629. magicite-1.0.0/tests/unit/core/test_composition.py +304 -0
  630. magicite-1.0.0/tests/unit/core/test_custody_admin.py +294 -0
  631. magicite-1.0.0/tests/unit/core/test_custody_test_fixture.py +44 -0
  632. magicite-1.0.0/tests/unit/core/test_custody_writer_guard.py +229 -0
  633. magicite-1.0.0/tests/unit/core/test_decay.py +273 -0
  634. magicite-1.0.0/tests/unit/core/test_distill.py +110 -0
  635. magicite-1.0.0/tests/unit/core/test_dream.py +368 -0
  636. magicite-1.0.0/tests/unit/core/test_dream_recovery.py +110 -0
  637. magicite-1.0.0/tests/unit/core/test_edge_weight.py +135 -0
  638. magicite-1.0.0/tests/unit/core/test_eligibility.py +580 -0
  639. magicite-1.0.0/tests/unit/core/test_events.py +9 -0
  640. magicite-1.0.0/tests/unit/core/test_evidence.py +146 -0
  641. magicite-1.0.0/tests/unit/core/test_evidence_atlas_fixes.py +362 -0
  642. magicite-1.0.0/tests/unit/core/test_evidence_round2_integrity.py +345 -0
  643. magicite-1.0.0/tests/unit/core/test_evidence_round3_export_registry.py +229 -0
  644. magicite-1.0.0/tests/unit/core/test_evidence_round4_export_hardening.py +253 -0
  645. magicite-1.0.0/tests/unit/core/test_evidence_round5_marker_auth.py +240 -0
  646. magicite-1.0.0/tests/unit/core/test_evidence_round6_authority.py +259 -0
  647. magicite-1.0.0/tests/unit/core/test_evidence_round7_migrate_empty_only.py +147 -0
  648. magicite-1.0.0/tests/unit/core/test_fingerprint_key.py +166 -0
  649. magicite-1.0.0/tests/unit/core/test_fitness.py +183 -0
  650. magicite-1.0.0/tests/unit/core/test_fuzz_regressions.py +101 -0
  651. magicite-1.0.0/tests/unit/core/test_lifecycle.py +109 -0
  652. magicite-1.0.0/tests/unit/core/test_plasticity.py +148 -0
  653. magicite-1.0.0/tests/unit/core/test_policy_boundary.py +287 -0
  654. magicite-1.0.0/tests/unit/core/test_policy_governance_evidence.py +107 -0
  655. magicite-1.0.0/tests/unit/core/test_registry.py +20 -0
  656. magicite-1.0.0/tests/unit/core/test_registry_core.py +146 -0
  657. magicite-1.0.0/tests/unit/core/test_review_approve_busy_wait.py +363 -0
  658. magicite-1.0.0/tests/unit/core/test_router.py +361 -0
  659. magicite-1.0.0/tests/unit/core/test_router_core.py +140 -0
  660. magicite-1.0.0/tests/unit/core/test_router_policy.py +710 -0
  661. magicite-1.0.0/tests/unit/core/test_session.py +185 -0
  662. magicite-1.0.0/tests/unit/core/test_signals.py +333 -0
  663. magicite-1.0.0/tests/unit/core/test_similar_to_determinism.py +69 -0
  664. magicite-1.0.0/tests/unit/core/test_th_fault_ack_matrix.py +318 -0
  665. magicite-1.0.0/tests/unit/core/test_th_lease_post_commit.py +215 -0
  666. magicite-1.0.0/tests/unit/core/test_th_mutation_binding.py +315 -0
  667. magicite-1.0.0/tests/unit/core/test_th_peer_platform_fixtures.py +172 -0
  668. magicite-1.0.0/tests/unit/core/test_th_retry_matrix.py +322 -0
  669. magicite-1.0.0/tests/unit/core/test_th_single_snapshot_sites.py +516 -0
  670. magicite-1.0.0/tests/unit/core/test_trust_artifact_transform.py +270 -0
  671. magicite-1.0.0/tests/unit/core/test_trust_atlas_fixes.py +371 -0
  672. magicite-1.0.0/tests/unit/core/test_trust_authority_integration.py +1105 -0
  673. magicite-1.0.0/tests/unit/core/test_trust_bundle.py +93 -0
  674. magicite-1.0.0/tests/unit/core/test_trust_custodian.py +315 -0
  675. magicite-1.0.0/tests/unit/core/test_trust_custodian_transport.py +323 -0
  676. magicite-1.0.0/tests/unit/core/test_trust_history_paging.py +256 -0
  677. magicite-1.0.0/tests/unit/core/test_trust_intake.py +177 -0
  678. magicite-1.0.0/tests/unit/core/test_trust_journal.py +552 -0
  679. magicite-1.0.0/tests/unit/core/test_trust_legacy.py +660 -0
  680. magicite-1.0.0/tests/unit/core/test_trust_r2_import_safety.py +133 -0
  681. magicite-1.0.0/tests/unit/core/test_trust_r3_staging_journal.py +206 -0
  682. magicite-1.0.0/tests/unit/core/test_trust_r4_journal_auth.py +273 -0
  683. magicite-1.0.0/tests/unit/core/test_trust_r5_path_containment.py +180 -0
  684. magicite-1.0.0/tests/unit/core/test_trust_reconciliation.py +171 -0
  685. magicite-1.0.0/tests/unit/core/test_trust_rotation.py +273 -0
  686. magicite-1.0.0/tests/unit/core/test_trust_rotation_transport.py +432 -0
  687. magicite-1.0.0/tests/unit/embeddings/test_cache.py +100 -0
  688. magicite-1.0.0/tests/unit/embeddings/test_fastembed_provider.py +156 -0
  689. magicite-1.0.0/tests/unit/embeddings/test_hashing_provider.py +42 -0
  690. magicite-1.0.0/tests/unit/embeddings/test_ollama_provider.py +71 -0
  691. magicite-1.0.0/tests/unit/embeddings/test_provider_factory.py +85 -0
  692. magicite-1.0.0/tests/unit/engram/test_ids.py +38 -0
  693. magicite-1.0.0/tests/unit/engram/test_lint.py +82 -0
  694. magicite-1.0.0/tests/unit/engram/test_parser.py +110 -0
  695. magicite-1.0.0/tests/unit/engram/test_skillmd.py +264 -0
  696. magicite-1.0.0/tests/unit/engram/test_v1_schema.py +378 -0
  697. magicite-1.0.0/tests/unit/engram/test_writer.py +112 -0
  698. magicite-1.0.0/tests/unit/eval/test_ablations.py +118 -0
  699. magicite-1.0.0/tests/unit/eval/test_bench_baselines.py +253 -0
  700. magicite-1.0.0/tests/unit/eval/test_benchmark_matrix.py +596 -0
  701. magicite-1.0.0/tests/unit/eval/test_calibration_consumer.py +657 -0
  702. magicite-1.0.0/tests/unit/eval/test_data_readiness.py +345 -0
  703. magicite-1.0.0/tests/unit/eval/test_grouped_evaluation.py +423 -0
  704. magicite-1.0.0/tests/unit/eval/test_manifests.py +746 -0
  705. magicite-1.0.0/tests/unit/eval/test_metrics.py +189 -0
  706. magicite-1.0.0/tests/unit/eval/test_official_quality.py +107 -0
  707. magicite-1.0.0/tests/unit/eval/test_production_empirical.py +378 -0
  708. magicite-1.0.0/tests/unit/eval/test_protected_benchmark.py +630 -0
  709. magicite-1.0.0/tests/unit/eval/test_release_verdicts.py +246 -0
  710. magicite-1.0.0/tests/unit/eval/test_s14_audit.py +351 -0
  711. magicite-1.0.0/tests/unit/eval/test_scale_unevaluated.py +783 -0
  712. magicite-1.0.0/tests/unit/eval/test_skillret.py +227 -0
  713. magicite-1.0.0/tests/unit/mcp/__init__.py +1 -0
  714. magicite-1.0.0/tests/unit/mcp/test_bind_dream.py +78 -0
  715. magicite-1.0.0/tests/unit/mcp/test_bind_inspect.py +208 -0
  716. magicite-1.0.0/tests/unit/mcp/test_bind_lifecycle.py +263 -0
  717. magicite-1.0.0/tests/unit/mcp/test_bind_ops_cli.py +98 -0
  718. magicite-1.0.0/tests/unit/mcp/test_bind_registry_checkpoint.py +36 -0
  719. magicite-1.0.0/tests/unit/mcp/test_bind_retrieval.py +374 -0
  720. magicite-1.0.0/tests/unit/mcp/test_bind_signals.py +76 -0
  721. magicite-1.0.0/tests/unit/mcp/test_dispatch_call.py +191 -0
  722. magicite-1.0.0/tests/unit/mcp/test_export_containment.py +58 -0
  723. magicite-1.0.0/tests/unit/mcp/test_idempotency.py +209 -0
  724. magicite-1.0.0/tests/unit/mcp/test_redact.py +85 -0
  725. magicite-1.0.0/tests/unit/mcp/test_registry.py +41 -0
  726. magicite-1.0.0/tests/unit/mcp/test_schemas.py +51 -0
  727. magicite-1.0.0/tests/unit/mcp/test_typed_route_context.py +137 -0
  728. magicite-1.0.0/tests/unit/mcp/test_v1_retrieval.py +225 -0
  729. magicite-1.0.0/tests/unit/obs/__init__.py +1 -0
  730. magicite-1.0.0/tests/unit/obs/test_doctor.py +319 -0
  731. magicite-1.0.0/tests/unit/obs/test_events.py +69 -0
  732. magicite-1.0.0/tests/unit/obs/test_kpi.py +70 -0
  733. magicite-1.0.0/tests/unit/obs/test_th_custody_zero_write_canary.py +424 -0
  734. magicite-1.0.0/tests/unit/server/__init__.py +1 -0
  735. magicite-1.0.0/tests/unit/server/test_app.py +9 -0
  736. magicite-1.0.0/tests/unit/server/test_bind_inspect.py +9 -0
  737. magicite-1.0.0/tests/unit/server/test_bind_retrieval.py +9 -0
  738. magicite-1.0.0/tests/unit/storage/test_authorizer.py +257 -0
  739. magicite-1.0.0/tests/unit/storage/test_db.py +92 -0
  740. magicite-1.0.0/tests/unit/storage/test_durable.py +95 -0
  741. magicite-1.0.0/tests/unit/storage/test_ephemeral.py +228 -0
  742. magicite-1.0.0/tests/unit/storage/test_lease.py +296 -0
  743. magicite-1.0.0/tests/unit/storage/test_migration_ops.py +55 -0
  744. magicite-1.0.0/tests/unit/storage/test_migration_registry.py +34 -0
  745. magicite-1.0.0/tests/unit/storage/test_queries.py +40 -0
  746. magicite-1.0.0/tests/unit/test_cli_doctor.py +42 -0
  747. magicite-1.0.0/tests/unit/test_cli_serve_errors.py +84 -0
  748. magicite-1.0.0/tests/unit/test_cli_version.py +13 -0
  749. magicite-1.0.0/tests/unit/test_config.py +139 -0
  750. magicite-1.0.0/tests/unit/test_docs_v1.py +169 -0
  751. magicite-1.0.0/tests/unit/test_g3_enforcement.py +112 -0
  752. magicite-1.0.0/tests/unit/test_p0_enforcement.py +142 -0
  753. magicite-1.0.0/tests/unit/test_probe_custodian_fsync_order.py +238 -0
  754. magicite-1.0.0/tests/unit/test_project_init.py +336 -0
  755. magicite-1.0.0/tests/unit/test_qualify_calibration_data.py +67 -0
  756. magicite-1.0.0/tests/unit/test_qualify_distributions.py +42 -0
  757. magicite-1.0.0/tests/unit/test_qualify_official_quality.py +312 -0
  758. magicite-1.0.0/tests/unit/test_qualify_skillret_corpus.py +87 -0
  759. magicite-1.0.0/tests/unit/test_real_host_qualification.py +690 -0
  760. magicite-1.0.0/tests/unit/test_release_manifest.py +321 -0
  761. magicite-1.0.0/tests/unit/test_verify_wheel_install.py +144 -0
  762. magicite-1.0.0/tests/unit/test_version.py +41 -0
  763. 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"]