zaxy-memory 2.3.4__tar.gz → 2.4.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 (566) hide show
  1. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/CHANGELOG.md +23 -0
  2. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/PKG-INFO +3 -1
  3. zaxy_memory-2.4.0/docs/experimental/portable-export-conformance.md +62 -0
  4. zaxy_memory-2.4.0/docs/experimental/portable-export-security.md +95 -0
  5. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/hooks.md +43 -0
  6. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/pyproject.toml +6 -1
  7. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/build-site-docs.py +4 -0
  8. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/hooks.html +10 -0
  9. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/index.html +2 -2
  10. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/cli/workspace.py +94 -2
  11. zaxy_memory-2.4.0/src/zaxy/portable/__init__.py +44 -0
  12. zaxy_memory-2.4.0/src/zaxy/portable/anchor.py +48 -0
  13. zaxy_memory-2.4.0/src/zaxy/portable/envelope.py +109 -0
  14. zaxy_memory-2.4.0/src/zaxy/portable/export.py +148 -0
  15. zaxy_memory-2.4.0/src/zaxy/portable/merkle.py +73 -0
  16. zaxy_memory-2.4.0/src/zaxy/portable/rehydration.py +82 -0
  17. zaxy_memory-2.4.0/src/zaxy/portable/signing.py +76 -0
  18. zaxy_memory-2.4.0/tests/test_anchor.py +32 -0
  19. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_docs_site.py +1 -1
  20. zaxy_memory-2.4.0/tests/test_envelope.py +81 -0
  21. zaxy_memory-2.4.0/tests/test_portable_export.py +201 -0
  22. zaxy_memory-2.4.0/tests/test_rehydration.py +58 -0
  23. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/.gitignore +0 -0
  24. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/AGENTS.md +0 -0
  25. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/Dockerfile +0 -0
  26. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/LICENSE +0 -0
  27. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/README.md +0 -0
  28. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docker-compose.prod.yml +0 -0
  29. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docker-compose.yml +0 -0
  30. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/agent-events.md +0 -0
  31. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/announcements/zaxy-0.4.0.md +0 -0
  32. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/announcements/zaxy-coordinate.md +0 -0
  33. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/announcements/zaxy-v1.0-x-article.md +0 -0
  34. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/announcements/zaxy-v1.0.md +0 -0
  35. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/announcements/zaxy-v1.1-x-article.md +0 -0
  36. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/announcements/zaxy-v2.1.md +0 -0
  37. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/announcements/zaxy-v2.2-x-article.md +0 -0
  38. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/announcements/zaxy-v2.3-x-article.md +0 -0
  39. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/api-inventory.md +0 -0
  40. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/api.md +0 -0
  41. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/architecture.md +0 -0
  42. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/archive/benchmark-contributions.md +0 -0
  43. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/archive/benchmark-review.md +0 -0
  44. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/archive/competitive-positioning.md +0 -0
  45. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/archive/experimental-associative-memory.md +0 -0
  46. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/archive/longmembench.md +0 -0
  47. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/archive/memory-is-purpose-zaxy-analysis.md +0 -0
  48. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/archive/release-validation-checklist.md +0 -0
  49. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/archive/synthesis-context-research.md +0 -0
  50. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/archive/v09-gate-audit.md +0 -0
  51. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/archive/v1-roadmap.md +0 -0
  52. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/archive/v10-gate-audit.md +0 -0
  53. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/archive/zero-friction-runtime-roadmap.md +0 -0
  54. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/assets/zaxy-coordinate-header.png +0 -0
  55. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/assets/zaxy-v1-header.png +0 -0
  56. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/assets/zaxy-v1.1-header.png +0 -0
  57. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/assets/zaxy-v2.1-header.png +0 -0
  58. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/assets/zaxy-v2.1-hero.png +0 -0
  59. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/assets/zaxy-v2.2-header.png +0 -0
  60. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/assets/zaxy-v2.3-header.png +0 -0
  61. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/benchmarks.md +0 -0
  62. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/codebase.md +0 -0
  63. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/configuration.md +0 -0
  64. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/consolidation.md +0 -0
  65. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/coordinate-quickstart.md +0 -0
  66. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/coordinate-roadmap.md +0 -0
  67. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/deployment.md +0 -0
  68. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/embeddings.md +0 -0
  69. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/eventloom.md +0 -0
  70. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/examples/external-validation-report.example.json +0 -0
  71. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/examples/first-run-timing-report.json +0 -0
  72. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/examples/mcp-response-snapshots.json +0 -0
  73. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/examples/mcp-tool-contract.json +0 -0
  74. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/examples/memory-checkout-contract.json +0 -0
  75. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/examples/native-integration-contract.json +0 -0
  76. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/examples/v1-schema-freeze.json +0 -0
  77. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/external-validation.md +0 -0
  78. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/first-run-validation.md +0 -0
  79. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/getting-started.md +0 -0
  80. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/graph-schema.md +0 -0
  81. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/integrations.md +0 -0
  82. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/mcp-install-targets.md +0 -0
  83. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/mcp-quickstart.md +0 -0
  84. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/mcp.md +0 -0
  85. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/media/zaxy-2-5-3-0-latent-memory-roadmap-header.png +0 -0
  86. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/media/zaxy-codebase-review-header.png +0 -0
  87. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/media/zaxy-collaborate-demo.gif +0 -0
  88. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/media/zaxy-collaborate-demo.md +0 -0
  89. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/media/zaxy-collaborate-demo.mp4 +0 -0
  90. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/migration.md +0 -0
  91. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/operations.md +0 -0
  92. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/packet-analyzer.md +0 -0
  93. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/ann-engineering-2026-06.md +0 -0
  94. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/2-3-research/backend-options.md +0 -0
  95. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/2-3-research/external-validation.md +0 -0
  96. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/2-3-research/int8_bench_e_results.json +0 -0
  97. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/2-3-research/int8_bench_results.json +0 -0
  98. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/2-3-research/kuzu-usage-audit.md +0 -0
  99. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/2-3-research/promotion-pass.md +0 -0
  100. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/BASELINE.md +0 -0
  101. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/after-dim1536-r1.json +0 -0
  102. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/after-dim1536-r2.json +0 -0
  103. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/after-dim64-100k.json +0 -0
  104. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/after-dim64-r1.json +0 -0
  105. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/after-dim64-r2.json +0 -0
  106. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/after-dim64-r3.json +0 -0
  107. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/ann2-d64-10k-postcopy.json +0 -0
  108. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-gauss-r1.json +0 -0
  109. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-gauss-r2.json +0 -0
  110. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-hash-r1.json +0 -0
  111. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-hash-record.json +0 -0
  112. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/ann3-d1536-50k-gauss-crossover.json +0 -0
  113. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/ann3-d64-100k-r1.json +0 -0
  114. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/ann3-d64-100k-r2.json +0 -0
  115. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/ann4-d1536-50k-dimension-gated.json +0 -0
  116. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/ann4-d1536-50k-gauss-efs800.json +0 -0
  117. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/ann4-d1536-50k-gauss-r2.json +0 -0
  118. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/ann4-d64-100k-confirm.json +0 -0
  119. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/baseline-dim1536.json +0 -0
  120. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/baseline-dim64.json +0 -0
  121. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/diag-d1536-f32-ceiling.json +0 -0
  122. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/diag-gauss-efs-sweep.json +0 -0
  123. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/diag-ties-gaussian.json +0 -0
  124. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/experiments-e1-e4.json +0 -0
  125. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/artifacts/ann-2026-06/profiling-a2.json +0 -0
  126. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/codebase-review-2026-06-09.md +0 -0
  127. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/research/zaxy-memory-fabric-paper.md +0 -0
  128. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/retrieval.md +0 -0
  129. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/runbook.md +0 -0
  130. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/security.md +0 -0
  131. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/stability-commitment.md +0 -0
  132. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/plans/2026-05-08-codebase-file-map.md +0 -0
  133. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/plans/2026-05-08-domain-separated-defaults.md +0 -0
  134. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/plans/2026-05-08-local-first-retrieval.md +0 -0
  135. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/plans/2026-05-08-remote-mcp-rate-limit-audit.md +0 -0
  136. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/plans/2026-05-09-agent-integration-templates.md +0 -0
  137. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/plans/2026-05-09-retention-metadata-extraction.md +0 -0
  138. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/plans/2026-05-09-retrieval-feedback-events.md +0 -0
  139. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/plans/2026-05-10-merge-sprint.md +0 -0
  140. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/plans/2026-05-16-runtime-dashboard.md +0 -0
  141. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/plans/2026-05-17-skill-memory.md +0 -0
  142. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/plans/2026-05-18-pggraph-adapter.md +0 -0
  143. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/plans/2026-05-18-projection-backend-contract.md +0 -0
  144. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/plans/2026-05-20-zero-friction-embedded-graph-runtime.md +0 -0
  145. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/plans/2026-05-30-v0-5-public-positioning-first-run-trust.md +0 -0
  146. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/plans/2026-05-31-v1-release-docs-media.md +0 -0
  147. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/plans/2026-06-07-zaxy-2-0-alpha-1-causal-consolidation.md +0 -0
  148. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/plans/2026-06-07-zaxy-2-0-alpha-2-review-gated-consolidation.md +0 -0
  149. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/plans/2026-06-07-zaxy-2-0-beta-1-reasoning-loop-primitives.md +0 -0
  150. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/plans/2026-06-08-zaxy-2-0-beta-2-metacognitive-procedural-hardening.md +0 -0
  151. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/plans/2026-06-08-zaxy-2-0-rc-1-benchmark-freeze.md +0 -0
  152. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/plans/2026-06-09-codebase-review-high-value-remediation.md +0 -0
  153. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/specs/2026-05-08-codebase-file-map-design.md +0 -0
  154. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/specs/2026-05-08-domain-separated-defaults-design.md +0 -0
  155. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/specs/2026-05-08-local-first-retrieval-design.md +0 -0
  156. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/specs/2026-05-08-remote-mcp-rate-limit-audit-design.md +0 -0
  157. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/specs/2026-05-16-runtime-dashboard-design.md +0 -0
  158. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/specs/2026-05-17-skill-memory-pggraph-evaluation-design.md +0 -0
  159. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/specs/2026-05-31-v1-release-docs-media-design.md +0 -0
  160. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/specs/2026-06-07-zaxy-2-0-roadmap-design.md +0 -0
  161. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/specs/2026-06-09-zaxy-2-5-3-0-latent-memory-roadmap-design.md +0 -0
  162. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/specs/2026-06-10-zaxy-2-1-2-3-agent-experience-cognitive-memory-roadmap-design.md +0 -0
  163. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/specs/2026-06-10-zaxy-2-1-2-3-implementation-plan.md +0 -0
  164. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/specs/2026-06-11-zaxy-2-2-ann-engineering-plan.md +0 -0
  165. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/superpowers/specs/2026-06-11-zaxy-2-3-readiness-research.md +0 -0
  166. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/testing.md +0 -0
  167. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/why-zaxy.md +0 -0
  168. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/docs/workspace-genesis.md +0 -0
  169. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/examples/__init__.py +0 -0
  170. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/examples/adapters/coordinationbench_zaxy_adapter.py +0 -0
  171. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/examples/claude_compatible_memory.py +0 -0
  172. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/examples/coordinate_three_worker_project.py +0 -0
  173. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/examples/langgraph_memory.py +0 -0
  174. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/examples/openai_compatible_memory.py +0 -0
  175. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/examples/single_agent_memory.py +0 -0
  176. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/reports/archive/benchmarks/longmembench-adapter-kit/README.md +0 -0
  177. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/reports/archive/benchmarks/purpose-v1/holdouts/public-derived-purpose-v1/README.md +0 -0
  178. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/reports/benchmarks/purpose-v1/holdouts/public-derived-purpose-v1/README.md +0 -0
  179. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/backend-shootout.py +0 -0
  180. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/backup.sh +0 -0
  181. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/benchmark-guardrails.sh +0 -0
  182. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/beta-uat.sh +0 -0
  183. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/build-backend-shootout-workload.py +0 -0
  184. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/build-dist.sh +0 -0
  185. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/check-backend-shootout.py +0 -0
  186. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/check-coverage.py +0 -0
  187. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/check-external-validation.py +0 -0
  188. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/check-state-recovery-benchmark.py +0 -0
  189. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/chunk_rag_token_compare.py +0 -0
  190. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/generate-certs.sh +0 -0
  191. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/generate-release-media.py +0 -0
  192. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/integration-check.sh +0 -0
  193. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/live-benchmark.sh +0 -0
  194. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/mcp_smoke_test.py +0 -0
  195. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/release-check.sh +0 -0
  196. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/restore.sh +0 -0
  197. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/rotate-logs.sh +0 -0
  198. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/setup.sh +0 -0
  199. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/setup_neo4j_indexes.cypher +0 -0
  200. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/validate-deployment.sh +0 -0
  201. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/scripts/validate-docs.sh +0 -0
  202. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/README.html +0 -0
  203. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/assets/graph.png +0 -0
  204. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/assets/zaxy-coordinate-header.png +0 -0
  205. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/assets/zaxy-v1-header.png +0 -0
  206. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/assets/zaxy-v1.1-header.png +0 -0
  207. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/assets/zaxy-v2.1-header.png +0 -0
  208. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/assets/zaxy-v2.1-hero.png +0 -0
  209. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/assets/zaxy-v2.2-header.png +0 -0
  210. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/assets/zaxy-v2.3-header.png +0 -0
  211. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/agent-events.html +0 -0
  212. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/announcements/zaxy-0.4.0.html +0 -0
  213. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/announcements/zaxy-coordinate.html +0 -0
  214. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/announcements/zaxy-v1.0-x-article.html +0 -0
  215. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/announcements/zaxy-v1.0.html +0 -0
  216. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/announcements/zaxy-v1.1-x-article.html +0 -0
  217. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/announcements/zaxy-v2.1.html +0 -0
  218. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/announcements/zaxy-v2.2-x-article.html +0 -0
  219. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/announcements/zaxy-v2.3-x-article.html +0 -0
  220. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/api-inventory.html +0 -0
  221. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/api.html +0 -0
  222. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/architecture.html +0 -0
  223. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/archive/benchmark-contributions.html +0 -0
  224. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/archive/benchmark-review.html +0 -0
  225. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/archive/competitive-positioning.html +0 -0
  226. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/archive/experimental-associative-memory.html +0 -0
  227. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/archive/longmembench.html +0 -0
  228. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/archive/memory-is-purpose-zaxy-analysis.html +0 -0
  229. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/archive/release-validation-checklist.html +0 -0
  230. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/archive/synthesis-context-research.html +0 -0
  231. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/archive/v09-gate-audit.html +0 -0
  232. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/archive/v1-roadmap.html +0 -0
  233. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/archive/v10-gate-audit.html +0 -0
  234. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/archive/zero-friction-runtime-roadmap.html +0 -0
  235. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/benchmarks.html +0 -0
  236. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/codebase.html +0 -0
  237. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/configuration.html +0 -0
  238. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/consolidation.html +0 -0
  239. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/coordinate-quickstart.html +0 -0
  240. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/coordinate-roadmap.html +0 -0
  241. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/deployment.html +0 -0
  242. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/embeddings.html +0 -0
  243. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/eventloom.html +0 -0
  244. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/external-validation.html +0 -0
  245. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/first-run-validation.html +0 -0
  246. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/getting-started.html +0 -0
  247. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/graph-schema.html +0 -0
  248. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/integrations.html +0 -0
  249. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/mcp-install-targets.html +0 -0
  250. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/mcp-quickstart.html +0 -0
  251. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/mcp.html +0 -0
  252. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/media/zaxy-collaborate-demo.html +0 -0
  253. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/migration.html +0 -0
  254. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/operations.html +0 -0
  255. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/packet-analyzer.html +0 -0
  256. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/research/ann-engineering-2026-06.html +0 -0
  257. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/research/artifacts/2-3-research/backend-options.html +0 -0
  258. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/research/artifacts/2-3-research/external-validation.html +0 -0
  259. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/research/artifacts/2-3-research/kuzu-usage-audit.html +0 -0
  260. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/research/artifacts/2-3-research/promotion-pass.html +0 -0
  261. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/research/artifacts/ann-2026-06/BASELINE.html +0 -0
  262. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/research/codebase-review-2026-06-09.html +0 -0
  263. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/research/zaxy-memory-fabric-paper.html +0 -0
  264. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/retrieval.html +0 -0
  265. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/runbook.html +0 -0
  266. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/security.html +0 -0
  267. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/stability-commitment.html +0 -0
  268. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/plans/2026-05-08-codebase-file-map.html +0 -0
  269. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/plans/2026-05-08-domain-separated-defaults.html +0 -0
  270. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/plans/2026-05-08-local-first-retrieval.html +0 -0
  271. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/plans/2026-05-08-remote-mcp-rate-limit-audit.html +0 -0
  272. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/plans/2026-05-09-agent-integration-templates.html +0 -0
  273. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/plans/2026-05-09-retention-metadata-extraction.html +0 -0
  274. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/plans/2026-05-09-retrieval-feedback-events.html +0 -0
  275. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/plans/2026-05-10-merge-sprint.html +0 -0
  276. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/plans/2026-05-16-runtime-dashboard.html +0 -0
  277. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/plans/2026-05-17-skill-memory.html +0 -0
  278. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/plans/2026-05-18-pggraph-adapter.html +0 -0
  279. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/plans/2026-05-18-projection-backend-contract.html +0 -0
  280. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/plans/2026-05-20-zero-friction-embedded-graph-runtime.html +0 -0
  281. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/plans/2026-05-30-v0-5-public-positioning-first-run-trust.html +0 -0
  282. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/plans/2026-05-31-v1-release-docs-media.html +0 -0
  283. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/plans/2026-06-07-zaxy-2-0-alpha-1-causal-consolidation.html +0 -0
  284. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/plans/2026-06-07-zaxy-2-0-alpha-2-review-gated-consolidation.html +0 -0
  285. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/plans/2026-06-07-zaxy-2-0-beta-1-reasoning-loop-primitives.html +0 -0
  286. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/plans/2026-06-08-zaxy-2-0-beta-2-metacognitive-procedural-hardening.html +0 -0
  287. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/plans/2026-06-08-zaxy-2-0-rc-1-benchmark-freeze.html +0 -0
  288. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/plans/2026-06-09-codebase-review-high-value-remediation.html +0 -0
  289. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/specs/2026-05-08-codebase-file-map-design.html +0 -0
  290. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/specs/2026-05-08-domain-separated-defaults-design.html +0 -0
  291. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/specs/2026-05-08-local-first-retrieval-design.html +0 -0
  292. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/specs/2026-05-08-remote-mcp-rate-limit-audit-design.html +0 -0
  293. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/specs/2026-05-16-runtime-dashboard-design.html +0 -0
  294. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/specs/2026-05-17-skill-memory-pggraph-evaluation-design.html +0 -0
  295. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/specs/2026-05-31-v1-release-docs-media-design.html +0 -0
  296. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/specs/2026-06-07-zaxy-2-0-roadmap-design.html +0 -0
  297. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/specs/2026-06-09-zaxy-2-5-3-0-latent-memory-roadmap-design.html +0 -0
  298. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/specs/2026-06-10-zaxy-2-1-2-3-agent-experience-cognitive-memory-roadmap-design.html +0 -0
  299. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/specs/2026-06-10-zaxy-2-1-2-3-implementation-plan.html +0 -0
  300. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/specs/2026-06-11-zaxy-2-2-ann-engineering-plan.html +0 -0
  301. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/superpowers/specs/2026-06-11-zaxy-2-3-readiness-research.html +0 -0
  302. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/testing.html +0 -0
  303. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/why-zaxy.html +0 -0
  304. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/docs/workspace-genesis.html +0 -0
  305. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/site/style.css +0 -0
  306. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/__init__.py +0 -0
  307. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/__main__.py +0 -0
  308. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/adapters/__init__.py +0 -0
  309. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/adapters/_common.py +0 -0
  310. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/adapters/claude_compatible.py +0 -0
  311. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/adapters/coordination.py +0 -0
  312. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/adapters/crewai.py +0 -0
  313. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/adapters/langgraph.py +0 -0
  314. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/adapters/openai_compatible.py +0 -0
  315. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/associative_memory.py +0 -0
  316. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/capabilities.py +0 -0
  317. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/capture_manager.py +0 -0
  318. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/capture_soak.py +0 -0
  319. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/causal.py +0 -0
  320. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/checkout.py +0 -0
  321. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/cli/__init__.py +0 -0
  322. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/cli/benchmarks.py +0 -0
  323. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/cli/evaluation.py +0 -0
  324. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/cli/runtime.py +0 -0
  325. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/cli/serving.py +0 -0
  326. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/codebase.py +0 -0
  327. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/codex_capture.py +0 -0
  328. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/compaction.py +0 -0
  329. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/config.py +0 -0
  330. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/consolidation.py +0 -0
  331. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/consolidation_pipeline.py +0 -0
  332. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/context.py +0 -0
  333. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/context_refresh.py +0 -0
  334. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/coordination.py +0 -0
  335. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/coordination_git.py +0 -0
  336. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/coordination_semantic.py +0 -0
  337. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/coordination_templates.py +0 -0
  338. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/coordinationbench_adapter.py +0 -0
  339. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/core.py +0 -0
  340. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/dashboard.py +0 -0
  341. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/doctor.py +0 -0
  342. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/documents.py +0 -0
  343. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/domain.py +0 -0
  344. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/embedded_graph_store.py +0 -0
  345. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/embedding.py +0 -0
  346. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/event.py +0 -0
  347. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/event_context.py +0 -0
  348. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/evidence.py +0 -0
  349. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/evidence_candidates.py +0 -0
  350. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/evidence_program.py +0 -0
  351. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/external_validation.py +0 -0
  352. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/extract.py +0 -0
  353. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/extract_templates.py +0 -0
  354. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/feature_evidence.py +0 -0
  355. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/graph.py +0 -0
  356. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/graph_walk.py +0 -0
  357. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/hooks.py +0 -0
  358. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/inference.py +0 -0
  359. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/install.py +0 -0
  360. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/integrations.py +0 -0
  361. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/latticedb_store.py +0 -0
  362. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/lifecycle.py +0 -0
  363. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/local_profile.py +0 -0
  364. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/log.py +0 -0
  365. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/mcp_runtime.py +0 -0
  366. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/mcp_server.py +0 -0
  367. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/memory_persistence.py +0 -0
  368. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/memory_status.py +0 -0
  369. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/metacognition.py +0 -0
  370. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/metrics.py +0 -0
  371. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/neutral.py +0 -0
  372. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/observation.py +0 -0
  373. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/offload.py +0 -0
  374. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/onboarding.py +0 -0
  375. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/packet_analyzer.py +0 -0
  376. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/packet_guidance.py +0 -0
  377. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/packet_projection.py +0 -0
  378. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/pagination.py +0 -0
  379. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/pggraph_store.py +0 -0
  380. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/procedural_planning.py +0 -0
  381. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/procedure_mining.py +0 -0
  382. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/projection.py +0 -0
  383. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/projection_backends.py +0 -0
  384. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/purpose.py +0 -0
  385. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/purpose_control.py +0 -0
  386. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/py.typed +0 -0
  387. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/query.py +0 -0
  388. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/reasoning_primitives.py +0 -0
  389. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/recall.py +0 -0
  390. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/recovery.py +0 -0
  391. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/refs.py +0 -0
  392. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/release.py +0 -0
  393. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/remote_security.py +0 -0
  394. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/resources/__init__.py +0 -0
  395. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/resources/coordinationbench/README.md +0 -0
  396. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/resources/coordinationbench/__init__.py +0 -0
  397. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/resources/coordinationbench/schemas/result.schema.json +0 -0
  398. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/resources/coordinationbench/schemas/runner-manifest.schema.json +0 -0
  399. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/resources/coordinationbench/templates/activegraph.runner-manifest.template.json +0 -0
  400. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/resources/coordinationbench/templates/agent_memory.runner-manifest.template.json +0 -0
  401. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/resources/coordinationbench/templates/hybi.runner-manifest.template.json +0 -0
  402. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/resources/coordinationbench/templates/mem0.runner-manifest.template.json +0 -0
  403. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/resources/coordinationbench/templates/quarq.runner-manifest.template.json +0 -0
  404. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/resources/coordinationbench/unsupported_runner.py +0 -0
  405. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/retrieval_intent.py +0 -0
  406. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/retrieval_plan/__init__.py +0 -0
  407. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/retrieval_plan/bundles.py +0 -0
  408. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/retrieval_plan/duration_evidence.py +0 -0
  409. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/retrieval_plan/fact_queries.py +0 -0
  410. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/retrieval_plan/foundations.py +0 -0
  411. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/retrieval_plan/ordering.py +0 -0
  412. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/retrieval_plan/scalars.py +0 -0
  413. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/retrieval_profile.py +0 -0
  414. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/runtime.py +0 -0
  415. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/salience.py +0 -0
  416. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/schema.py +0 -0
  417. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/security.py +0 -0
  418. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/session.py +0 -0
  419. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/synthesis/__init__.py +0 -0
  420. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/synthesis/evidence_rows.py +0 -0
  421. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/synthesis/foundations.py +0 -0
  422. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/synthesis/labels.py +0 -0
  423. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/synthesis/ledgers.py +0 -0
  424. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/synthesis/operations.py +0 -0
  425. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/synthesis_artifact.py +0 -0
  426. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/synthesis_packet.py +0 -0
  427. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/token_budget.py +0 -0
  428. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/tool_profiles.py +0 -0
  429. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/trace.py +0 -0
  430. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/transcripts.py +0 -0
  431. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/verbatim.py +0 -0
  432. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/viewer.py +0 -0
  433. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/working_set.py +0 -0
  434. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/src/zaxy/workspace.py +0 -0
  435. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/conftest.py +0 -0
  436. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_agent_experience_lanes.py +0 -0
  437. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_associative_memory.py +0 -0
  438. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_backend_shootout.py +0 -0
  439. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_benchmarks.py +0 -0
  440. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_capabilities.py +0 -0
  441. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_capture_manager.py +0 -0
  442. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_capture_soak.py +0 -0
  443. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_causal.py +0 -0
  444. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_causal_benchmark.py +0 -0
  445. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_causal_checkout.py +0 -0
  446. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_checkout.py +0 -0
  447. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_chunk_rag_methodology.py +0 -0
  448. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_claude_compatible_adapter.py +0 -0
  449. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_cli.py +0 -0
  450. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_codebase.py +0 -0
  451. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_codex_capture.py +0 -0
  452. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_cognitive_lanes.py +0 -0
  453. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_cognitive_profile.py +0 -0
  454. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_compaction.py +0 -0
  455. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_competitive_benchmarks.py +0 -0
  456. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_compose.py +0 -0
  457. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_config.py +0 -0
  458. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_consolidation.py +0 -0
  459. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_consolidation_benchmark.py +0 -0
  460. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_consolidation_pipeline.py +0 -0
  461. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_context.py +0 -0
  462. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_context_refresh.py +0 -0
  463. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_coordination.py +0 -0
  464. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_coordination_adapters.py +0 -0
  465. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_coordination_benchmark.py +0 -0
  466. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_coordination_semantic.py +0 -0
  467. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_coordinationbench_adapter.py +0 -0
  468. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_core.py +0 -0
  469. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_coverage_ratchet.py +0 -0
  470. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_crewai_adapter.py +0 -0
  471. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_dashboard.py +0 -0
  472. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_doctor.py +0 -0
  473. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_documents.py +0 -0
  474. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_domain.py +0 -0
  475. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_embedded_graph_store.py +0 -0
  476. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_embedding.py +0 -0
  477. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_event.py +0 -0
  478. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_evidence.py +0 -0
  479. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_evidence_program.py +0 -0
  480. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_examples_v05.py +0 -0
  481. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_extract.py +0 -0
  482. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_extract_templates.py +0 -0
  483. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_feature_evidence.py +0 -0
  484. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_graph.py +0 -0
  485. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_graph_scale_lanes.py +0 -0
  486. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_graph_walk.py +0 -0
  487. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_harvey_lab_benchmark.py +0 -0
  488. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_inference.py +0 -0
  489. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_install.py +0 -0
  490. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_integration_check_script.py +0 -0
  491. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_integrations.py +0 -0
  492. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_langgraph_adapter.py +0 -0
  493. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_latticedb_store.py +0 -0
  494. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_lifecycle.py +0 -0
  495. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_live_benchmark.py +0 -0
  496. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_local_profile.py +0 -0
  497. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_longmembench.py +0 -0
  498. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_mcp.py +0 -0
  499. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_mcp_runtime.py +0 -0
  500. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_mcp_server.py +0 -0
  501. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_memory_injection.py +0 -0
  502. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_memory_persistence.py +0 -0
  503. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_memory_status.py +0 -0
  504. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_metacognition.py +0 -0
  505. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_metrics.py +0 -0
  506. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_neutral.py +0 -0
  507. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_observation.py +0 -0
  508. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_offload.py +0 -0
  509. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_onboarding.py +0 -0
  510. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_openai_compatible_adapter.py +0 -0
  511. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_ops_scripts.py +0 -0
  512. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_packaging.py +0 -0
  513. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_packet_analyzer.py +0 -0
  514. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_packet_memory_e2e.py +0 -0
  515. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_packet_projection.py +0 -0
  516. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_pagination.py +0 -0
  517. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_pggraph_store.py +0 -0
  518. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_procedural_planning.py +0 -0
  519. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_procedure_mining.py +0 -0
  520. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_projection.py +0 -0
  521. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_purpose.py +0 -0
  522. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_purpose_benchmark.py +0 -0
  523. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_purpose_control.py +0 -0
  524. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_query.py +0 -0
  525. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_rc_benchmark_freeze.py +0 -0
  526. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_reasoning_benchmark.py +0 -0
  527. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_reasoning_primitives.py +0 -0
  528. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_recovery.py +0 -0
  529. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_refs.py +0 -0
  530. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_remote_security.py +0 -0
  531. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_retrieval_plan.py +0 -0
  532. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_retrieval_profiles.py +0 -0
  533. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_runtime.py +0 -0
  534. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_salience.py +0 -0
  535. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_schema_migrations.py +0 -0
  536. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_security.py +0 -0
  537. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_session.py +0 -0
  538. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_setup_script.py +0 -0
  539. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_statistical_benchmark.py +0 -0
  540. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_synthesis.py +0 -0
  541. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_synthesis_artifact.py +0 -0
  542. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_synthesis_packet.py +0 -0
  543. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_token_budget.py +0 -0
  544. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_trace.py +0 -0
  545. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_transcripts.py +0 -0
  546. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_v05_positioning.py +0 -0
  547. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_verbatim.py +0 -0
  548. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_viewer.py +0 -0
  549. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_working_set.py +0 -0
  550. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/tests/test_workspace.py +0 -0
  551. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/zaxy_benchmarks/__init__.py +0 -0
  552. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/zaxy_benchmarks/agent_experience_lanes.py +0 -0
  553. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/zaxy_benchmarks/benchmark.py +0 -0
  554. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/zaxy_benchmarks/causal_benchmark.py +0 -0
  555. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/zaxy_benchmarks/consolidation_benchmark.py +0 -0
  556. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/zaxy_benchmarks/coordination_benchmark.py +0 -0
  557. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/zaxy_benchmarks/fok_calibration_lane.py +0 -0
  558. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/zaxy_benchmarks/forgetting_lane.py +0 -0
  559. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/zaxy_benchmarks/graph_walk_lane.py +0 -0
  560. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/zaxy_benchmarks/harvey_lab_benchmark.py +0 -0
  561. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/zaxy_benchmarks/live_benchmark.py +0 -0
  562. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/zaxy_benchmarks/longmembench.py +0 -0
  563. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/zaxy_benchmarks/purpose_benchmark.py +0 -0
  564. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/zaxy_benchmarks/rc_benchmark_freeze.py +0 -0
  565. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/zaxy_benchmarks/reasoning_benchmark.py +0 -0
  566. {zaxy_memory-2.3.4 → zaxy_memory-2.4.0}/zaxy_benchmarks/vector_scale_lane.py +0 -0
