zaxy-memory 2.3.3__tar.gz → 2.3.4__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 (553) hide show
  1. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/AGENTS.md +1 -1
  2. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/CHANGELOG.md +18 -0
  3. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/PKG-INFO +1 -1
  4. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/pyproject.toml +1 -1
  5. zaxy_memory-2.3.4/scripts/chunk_rag_token_compare.py +166 -0
  6. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/cli/workspace.py +18 -0
  7. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/observation.py +27 -2
  8. zaxy_memory-2.3.4/src/zaxy/offload.py +108 -0
  9. zaxy_memory-2.3.4/tests/test_chunk_rag_methodology.py +51 -0
  10. zaxy_memory-2.3.4/tests/test_offload.py +120 -0
  11. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/.gitignore +0 -0
  12. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/Dockerfile +0 -0
  13. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/LICENSE +0 -0
  14. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/README.md +0 -0
  15. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docker-compose.prod.yml +0 -0
  16. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docker-compose.yml +0 -0
  17. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/agent-events.md +0 -0
  18. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/announcements/zaxy-0.4.0.md +0 -0
  19. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/announcements/zaxy-coordinate.md +0 -0
  20. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/announcements/zaxy-v1.0-x-article.md +0 -0
  21. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/announcements/zaxy-v1.0.md +0 -0
  22. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/announcements/zaxy-v1.1-x-article.md +0 -0
  23. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/announcements/zaxy-v2.1.md +0 -0
  24. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/announcements/zaxy-v2.2-x-article.md +0 -0
  25. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/announcements/zaxy-v2.3-x-article.md +0 -0
  26. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/api-inventory.md +0 -0
  27. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/api.md +0 -0
  28. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/architecture.md +0 -0
  29. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/benchmark-contributions.md +0 -0
  30. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/benchmark-review.md +0 -0
  31. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/competitive-positioning.md +0 -0
  32. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/experimental-associative-memory.md +0 -0
  33. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/longmembench.md +0 -0
  34. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/memory-is-purpose-zaxy-analysis.md +0 -0
  35. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/release-validation-checklist.md +0 -0
  36. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/synthesis-context-research.md +0 -0
  37. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/v09-gate-audit.md +0 -0
  38. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/v1-roadmap.md +0 -0
  39. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/v10-gate-audit.md +0 -0
  40. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/zero-friction-runtime-roadmap.md +0 -0
  41. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/assets/zaxy-coordinate-header.png +0 -0
  42. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/assets/zaxy-v1-header.png +0 -0
  43. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/assets/zaxy-v1.1-header.png +0 -0
  44. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/assets/zaxy-v2.1-header.png +0 -0
  45. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/assets/zaxy-v2.1-hero.png +0 -0
  46. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/assets/zaxy-v2.2-header.png +0 -0
  47. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/assets/zaxy-v2.3-header.png +0 -0
  48. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/benchmarks.md +0 -0
  49. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/codebase.md +0 -0
  50. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/configuration.md +0 -0
  51. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/consolidation.md +0 -0
  52. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/coordinate-quickstart.md +0 -0
  53. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/coordinate-roadmap.md +0 -0
  54. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/deployment.md +0 -0
  55. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/embeddings.md +0 -0
  56. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/eventloom.md +0 -0
  57. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/examples/external-validation-report.example.json +0 -0
  58. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/examples/first-run-timing-report.json +0 -0
  59. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/examples/mcp-response-snapshots.json +0 -0
  60. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/examples/mcp-tool-contract.json +0 -0
  61. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/examples/memory-checkout-contract.json +0 -0
  62. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/examples/native-integration-contract.json +0 -0
  63. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/examples/v1-schema-freeze.json +0 -0
  64. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/external-validation.md +0 -0
  65. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/first-run-validation.md +0 -0
  66. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/getting-started.md +0 -0
  67. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/graph-schema.md +0 -0
  68. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/hooks.md +0 -0
  69. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/integrations.md +0 -0
  70. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/mcp-install-targets.md +0 -0
  71. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/mcp-quickstart.md +0 -0
  72. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/mcp.md +0 -0
  73. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/media/zaxy-2-5-3-0-latent-memory-roadmap-header.png +0 -0
  74. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/media/zaxy-codebase-review-header.png +0 -0
  75. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/media/zaxy-collaborate-demo.gif +0 -0
  76. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/media/zaxy-collaborate-demo.md +0 -0
  77. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/media/zaxy-collaborate-demo.mp4 +0 -0
  78. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/migration.md +0 -0
  79. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/operations.md +0 -0
  80. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/packet-analyzer.md +0 -0
  81. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/ann-engineering-2026-06.md +0 -0
  82. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/2-3-research/backend-options.md +0 -0
  83. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/2-3-research/external-validation.md +0 -0
  84. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/2-3-research/int8_bench_e_results.json +0 -0
  85. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/2-3-research/int8_bench_results.json +0 -0
  86. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/2-3-research/kuzu-usage-audit.md +0 -0
  87. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/2-3-research/promotion-pass.md +0 -0
  88. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/BASELINE.md +0 -0
  89. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/after-dim1536-r1.json +0 -0
  90. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/after-dim1536-r2.json +0 -0
  91. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/after-dim64-100k.json +0 -0
  92. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/after-dim64-r1.json +0 -0
  93. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/after-dim64-r2.json +0 -0
  94. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/after-dim64-r3.json +0 -0
  95. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann2-d64-10k-postcopy.json +0 -0
  96. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-gauss-r1.json +0 -0
  97. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-gauss-r2.json +0 -0
  98. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-hash-r1.json +0 -0
  99. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-hash-record.json +0 -0
  100. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-50k-gauss-crossover.json +0 -0
  101. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann3-d64-100k-r1.json +0 -0
  102. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann3-d64-100k-r2.json +0 -0
  103. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann4-d1536-50k-dimension-gated.json +0 -0
  104. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann4-d1536-50k-gauss-efs800.json +0 -0
  105. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann4-d1536-50k-gauss-r2.json +0 -0
  106. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann4-d64-100k-confirm.json +0 -0
  107. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/baseline-dim1536.json +0 -0
  108. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/baseline-dim64.json +0 -0
  109. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/diag-d1536-f32-ceiling.json +0 -0
  110. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/diag-gauss-efs-sweep.json +0 -0
  111. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/diag-ties-gaussian.json +0 -0
  112. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/experiments-e1-e4.json +0 -0
  113. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/profiling-a2.json +0 -0
  114. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/codebase-review-2026-06-09.md +0 -0
  115. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/zaxy-memory-fabric-paper.md +0 -0
  116. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/retrieval.md +0 -0
  117. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/runbook.md +0 -0
  118. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/security.md +0 -0
  119. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/stability-commitment.md +0 -0
  120. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-08-codebase-file-map.md +0 -0
  121. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-08-domain-separated-defaults.md +0 -0
  122. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-08-local-first-retrieval.md +0 -0
  123. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-08-remote-mcp-rate-limit-audit.md +0 -0
  124. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-09-agent-integration-templates.md +0 -0
  125. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-09-retention-metadata-extraction.md +0 -0
  126. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-09-retrieval-feedback-events.md +0 -0
  127. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-10-merge-sprint.md +0 -0
  128. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-16-runtime-dashboard.md +0 -0
  129. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-17-skill-memory.md +0 -0
  130. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-18-pggraph-adapter.md +0 -0
  131. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-18-projection-backend-contract.md +0 -0
  132. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-20-zero-friction-embedded-graph-runtime.md +0 -0
  133. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-30-v0-5-public-positioning-first-run-trust.md +0 -0
  134. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-31-v1-release-docs-media.md +0 -0
  135. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-06-07-zaxy-2-0-alpha-1-causal-consolidation.md +0 -0
  136. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-06-07-zaxy-2-0-alpha-2-review-gated-consolidation.md +0 -0
  137. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-06-07-zaxy-2-0-beta-1-reasoning-loop-primitives.md +0 -0
  138. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-06-08-zaxy-2-0-beta-2-metacognitive-procedural-hardening.md +0 -0
  139. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-06-08-zaxy-2-0-rc-1-benchmark-freeze.md +0 -0
  140. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-06-09-codebase-review-high-value-remediation.md +0 -0
  141. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-05-08-codebase-file-map-design.md +0 -0
  142. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-05-08-domain-separated-defaults-design.md +0 -0
  143. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-05-08-local-first-retrieval-design.md +0 -0
  144. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-05-08-remote-mcp-rate-limit-audit-design.md +0 -0
  145. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-05-16-runtime-dashboard-design.md +0 -0
  146. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-05-17-skill-memory-pggraph-evaluation-design.md +0 -0
  147. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-05-31-v1-release-docs-media-design.md +0 -0
  148. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-06-07-zaxy-2-0-roadmap-design.md +0 -0
  149. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-06-09-zaxy-2-5-3-0-latent-memory-roadmap-design.md +0 -0
  150. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-06-10-zaxy-2-1-2-3-agent-experience-cognitive-memory-roadmap-design.md +0 -0
  151. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-06-10-zaxy-2-1-2-3-implementation-plan.md +0 -0
  152. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-06-11-zaxy-2-2-ann-engineering-plan.md +0 -0
  153. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-06-11-zaxy-2-3-readiness-research.md +0 -0
  154. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/testing.md +0 -0
  155. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/why-zaxy.md +0 -0
  156. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/workspace-genesis.md +0 -0
  157. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/examples/__init__.py +0 -0
  158. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/examples/adapters/coordinationbench_zaxy_adapter.py +0 -0
  159. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/examples/claude_compatible_memory.py +0 -0
  160. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/examples/coordinate_three_worker_project.py +0 -0
  161. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/examples/langgraph_memory.py +0 -0
  162. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/examples/openai_compatible_memory.py +0 -0
  163. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/examples/single_agent_memory.py +0 -0
  164. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/reports/archive/benchmarks/longmembench-adapter-kit/README.md +0 -0
  165. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/reports/archive/benchmarks/purpose-v1/holdouts/public-derived-purpose-v1/README.md +0 -0
  166. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/reports/benchmarks/purpose-v1/holdouts/public-derived-purpose-v1/README.md +0 -0
  167. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/backend-shootout.py +0 -0
  168. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/backup.sh +0 -0
  169. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/benchmark-guardrails.sh +0 -0
  170. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/beta-uat.sh +0 -0
  171. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/build-backend-shootout-workload.py +0 -0
  172. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/build-dist.sh +0 -0
  173. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/build-site-docs.py +0 -0
  174. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/check-backend-shootout.py +0 -0
  175. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/check-coverage.py +0 -0
  176. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/check-external-validation.py +0 -0
  177. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/check-state-recovery-benchmark.py +0 -0
  178. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/generate-certs.sh +0 -0
  179. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/generate-release-media.py +0 -0
  180. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/integration-check.sh +0 -0
  181. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/live-benchmark.sh +0 -0
  182. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/mcp_smoke_test.py +0 -0
  183. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/release-check.sh +0 -0
  184. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/restore.sh +0 -0
  185. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/rotate-logs.sh +0 -0
  186. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/setup.sh +0 -0
  187. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/setup_neo4j_indexes.cypher +0 -0
  188. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/validate-deployment.sh +0 -0
  189. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/validate-docs.sh +0 -0
  190. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/README.html +0 -0
  191. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/assets/graph.png +0 -0
  192. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/assets/zaxy-coordinate-header.png +0 -0
  193. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/assets/zaxy-v1-header.png +0 -0
  194. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/assets/zaxy-v1.1-header.png +0 -0
  195. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/assets/zaxy-v2.1-header.png +0 -0
  196. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/assets/zaxy-v2.1-hero.png +0 -0
  197. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/assets/zaxy-v2.2-header.png +0 -0
  198. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/assets/zaxy-v2.3-header.png +0 -0
  199. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/agent-events.html +0 -0
  200. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/announcements/zaxy-0.4.0.html +0 -0
  201. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/announcements/zaxy-coordinate.html +0 -0
  202. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/announcements/zaxy-v1.0-x-article.html +0 -0
  203. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/announcements/zaxy-v1.0.html +0 -0
  204. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/announcements/zaxy-v1.1-x-article.html +0 -0
  205. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/announcements/zaxy-v2.1.html +0 -0
  206. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/announcements/zaxy-v2.2-x-article.html +0 -0
  207. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/announcements/zaxy-v2.3-x-article.html +0 -0
  208. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/api-inventory.html +0 -0
  209. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/api.html +0 -0
  210. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/architecture.html +0 -0
  211. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/benchmark-contributions.html +0 -0
  212. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/benchmark-review.html +0 -0
  213. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/competitive-positioning.html +0 -0
  214. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/experimental-associative-memory.html +0 -0
  215. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/longmembench.html +0 -0
  216. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/memory-is-purpose-zaxy-analysis.html +0 -0
  217. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/release-validation-checklist.html +0 -0
  218. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/synthesis-context-research.html +0 -0
  219. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/v09-gate-audit.html +0 -0
  220. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/v1-roadmap.html +0 -0
  221. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/v10-gate-audit.html +0 -0
  222. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/zero-friction-runtime-roadmap.html +0 -0
  223. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/benchmarks.html +0 -0
  224. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/codebase.html +0 -0
  225. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/configuration.html +0 -0
  226. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/consolidation.html +0 -0
  227. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/coordinate-quickstart.html +0 -0
  228. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/coordinate-roadmap.html +0 -0
  229. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/deployment.html +0 -0
  230. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/embeddings.html +0 -0
  231. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/eventloom.html +0 -0
  232. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/external-validation.html +0 -0
  233. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/first-run-validation.html +0 -0
  234. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/getting-started.html +0 -0
  235. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/graph-schema.html +0 -0
  236. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/hooks.html +0 -0
  237. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/integrations.html +0 -0
  238. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/mcp-install-targets.html +0 -0
  239. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/mcp-quickstart.html +0 -0
  240. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/mcp.html +0 -0
  241. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/media/zaxy-collaborate-demo.html +0 -0
  242. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/migration.html +0 -0
  243. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/operations.html +0 -0
  244. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/packet-analyzer.html +0 -0
  245. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/research/ann-engineering-2026-06.html +0 -0
  246. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/research/artifacts/2-3-research/backend-options.html +0 -0
  247. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/research/artifacts/2-3-research/external-validation.html +0 -0
  248. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/research/artifacts/2-3-research/kuzu-usage-audit.html +0 -0
  249. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/research/artifacts/2-3-research/promotion-pass.html +0 -0
  250. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/research/artifacts/ann-2026-06/BASELINE.html +0 -0
  251. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/research/codebase-review-2026-06-09.html +0 -0
  252. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/research/zaxy-memory-fabric-paper.html +0 -0
  253. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/retrieval.html +0 -0
  254. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/runbook.html +0 -0
  255. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/security.html +0 -0
  256. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/stability-commitment.html +0 -0
  257. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-08-codebase-file-map.html +0 -0
  258. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-08-domain-separated-defaults.html +0 -0
  259. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-08-local-first-retrieval.html +0 -0
  260. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-08-remote-mcp-rate-limit-audit.html +0 -0
  261. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-09-agent-integration-templates.html +0 -0
  262. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-09-retention-metadata-extraction.html +0 -0
  263. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-09-retrieval-feedback-events.html +0 -0
  264. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-10-merge-sprint.html +0 -0
  265. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-16-runtime-dashboard.html +0 -0
  266. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-17-skill-memory.html +0 -0
  267. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-18-pggraph-adapter.html +0 -0
  268. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-18-projection-backend-contract.html +0 -0
  269. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-20-zero-friction-embedded-graph-runtime.html +0 -0
  270. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-30-v0-5-public-positioning-first-run-trust.html +0 -0
  271. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-31-v1-release-docs-media.html +0 -0
  272. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-06-07-zaxy-2-0-alpha-1-causal-consolidation.html +0 -0
  273. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-06-07-zaxy-2-0-alpha-2-review-gated-consolidation.html +0 -0
  274. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-06-07-zaxy-2-0-beta-1-reasoning-loop-primitives.html +0 -0
  275. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-06-08-zaxy-2-0-beta-2-metacognitive-procedural-hardening.html +0 -0
  276. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-06-08-zaxy-2-0-rc-1-benchmark-freeze.html +0 -0
  277. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-06-09-codebase-review-high-value-remediation.html +0 -0
  278. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-05-08-codebase-file-map-design.html +0 -0
  279. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-05-08-domain-separated-defaults-design.html +0 -0
  280. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-05-08-local-first-retrieval-design.html +0 -0
  281. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-05-08-remote-mcp-rate-limit-audit-design.html +0 -0
  282. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-05-16-runtime-dashboard-design.html +0 -0
  283. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-05-17-skill-memory-pggraph-evaluation-design.html +0 -0
  284. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-05-31-v1-release-docs-media-design.html +0 -0
  285. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-06-07-zaxy-2-0-roadmap-design.html +0 -0
  286. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-06-09-zaxy-2-5-3-0-latent-memory-roadmap-design.html +0 -0
  287. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-06-10-zaxy-2-1-2-3-agent-experience-cognitive-memory-roadmap-design.html +0 -0
  288. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-06-10-zaxy-2-1-2-3-implementation-plan.html +0 -0
  289. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-06-11-zaxy-2-2-ann-engineering-plan.html +0 -0
  290. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-06-11-zaxy-2-3-readiness-research.html +0 -0
  291. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/testing.html +0 -0
  292. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/why-zaxy.html +0 -0
  293. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/workspace-genesis.html +0 -0
  294. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/index.html +0 -0
  295. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/style.css +0 -0
  296. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/__init__.py +0 -0
  297. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/__main__.py +0 -0
  298. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/adapters/__init__.py +0 -0
  299. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/adapters/_common.py +0 -0
  300. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/adapters/claude_compatible.py +0 -0
  301. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/adapters/coordination.py +0 -0
  302. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/adapters/crewai.py +0 -0
  303. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/adapters/langgraph.py +0 -0
  304. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/adapters/openai_compatible.py +0 -0
  305. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/associative_memory.py +0 -0
  306. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/capabilities.py +0 -0
  307. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/capture_manager.py +0 -0
  308. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/capture_soak.py +0 -0
  309. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/causal.py +0 -0
  310. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/checkout.py +0 -0
  311. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/cli/__init__.py +0 -0
  312. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/cli/benchmarks.py +0 -0
  313. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/cli/evaluation.py +0 -0
  314. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/cli/runtime.py +0 -0
  315. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/cli/serving.py +0 -0
  316. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/codebase.py +0 -0
  317. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/codex_capture.py +0 -0
  318. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/compaction.py +0 -0
  319. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/config.py +0 -0
  320. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/consolidation.py +0 -0
  321. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/consolidation_pipeline.py +0 -0
  322. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/context.py +0 -0
  323. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/context_refresh.py +0 -0
  324. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/coordination.py +0 -0
  325. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/coordination_git.py +0 -0
  326. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/coordination_semantic.py +0 -0
  327. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/coordination_templates.py +0 -0
  328. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/coordinationbench_adapter.py +0 -0
  329. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/core.py +0 -0
  330. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/dashboard.py +0 -0
  331. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/doctor.py +0 -0
  332. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/documents.py +0 -0
  333. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/domain.py +0 -0
  334. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/embedded_graph_store.py +0 -0
  335. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/embedding.py +0 -0
  336. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/event.py +0 -0
  337. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/event_context.py +0 -0
  338. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/evidence.py +0 -0
  339. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/evidence_candidates.py +0 -0
  340. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/evidence_program.py +0 -0
  341. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/external_validation.py +0 -0
  342. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/extract.py +0 -0
  343. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/extract_templates.py +0 -0
  344. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/feature_evidence.py +0 -0
  345. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/graph.py +0 -0
  346. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/graph_walk.py +0 -0
  347. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/hooks.py +0 -0
  348. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/inference.py +0 -0
  349. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/install.py +0 -0
  350. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/integrations.py +0 -0
  351. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/latticedb_store.py +0 -0
  352. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/lifecycle.py +0 -0
  353. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/local_profile.py +0 -0
  354. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/log.py +0 -0
  355. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/mcp_runtime.py +0 -0
  356. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/mcp_server.py +0 -0
  357. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/memory_persistence.py +0 -0
  358. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/memory_status.py +0 -0
  359. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/metacognition.py +0 -0
  360. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/metrics.py +0 -0
  361. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/neutral.py +0 -0
  362. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/onboarding.py +0 -0
  363. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/packet_analyzer.py +0 -0
  364. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/packet_guidance.py +0 -0
  365. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/packet_projection.py +0 -0
  366. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/pagination.py +0 -0
  367. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/pggraph_store.py +0 -0
  368. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/procedural_planning.py +0 -0
  369. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/procedure_mining.py +0 -0
  370. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/projection.py +0 -0
  371. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/projection_backends.py +0 -0
  372. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/purpose.py +0 -0
  373. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/purpose_control.py +0 -0
  374. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/py.typed +0 -0
  375. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/query.py +0 -0
  376. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/reasoning_primitives.py +0 -0
  377. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/recall.py +0 -0
  378. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/recovery.py +0 -0
  379. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/refs.py +0 -0
  380. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/release.py +0 -0
  381. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/remote_security.py +0 -0
  382. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/__init__.py +0 -0
  383. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/coordinationbench/README.md +0 -0
  384. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/coordinationbench/__init__.py +0 -0
  385. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/coordinationbench/schemas/result.schema.json +0 -0
  386. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/coordinationbench/schemas/runner-manifest.schema.json +0 -0
  387. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/coordinationbench/templates/activegraph.runner-manifest.template.json +0 -0
  388. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/coordinationbench/templates/agent_memory.runner-manifest.template.json +0 -0
  389. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/coordinationbench/templates/hybi.runner-manifest.template.json +0 -0
  390. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/coordinationbench/templates/mem0.runner-manifest.template.json +0 -0
  391. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/coordinationbench/templates/quarq.runner-manifest.template.json +0 -0
  392. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/coordinationbench/unsupported_runner.py +0 -0
  393. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/retrieval_intent.py +0 -0
  394. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/retrieval_plan/__init__.py +0 -0
  395. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/retrieval_plan/bundles.py +0 -0
  396. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/retrieval_plan/duration_evidence.py +0 -0
  397. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/retrieval_plan/fact_queries.py +0 -0
  398. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/retrieval_plan/foundations.py +0 -0
  399. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/retrieval_plan/ordering.py +0 -0
  400. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/retrieval_plan/scalars.py +0 -0
  401. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/retrieval_profile.py +0 -0
  402. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/runtime.py +0 -0
  403. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/salience.py +0 -0
  404. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/schema.py +0 -0
  405. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/security.py +0 -0
  406. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/session.py +0 -0
  407. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/synthesis/__init__.py +0 -0
  408. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/synthesis/evidence_rows.py +0 -0
  409. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/synthesis/foundations.py +0 -0
  410. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/synthesis/labels.py +0 -0
  411. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/synthesis/ledgers.py +0 -0
  412. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/synthesis/operations.py +0 -0
  413. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/synthesis_artifact.py +0 -0
  414. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/synthesis_packet.py +0 -0
  415. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/token_budget.py +0 -0
  416. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/tool_profiles.py +0 -0
  417. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/trace.py +0 -0
  418. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/transcripts.py +0 -0
  419. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/verbatim.py +0 -0
  420. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/viewer.py +0 -0
  421. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/working_set.py +0 -0
  422. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/workspace.py +0 -0
  423. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/conftest.py +0 -0
  424. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_agent_experience_lanes.py +0 -0
  425. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_associative_memory.py +0 -0
  426. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_backend_shootout.py +0 -0
  427. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_benchmarks.py +0 -0
  428. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_capabilities.py +0 -0
  429. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_capture_manager.py +0 -0
  430. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_capture_soak.py +0 -0
  431. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_causal.py +0 -0
  432. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_causal_benchmark.py +0 -0
  433. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_causal_checkout.py +0 -0
  434. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_checkout.py +0 -0
  435. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_claude_compatible_adapter.py +0 -0
  436. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_cli.py +0 -0
  437. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_codebase.py +0 -0
  438. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_codex_capture.py +0 -0
  439. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_cognitive_lanes.py +0 -0
  440. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_cognitive_profile.py +0 -0
  441. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_compaction.py +0 -0
  442. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_competitive_benchmarks.py +0 -0
  443. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_compose.py +0 -0
  444. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_config.py +0 -0
  445. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_consolidation.py +0 -0
  446. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_consolidation_benchmark.py +0 -0
  447. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_consolidation_pipeline.py +0 -0
  448. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_context.py +0 -0
  449. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_context_refresh.py +0 -0
  450. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_coordination.py +0 -0
  451. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_coordination_adapters.py +0 -0
  452. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_coordination_benchmark.py +0 -0
  453. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_coordination_semantic.py +0 -0
  454. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_coordinationbench_adapter.py +0 -0
  455. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_core.py +0 -0
  456. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_coverage_ratchet.py +0 -0
  457. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_crewai_adapter.py +0 -0
  458. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_dashboard.py +0 -0
  459. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_docs_site.py +0 -0
  460. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_doctor.py +0 -0
  461. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_documents.py +0 -0
  462. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_domain.py +0 -0
  463. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_embedded_graph_store.py +0 -0
  464. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_embedding.py +0 -0
  465. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_event.py +0 -0
  466. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_evidence.py +0 -0
  467. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_evidence_program.py +0 -0
  468. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_examples_v05.py +0 -0
  469. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_extract.py +0 -0
  470. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_extract_templates.py +0 -0
  471. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_feature_evidence.py +0 -0
  472. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_graph.py +0 -0
  473. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_graph_scale_lanes.py +0 -0
  474. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_graph_walk.py +0 -0
  475. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_harvey_lab_benchmark.py +0 -0
  476. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_inference.py +0 -0
  477. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_install.py +0 -0
  478. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_integration_check_script.py +0 -0
  479. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_integrations.py +0 -0
  480. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_langgraph_adapter.py +0 -0
  481. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_latticedb_store.py +0 -0
  482. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_lifecycle.py +0 -0
  483. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_live_benchmark.py +0 -0
  484. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_local_profile.py +0 -0
  485. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_longmembench.py +0 -0
  486. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_mcp.py +0 -0
  487. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_mcp_runtime.py +0 -0
  488. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_mcp_server.py +0 -0
  489. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_memory_injection.py +0 -0
  490. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_memory_persistence.py +0 -0
  491. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_memory_status.py +0 -0
  492. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_metacognition.py +0 -0
  493. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_metrics.py +0 -0
  494. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_neutral.py +0 -0
  495. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_observation.py +0 -0
  496. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_onboarding.py +0 -0
  497. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_openai_compatible_adapter.py +0 -0
  498. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_ops_scripts.py +0 -0
  499. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_packaging.py +0 -0
  500. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_packet_analyzer.py +0 -0
  501. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_packet_memory_e2e.py +0 -0
  502. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_packet_projection.py +0 -0
  503. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_pagination.py +0 -0
  504. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_pggraph_store.py +0 -0
  505. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_procedural_planning.py +0 -0
  506. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_procedure_mining.py +0 -0
  507. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_projection.py +0 -0
  508. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_purpose.py +0 -0
  509. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_purpose_benchmark.py +0 -0
  510. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_purpose_control.py +0 -0
  511. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_query.py +0 -0
  512. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_rc_benchmark_freeze.py +0 -0
  513. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_reasoning_benchmark.py +0 -0
  514. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_reasoning_primitives.py +0 -0
  515. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_recovery.py +0 -0
  516. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_refs.py +0 -0
  517. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_remote_security.py +0 -0
  518. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_retrieval_plan.py +0 -0
  519. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_retrieval_profiles.py +0 -0
  520. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_runtime.py +0 -0
  521. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_salience.py +0 -0
  522. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_schema_migrations.py +0 -0
  523. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_security.py +0 -0
  524. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_session.py +0 -0
  525. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_setup_script.py +0 -0
  526. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_statistical_benchmark.py +0 -0
  527. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_synthesis.py +0 -0
  528. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_synthesis_artifact.py +0 -0
  529. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_synthesis_packet.py +0 -0
  530. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_token_budget.py +0 -0
  531. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_trace.py +0 -0
  532. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_transcripts.py +0 -0
  533. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_v05_positioning.py +0 -0
  534. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_verbatim.py +0 -0
  535. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_viewer.py +0 -0
  536. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_working_set.py +0 -0
  537. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_workspace.py +0 -0
  538. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/__init__.py +0 -0
  539. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/agent_experience_lanes.py +0 -0
  540. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/benchmark.py +0 -0
  541. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/causal_benchmark.py +0 -0
  542. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/consolidation_benchmark.py +0 -0
  543. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/coordination_benchmark.py +0 -0
  544. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/fok_calibration_lane.py +0 -0
  545. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/forgetting_lane.py +0 -0
  546. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/graph_walk_lane.py +0 -0
  547. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/harvey_lab_benchmark.py +0 -0
  548. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/live_benchmark.py +0 -0
  549. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/longmembench.py +0 -0
  550. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/purpose_benchmark.py +0 -0
  551. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/rc_benchmark_freeze.py +0 -0
  552. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/reasoning_benchmark.py +0 -0
  553. {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/vector_scale_lane.py +0 -0
@@ -184,7 +184,7 @@ Run with coverage: `pytest --cov` (default in pyproject.toml)
184
184
  | Neo4j upsert | <100ms | MERGE + index lookup |
185
185
  | Hybrid query | <200ms | Parallel exact + keyword + traversal |
186
186
  | Total context retrieval | <300ms | End-to-end |
187
- | Token reduction vs. chunk RAG | 70–90% | Structured paths vs. raw text |
187
+ | Token reduction vs. chunk RAG | 70–90% (target; unvalidated) | Structured paths vs. raw text. Validate with `scripts/chunk_rag_token_compare.py` — quality-controlled (token reduction at *equal answer-bearing recall*, pinned chunk-RAG baseline) — driven by a gold-labeled QA dataset through the gated benchmark. |
188
188
 
189
189
  ## Current Status
190
190
 
@@ -2,6 +2,24 @@
2
2
 
3
3
  All notable Zaxy release changes are recorded here.
4
4
 
5
+ ## 2.3.4 - 2026-06-14
6
+
7
+ - **Opt-in full tool-I/O provenance (offload sink).** Default capture stays lean
8
+ (240-char excerpts, redacted args). With `ZAXY_OFFLOAD_TOOL_IO` enabled, the
9
+ full command output / tool arguments are also written to a content-addressed
10
+ blob under `<eventloom>/refs/`, and the lean event carries a `full_io_ref`
11
+ (`{ref, sha256, bytes}`). The blob id *is* its sha256 and lives inside the
12
+ Eventloom directory, so it is self-contained and tamper-evident (unlike the
13
+ foreign `codex_source_ref` pointers, which the hash chain can't attest to).
14
+ Context and `memory_checkout` still see only the summary; drill down on demand
15
+ with `zaxy offload-get <sha256>`. Arguments are secret-masked before offload.
16
+ This closes the provenance gap on tool I/O without touching token leanness.
17
+ - **Chunk-RAG token-reduction methodology** (`scripts/chunk_rag_token_compare.py`):
18
+ a quality-controlled harness that measures token reduction at *equal
19
+ answer-bearing recall* against a pinned chunk-RAG baseline, so the AGENTS.md
20
+ "70–90% vs chunk RAG" figure can be validated (it is now labeled an unvalidated
21
+ target pending a gated QA-dataset run) instead of asserted.
22
+
5
23
  ## 2.3.3 - 2026-06-13
6
24
 
7
25
  - Extended deterministic per-turn memory injection to **Codex**. Codex now ships
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: zaxy-memory
3
- Version: 2.3.3
3
+ Version: 2.3.4
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "zaxy-memory"
3
- version = "2.3.3"
3
+ version = "2.3.4"
4
4
  description = "Coordinator memory for auditable multi-agent projects"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -0,0 +1,166 @@
1
+ """Quality-controlled token-reduction methodology: structured cited memory vs chunk-RAG.
2
+
3
+ Dev target #2: the AGENTS.md Performance-Targets table states "Token reduction vs
4
+ chunk RAG: 70-90% (structured paths vs raw text)". That is an *unvalidated target*.
5
+ This module is the reproducible methodology to validate (or correct) it.
6
+
7
+ The trap this avoids: a raw token ratio is meaningless, because you can always
8
+ "save tokens" by retrieving less and answering worse. So every comparison is
9
+ **quality-controlled** — measured at EQUAL ANSWER-BEARING RECALL: both arms must
10
+ surface the gold answer span, and we count the tokens each needs to get there.
11
+
12
+ reduction = 1 - structured_tokens / chunkrag_tokens (over cases where BOTH reach gold)
13
+
14
+ The chunk-RAG baseline is pinned and reported (chunk size, ranking) so the ratio
15
+ is not gameable by quietly weakening the baseline.
16
+
17
+ Run `python3 scripts/chunk_rag_token_compare.py` for a self-test on a worked
18
+ example. To produce a *publishable* number, drive `compare_corpus()` with a real
19
+ QA dataset (e.g. LongMemEval) through the gated benchmark apparatus; the headline
20
+ number depends on workload and must be reported with both.
21
+ """
22
+
23
+ from __future__ import annotations
24
+
25
+ import re
26
+ from collections.abc import Callable
27
+ from dataclasses import dataclass
28
+
29
+ # Prefer a real BPE tokenizer when available (benchmark runs), but stay
30
+ # dependency-free otherwise: the methodology only needs a *consistent* tokenizer,
31
+ # since it compares token counts at equal recall between two arms.
32
+ _encode: Callable[[str], list]
33
+ _decode: Callable[[list], str]
34
+ try: # pragma: no cover - depends on optional install
35
+ import tiktoken
36
+
37
+ _ENC = tiktoken.get_encoding("cl100k_base")
38
+ _encode = _ENC.encode
39
+ _decode = _ENC.decode
40
+ TOKENIZER = "tiktoken/cl100k_base"
41
+ except Exception: # noqa: BLE001 - any import/runtime failure -> fallback
42
+ _encode = lambda s: s.split() # noqa: E731 - whitespace tokens
43
+ _decode = lambda t: " ".join(t) # noqa: E731
44
+ TOKENIZER = "whitespace-fallback"
45
+
46
+ DEFAULT_CHUNK_TOKENS = 512
47
+
48
+
49
+ def tokens(text: str) -> int:
50
+ return len(_encode(text))
51
+
52
+
53
+ def chunk_text(text: str, chunk_tokens: int = DEFAULT_CHUNK_TOKENS) -> list[str]:
54
+ toks = _encode(text)
55
+ return [_decode(toks[i : i + chunk_tokens]) for i in range(0, len(toks), chunk_tokens)]
56
+
57
+
58
+ def _kw(text: str) -> list[str]:
59
+ return re.findall(r"\w+", text.lower())
60
+
61
+
62
+ def _score(passage: str, query: str) -> int:
63
+ q = set(_kw(query))
64
+ return sum(1 for w in _kw(passage) if w in q)
65
+
66
+
67
+ def _tokens_to_gold(passages: list[str], query: str, gold: str) -> tuple[int, bool]:
68
+ """Greedily accumulate the highest-scoring passages until gold appears.
69
+
70
+ Returns (tokens_used, reached_gold). Pure keyword ranking — a standard,
71
+ embedding-free chunk-RAG baseline (note: vector-RAG could differ).
72
+ """
73
+ ranked = sorted(passages, key=lambda p: -_score(p, query))
74
+ used: list[str] = []
75
+ total = 0
76
+ gold_l = gold.lower()
77
+ for p in ranked:
78
+ used.append(p)
79
+ total += tokens(p)
80
+ if gold_l in " ".join(used).lower():
81
+ return total, True
82
+ return total, False
83
+
84
+
85
+ @dataclass
86
+ class CaseResult:
87
+ query: str
88
+ structured_tokens: int
89
+ chunkrag_tokens: int
90
+ both_reached: bool
91
+
92
+ @property
93
+ def reduction(self) -> float | None:
94
+ if not self.both_reached or self.chunkrag_tokens == 0:
95
+ return None
96
+ return 1 - self.structured_tokens / self.chunkrag_tokens
97
+
98
+
99
+ def compare_case(
100
+ *, query: str, gold: str, facts: list[str], raw_text: str, chunk_tokens: int = DEFAULT_CHUNK_TOKENS
101
+ ) -> CaseResult:
102
+ """One query: structured-cited retrieval vs chunk-RAG over raw_text, at equal recall."""
103
+ s_tok, s_ok = _tokens_to_gold(facts, query, gold)
104
+ c_tok, c_ok = _tokens_to_gold(chunk_text(raw_text, chunk_tokens), query, gold)
105
+ return CaseResult(query, s_tok, c_tok, s_ok and c_ok)
106
+
107
+
108
+ def compare_corpus(cases: list[dict], *, chunk_tokens: int = DEFAULT_CHUNK_TOKENS) -> dict:
109
+ """Run a corpus of {query, gold, facts, raw_text} cases. Returns aggregate stats.
110
+
111
+ Only cases where BOTH arms reach gold count toward the reduction (equal recall).
112
+ """
113
+ results = [compare_case(chunk_tokens=chunk_tokens, **c) for c in cases]
114
+ scored = [r for r in results if r.reduction is not None]
115
+ reductions = [r.reduction for r in scored]
116
+ return {
117
+ "baseline": {
118
+ "chunk_tokens": chunk_tokens,
119
+ "ranking": "keyword-overlap (embedding-free)",
120
+ "tokenizer": TOKENIZER,
121
+ },
122
+ "cases_total": len(results),
123
+ "cases_equal_recall": len(scored),
124
+ "median_reduction": (sorted(reductions)[len(reductions) // 2] if reductions else None),
125
+ "mean_reduction": (sum(reductions) / len(reductions) if reductions else None),
126
+ "per_case": [
127
+ {"query": r.query, "structured_tok": r.structured_tokens,
128
+ "chunkrag_tok": r.chunkrag_tokens, "reduction": r.reduction}
129
+ for r in results
130
+ ],
131
+ }
132
+
133
+
134
+ def _self_test_corpus() -> list[dict]:
135
+ """A worked example: a fact buried in verbose tool/dialogue text vs a compact card.
136
+
137
+ Illustrative only — the magnitude depends on raw verbosity, which is exactly why
138
+ a real run needs a QA dataset + the gated apparatus.
139
+ """
140
+ noise = ("INFO build step ok; cache warm; 0 warnings; retrying; " * 60)
141
+ raw = (
142
+ noise
143
+ + " The team decided the canonical session id is zaxy-default and froze the legacy zaxy session. "
144
+ + noise
145
+ + " Unrelated: the default graph backend for beta is Neo4j. "
146
+ + noise
147
+ )
148
+ facts = [
149
+ "[decision] canonical session id = zaxy-default; legacy 'zaxy' frozen. (eventloom://zaxy-default/events/77848)",
150
+ "[decision] default graph backend (beta) = Neo4j. (eventloom://zaxy-default/events/1200)",
151
+ "[goal] ship per-turn memory injection. (eventloom://zaxy-default/events/77889)",
152
+ ]
153
+ return [
154
+ {"query": "which session id is canonical", "gold": "zaxy-default", "facts": facts, "raw_text": raw},
155
+ {"query": "default graph backend for beta", "gold": "Neo4j", "facts": facts, "raw_text": raw},
156
+ ]
157
+
158
+
159
+ if __name__ == "__main__":
160
+ import json
161
+
162
+ out = compare_corpus(_self_test_corpus())
163
+ print(json.dumps(out, indent=2))
164
+ print("\nNOTE: self-test is illustrative. A publishable 'X% vs chunk-RAG' number "
165
+ "requires driving compare_corpus() with a real QA dataset (gold-labeled) "
166
+ "through the freeze/gate/audit apparatus, reported with workload + baseline.")
@@ -595,6 +595,7 @@ def hook_event(
595
595
  duration_ms=duration_ms,
596
596
  stdout=stdout,
597
597
  stderr=stderr,
598
+ eventloom_path=eventloom_path,
598
599
  )
599
600
  event = eventlog.append(
600
601
  event_input["event_type"],
@@ -648,6 +649,7 @@ def hook_event(
648
649
  call_id=call_id,
649
650
  arguments=arguments,
650
651
  result_summary=result_summary,
652
+ eventloom_path=eventloom_path,
651
653
  )
652
654
  event = eventlog.append(
653
655
  event_input["event_type"],
@@ -710,6 +712,22 @@ def hook_event(
710
712
  typer.echo(render_recovery_packet(packet))
711
713
 
712
714
 
715
+ @app.command("offload-get")
716
+ def offload_get(
717
+ sha256: str = typer.Argument(..., help="sha256 id from a full_io_ref pointer"), # noqa: B008
718
+ eventloom_path: str = typer.Option(".eventloom", help="Eventloom directory holding refs/"),
719
+ ) -> None:
720
+ """Drill down to the full offloaded tool I/O behind a `full_io_ref` sha256."""
721
+ from zaxy.offload import read_offload_ref
722
+
723
+ content = read_offload_ref(eventloom_path, sha256)
724
+ if content is None:
725
+ raise typer.BadParameter(
726
+ f"no offload blob for {sha256} under {eventloom_path}/refs (missing or integrity mismatch)"
727
+ )
728
+ typer.echo(content, nl=False)
729
+
730
+
713
731
  def _resolve_cli_projection_backend(
714
732
  projection_backend: str | None,
715
733
  settings: Settings,
@@ -11,6 +11,11 @@ from zaxy.lifecycle import (
11
11
  build_file_edit_applied_event,
12
12
  build_tool_call_completed_event,
13
13
  )
14
+ from zaxy.offload import (
15
+ offload_command_output,
16
+ offload_tool_arguments,
17
+ tool_io_offload_enabled,
18
+ )
14
19
  from zaxy.security import secure_payload
15
20
 
16
21
  SECRET_ARG_PATTERN = re.compile(
@@ -29,8 +34,14 @@ def build_command_observation(
29
34
  duration_ms: int | None = None,
30
35
  stdout: str = "",
31
36
  stderr: str = "",
37
+ eventloom_path: str | None = None,
32
38
  ) -> dict[str, Any]:
33
- """Build a normalized command observation for automatic capture."""
39
+ """Build a normalized command observation for automatic capture.
40
+
41
+ The event stays lean (bounded excerpts) by default. When tool-I/O offload is
42
+ opted in (and ``eventloom_path`` is provided), the full output is also written
43
+ to a content-addressed ref and pointed to via ``full_io_ref``.
44
+ """
34
45
  event = build_command_completed_event(
35
46
  command=_redact_command(command),
36
47
  exit_code=exit_code,
@@ -43,6 +54,10 @@ def build_command_observation(
43
54
  event["payload"]["source"] = source
44
55
  if workspace:
45
56
  event["payload"]["workspace"] = workspace
57
+ if eventloom_path and tool_io_offload_enabled():
58
+ ref = offload_command_output(eventloom_path, stdout=stdout, stderr=stderr)
59
+ if ref is not None:
60
+ event["payload"]["full_io_ref"] = ref
46
61
  return event
47
62
 
48
63
 
@@ -83,8 +98,14 @@ def build_tool_call_observation(
83
98
  call_id: str | None = None,
84
99
  arguments: dict[str, Any] | None = None,
85
100
  result_summary: str | None = None,
101
+ eventloom_path: str | None = None,
86
102
  ) -> dict[str, Any]:
87
- """Build a normalized tool-call observation without raw argument values."""
103
+ """Build a normalized tool-call observation without raw argument values.
104
+
105
+ Default keeps only ``argument_keys`` (values dropped). When tool-I/O offload is
106
+ opted in, the full (secret-masked) arguments are also written to a
107
+ content-addressed ref and pointed to via ``full_io_ref``.
108
+ """
88
109
  event = build_tool_call_completed_event(
89
110
  tool_name=tool_name,
90
111
  status=status,
@@ -97,6 +118,10 @@ def build_tool_call_observation(
97
118
  event["payload"]["source"] = source
98
119
  if workspace:
99
120
  event["payload"]["workspace"] = workspace
121
+ if eventloom_path and tool_io_offload_enabled() and arguments:
122
+ ref = offload_tool_arguments(eventloom_path, arguments)
123
+ if ref is not None:
124
+ event["payload"]["full_io_ref"] = ref
100
125
  return event
101
126
 
102
127
 
@@ -0,0 +1,108 @@
1
+ """Opt-in, Eventloom-owned content-addressed store for full tool I/O.
2
+
3
+ Default capture stays lean: ``tool.call.completed`` keeps only ``argument_keys``,
4
+ and ``command.completed`` truncates output to ``OUTPUT_EXCERPT_CHARS``. That keeps
5
+ the log token-cheap and never persists secret argument values -- good defaults,
6
+ but it caps the "full, replayable provenance" thesis for tool I/O.
7
+
8
+ When ``ZAXY_OFFLOAD_TOOL_IO`` is enabled, the *full* text is additionally written
9
+ to a content-addressed blob under ``<eventloom>/refs/`` and the lean event carries
10
+ a ``full_io_ref`` pointer ``{ref, sha256, bytes}``. Properties:
11
+
12
+ - **Self-contained & tamper-evident.** The blob id *is* its sha256, and it lives
13
+ inside the Eventloom directory -- unlike ``codex_source_ref``, which points at
14
+ foreign Codex rollout files the hash chain can't attest to.
15
+ - **Lean by default.** Context / ``memory_checkout`` still see only the summary;
16
+ the full text is fetched on demand (drill-down) by sha.
17
+ - **Privacy preserved.** Opt-in, and tool arguments are still secret-masked before
18
+ offload (values under secret-looking keys are dropped).
19
+ """
20
+
21
+ from __future__ import annotations
22
+
23
+ import hashlib
24
+ import json
25
+ import os
26
+ import re
27
+ from pathlib import Path
28
+ from typing import Any
29
+
30
+ OFFLOAD_ENV = "ZAXY_OFFLOAD_TOOL_IO"
31
+ _TRUTHY = {"1", "true", "yes", "on"}
32
+
33
+ # Mask argument values whose KEY name looks secret-bearing.
34
+ _SECRET_KEY = re.compile(
35
+ r"(?i)(?:api[-_]?key|authorization|bearer|cookie|credential|password|private[-_]?key|secret|token)"
36
+ )
37
+
38
+
39
+ def tool_io_offload_enabled() -> bool:
40
+ """True when full tool-I/O retention is opted in via env."""
41
+ return os.environ.get(OFFLOAD_ENV, "").strip().lower() in _TRUTHY
42
+
43
+
44
+ def redact_secret_args(arguments: dict[str, Any]) -> dict[str, Any]:
45
+ """Return args with secret-looking values masked, others preserved verbatim."""
46
+ return {
47
+ key: ("<redacted>" if _SECRET_KEY.search(str(key)) else value)
48
+ for key, value in arguments.items()
49
+ }
50
+
51
+
52
+ def _refs_root(eventloom_path: str | Path) -> Path:
53
+ base = Path(eventloom_path)
54
+ if base.suffix == ".jsonl":
55
+ base = base.parent
56
+ return base / "refs"
57
+
58
+
59
+ def _blob_path(eventloom_path: str | Path, sha256: str) -> Path:
60
+ return _refs_root(eventloom_path) / sha256[:2] / f"{sha256}.blob"
61
+
62
+
63
+ def write_offload_ref(eventloom_path: str | Path, content: str) -> dict[str, Any]:
64
+ """Content-address ``content`` under ``<eventloom>/refs/`` and return a pointer.
65
+
66
+ Idempotent: identical content yields an identical ref, written once.
67
+ """
68
+ data = content.encode("utf-8")
69
+ sha = hashlib.sha256(data).hexdigest()
70
+ blob = _blob_path(eventloom_path, sha)
71
+ if not blob.exists():
72
+ blob.parent.mkdir(parents=True, exist_ok=True)
73
+ blob.write_bytes(data)
74
+ return {"ref": f"refs/{sha[:2]}/{sha}.blob", "sha256": sha, "bytes": len(data)}
75
+
76
+
77
+ def read_offload_ref(eventloom_path: str | Path, sha256: str) -> str | None:
78
+ """Read a blob back by sha, verifying integrity. Returns None if missing/tampered."""
79
+ blob = _blob_path(eventloom_path, sha256)
80
+ if not blob.exists():
81
+ return None
82
+ data = blob.read_bytes()
83
+ if hashlib.sha256(data).hexdigest() != sha256:
84
+ return None # tamper-evident: id must equal content hash
85
+ return data.decode("utf-8")
86
+
87
+
88
+ def offload_command_output(
89
+ eventloom_path: str | Path, *, stdout: str, stderr: str
90
+ ) -> dict[str, Any] | None:
91
+ """Offload full command output when it exceeds the inline excerpt. Else None."""
92
+ from zaxy.lifecycle import OUTPUT_EXCERPT_CHARS
93
+
94
+ if len(stdout) <= OUTPUT_EXCERPT_CHARS and len(stderr) <= OUTPUT_EXCERPT_CHARS:
95
+ return None
96
+ full = f"=== stdout ===\n{stdout}\n=== stderr ===\n{stderr}" if stderr else stdout
97
+ return write_offload_ref(eventloom_path, full)
98
+
99
+
100
+ def offload_tool_arguments(
101
+ eventloom_path: str | Path, arguments: dict[str, Any]
102
+ ) -> dict[str, Any] | None:
103
+ """Offload full tool arguments (secret-masked) for provenance. Else None."""
104
+ if not arguments:
105
+ return None
106
+ masked = redact_secret_args(arguments)
107
+ full = json.dumps(masked, ensure_ascii=False, sort_keys=True)
108
+ return write_offload_ref(eventloom_path, full)
@@ -0,0 +1,51 @@
1
+ """Tests for the chunk-RAG token-reduction methodology (dev target #2).
2
+
3
+ These assert the METHODOLOGY is sound (equal-recall enforced; structured beats
4
+ raw when a fact is buried in noise; baseline pinned) -- not a specific headline
5
+ number, which requires a real QA dataset + the gated apparatus.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import sys
11
+ from pathlib import Path
12
+
13
+ sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "scripts"))
14
+
15
+ from chunk_rag_token_compare import _self_test_corpus, compare_case, compare_corpus # noqa: E402
16
+
17
+
18
+ def test_equal_recall_excludes_cases_where_an_arm_misses_gold() -> None:
19
+ # gold appears in raw text but in NO structured fact -> structured can't reach it
20
+ r = compare_case(
21
+ query="where is the gold",
22
+ gold="UNIQUEGOLD",
23
+ facts=["[note] nothing relevant here", "[note] also irrelevant"],
24
+ raw_text="filler filler UNIQUEGOLD filler",
25
+ )
26
+ assert r.both_reached is False
27
+ assert r.reduction is None # excluded from the ratio -> not gameable by asymmetric recall
28
+
29
+
30
+ def test_structured_beats_raw_when_fact_is_buried() -> None:
31
+ out = compare_corpus(_self_test_corpus())
32
+ assert out["cases_equal_recall"] == out["cases_total"] # both arms find every gold
33
+ # at equal recall, the compact cited card costs fewer tokens than chunk-RAG over noise
34
+ assert out["median_reduction"] is not None and out["median_reduction"] > 0
35
+ for case in out["per_case"]:
36
+ assert case["structured_tok"] < case["chunkrag_tok"]
37
+
38
+
39
+ def test_baseline_is_pinned_and_reported() -> None:
40
+ out = compare_corpus(_self_test_corpus(), chunk_tokens=256)
41
+ assert out["baseline"]["chunk_tokens"] == 256
42
+ assert "keyword" in out["baseline"]["ranking"]
43
+
44
+
45
+ def test_reduction_is_quality_controlled_definition() -> None:
46
+ # reduction is defined only over equal-recall cases; a no-recall corpus yields None
47
+ out = compare_corpus([
48
+ {"query": "q", "gold": "ZZZ", "facts": ["irrelevant"], "raw_text": "also irrelevant"}
49
+ ])
50
+ assert out["cases_equal_recall"] == 0
51
+ assert out["median_reduction"] is None
@@ -0,0 +1,120 @@
1
+ """Tests for opt-in Eventloom-owned tool-I/O offload (dev target #1)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+
7
+ from typer.testing import CliRunner
8
+
9
+ from zaxy.__main__ import app
10
+ from zaxy.lifecycle import OUTPUT_EXCERPT_CHARS
11
+ from zaxy.observation import build_command_observation, build_tool_call_observation
12
+ from zaxy.offload import read_offload_ref, redact_secret_args, write_offload_ref
13
+
14
+ runner = CliRunner()
15
+
16
+ BIG = "X" * (OUTPUT_EXCERPT_CHARS * 4) # comfortably past the inline excerpt
17
+
18
+
19
+ # ---- default (disabled) keeps the lean behavior unchanged ------------------
20
+
21
+ def test_command_lean_when_offload_disabled(tmp_path, monkeypatch) -> None: # type: ignore[no-untyped-def]
22
+ monkeypatch.delenv("ZAXY_OFFLOAD_TOOL_IO", raising=False)
23
+ ev = build_command_observation(
24
+ command="echo hi", exit_code=0, session_id="s", source="test",
25
+ stdout=BIG, stderr="", eventloom_path=str(tmp_path / ".eventloom"),
26
+ )
27
+ assert "full_io_ref" not in ev["payload"]
28
+ assert len(ev["payload"]["stdout_excerpt"]) == OUTPUT_EXCERPT_CHARS
29
+
30
+
31
+ def test_tool_call_lean_when_offload_disabled(tmp_path, monkeypatch) -> None: # type: ignore[no-untyped-def]
32
+ monkeypatch.delenv("ZAXY_OFFLOAD_TOOL_IO", raising=False)
33
+ ev = build_tool_call_observation(
34
+ tool_name="t", status="succeeded", session_id="s", source="test",
35
+ arguments={"q": "secret-value"}, eventloom_path=str(tmp_path / ".eventloom"),
36
+ )
37
+ assert "full_io_ref" not in ev["payload"]
38
+ assert ev["payload"]["arguments_redacted"] is True
39
+ assert ev["payload"]["argument_keys"] == ["q"]
40
+
41
+
42
+ # ---- enabled: offload writes a recoverable, integrity-checked ref ----------
43
+
44
+ def test_command_offload_when_enabled(tmp_path, monkeypatch) -> None: # type: ignore[no-untyped-def]
45
+ monkeypatch.setenv("ZAXY_OFFLOAD_TOOL_IO", "1")
46
+ el = str(tmp_path / ".eventloom")
47
+ ev = build_command_observation(
48
+ command="run", exit_code=0, session_id="s", source="test",
49
+ stdout=BIG, stderr="boom", eventloom_path=el,
50
+ )
51
+ ref = ev["payload"]["full_io_ref"]
52
+ assert set(ref) == {"ref", "sha256", "bytes"}
53
+ # summary stays lean
54
+ assert len(ev["payload"]["stdout_excerpt"]) == OUTPUT_EXCERPT_CHARS
55
+ # full content recoverable and complete
56
+ full = read_offload_ref(el, ref["sha256"])
57
+ assert full is not None and BIG in full and "boom" in full
58
+
59
+
60
+ def test_tool_args_offload_masks_secrets(tmp_path, monkeypatch) -> None: # type: ignore[no-untyped-def]
61
+ monkeypatch.setenv("ZAXY_OFFLOAD_TOOL_IO", "true")
62
+ el = str(tmp_path / ".eventloom")
63
+ ev = build_tool_call_observation(
64
+ tool_name="t", status="ok", session_id="s", source="test",
65
+ arguments={"query": "keep me", "api_key": "sk-SECRET", "token": "abc"},
66
+ eventloom_path=el,
67
+ )
68
+ ref = ev["payload"]["full_io_ref"]
69
+ stored = json.loads(read_offload_ref(el, ref["sha256"]))
70
+ assert stored["query"] == "keep me" # non-secret preserved
71
+ assert stored["api_key"] == "<redacted>" # secret-keyed masked
72
+ assert stored["token"] == "<redacted>"
73
+
74
+
75
+ def test_short_output_no_ref_even_when_enabled(tmp_path, monkeypatch) -> None: # type: ignore[no-untyped-def]
76
+ monkeypatch.setenv("ZAXY_OFFLOAD_TOOL_IO", "1")
77
+ ev = build_command_observation(
78
+ command="echo hi", exit_code=0, session_id="s", source="test",
79
+ stdout="short", stderr="", eventloom_path=str(tmp_path / ".eventloom"),
80
+ )
81
+ assert "full_io_ref" not in ev["payload"] # nothing beyond the excerpt to keep
82
+
83
+
84
+ # ---- content addressing + tamper-evidence ----------------------------------
85
+
86
+ def test_content_addressing_idempotent(tmp_path) -> None: # type: ignore[no-untyped-def]
87
+ el = str(tmp_path / ".eventloom")
88
+ a = write_offload_ref(el, "same content")
89
+ b = write_offload_ref(el, "same content")
90
+ assert a == b # identical content -> identical ref, written once
91
+
92
+
93
+ def test_tamper_evident_read(tmp_path) -> None: # type: ignore[no-untyped-def]
94
+ el = tmp_path / ".eventloom"
95
+ ref = write_offload_ref(str(el), "trustworthy")
96
+ blob = el / ref["ref"]
97
+ blob.write_text("tampered", encoding="utf-8") # corrupt the blob
98
+ assert read_offload_ref(str(el), ref["sha256"]) is None # id no longer matches content
99
+
100
+
101
+ def test_redact_secret_args_unit() -> None:
102
+ out = redact_secret_args({"password": "p", "name": "ok", "AUTHORIZATION": "z"})
103
+ assert out == {"password": "<redacted>", "name": "ok", "AUTHORIZATION": "<redacted>"}
104
+
105
+
106
+ # ---- drill-down CLI ---------------------------------------------------------
107
+
108
+ def test_offload_get_cli_roundtrip(tmp_path) -> None: # type: ignore[no-untyped-def]
109
+ el = str(tmp_path / ".eventloom")
110
+ ref = write_offload_ref(el, "full output here")
111
+ result = runner.invoke(app, ["offload-get", ref["sha256"], "--eventloom-path", el])
112
+ assert result.exit_code == 0
113
+ assert result.stdout == "full output here"
114
+
115
+
116
+ def test_offload_get_cli_missing(tmp_path) -> None: # type: ignore[no-untyped-def]
117
+ result = runner.invoke(
118
+ app, ["offload-get", "0" * 64, "--eventloom-path", str(tmp_path / ".eventloom")]
119
+ )
120
+ assert result.exit_code != 0
File without changes
File without changes
File without changes
File without changes
File without changes