@@ -2,6 +2,29 @@
2
2
 
3
3
  All notable Zaxy release changes are recorded here.
4
4
 
5
+ ## 2.4.0 - 2026-06-14
6
+
7
+ - **Portable signed memory export — EXPERIMENTAL / UNAUDITED, opt-in.** New
8
+ `zaxy.portable` module (install `zaxy-memory[export]`) for self-sovereign,
9
+ cryptographically-signed, verifiable memory export:
10
+ - Signed bundles: post-quantum **ML-DSA-65** (FIPS-204) primary, Ed25519
11
+ fallback; a domain-separated Merkle tree binds the entries and enables
12
+ **verifiable partial disclosure** (prove a subset without revealing the rest);
13
+ the signature binds the root and all metadata; public-key pinning.
14
+ - **Injection-resistant rehydration** of recalled content (data-not-instructions
15
+ fencing); opt-in `zaxy offload-get --fenced`.
16
+ - **Encryption envelope + cryptographic erasure** (per-cell AES-256-GCM, KEK
17
+ wrap, key-destruction erasure for GDPR Art.17) and capability-scoped sharing.
18
+ - Pluggable public anchor (offline stub + OpenTimestamps hook).
19
+ - CLI: `export-keygen`, `export`, `verify-export`.
20
+ > ⚠️ This is **experimental, unaudited** cryptographic code. It uses only vetted
21
+ > primitives (pyca/cryptography) and ships behind an opt-in extra with a loud
22
+ > import-time warning. **Do not rely on it for high-value secrets or compliance.**
23
+ > It has had an adversarial self-review (a layer, not a substitute for
24
+ > independent human review); see `docs/experimental/portable-export-security.md`.
25
+ - No changes to the default runtime, capture, recall, or existing MCP tools;
26
+ nothing in core imports `zaxy.portable`.
27
+
5
28
  ## 2.3.4 - 2026-06-14
6
29
 
7
30
  - **Opt-in full tool-I/O provenance (offload sink).** Default capture stays lean
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: zaxy-memory
3
- Version: 2.3.4
3
+ Version: 2.4.0
4
4
  Summary: Coordinator memory for auditable multi-agent projects
5
5
  Project-URL: Homepage, https://syndicalt.github.io/zaxy/
6
6
  Project-URL: Documentation, https://syndicalt.github.io/zaxy/docs/getting-started.html
@@ -48,6 +48,8 @@ Requires-Dist: twine>=5.0.0; extra == 'dev'
48
48
  Requires-Dist: types-pyyaml>=6.0.12; extra == 'dev'
49
49
  Requires-Dist: types-requests>=2.32.0; extra == 'dev'
50
50
  Provides-Extra: embedded
51
+ Provides-Extra: export
52
+ Requires-Dist: cryptography>=46.0; extra == 'export'
51
53
  Provides-Extra: frameworks
52
54
  Requires-Dist: autogen-agentchat>=0.7; extra == 'frameworks'
53
55
  Requires-Dist: crewai>=0.100; extra == 'frameworks'
@@ -0,0 +1,62 @@
1
+ # Portable Export — W3C Interop Conformance Mapping (dev target #3)
2
+
3
+ Status: **reference implementation, held for independent review. Not released.**
4
+
5
+ This maps Zaxy's signed portable-export implementation to the scope of the W3C
6
+ "AI Agent Memory Interoperability" Community Group (proposed 2026-05-18). **Full
7
+ conformance is intentionally deferred until the CG spec is finalized** — you
8
+ cannot conform to an unfinalized standard. The pieces below are built against the
9
+ *announced scope* and will be reconciled to exact field names / serialization once
10
+ the spec stabilizes.
11
+
12
+ | W3C CG scope item | Zaxy implementation | Status |
13
+ |---|---|---|
14
+ | Identity binding (post-quantum signatures, ML-DSA-65 / FIPS-204 reference) | `portable/signing.py` — ML-DSA-65 primary, Ed25519 classical fallback (vetted pyca) | ✅ built |
15
+ | Tamper-evident provenance | `portable/merkle.py` + `export.py` — domain-separated Merkle root, signed; verifiable subset disclosure | ✅ built |
16
+ | Memory cell shape (encrypted unit + metadata) | `portable/envelope.py` — per-cell AES-256-GCM | ⚠️ primitive built; canonical cell schema pending spec |
17
+ | Encryption envelope (per-cell DEK; KEK wrap; rotation) | `portable/envelope.py` — DEK + KEK wrap (local KEK; wallet-derived KEK deferred) | ⚠️ partial |
18
+ | Cryptographic erasure (DEK destroy + tombstone + content-address blacklist; GDPR Art.17) | `portable/envelope.py::ErasureVault` | ✅ built |
19
+ | Sharing contracts (temporary / permanent / syndicate + revocation) | `portable/envelope.py::Capability` | ✅ built (policy layer) |
20
+ | Audit anchor (public-chain receipts; operator-independent verifiability) | `portable/anchor.py` — pluggable; deterministic stub + OpenTimestamps hook | ⚠️ interface built; real public-chain anchor not wired |
21
+ | Serialization (JSON-first, optional CBOR) | JSON bundle implemented | ⚠️ CBOR deferred |
22
+
23
+ ## Trust model (no external authority required)
24
+ Self-sovereign: the exporter holds its own keypair; the public key (or a DID) is
25
+ the identity. No CA. Verifiers pin the key / trust-on-first-use. Operator-
26
+ independent verification is provided by the public-chain anchor (OpenTimestamps),
27
+ not a private signing authority. A managed "notary" service is a future product
28
+ layer, never a dependency.
29
+
30
+ ## Adversarial self-review (2026-06-14)
31
+
32
+ A structured red-team of the protocol logic (not a credentialed human audit).
33
+ Held: domain-separated Merkle blocks the duplicate-leaf forgery class
34
+ (CVE-2012-2459); the signature binds the root **and** all metadata; `verify_*`
35
+ fails closed on exceptions; per-cell DEKs avoid AES-GCM nonce reuse; the fence
36
+ escape prevents literal delimiter forgery.
37
+
38
+ **Fixed by this pass:**
39
+ - *Crypto-erasure invariant* — made explicit (see `ErasureVault` docstring): key
40
+ material must NEVER enter the immutable Eventloom, or erasure is a false claim.
41
+ - *`temporary` capability without expiry* now fails **closed** (was grant-forever).
42
+ - *`verify_*` now version-allow-lists* the bundle (rejects unknown versions).
43
+
44
+ **Residual caveats (documented, not yet addressed — for human review / later phases):**
45
+ - *Canonicalization*: signing uses sorted-key compact JSON; adopt JCS (RFC 8785)
46
+ and forbid floats/NaN to remove canonicalization ambiguity before production.
47
+ - *KEK nonce volume*: random 96-bit nonces are safe per-DEK (used once) but a KEK
48
+ wrapping many DEKs should rotate or use counter nonces beyond ~2^32 wraps.
49
+ - *Anchor stub*: `verify_anchor` on a `type: "stub"` anchor proves internal
50
+ consistency only — NOT external timestamping. Real assurance needs the
51
+ OpenTimestamps/public-chain hook.
52
+ - *Subset proof length* leaks an approximate total entry count (tree depth).
53
+ - *Rehydration (P2)* is defense-in-depth (semantic guard), explicitly NOT a
54
+ guarantee against indirect prompt injection.
55
+
56
+ ## Review gate
57
+ This is security-critical reference code using vetted primitives only. The
58
+ adversarial self-review above is a layer, **not** a substitute for independent
59
+ human review. For a resource-constrained project the proportionate path is:
60
+ ship clearly labeled `experimental / unaudited`, open it for community + W3C-CG
61
+ scrutiny, and pursue a formal audit only when usage/stakes warrant. Until then,
62
+ make no "audited/secure" claims. Nothing here has been published.
@@ -0,0 +1,95 @@
1
+ # Portable Export — Security Status & Review Requests
2
+
3
+ > ## ⚠️ EXPERIMENTAL · UNAUDITED
4
+ > The portable signed-export / rehydration / envelope code (`src/zaxy/portable/`)
5
+ > is a **reference implementation**. It has **not** had independent cryptographic
6
+ > review. **Do not rely on it to protect high-value secrets or for compliance
7
+ > guarantees.** No "audited" or "secure" claim is made. It lives on a feature
8
+ > branch and has not been released.
9
+
10
+ ## What is and isn't assured
11
+
12
+ **Assured by design / tests:**
13
+ - Only **vetted primitives** (pyca/cryptography): ML-DSA-65, Ed25519, AES-256-GCM,
14
+ SHA-256. No homegrown cryptographic primitives.
15
+ - Adversarial test suite (forge, tamper, drop, swapped-key, metadata-binding,
16
+ subset non-leakage, forged-proof, GCM auth-fail, key-destruction erasure,
17
+ capability expiry/revocation, anchor tamper-detection).
18
+ - An **adversarial self-review** of the protocol/composition logic
19
+ (see `portable-export-conformance.md`). This is a *layer*, **not** a substitute
20
+ for independent human review.
21
+
22
+ **Not assured (needs human review and/or later phases):**
23
+ - Protocol composition beyond the tested cases.
24
+ - Canonicalization is sorted-key compact JSON — not yet JCS (RFC 8785); floats
25
+ are a known canonicalization hazard.
26
+ - KEK nonce management at high volume; wallet-derived KEK not implemented.
27
+ - The public anchor ships as an offline **stub**; real OpenTimestamps/public-chain
28
+ anchoring is a hook, not wired. A stub anchor proves *consistency only*, not
29
+ external timestamping.
30
+ - W3C interop conformance is deferred until the spec (CG proposed 2026-05-18)
31
+ finalizes.
32
+
33
+ ## What it provides (threat model summary)
34
+ - **Authenticity + integrity** of an exported memory bundle (signature binds the
35
+ Merkle root and all metadata), with **self-sovereign** keys (no CA; pin the key
36
+ or use a DID; trust-on-first-use).
37
+ - **Verifiable partial disclosure**: prove a subset of entries belongs to the
38
+ signed set without revealing the rest.
39
+ - **Confidentiality + cryptographic erasure** of memory cells (per-cell DEK;
40
+ destroy-the-key erasure). **Invariant:** key material must never enter the
41
+ immutable Eventloom log, or erasure is void.
42
+ - **Injection-resistant rehydration**: defense-in-depth fencing of recalled
43
+ untrusted content — explicitly **not** a guarantee against prompt injection.
44
+
45
+ **Non-goals (v1):** CA/PKI federation, threshold/multi-party signing, confidential
46
+ compute, replay/rollback prevention beyond per-bundle nonce + timestamp.
47
+
48
+ ## Reporting issues
49
+ Found a flaw? Please open a private report (security contact / GitHub security
50
+ advisory) rather than a public issue, and allow reasonable time to fix. Since this
51
+ is pre-release experimental code, coordinated disclosure is appreciated but there
52
+ is no production deployment at risk.
53
+
54
+ ---
55
+
56
+ ## Review request — W3C AI Agent Memory Interoperability CG
57
+
58
+ > **Subject: Reference impl + review request — self-sovereign signed memory export (ML-DSA-65 + Merkle subset proofs)**
59
+ >
60
+ > Hi all — I've built an open, experimental reference implementation aligned with
61
+ > the CG's announced scope (identity binding via ML-DSA-65/FIPS-204, Merkle
62
+ > provenance with verifiable partial disclosure, per-cell encryption envelope,
63
+ > cryptographic erasure for GDPR Art.17, capability-scoped sharing). It's
64
+ > self-sovereign (no CA) with a public-chain anchor hook.
65
+ >
66
+ > It is **experimental and unaudited** — I'm a resource-constrained project and
67
+ > can't commission a formal audit, so I'd hugely value eyes on the *protocol/
68
+ > composition logic*: how the signature binds the Merkle root + metadata, the
69
+ > subset-disclosure proofs, and the crypto-erasure model in an append-only store.
70
+ > Vetted primitives only (pyca/cryptography); adversarial tests included.
71
+ >
72
+ > Repo + threat model: <link>. Happy to align field names/serialization to the
73
+ > spec as it stabilizes, and to contribute findings back. What have I gotten wrong?
74
+
75
+ ## Review request — crypto.stackexchange
76
+
77
+ > **Title: Is this composition sound? Signed Merkle-root memory bundle with verifiable subset disclosure + crypto-erasure**
78
+ >
79
+ > I have an experimental protocol for portable, signed agent-memory bundles and
80
+ > want to sanity-check the *composition* (primitives are pyca: ML-DSA-65/Ed25519,
81
+ > AES-256-GCM, SHA-256 — I'm not rolling my own).
82
+ >
83
+ > 1. A bundle's signature is computed over a canonical header that includes the
84
+ > Merkle root of the entries **plus** all metadata (version, alg, pubkey,
85
+ > session id, created-at, nonce). Is binding metadata-with-root this way
86
+ > sufficient to prevent metadata-swap / cross-bundle attacks?
87
+ > 2. Subset disclosure reveals chosen entries + Merkle inclusion proofs (leaf
88
+ > prefix `0x00`, node prefix `0x01`, unpaired nodes promoted not duplicated).
89
+ > Any forgery/second-preimage concern, given the proofs aren't position-bound?
90
+ > 3. "Cryptographic erasure" = destroy the (wrapped) DEK + tombstone + blacklist;
91
+ > ciphertext is otherwise immutable. Are there pitfalls beyond "ensure no other
92
+ > copy of the key survives"?
93
+ >
94
+ > Canonicalization is sorted-key compact JSON (I know JCS/RFC 8785 is the better
95
+ > answer). Threat model + code: <link>. Where does this break?
@@ -138,6 +138,32 @@ session, long tool run, or roadmap/status question, Zaxy appends
138
138
  the agent: call `memory_bootstrap` if awareness is unclear, then call
139
139
  `memory_checkout` and trust only cited current checkout facts.
140
140
 
141
+ ## Per-Turn Memory Injection (`UserPromptSubmit`)
142
+
143
+ Capture is deterministic, but recall used to be advisory: nothing re-injected the
144
+ memory contract into the model's context, so long sessions drifted. The
145
+ `UserPromptSubmit` hook closes that recall gap. On every turn it re-checks memory
146
+ freshness and, when memory is stale, injects a single terse declarative line that
147
+ names the session, how many events have passed since the last memory use, and the
148
+ recommended `memory_checkout`. When memory is fresh it stays silent and adds no
149
+ context noise. Wire it via:
150
+
151
+ ```bash
152
+ zaxy hooks claude-code --eventloom-path .eventloom --domain my-project
153
+ ```
154
+
155
+ Codex ships Claude-parity hooks, so the same `UserPromptSubmit` /
156
+ `additionalContext` injection works there too. `render_hook_config("codex")`
157
+ emits a `.codex/hooks.json` with the same per-turn recall behavior:
158
+
159
+ ```bash
160
+ zaxy hooks codex --eventloom-path .eventloom --domain my-project
161
+ ```
162
+
163
+ The injected line is plain prose rather than JSON or glyphs, and it is assembled
164
+ read-only from Eventloom-backed state, so it stays small enough to prepend to the
165
+ prompt verbatim without risking stale context after a checkout.
166
+
141
167
  Checkpoint hooks can include retrieval-useful metadata:
142
168
 
143
169
  ```bash
@@ -241,6 +267,23 @@ persist argument keys but not raw argument values. Transcript-turn observations
241
267
  sanitize content before append so they can serve as source-recall material
242
268
  without storing obvious secrets.
243
269
 
270
+ ### Tool-I/O Offload Provenance (`ZAXY_OFFLOAD_TOOL_IO`)
271
+
272
+ Default capture stays lean, so it truncates command output and keeps only tool
273
+ argument keys. When you need full, replayable provenance for tool I/O, set
274
+ `ZAXY_OFFLOAD_TOOL_IO`. The full command output or tool arguments are then written
275
+ to a content-addressed, tamper-evident blob under `<eventloom>/refs/` (the blob id
276
+ is its own sha256), and the lean event carries a `full_io_ref` pointer. Context
277
+ assembly and `memory_checkout` still see only the summary; drill down to the full
278
+ text on demand:
279
+
280
+ ```bash
281
+ zaxy offload-get <sha256>
282
+ ```
283
+
284
+ Offload is opt-in, and secret-looking argument values are still masked before the
285
+ blob is written, so the lean default and the privacy guarantees are preserved.
286
+
244
287
  ## Payload
245
288
 
246
289
  Hook events use actor `zaxy-hook` and append to the selected session log. The
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "zaxy-memory"
3
- version = "2.3.4"
3
+ version = "2.4.0"
4
4
  description = "Coordinator memory for auditable multi-agent projects"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -76,6 +76,11 @@ embedded = [
76
76
  latticedb = [
77
77
  "latticedb>=0.9.6",
78
78
  ]
79
+ export = [
80
+ # Portable signed export. Ed25519 works with the cryptography that PyJWT[crypto]
81
+ # already pulls in; ML-DSA-65 (post-quantum) requires cryptography >= 46.
82
+ "cryptography>=46.0",
83
+ ]
79
84
  frameworks = [
80
85
  "langgraph>=0.6",
81
86
  "crewai>=0.100",
@@ -52,6 +52,10 @@ def main() -> int:
52
52
 
53
53
  def build_pages() -> list[RenderedPage]:
54
54
  sources = [ROOT / "README.md", *sorted(DOCS_ROOT.rglob("*.md"))]
55
+ # docs/experimental/ is contributor-only (e.g. unreleased/experimental crypto)
56
+ # and must never be rendered into the public site.
57
+ experimental = DOCS_ROOT / "experimental"
58
+ sources = [s for s in sources if not is_relative_to(s, experimental)]
55
59
  return [render_page(source) for source in sources]
56
60
 
57
61
 
@@ -139,6 +139,12 @@ zaxy hook-event heartbeat --eventloom-path .eventloom --session-id my-project-de
139
139
  </table>
140
140
  <p>Unknown triggers are rejected before writing.</p>
141
141
  <p>Lifecycle hooks also run the memory persistence policy. If Zaxy has not been used recently, or the hook marks a session start, resume, compaction, long session, long tool run, or roadmap/status question, Zaxy appends <code>memory.reminder.suggested</code>. That event is intentionally read-only guidance for the agent: call <code>memory_bootstrap</code> if awareness is unclear, then call <code>memory_checkout</code> and trust only cited current checkout facts.</p>
142
+ <h2 id="per-turn-memory-injection-userpromptsubmit">Per-Turn Memory Injection (<code>UserPromptSubmit</code>)</h2>
143
+ <p>Capture is deterministic, but recall used to be advisory: nothing re-injected the memory contract into the model&#x27;s context, so long sessions drifted. The <code>UserPromptSubmit</code> hook closes that recall gap. On every turn it re-checks memory freshness and, when memory is stale, injects a single terse declarative line that names the session, how many events have passed since the last memory use, and the recommended <code>memory_checkout</code>. When memory is fresh it stays silent and adds no context noise. Wire it via:</p>
144
+ <pre><code class="language-bash">zaxy hooks claude-code --eventloom-path .eventloom --domain my-project</code></pre>
145
+ <p>Codex ships Claude-parity hooks, so the same <code>UserPromptSubmit</code> / <code>additionalContext</code> injection works there too. <code>render_hook_config(&quot;codex&quot;)</code> emits a <code>.codex/hooks.json</code> with the same per-turn recall behavior:</p>
146
+ <pre><code class="language-bash">zaxy hooks codex --eventloom-path .eventloom --domain my-project</code></pre>
147
+ <p>The injected line is plain prose rather than JSON or glyphs, and it is assembled read-only from Eventloom-backed state, so it stays small enough to prepend to the prompt verbatim without risking stale context after a checkout.</p>
142
148
  <p>Checkpoint hooks can include retrieval-useful metadata:</p>
143
149
  <pre><code class="language-bash">zaxy hook-event checkpoint \
144
150
  --eventloom-path .eventloom \
@@ -204,6 +210,10 @@ zaxy hook-event transcript-turn \
204
210
  }</code></pre>
205
211
  <p>Any harness with a post-compaction or resume hook can use the same command; the packet is plain text bracketed by <code>=== ZAXY RECOVERY PACKET ... ===</code> markers. <code>zaxy doctor</code> complements the loop with hash-chain, projection freshness, embedding-dimension, and vector-cache headroom checks so a resumed session can trust what it recovers.</p>
206
212
  <p>Command observations redact common secret-bearing arguments and bound stdout and stderr excerpts. File-edit observations persist path, operation, summary, and line count metadata; they do not persist source content. Tool-call observations persist argument keys but not raw argument values. Transcript-turn observations sanitize content before append so they can serve as source-recall material without storing obvious secrets.</p>
213
+ <h3 id="tool-io-offload-provenance-zaxyoffloadtoolio">Tool-I/O Offload Provenance (<code>ZAXY_OFFLOAD_TOOL_IO</code>)</h3>
214
+ <p>Default capture stays lean, so it truncates command output and keeps only tool argument keys. When you need full, replayable provenance for tool I/O, set <code>ZAXY_OFFLOAD_TOOL_IO</code>. The full command output or tool arguments are then written to a content-addressed, tamper-evident blob under <code>&lt;eventloom&gt;/refs/</code> (the blob id is its own sha256), and the lean event carries a <code>full_io_ref</code> pointer. Context assembly and <code>memory_checkout</code> still see only the summary; drill down to the full text on demand:</p>
215
+ <pre><code class="language-bash">zaxy offload-get &lt;sha256&gt;</code></pre>
216
+ <p>Offload is opt-in, and secret-looking argument values are still masked before the blob is written, so the lean default and the privacy guarantees are preserved.</p>
207
217
  <h2 id="payload">Payload</h2>
208
218
  <p>Hook events use actor <code>zaxy-hook</code> and append to the selected session log. The payload is intentionally small:</p>
209
219
  <pre><code class="language-json">{
@@ -62,7 +62,7 @@
62
62
  </section>
63
63
 
64
64
  <section class="proof-strip" aria-label="Project status">
65
- <span>PyPI 2.3.1</span>
65
+ <span>PyPI 2.4.0</span>
66
66
  <span>47 MCP tools, 8-tool core profile</span>
67
67
  <span>cognitive ranking default</span>
68
68
  <span>embedded local runtime</span>
@@ -334,7 +334,7 @@ zaxy coordinate checkout --mission auth-main</code></pre>
334
334
  </main>
335
335
 
336
336
  <footer>
337
- <span>Zaxy v2.3.1 - MIT</span>
337
+ <span>Zaxy v2.4.0 - MIT</span>
338
338
  <span><a href="README.html">README</a> <a href="docs/runbook.html">Runbook</a></span>
339
339
  </footer>
340
340
  </body>
@@ -716,8 +716,13 @@ def hook_event(
716
716
  def offload_get(
717
717
  sha256: str = typer.Argument(..., help="sha256 id from a full_io_ref pointer"), # noqa: B008
718
718
  eventloom_path: str = typer.Option(".eventloom", help="Eventloom directory holding refs/"),
719
+ fenced: bool = typer.Option(False, "--fenced", help="Wrap as injection-resistant untrusted data (when feeding the blob back to a model)"), # noqa: B008
719
720
  ) -> None:
720
- """Drill down to the full offloaded tool I/O behind a `full_io_ref` sha256."""
721
+ """Drill down to the full offloaded tool I/O behind a `full_io_ref` sha256.
722
+
723
+ Raw by default (for tooling); `--fenced` applies injection-resistant rehydration
724
+ so captured (attacker-influenceable) content is safe to re-inject into a model.
725
+ """
721
726
  from zaxy.offload import read_offload_ref
722
727
 
723
728
  content = read_offload_ref(eventloom_path, sha256)
@@ -725,7 +730,94 @@ def offload_get(
725
730
  raise typer.BadParameter(
726
731
  f"no offload blob for {sha256} under {eventloom_path}/refs (missing or integrity mismatch)"
727
732
  )
728
- typer.echo(content, nl=False)
733
+ if fenced:
734
+ from zaxy.portable.rehydration import rehydrate
735
+
736
+ typer.echo(rehydrate(content, origin="offload", label="offloaded tool I/O")["text"])
737
+ else:
738
+ typer.echo(content, nl=False)
739
+
740
+
741
+ @app.command("export-keygen")
742
+ def export_keygen(
743
+ out_private: Path = typer.Option(..., "--out-private", help="Write PKCS8 PEM private key here (chmod 600)"), # noqa: B008
744
+ out_public: Path = typer.Option(..., "--out-public", help="Write hex public key here"), # noqa: B008
745
+ algorithm: str | None = typer.Option(None, "--algorithm", help="ml-dsa-65 (default if available) or ed25519"), # noqa: B008
746
+ ) -> None:
747
+ """Generate a self-sovereign signing keypair for portable memory export."""
748
+ from zaxy.portable import generate_keypair
749
+
750
+ keypair = generate_keypair(algorithm)
751
+ out_private.write_bytes(keypair["private_pem"])
752
+ out_private.chmod(0o600)
753
+ out_public.write_text(keypair["public_key"].hex(), encoding="utf-8")
754
+ typer.echo(
755
+ f"keypair {keypair['algorithm']}: private -> {out_private} (chmod 600); public -> {out_public}"
756
+ )
757
+
758
+
759
+ @app.command("export")
760
+ def export_memory(
761
+ out: Path = typer.Option(..., "--out", help="Write the signed bundle JSON here"), # noqa: B008
762
+ private_key: Path = typer.Option(..., "--private-key", help="PKCS8 PEM private key file"), # noqa: B008
763
+ public_key: Path = typer.Option(..., "--public-key", help="hex public key file"), # noqa: B008
764
+ algorithm: str = typer.Option("ml-dsa-65", "--algorithm", help="signature algorithm of the key"),
765
+ eventloom_path: str = typer.Option(".eventloom", "--eventloom-path"),
766
+ session_id: str = typer.Option("default", "--session-id"),
767
+ types: str = typer.Option("decision.made,goal.created,task.completed", "--types", help="comma-separated event types to export"),
768
+ limit: int = typer.Option(200, "--limit", help="cap to the most recent N matching events"),
769
+ ) -> None:
770
+ """Build a signed, verifiable export bundle from a session's declarative events."""
771
+ import secrets
772
+ from datetime import UTC, datetime
773
+
774
+ from zaxy.event import EventLog
775
+ from zaxy.portable import build_export
776
+
777
+ keep = {t.strip() for t in types.split(",") if t.strip()}
778
+ base = Path(eventloom_path)
779
+ log = base if base.suffix == ".jsonl" else base / f"{session_id}.jsonl"
780
+ events = EventLog(log).read_all()
781
+ entries = [
782
+ {"type": e.type, "actor": e.actor, "seq": e.seq, "payload": e.payload}
783
+ for e in events
784
+ if e.type in keep
785
+ ][-limit:]
786
+ if not entries:
787
+ raise typer.BadParameter(f"no events of types {sorted(keep)} in session {session_id}")
788
+ keypair = {
789
+ "algorithm": algorithm,
790
+ "private_pem": private_key.read_bytes(),
791
+ "public_key": bytes.fromhex(public_key.read_text(encoding="utf-8").strip()),
792
+ }
793
+ bundle = build_export(
794
+ entries,
795
+ keypair=keypair,
796
+ session_id=session_id,
797
+ created_at=datetime.now(UTC).isoformat(),
798
+ nonce=secrets.token_hex(16),
799
+ )
800
+ out.write_text(json.dumps(bundle, indent=2, ensure_ascii=False), encoding="utf-8")
801
+ typer.echo(
802
+ f"exported {len(entries)} entries -> {out} (alg={algorithm}, root={bundle['merkle_root'][:16]})"
803
+ )
804
+
805
+
806
+ @app.command("verify-export")
807
+ def verify_export_cmd(
808
+ bundle: Path = typer.Argument(..., help="signed bundle JSON file"), # noqa: B008
809
+ expect_public_key: str | None = typer.Option(None, "--expect-public-key", help="pin: hex public key the bundle must be signed by"), # noqa: B008
810
+ ) -> None:
811
+ """Verify a signed export bundle (integrity + authenticity); exit 1 on failure."""
812
+ from zaxy.portable import verify_export
813
+
814
+ result = verify_export(
815
+ json.loads(bundle.read_text(encoding="utf-8")), expect_public_key=expect_public_key
816
+ )
817
+ suffix = f" - {result['reason']}" if result.get("reason") else ""
818
+ typer.echo(f"verify: {'OK' if result['ok'] else 'FAIL'}{suffix}")
819
+ if not result["ok"]:
820
+ raise typer.Exit(code=1)
729
821
 
730
822
 
731
823
  def _resolve_cli_projection_backend(
@@ -0,0 +1,44 @@
1
+ """Portable, signed Zaxy memory export (dev target #3, Phase 1).
2
+
3
+ SECURITY-CRITICAL. Provides self-sovereign cryptographic *authenticity* (signing)
4
+ on top of Eventloom's existing hash-chain *integrity*, plus a Merkle tree enabling
5
+ verifiable PARTIAL disclosure of an exported memory subset.
6
+
7
+ Trust model: self-sovereign — the signer holds its own keypair; the public key is
8
+ the identity. No CA. Verifiers establish trust out-of-band (pin the public key /
9
+ DID, trust-on-first-use). Operator-independent timestamping (OpenTimestamps /
10
+ public-chain anchoring) is a later phase; the `anchor` bundle field is reserved.
11
+
12
+ NOT YET REVIEWED — Phase 1 reference implementation pending the independent
13
+ cryptographic review the goal (seq 78021) mandates before any release.
14
+ """
15
+
16
+ import warnings
17
+
18
+ from zaxy.portable.export import (
19
+ BUNDLE_VERSION,
20
+ build_export,
21
+ disclose_subset,
22
+ verify_export,
23
+ verify_subset,
24
+ )
25
+ from zaxy.portable.signing import default_algorithm, generate_keypair, mldsa_available
26
+
27
+ warnings.warn(
28
+ "zaxy.portable is EXPERIMENTAL and UNAUDITED cryptographic code. Do not rely on it "
29
+ "to protect high-value secrets or for compliance guarantees. "
30
+ "See docs/experimental/portable-export-security.md.",
31
+ category=UserWarning,
32
+ stacklevel=2,
33
+ )
34
+
35
+ __all__ = [
36
+ "BUNDLE_VERSION",
37
+ "build_export",
38
+ "disclose_subset",
39
+ "verify_export",
40
+ "verify_subset",
41
+ "default_algorithm",
42
+ "generate_keypair",
43
+ "mldsa_available",
44
+ ]
@@ -0,0 +1,48 @@
1
+ """Public-anchor interface for export bundles (P4).
2
+
3
+ Operator-independent verifiability: commit a bundle's signed core to an external
4
+ timestamp/ledger. The default is a deterministic OFFLINE STUB (no network); a real
5
+ OpenTimestamps / public-chain anchor is a pluggable hook (intentionally not run
6
+ here). Full W3C-spec conformance is blocked on the unfinalized standard (CG
7
+ proposed 2026-05-18) -- see docs/experimental/portable-export-conformance.md.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import hashlib
13
+ from collections.abc import Callable
14
+ from typing import Any
15
+
16
+
17
+ def bundle_commitment(bundle: dict[str, Any]) -> str:
18
+ """A stable commitment over the bundle's signed core (root + signature + key)."""
19
+ h = hashlib.sha256()
20
+ for key in ("merkle_root", "signature", "public_key"):
21
+ h.update(str(bundle[key]).encode("utf-8"))
22
+ return h.hexdigest()
23
+
24
+
25
+ def stub_anchor(commitment: str) -> dict[str, Any]:
26
+ return {
27
+ "type": "stub",
28
+ "commitment": commitment,
29
+ "note": "offline stub; replace with OpenTimestamps / public-chain anchor",
30
+ }
31
+
32
+
33
+ def anchor_bundle(
34
+ bundle: dict[str, Any], anchor_fn: Callable[[str], dict[str, Any]] | None = None
35
+ ) -> dict[str, Any]:
36
+ """Return a copy of `bundle` with its `anchor` field set to an anchor receipt."""
37
+ receipt = (anchor_fn or stub_anchor)(bundle_commitment(bundle))
38
+ out = dict(bundle)
39
+ out["anchor"] = receipt
40
+ return out
41
+
42
+
43
+ def verify_anchor(bundle: dict[str, Any]) -> bool:
44
+ """True if the bundle carries an anchor whose commitment matches the bundle."""
45
+ anchor = bundle.get("anchor")
46
+ if not isinstance(anchor, dict):
47
+ return False
48
+ return anchor.get("commitment") == bundle_commitment(bundle)
@@ -0,0 +1,109 @@
1
+ """Encryption envelope, cryptographic erasure, and capability contracts (P3).
2
+
3
+ SECURITY-CRITICAL reference implementation. Uses ONLY vetted pyca/cryptography
4
+ primitives (AES-256-GCM); HELD FOR INDEPENDENT REVIEW before any release.
5
+
6
+ - Envelope: each memory cell is encrypted under its own random DEK (data
7
+ encryption key); the DEK is wrapped by a KEK (key encryption key). Confidential
8
+ per-cell; rotate by re-wrapping.
9
+ - Cryptographic erasure (GDPR Art.17 in an append-only world): destroy the wrapped
10
+ DEK + write a tombstone + blacklist the content address. The (immutable)
11
+ ciphertext remains but is permanently undecryptable.
12
+ - Capability contracts: scoped, revocable, optionally-expiring grants
13
+ (temporary / permanent / syndicate).
14
+
15
+ Timestamps (`now`, `expires_at`) are passed in explicitly for deterministic,
16
+ testable behavior.
17
+ """
18
+
19
+ from __future__ import annotations
20
+
21
+ import os
22
+ from dataclasses import dataclass, field
23
+ from typing import Any
24
+
25
+ from cryptography.hazmat.primitives.ciphers.aead import AESGCM
26
+
27
+ _NONCE = 12 # AES-GCM standard nonce length
28
+
29
+
30
+ def new_dek() -> bytes:
31
+ return AESGCM.generate_key(bit_length=256)
32
+
33
+
34
+ def encrypt_cell(plaintext: bytes, dek: bytes | None = None) -> dict[str, Any]:
35
+ key = dek or new_dek()
36
+ nonce = os.urandom(_NONCE)
37
+ ciphertext = AESGCM(key).encrypt(nonce, plaintext, None)
38
+ return {"dek": key, "nonce": nonce.hex(), "ciphertext": ciphertext.hex()}
39
+
40
+
41
+ def decrypt_cell(ciphertext_hex: str, nonce_hex: str, dek: bytes) -> bytes:
42
+ return AESGCM(dek).decrypt(bytes.fromhex(nonce_hex), bytes.fromhex(ciphertext_hex), None)
43
+
44
+
45
+ def wrap_dek(dek: bytes, kek: bytes) -> dict[str, str]:
46
+ nonce = os.urandom(_NONCE)
47
+ return {"nonce": nonce.hex(), "wrapped": AESGCM(kek).encrypt(nonce, dek, None).hex()}
48
+
49
+
50
+ def unwrap_dek(wrapped: dict[str, str], kek: bytes) -> bytes:
51
+ return AESGCM(kek).decrypt(bytes.fromhex(wrapped["nonce"]), bytes.fromhex(wrapped["wrapped"]), None)
52
+
53
+
54
+ class ErasureVault:
55
+ """Holds wrapped DEKs; cryptographic erasure destroys the key, not the data.
56
+
57
+ CRITICAL INVARIANT (correctness condition for the GDPR-erasure claim):
58
+ key material (DEKs and *wrapped* DEKs) and the KEK MUST NEVER be written to the
59
+ immutable, hash-chained Eventloom log. They must live ONLY in this mutable,
60
+ truly-erasable vault. If a wrapped DEK ever lands in the append-only log it is
61
+ permanent, and `erase()` becomes a no-op against anyone with the KEK — erasure
62
+ would be a false claim. Only ciphertext (which is useless without the key)
63
+ may be persisted in the immutable log.
64
+ """
65
+
66
+ def __init__(self) -> None:
67
+ self._wrapped: dict[str, dict[str, Any]] = {}
68
+ self._tombstones: dict[str, dict[str, Any]] = {}
69
+ self._blacklist: set[str] = set()
70
+
71
+ def store(self, cell_id: str, wrapped_dek: dict[str, str], content_address: str) -> None:
72
+ self._wrapped[cell_id] = {"wrapped": wrapped_dek, "address": content_address}
73
+
74
+ def get_dek(self, cell_id: str, kek: bytes) -> bytes:
75
+ if cell_id in self._tombstones:
76
+ raise KeyError(f"cell {cell_id} cryptographically erased")
77
+ return unwrap_dek(self._wrapped[cell_id]["wrapped"], kek)
78
+
79
+ def erase(self, cell_id: str, *, erased_at: str) -> None:
80
+ entry = self._wrapped.pop(cell_id, None) # destroy the only copy of the wrapped DEK
81
+ address = entry["address"] if entry else None
82
+ self._tombstones[cell_id] = {"erased_at": erased_at, "address": address}
83
+ if address:
84
+ self._blacklist.add(address)
85
+
86
+ def is_erased(self, cell_id: str) -> bool:
87
+ return cell_id in self._tombstones
88
+
89
+ def is_blacklisted(self, content_address: str) -> bool:
90
+ return content_address in self._blacklist
91
+
92
+
93
+ @dataclass
94
+ class Capability:
95
+ """A scoped sharing grant. `cells` may contain '*' for all."""
96
+
97
+ cap_id: str
98
+ kind: str # "temporary" | "permanent" | "syndicate"
99
+ cells: tuple[str, ...] = field(default_factory=tuple)
100
+ expires_at: float | None = None # epoch seconds; None = no expiry
101
+ revoked: bool = False
102
+
103
+ def authorizes(self, cell_id: str, *, now: float) -> bool:
104
+ if self.revoked:
105
+ return False
106
+ # fail closed: a temporary grant without an expiry, or past expiry, denies
107
+ if self.kind == "temporary" and (self.expires_at is None or now > self.expires_at):
108
+ return False
109
+ return "*" in self.cells or cell_id in self.cells