zaxy-memory 2.4.3__tar.gz → 2.4.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.
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/CHANGELOG.md +22 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/PKG-INFO +1 -1
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/pyproject.toml +1 -1
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/index.html +2 -2
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/core.py +9 -100
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/mcp_server.py +14 -6
- zaxy_memory-2.4.4/src/zaxy/retrieval_cache.py +159 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_docs_site.py +1 -1
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_mcp.py +41 -10
- zaxy_memory-2.4.4/tests/test_retrieval_cache.py +80 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/.gitignore +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/AGENTS.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/Dockerfile +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/LICENSE +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/README.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docker-compose.prod.yml +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docker-compose.yml +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/agent-events.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/announcements/zaxy-0.4.0.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/announcements/zaxy-coordinate.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/announcements/zaxy-v1.0-x-article.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/announcements/zaxy-v1.0.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/announcements/zaxy-v1.1-x-article.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/announcements/zaxy-v2.1.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/announcements/zaxy-v2.2-x-article.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/announcements/zaxy-v2.3-x-article.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/announcements/zaxy-v2.4-x-article.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/api-inventory.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/api.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/architecture.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/archive/benchmark-contributions.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/archive/benchmark-review.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/archive/competitive-positioning.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/archive/experimental-associative-memory.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/archive/longmembench.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/archive/memory-is-purpose-zaxy-analysis.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/archive/release-validation-checklist.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/archive/synthesis-context-research.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/archive/v09-gate-audit.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/archive/v1-roadmap.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/archive/v10-gate-audit.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/archive/zero-friction-runtime-roadmap.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/assets/zaxy-coordinate-header.png +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/assets/zaxy-v1-header.png +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/assets/zaxy-v1.1-header.png +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/assets/zaxy-v2.1-header.png +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/assets/zaxy-v2.1-hero.png +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/assets/zaxy-v2.2-header.png +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/assets/zaxy-v2.3-header.png +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/assets/zaxy-v2.4-header.png +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/assets/zaxy-v2.4-header.svg +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/benchmarks.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/codebase.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/configuration.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/consolidation.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/coordinate-quickstart.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/coordinate-roadmap.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/deployment.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/embeddings.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/eventloom.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/examples/external-validation-report.example.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/examples/first-run-timing-report.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/examples/mcp-response-snapshots.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/examples/mcp-tool-contract.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/examples/memory-checkout-contract.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/examples/native-integration-contract.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/examples/v1-schema-freeze.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/experimental/portable-export-conformance.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/experimental/portable-export-security.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/external-validation.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/first-run-validation.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/getting-started.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/graph-schema.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/hooks.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/integrations.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/mcp-install-targets.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/mcp-quickstart.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/mcp.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/media/zaxy-2-5-3-0-latent-memory-roadmap-header.png +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/media/zaxy-codebase-review-header.png +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/media/zaxy-collaborate-demo.gif +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/media/zaxy-collaborate-demo.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/media/zaxy-collaborate-demo.mp4 +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/migration.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/operations.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/packet-analyzer.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/ann-engineering-2026-06.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/2-3-research/backend-options.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/2-3-research/external-validation.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/2-3-research/int8_bench_e_results.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/2-3-research/int8_bench_results.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/2-3-research/kuzu-usage-audit.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/2-3-research/promotion-pass.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/BASELINE.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/after-dim1536-r1.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/after-dim1536-r2.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/after-dim64-100k.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/after-dim64-r1.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/after-dim64-r2.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/after-dim64-r3.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann2-d64-10k-postcopy.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-gauss-r1.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-gauss-r2.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-hash-r1.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-hash-record.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-50k-gauss-crossover.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann3-d64-100k-r1.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann3-d64-100k-r2.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann4-d1536-50k-dimension-gated.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann4-d1536-50k-gauss-efs800.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann4-d1536-50k-gauss-r2.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann4-d64-100k-confirm.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/baseline-dim1536.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/baseline-dim64.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/diag-d1536-f32-ceiling.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/diag-gauss-efs-sweep.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/diag-ties-gaussian.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/experiments-e1-e4.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/profiling-a2.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/codebase-review-2026-06-09.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/research/zaxy-memory-fabric-paper.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/retrieval.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/runbook.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/security.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/stability-commitment.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-08-codebase-file-map.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-08-domain-separated-defaults.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-08-local-first-retrieval.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-08-remote-mcp-rate-limit-audit.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-09-agent-integration-templates.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-09-retention-metadata-extraction.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-09-retrieval-feedback-events.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-10-merge-sprint.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-16-runtime-dashboard.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-17-skill-memory.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-18-pggraph-adapter.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-18-projection-backend-contract.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-20-zero-friction-embedded-graph-runtime.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-30-v0-5-public-positioning-first-run-trust.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-31-v1-release-docs-media.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-06-07-zaxy-2-0-alpha-1-causal-consolidation.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-06-07-zaxy-2-0-alpha-2-review-gated-consolidation.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-06-07-zaxy-2-0-beta-1-reasoning-loop-primitives.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-06-08-zaxy-2-0-beta-2-metacognitive-procedural-hardening.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-06-08-zaxy-2-0-rc-1-benchmark-freeze.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-06-09-codebase-review-high-value-remediation.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-05-08-codebase-file-map-design.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-05-08-domain-separated-defaults-design.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-05-08-local-first-retrieval-design.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-05-08-remote-mcp-rate-limit-audit-design.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-05-16-runtime-dashboard-design.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-05-17-skill-memory-pggraph-evaluation-design.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-05-31-v1-release-docs-media-design.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-06-07-zaxy-2-0-roadmap-design.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-06-09-zaxy-2-5-3-0-latent-memory-roadmap-design.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-06-10-zaxy-2-1-2-3-agent-experience-cognitive-memory-roadmap-design.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-06-10-zaxy-2-1-2-3-implementation-plan.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-06-11-zaxy-2-2-ann-engineering-plan.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-06-11-zaxy-2-3-readiness-research.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/testing.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/why-zaxy.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/docs/workspace-genesis.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/examples/__init__.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/examples/adapters/coordinationbench_zaxy_adapter.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/examples/claude_compatible_memory.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/examples/coordinate_three_worker_project.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/examples/langgraph_memory.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/examples/openai_compatible_memory.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/examples/single_agent_memory.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/reports/archive/benchmarks/longmembench-adapter-kit/README.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/reports/archive/benchmarks/purpose-v1/holdouts/public-derived-purpose-v1/README.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/reports/benchmarks/purpose-v1/holdouts/public-derived-purpose-v1/README.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/backend-shootout.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/backup.sh +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/benchmark-guardrails.sh +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/beta-uat.sh +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/build-backend-shootout-workload.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/build-dist.sh +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/build-site-docs.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/check-backend-shootout.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/check-coverage.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/check-external-validation.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/check-state-recovery-benchmark.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/chunk_rag_token_compare.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/generate-certs.sh +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/generate-release-media.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/integration-check.sh +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/live-benchmark.sh +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/mcp_smoke_test.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/release-check.sh +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/restore.sh +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/rotate-logs.sh +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/setup.sh +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/setup_neo4j_indexes.cypher +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/validate-deployment.sh +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/scripts/validate-docs.sh +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/README.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/assets/graph.png +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/assets/zaxy-coordinate-header.png +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/assets/zaxy-v1-header.png +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/assets/zaxy-v1.1-header.png +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/assets/zaxy-v2.1-header.png +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/assets/zaxy-v2.1-hero.png +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/assets/zaxy-v2.2-header.png +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/assets/zaxy-v2.3-header.png +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/assets/zaxy-v2.4-header.png +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/agent-events.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-0.4.0.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-coordinate.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-v1.0-x-article.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-v1.0.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-v1.1-x-article.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-v2.1.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-v2.2-x-article.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-v2.3-x-article.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-v2.4-x-article.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/api-inventory.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/api.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/architecture.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/archive/benchmark-contributions.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/archive/benchmark-review.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/archive/competitive-positioning.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/archive/experimental-associative-memory.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/archive/longmembench.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/archive/memory-is-purpose-zaxy-analysis.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/archive/release-validation-checklist.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/archive/synthesis-context-research.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/archive/v09-gate-audit.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/archive/v1-roadmap.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/archive/v10-gate-audit.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/archive/zero-friction-runtime-roadmap.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/benchmarks.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/codebase.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/configuration.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/consolidation.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/coordinate-quickstart.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/coordinate-roadmap.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/deployment.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/embeddings.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/eventloom.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/external-validation.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/first-run-validation.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/getting-started.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/graph-schema.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/hooks.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/integrations.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/mcp-install-targets.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/mcp-quickstart.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/mcp.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/media/zaxy-collaborate-demo.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/migration.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/operations.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/packet-analyzer.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/research/ann-engineering-2026-06.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/research/artifacts/2-3-research/backend-options.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/research/artifacts/2-3-research/external-validation.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/research/artifacts/2-3-research/kuzu-usage-audit.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/research/artifacts/2-3-research/promotion-pass.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/research/artifacts/ann-2026-06/BASELINE.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/research/codebase-review-2026-06-09.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/research/zaxy-memory-fabric-paper.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/retrieval.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/runbook.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/security.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/stability-commitment.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-08-codebase-file-map.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-08-domain-separated-defaults.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-08-local-first-retrieval.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-08-remote-mcp-rate-limit-audit.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-09-agent-integration-templates.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-09-retention-metadata-extraction.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-09-retrieval-feedback-events.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-10-merge-sprint.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-16-runtime-dashboard.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-17-skill-memory.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-18-pggraph-adapter.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-18-projection-backend-contract.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-20-zero-friction-embedded-graph-runtime.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-30-v0-5-public-positioning-first-run-trust.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-31-v1-release-docs-media.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-06-07-zaxy-2-0-alpha-1-causal-consolidation.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-06-07-zaxy-2-0-alpha-2-review-gated-consolidation.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-06-07-zaxy-2-0-beta-1-reasoning-loop-primitives.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-06-08-zaxy-2-0-beta-2-metacognitive-procedural-hardening.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-06-08-zaxy-2-0-rc-1-benchmark-freeze.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-06-09-codebase-review-high-value-remediation.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-05-08-codebase-file-map-design.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-05-08-domain-separated-defaults-design.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-05-08-local-first-retrieval-design.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-05-08-remote-mcp-rate-limit-audit-design.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-05-16-runtime-dashboard-design.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-05-17-skill-memory-pggraph-evaluation-design.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-05-31-v1-release-docs-media-design.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-06-07-zaxy-2-0-roadmap-design.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-06-09-zaxy-2-5-3-0-latent-memory-roadmap-design.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-06-10-zaxy-2-1-2-3-agent-experience-cognitive-memory-roadmap-design.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-06-10-zaxy-2-1-2-3-implementation-plan.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-06-11-zaxy-2-2-ann-engineering-plan.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-06-11-zaxy-2-3-readiness-research.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/testing.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/why-zaxy.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/docs/workspace-genesis.html +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/site/style.css +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/__init__.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/__main__.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/adapters/__init__.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/adapters/_common.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/adapters/claude_compatible.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/adapters/coordination.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/adapters/crewai.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/adapters/langgraph.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/adapters/openai_compatible.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/associative_memory.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/capabilities.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/capture_manager.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/capture_soak.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/causal.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/checkout.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/cli/__init__.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/cli/benchmarks.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/cli/evaluation.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/cli/runtime.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/cli/serving.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/cli/workspace.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/codebase.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/codex_capture.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/compaction.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/config.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/consolidation.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/consolidation_pipeline.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/context.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/context_refresh.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/coordination.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/coordination_git.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/coordination_semantic.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/coordination_templates.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/coordinationbench_adapter.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/dashboard.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/doctor.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/documents.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/domain.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/embedded_graph_store.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/embedding.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/event.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/event_context.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/evidence.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/evidence_candidates.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/evidence_program.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/external_validation.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/extract.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/extract_templates.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/feature_evidence.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/graph.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/graph_walk.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/hooks.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/inference.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/install.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/integrations.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/latticedb_store.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/lifecycle.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/local_profile.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/log.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/mcp_runtime.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/memory_persistence.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/memory_status.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/metacognition.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/metrics.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/neutral.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/observation.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/offload.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/onboarding.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/packet_analyzer.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/packet_guidance.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/packet_projection.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/pagination.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/pggraph_store.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/portable/__init__.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/portable/anchor.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/portable/envelope.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/portable/export.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/portable/merkle.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/portable/rehydration.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/portable/signing.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/procedural_planning.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/procedure_mining.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/projection.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/projection_backends.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/purpose.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/purpose_control.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/py.typed +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/query.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/reasoning_primitives.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/recall.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/recovery.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/refs.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/release.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/remote_security.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/resources/__init__.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/README.md +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/__init__.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/schemas/result.schema.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/schemas/runner-manifest.schema.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/templates/activegraph.runner-manifest.template.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/templates/agent_memory.runner-manifest.template.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/templates/hybi.runner-manifest.template.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/templates/mem0.runner-manifest.template.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/templates/quarq.runner-manifest.template.json +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/unsupported_runner.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/retrieval_intent.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/retrieval_plan/__init__.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/retrieval_plan/bundles.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/retrieval_plan/duration_evidence.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/retrieval_plan/fact_queries.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/retrieval_plan/foundations.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/retrieval_plan/ordering.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/retrieval_plan/scalars.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/retrieval_profile.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/runtime.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/salience.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/schema.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/security.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/session.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/synthesis/__init__.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/synthesis/evidence_rows.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/synthesis/foundations.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/synthesis/labels.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/synthesis/ledgers.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/synthesis/operations.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/synthesis_artifact.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/synthesis_packet.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/token_budget.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/tool_profiles.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/trace.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/transcripts.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/verbatim.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/viewer.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/working_set.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/src/zaxy/workspace.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/conftest.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_agent_experience_lanes.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_anchor.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_associative_memory.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_backend_shootout.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_benchmarks.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_capabilities.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_capture_manager.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_capture_soak.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_causal.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_causal_benchmark.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_causal_checkout.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_checkout.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_chunk_rag_methodology.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_claude_compatible_adapter.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_cli.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_codebase.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_codex_capture.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_cognitive_lanes.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_cognitive_profile.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_compaction.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_competitive_benchmarks.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_compose.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_config.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_consolidation.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_consolidation_benchmark.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_consolidation_pipeline.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_context.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_context_refresh.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_coordination.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_coordination_adapters.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_coordination_benchmark.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_coordination_semantic.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_coordinationbench_adapter.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_core.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_coverage_ratchet.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_crewai_adapter.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_dashboard.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_doctor.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_documents.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_domain.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_embedded_graph_store.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_embedding.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_envelope.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_event.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_evidence.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_evidence_program.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_examples_v05.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_extract.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_extract_templates.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_feature_evidence.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_graph.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_graph_scale_lanes.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_graph_walk.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_harvey_lab_benchmark.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_inference.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_install.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_integration_check_script.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_integrations.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_langgraph_adapter.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_latticedb_store.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_lifecycle.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_live_benchmark.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_local_profile.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_longmembench.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_mcp_runtime.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_mcp_server.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_memory_injection.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_memory_persistence.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_memory_status.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_metacognition.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_metrics.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_neutral.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_observation.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_offload.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_onboarding.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_openai_compatible_adapter.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_ops_scripts.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_packaging.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_packet_analyzer.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_packet_memory_e2e.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_packet_projection.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_pagination.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_pggraph_store.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_portable_export.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_procedural_planning.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_procedure_mining.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_projection.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_purpose.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_purpose_benchmark.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_purpose_control.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_query.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_rc_benchmark_freeze.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_reasoning_benchmark.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_reasoning_primitives.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_recovery.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_refs.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_rehydration.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_remote_security.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_retrieval_plan.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_retrieval_profiles.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_runtime.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_salience.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_schema_migrations.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_security.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_session.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_setup_script.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_statistical_benchmark.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_synthesis.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_synthesis_artifact.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_synthesis_packet.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_token_budget.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_trace.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_transcripts.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_v05_positioning.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_verbatim.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_viewer.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_working_set.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/tests/test_workspace.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/zaxy_benchmarks/__init__.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/zaxy_benchmarks/agent_experience_lanes.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/zaxy_benchmarks/benchmark.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/zaxy_benchmarks/causal_benchmark.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/zaxy_benchmarks/consolidation_benchmark.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/zaxy_benchmarks/coordination_benchmark.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/zaxy_benchmarks/fok_calibration_lane.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/zaxy_benchmarks/forgetting_lane.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/zaxy_benchmarks/graph_walk_lane.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/zaxy_benchmarks/harvey_lab_benchmark.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/zaxy_benchmarks/live_benchmark.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/zaxy_benchmarks/longmembench.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/zaxy_benchmarks/purpose_benchmark.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/zaxy_benchmarks/rc_benchmark_freeze.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/zaxy_benchmarks/reasoning_benchmark.py +0 -0
- {zaxy_memory-2.4.3 → zaxy_memory-2.4.4}/zaxy_benchmarks/vector_scale_lane.py +0 -0
|
@@ -2,6 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
All notable Zaxy release changes are recorded here.
|
|
4
4
|
|
|
5
|
+
## 2.4.4 - 2026-06-15
|
|
6
|
+
|
|
7
|
+
- **The 2.4.2 incremental-retrieval win now reaches the MCP `memory_checkout`
|
|
8
|
+
front door.** The MCP checkout path (`ZaxyMCPServer._assemble_context`) rebuilt
|
|
9
|
+
retrieval state from the whole log on *every* call — `VerbatimIndex.from_event_logs(...)`
|
|
10
|
+
plus a full `session_manager.replay(...)` — so the per-session caches added in
|
|
11
|
+
2.4.2 (which live on `MemoryFabric`) never applied to checkout. On a large,
|
|
12
|
+
active session this is the dominant cost and the reason checkout still ran long
|
|
13
|
+
after 2.4.2/2.4.3.
|
|
14
|
+
- Extracted the incremental verbatim-index + verified-replay logic into a new
|
|
15
|
+
standalone `SessionRetrievalCache` (`zaxy.retrieval_cache`) that depends only
|
|
16
|
+
on a `SessionManager`. `MemoryFabric` now delegates to it (no behavior
|
|
17
|
+
change), and the MCP server holds its own long-lived instance so the cache
|
|
18
|
+
survives across checkouts.
|
|
19
|
+
- `_assemble_context` reads through the cache, extending only the appended log
|
|
20
|
+
tail instead of rebuilding. Checkout now also runs the **verified** replay
|
|
21
|
+
(previously `verify_integrity=False`); the hash-chain integrity guard and the
|
|
22
|
+
byte-identical-to-full-rebuild guarantee are preserved.
|
|
23
|
+
- The 2.4.3 single-flight `_checkout_lock` still serializes the off-loop
|
|
24
|
+
checkout body.
|
|
25
|
+
- No API or behavior change to results; same cited facts are surfaced.
|
|
26
|
+
|
|
5
27
|
## 2.4.3 - 2026-06-15
|
|
6
28
|
|
|
7
29
|
- **`memory_checkout` no longer blocks the MCP event loop — interrupting an
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: zaxy-memory
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.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
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
</section>
|
|
63
63
|
|
|
64
64
|
<section class="proof-strip" aria-label="Project status">
|
|
65
|
-
<span>PyPI 2.4.
|
|
65
|
+
<span>PyPI 2.4.4</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.4.
|
|
337
|
+
<span>Zaxy v2.4.4 - 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>
|
|
@@ -85,6 +85,7 @@ from zaxy.reasoning_primitives import (
|
|
|
85
85
|
)
|
|
86
86
|
from zaxy.recall import RecallCandidateSet, build_recall_candidate_set, empty_recall_candidate_set
|
|
87
87
|
from zaxy.refs import MemoryRef, MemoryRefStore
|
|
88
|
+
from zaxy.retrieval_cache import SessionRetrievalCache, _eventlog_file_signature
|
|
88
89
|
from zaxy.retrieval_intent import classify_retrieval_intent
|
|
89
90
|
from zaxy.retrieval_plan import (
|
|
90
91
|
absence_check_bundle,
|
|
@@ -143,7 +144,7 @@ from zaxy.synthesis_artifact import (
|
|
|
143
144
|
from zaxy.synthesis_packet import synthesis_packet_from_items
|
|
144
145
|
from zaxy.trace import MemoryTracer
|
|
145
146
|
from zaxy.transcripts import collect_transcript_events
|
|
146
|
-
from zaxy.verbatim import VerbatimIndex
|
|
147
|
+
from zaxy.verbatim import VerbatimIndex
|
|
147
148
|
from zaxy.working_set import build_working_set, format_working_set
|
|
148
149
|
from zaxy.workspace import (
|
|
149
150
|
WorkspaceProfile,
|
|
@@ -409,8 +410,7 @@ class MemoryFabric:
|
|
|
409
410
|
packet_memory_enabled=resolved_settings.context_packet_memory_enabled,
|
|
410
411
|
packet_memory_slots=resolved_settings.context_packet_memory_slots,
|
|
411
412
|
)
|
|
412
|
-
self.
|
|
413
|
-
self._replay_cache: dict[str, tuple[tuple[int, int], ReplayResult, int]] = {}
|
|
413
|
+
self._retrieval_cache = SessionRetrievalCache(self.session_manager)
|
|
414
414
|
self._event_ref_index_cache: dict[str, tuple[tuple[int, int], dict[int, tuple[str, str]]]] = {}
|
|
415
415
|
self._session_cue_index_cache: dict[str, tuple[tuple[int, int], dict[int, frozenset[str]]]] = {}
|
|
416
416
|
self._query_page_cache: dict[
|
|
@@ -437,7 +437,7 @@ class MemoryFabric:
|
|
|
437
437
|
"""Close all connections. Idempotent."""
|
|
438
438
|
await self.graph.close()
|
|
439
439
|
await self.tracer.close()
|
|
440
|
-
self.
|
|
440
|
+
self._retrieval_cache.invalidate()
|
|
441
441
|
self._event_ref_index_cache = {}
|
|
442
442
|
self._session_cue_index_cache = {}
|
|
443
443
|
self._query_page_cache = {}
|
|
@@ -2162,31 +2162,11 @@ class MemoryFabric:
|
|
|
2162
2162
|
return contexts
|
|
2163
2163
|
|
|
2164
2164
|
def _verbatim_index(self, session_id: str) -> VerbatimIndex:
|
|
2165
|
-
"""Return a verbatim index
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
append-only log has only grown, just the newly appended events are read
|
|
2169
|
-
and tokenized (:meth:`VerbatimIndex.append_chunks`) instead of
|
|
2170
|
-
rebuilding the BM25 index over the whole corpus on every change. The
|
|
2171
|
-
stored cursor is the exact byte offset that was indexed, so concurrent
|
|
2172
|
-
appends during a build never cause missed or duplicated events. A full
|
|
2173
|
-
rebuild only happens on a cold cache or if the log shrank / was
|
|
2174
|
-
rewritten (e.g. compaction).
|
|
2165
|
+
"""Return a per-session verbatim index (cached, incrementally extended).
|
|
2166
|
+
|
|
2167
|
+
Delegates to :class:`SessionRetrievalCache`; see its ``verbatim_index``.
|
|
2175
2168
|
"""
|
|
2176
|
-
|
|
2177
|
-
signature = _eventlog_file_signature(eventlog)
|
|
2178
|
-
cached = self._verbatim_index_cache.get(session_id)
|
|
2179
|
-
if cached is not None and cached[0] == signature:
|
|
2180
|
-
return cached[1]
|
|
2181
|
-
if cached is not None and signature[1] > cached[2]:
|
|
2182
|
-
new_events, end_offset = eventlog.read_from_offset(cached[2])
|
|
2183
|
-
index = cached[1].append_chunks(_chunks_from_events(new_events))
|
|
2184
|
-
self._verbatim_index_cache[session_id] = (signature, index, end_offset)
|
|
2185
|
-
return index
|
|
2186
|
-
events, end_offset = eventlog.read_from_offset(0)
|
|
2187
|
-
index = VerbatimIndex.from_events(events)
|
|
2188
|
-
self._verbatim_index_cache[session_id] = (signature, index, end_offset)
|
|
2189
|
-
return index
|
|
2169
|
+
return self._retrieval_cache.verbatim_index(session_id)
|
|
2190
2170
|
|
|
2191
2171
|
def _session_event_ref_index(self, session_id: str) -> dict[int, tuple[str, str]]:
|
|
2192
2172
|
"""Return a cached seq -> (hash, type) index for the current log state.
|
|
@@ -2419,69 +2399,7 @@ class MemoryFabric:
|
|
|
2419
2399
|
log on every call. A full re-verify happens on a cold cache, if the log
|
|
2420
2400
|
shrank / was rewritten, or if incremental verification detects a break.
|
|
2421
2401
|
"""
|
|
2422
|
-
|
|
2423
|
-
if from_seq <= 1:
|
|
2424
|
-
return result
|
|
2425
|
-
filtered = [event for event in result.events if event.seq >= from_seq]
|
|
2426
|
-
return ReplayResult.model_construct(events=filtered, integrity=result.integrity)
|
|
2427
|
-
|
|
2428
|
-
def _cached_full_replay(self, session_id: str) -> ReplayResult:
|
|
2429
|
-
"""Return the full verified replay for a session, cached + incremental.
|
|
2430
|
-
|
|
2431
|
-
The cold/full path delegates to ``session_manager.replay`` (the
|
|
2432
|
-
authoritative read + full integrity verify). When the cached log has
|
|
2433
|
-
only grown, the appended tail is read and verified against the cached
|
|
2434
|
-
prefix instead. The tail verification doubles as a consistency guard:
|
|
2435
|
-
any offset skew (a concurrent append during the cold read, a rewrite)
|
|
2436
|
-
surfaces as a seq/hash mismatch and falls back to a full replay, so the
|
|
2437
|
-
fast path can never silently miss, duplicate, or trust a bad event.
|
|
2438
|
-
"""
|
|
2439
|
-
eventlog = self.session_manager.get(session_id).eventlog
|
|
2440
|
-
signature = _eventlog_file_signature(eventlog)
|
|
2441
|
-
cached = self._replay_cache.get(session_id)
|
|
2442
|
-
if cached is not None and cached[0] == signature:
|
|
2443
|
-
return cached[1]
|
|
2444
|
-
if (
|
|
2445
|
-
cached is not None
|
|
2446
|
-
and isinstance(cached[2], int)
|
|
2447
|
-
and isinstance(signature[1], int)
|
|
2448
|
-
and signature[1] > cached[2]
|
|
2449
|
-
and cached[1].integrity is not None
|
|
2450
|
-
and cached[1].integrity.ok
|
|
2451
|
-
):
|
|
2452
|
-
new_events, end_offset = eventlog.read_from_offset(cached[2])
|
|
2453
|
-
extended = self._extend_replay(cached[1], new_events)
|
|
2454
|
-
if extended is not None:
|
|
2455
|
-
self._replay_cache[session_id] = (signature, extended, end_offset)
|
|
2456
|
-
return extended
|
|
2457
|
-
result = cast(ReplayResult, self.session_manager.replay(session_id, from_seq=1))
|
|
2458
|
-
offset = _eventlog_file_signature(eventlog)[1]
|
|
2459
|
-
self._replay_cache[session_id] = (signature, result, offset)
|
|
2460
|
-
return result
|
|
2461
|
-
|
|
2462
|
-
@staticmethod
|
|
2463
|
-
def _extend_replay(cached: ReplayResult, new_events: list[Any]) -> ReplayResult | None:
|
|
2464
|
-
"""Extend a verified replay with appended events, or None to rebuild.
|
|
2465
|
-
|
|
2466
|
-
Verifies only the new tail against the cached prefix's last event.
|
|
2467
|
-
Returns ``None`` (signalling a full re-verify) when the tail fails
|
|
2468
|
-
verification, so a tampered or reordered append never silently passes.
|
|
2469
|
-
"""
|
|
2470
|
-
if not new_events:
|
|
2471
|
-
return cached
|
|
2472
|
-
last = cached.events[-1] if cached.events else None
|
|
2473
|
-
tail = verify_event_chain(
|
|
2474
|
-
new_events,
|
|
2475
|
-
first_seq=(last.seq + 1) if last is not None else 1,
|
|
2476
|
-
prev_hash=last.hash if last is not None else None,
|
|
2477
|
-
)
|
|
2478
|
-
if not tail.ok:
|
|
2479
|
-
return None
|
|
2480
|
-
combined = [*cached.events, *new_events]
|
|
2481
|
-
return ReplayResult(
|
|
2482
|
-
events=combined,
|
|
2483
|
-
integrity=IntegrityReport(ok=True, total_events=len(combined)),
|
|
2484
|
-
)
|
|
2402
|
+
return self._retrieval_cache.verified_replay(session_id, from_seq)
|
|
2485
2403
|
|
|
2486
2404
|
async def propose_consolidation_candidates(
|
|
2487
2405
|
self,
|
|
@@ -5430,15 +5348,6 @@ def _compaction_projection_paths(
|
|
|
5430
5348
|
return tuple(unique.values())
|
|
5431
5349
|
|
|
5432
5350
|
|
|
5433
|
-
def _eventlog_file_signature(eventlog: EventLog) -> tuple[int, int]:
|
|
5434
|
-
"""Return a cheap invalidation signature for a local Eventloom log."""
|
|
5435
|
-
try:
|
|
5436
|
-
stat = eventlog.path.stat()
|
|
5437
|
-
except FileNotFoundError:
|
|
5438
|
-
return (0, 0)
|
|
5439
|
-
return (stat.st_mtime_ns, stat.st_size)
|
|
5440
|
-
|
|
5441
|
-
|
|
5442
5351
|
def _consolidation_candidate_ids(events: list[Any]) -> set[str]:
|
|
5443
5352
|
candidate_ids: set[str] = set()
|
|
5444
5353
|
for event in events:
|
|
@@ -93,6 +93,7 @@ from zaxy.purpose import purpose_profile
|
|
|
93
93
|
from zaxy.query import QueryRouter, build_retention_policy
|
|
94
94
|
from zaxy.refs import MemoryRef, MemoryRefStore
|
|
95
95
|
from zaxy.remote_security import AuditEventExporter, RemoteAuditEvent, SessionRateLimiter
|
|
96
|
+
from zaxy.retrieval_cache import SessionRetrievalCache
|
|
96
97
|
from zaxy.runtime import LocalEmbeddedGraphRuntime, LocalNeo4jRuntime, LocalPgGraphRuntime
|
|
97
98
|
from zaxy.salience import (
|
|
98
99
|
build_confirmed_reinforcement_event,
|
|
@@ -1390,6 +1391,14 @@ class ZaxyMCPServer:
|
|
|
1390
1391
|
self._checkout_lock = asyncio.Lock()
|
|
1391
1392
|
self._eventloom_path = eventloom_path or settings.eventloom_path
|
|
1392
1393
|
self.session_manager = SessionManager(base_path=self._eventloom_path)
|
|
1394
|
+
# Per-session verbatim-index + verified-replay caches, extended
|
|
1395
|
+
# incrementally as the log grows. The checkout front door
|
|
1396
|
+
# (_assemble_context) reads through this instead of rebuilding from the
|
|
1397
|
+
# full log every call, so the 2.4.2 incremental-retrieval win actually
|
|
1398
|
+
# reaches MCP checkout. Lives on the long-lived server so the cache
|
|
1399
|
+
# survives across calls; the _checkout_lock keeps reads/extends
|
|
1400
|
+
# single-flight.
|
|
1401
|
+
self._retrieval_cache = SessionRetrievalCache(self.session_manager)
|
|
1393
1402
|
self.refs = MemoryRefStore(self._eventloom_path)
|
|
1394
1403
|
self._neo4j_uri = neo4j_uri or settings.neo4j_uri
|
|
1395
1404
|
self._neo4j_user = neo4j_user or settings.neo4j_user
|
|
@@ -3086,10 +3095,9 @@ class ZaxyMCPServer:
|
|
|
3086
3095
|
salience without an extra log scan.
|
|
3087
3096
|
"""
|
|
3088
3097
|
replay = await asyncio.to_thread(
|
|
3089
|
-
self.
|
|
3098
|
+
self._retrieval_cache.verified_replay,
|
|
3090
3099
|
session_id,
|
|
3091
|
-
|
|
3092
|
-
verify_integrity=False,
|
|
3100
|
+
replay_from_seq,
|
|
3093
3101
|
)
|
|
3094
3102
|
events = list(replay.events)
|
|
3095
3103
|
if as_of_seq is not None:
|
|
@@ -3105,9 +3113,9 @@ class ZaxyMCPServer:
|
|
|
3105
3113
|
graph_contexts = [_context_from_query_result(result) for result in results]
|
|
3106
3114
|
verbatim_hits = (
|
|
3107
3115
|
await asyncio.to_thread(
|
|
3108
|
-
lambda:
|
|
3109
|
-
|
|
3110
|
-
)
|
|
3116
|
+
lambda: self._retrieval_cache.verbatim_index(session_id).query(
|
|
3117
|
+
query, limit=limit
|
|
3118
|
+
)
|
|
3111
3119
|
)
|
|
3112
3120
|
if self.context_assembly_policy.should_query_verbatim(limit=limit)
|
|
3113
3121
|
else []
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"""Per-session, incrementally-extended retrieval caches.
|
|
2
|
+
|
|
3
|
+
Both the verbatim BM25 index and the verified replay scale with the whole log
|
|
4
|
+
if rebuilt from scratch on every read. This module owns the cache state and the
|
|
5
|
+
incremental-extension logic so any long-lived holder (the :class:`MemoryFabric`
|
|
6
|
+
and the MCP server's checkout front door) can share a single, byte-identical
|
|
7
|
+
implementation instead of re-reading and re-hashing the entire log per call.
|
|
8
|
+
|
|
9
|
+
The two guarantees the callers depend on live here:
|
|
10
|
+
|
|
11
|
+
- ``verbatim_index`` extends a cached index with only the newly appended events
|
|
12
|
+
(:meth:`VerbatimIndex.append_chunks`); the result is identical to a full
|
|
13
|
+
rebuild over the combined corpus.
|
|
14
|
+
- ``verified_replay`` verifies only the appended tail against the cached,
|
|
15
|
+
already-verified prefix. The tail check doubles as a consistency guard: any
|
|
16
|
+
offset skew or log rewrite surfaces as a seq/hash mismatch and falls back to a
|
|
17
|
+
full verified replay, so the fast path never silently misses, duplicates, or
|
|
18
|
+
trusts a bad event. The hash-chain integrity guarantee is preserved.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
from __future__ import annotations
|
|
22
|
+
|
|
23
|
+
from typing import TYPE_CHECKING, Any, cast
|
|
24
|
+
|
|
25
|
+
from zaxy.event import EventLog, IntegrityReport, ReplayResult, verify_event_chain
|
|
26
|
+
from zaxy.verbatim import VerbatimIndex, _chunks_from_events
|
|
27
|
+
|
|
28
|
+
if TYPE_CHECKING:
|
|
29
|
+
from zaxy.session import SessionManager
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def _eventlog_file_signature(eventlog: EventLog) -> tuple[int, int]:
|
|
33
|
+
"""Return a cheap invalidation signature for a local Eventloom log."""
|
|
34
|
+
try:
|
|
35
|
+
stat = eventlog.path.stat()
|
|
36
|
+
except FileNotFoundError:
|
|
37
|
+
return (0, 0)
|
|
38
|
+
return (stat.st_mtime_ns, stat.st_size)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class SessionRetrievalCache:
|
|
42
|
+
"""Cache verbatim indexes and verified replays per session, incrementally.
|
|
43
|
+
|
|
44
|
+
Holds no projection/graph state: it depends only on a ``SessionManager`` and
|
|
45
|
+
the append-only Eventloom logs, so it is cheap to instantiate anywhere that
|
|
46
|
+
needs warm, cited retrieval without standing up a full :class:`MemoryFabric`.
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
def __init__(self, session_manager: SessionManager) -> None:
|
|
50
|
+
self.session_manager = session_manager
|
|
51
|
+
self._verbatim_index_cache: dict[str, tuple[tuple[int, int], VerbatimIndex, int]] = {}
|
|
52
|
+
self._replay_cache: dict[str, tuple[tuple[int, int], ReplayResult, int]] = {}
|
|
53
|
+
|
|
54
|
+
def invalidate(self, session_id: str | None = None) -> None:
|
|
55
|
+
"""Drop cached state for one session, or all sessions when ``None``."""
|
|
56
|
+
if session_id is None:
|
|
57
|
+
self._verbatim_index_cache = {}
|
|
58
|
+
self._replay_cache = {}
|
|
59
|
+
return
|
|
60
|
+
self._verbatim_index_cache.pop(session_id, None)
|
|
61
|
+
self._replay_cache.pop(session_id, None)
|
|
62
|
+
|
|
63
|
+
def verbatim_index(self, session_id: str) -> VerbatimIndex:
|
|
64
|
+
"""Return a verbatim index for the current Eventloom file state.
|
|
65
|
+
|
|
66
|
+
The index is cached per session and extended incrementally: when the
|
|
67
|
+
append-only log has only grown, just the newly appended events are read
|
|
68
|
+
and tokenized (:meth:`VerbatimIndex.append_chunks`) instead of
|
|
69
|
+
rebuilding the BM25 index over the whole corpus on every change. The
|
|
70
|
+
stored cursor is the exact byte offset that was indexed, so concurrent
|
|
71
|
+
appends during a build never cause missed or duplicated events. A full
|
|
72
|
+
rebuild only happens on a cold cache or if the log shrank / was
|
|
73
|
+
rewritten (e.g. compaction).
|
|
74
|
+
"""
|
|
75
|
+
eventlog = self.session_manager.get(session_id).eventlog
|
|
76
|
+
signature = _eventlog_file_signature(eventlog)
|
|
77
|
+
cached = self._verbatim_index_cache.get(session_id)
|
|
78
|
+
if cached is not None and cached[0] == signature:
|
|
79
|
+
return cached[1]
|
|
80
|
+
if cached is not None and signature[1] > cached[2]:
|
|
81
|
+
new_events, end_offset = eventlog.read_from_offset(cached[2])
|
|
82
|
+
index = cached[1].append_chunks(_chunks_from_events(new_events))
|
|
83
|
+
self._verbatim_index_cache[session_id] = (signature, index, end_offset)
|
|
84
|
+
return index
|
|
85
|
+
events, end_offset = eventlog.read_from_offset(0)
|
|
86
|
+
index = VerbatimIndex.from_events(events)
|
|
87
|
+
self._verbatim_index_cache[session_id] = (signature, index, end_offset)
|
|
88
|
+
return index
|
|
89
|
+
|
|
90
|
+
def verified_replay(self, session_id: str, from_seq: int = 1) -> ReplayResult:
|
|
91
|
+
"""Return the verified replay for a session, cached + incremental.
|
|
92
|
+
|
|
93
|
+
Returns the full replay result including integrity verification, sliced
|
|
94
|
+
to ``from_seq`` when requested. See module docstring for the integrity
|
|
95
|
+
guard on the incremental tail path.
|
|
96
|
+
"""
|
|
97
|
+
result = self._cached_full_replay(session_id)
|
|
98
|
+
if from_seq <= 1:
|
|
99
|
+
return result
|
|
100
|
+
filtered = [event for event in result.events if event.seq >= from_seq]
|
|
101
|
+
return ReplayResult.model_construct(events=filtered, integrity=result.integrity)
|
|
102
|
+
|
|
103
|
+
def _cached_full_replay(self, session_id: str) -> ReplayResult:
|
|
104
|
+
"""Return the full verified replay for a session, cached + incremental.
|
|
105
|
+
|
|
106
|
+
The cold/full path delegates to ``session_manager.replay`` (the
|
|
107
|
+
authoritative read + full integrity verify). When the cached log has
|
|
108
|
+
only grown, the appended tail is read and verified against the cached
|
|
109
|
+
prefix instead. The tail verification doubles as a consistency guard:
|
|
110
|
+
any offset skew (a concurrent append during the cold read, a rewrite)
|
|
111
|
+
surfaces as a seq/hash mismatch and falls back to a full replay, so the
|
|
112
|
+
fast path can never silently miss, duplicate, or trust a bad event.
|
|
113
|
+
"""
|
|
114
|
+
eventlog = self.session_manager.get(session_id).eventlog
|
|
115
|
+
signature = _eventlog_file_signature(eventlog)
|
|
116
|
+
cached = self._replay_cache.get(session_id)
|
|
117
|
+
if cached is not None and cached[0] == signature:
|
|
118
|
+
return cached[1]
|
|
119
|
+
if (
|
|
120
|
+
cached is not None
|
|
121
|
+
and isinstance(cached[2], int)
|
|
122
|
+
and isinstance(signature[1], int)
|
|
123
|
+
and signature[1] > cached[2]
|
|
124
|
+
and cached[1].integrity is not None
|
|
125
|
+
and cached[1].integrity.ok
|
|
126
|
+
):
|
|
127
|
+
new_events, end_offset = eventlog.read_from_offset(cached[2])
|
|
128
|
+
extended = self._extend_replay(cached[1], new_events)
|
|
129
|
+
if extended is not None:
|
|
130
|
+
self._replay_cache[session_id] = (signature, extended, end_offset)
|
|
131
|
+
return extended
|
|
132
|
+
result = cast(ReplayResult, self.session_manager.replay(session_id, from_seq=1))
|
|
133
|
+
offset = _eventlog_file_signature(eventlog)[1]
|
|
134
|
+
self._replay_cache[session_id] = (signature, result, offset)
|
|
135
|
+
return result
|
|
136
|
+
|
|
137
|
+
@staticmethod
|
|
138
|
+
def _extend_replay(cached: ReplayResult, new_events: list[Any]) -> ReplayResult | None:
|
|
139
|
+
"""Extend a verified replay with appended events, or None to rebuild.
|
|
140
|
+
|
|
141
|
+
Verifies only the new tail against the cached prefix's last event.
|
|
142
|
+
Returns ``None`` (signalling a full re-verify) when the tail fails
|
|
143
|
+
verification, so a tampered or reordered append never silently passes.
|
|
144
|
+
"""
|
|
145
|
+
if not new_events:
|
|
146
|
+
return cached
|
|
147
|
+
last = cached.events[-1] if cached.events else None
|
|
148
|
+
tail = verify_event_chain(
|
|
149
|
+
new_events,
|
|
150
|
+
first_seq=(last.seq + 1) if last is not None else 1,
|
|
151
|
+
prev_hash=last.hash if last is not None else None,
|
|
152
|
+
)
|
|
153
|
+
if not tail.ok:
|
|
154
|
+
return None
|
|
155
|
+
combined = [*cached.events, *new_events]
|
|
156
|
+
return ReplayResult(
|
|
157
|
+
events=combined,
|
|
158
|
+
integrity=IntegrityReport(ok=True, total_events=len(combined)),
|
|
159
|
+
)
|
|
@@ -102,7 +102,7 @@ def test_public_site_has_product_positioning_and_required_sections() -> None:
|
|
|
102
102
|
assert "Eventloom source of truth" in html
|
|
103
103
|
assert "Pathlight" in html
|
|
104
104
|
assert "embedded LadybugDB" in html
|
|
105
|
-
assert "PyPI 2.4.
|
|
105
|
+
assert "PyPI 2.4.4" in html
|
|
106
106
|
assert "Harvey LAB 10/10 tasks" in html
|
|
107
107
|
assert "Harvey LAB mean 0.788" in html
|
|
108
108
|
assert "Headline 500 R@5 1.000" in html
|
|
@@ -173,6 +173,11 @@ def server() -> ZaxyMCPServer:
|
|
|
173
173
|
mock_log = MagicMock()
|
|
174
174
|
mock_event = MagicMock(seq=1, hash="a" * 64)
|
|
175
175
|
mock_log.append.return_value = mock_event
|
|
176
|
+
# The checkout retrieval cache reads through read_from_offset(); return a
|
|
177
|
+
# well-formed (events, end_offset) tuple so the incremental verbatim/replay
|
|
178
|
+
# paths unpack cleanly. Replay results are still driven per-test via
|
|
179
|
+
# session_manager.replay.return_value.
|
|
180
|
+
mock_log.read_from_offset.return_value = ([], 0)
|
|
176
181
|
mock_session_mgr = MagicMock()
|
|
177
182
|
mock_session_mgr.get.return_value.eventlog = mock_log
|
|
178
183
|
mock_session_cls.return_value = mock_session_mgr
|
|
@@ -3291,11 +3296,9 @@ class TestContextLifecycleTools:
|
|
|
3291
3296
|
|
|
3292
3297
|
output = json_loads(result[0].text)
|
|
3293
3298
|
assert output["session_id"] == "zaxy-default"
|
|
3294
|
-
|
|
3295
|
-
|
|
3296
|
-
|
|
3297
|
-
verify_integrity=False,
|
|
3298
|
-
)
|
|
3299
|
+
# Checkout now reads through the incremental retrieval cache, whose cold
|
|
3300
|
+
# path runs the authoritative verified replay (from_seq=1) and slices.
|
|
3301
|
+
server.session_manager.replay.assert_called_with("zaxy-default", from_seq=1)
|
|
3299
3302
|
|
|
3300
3303
|
async def test_memory_checkout_head_uses_tail_event(
|
|
3301
3304
|
self,
|
|
@@ -3324,11 +3327,39 @@ class TestContextLifecycleTools:
|
|
|
3324
3327
|
assert output["ref"]["name"] == "HEAD"
|
|
3325
3328
|
assert output["ref"]["target_seq"] == 7
|
|
3326
3329
|
server.session_manager.get.return_value.eventlog.last_event.assert_called_once_with()
|
|
3327
|
-
server.session_manager.replay.assert_called_once_with(
|
|
3328
|
-
|
|
3329
|
-
|
|
3330
|
-
|
|
3331
|
-
|
|
3330
|
+
server.session_manager.replay.assert_called_once_with("agent-1", from_seq=1)
|
|
3331
|
+
|
|
3332
|
+
async def test_memory_checkout_reuses_incremental_retrieval_cache(
|
|
3333
|
+
self,
|
|
3334
|
+
server: ZaxyMCPServer,
|
|
3335
|
+
) -> None:
|
|
3336
|
+
"""Repeat checkouts read through the per-session cache, not a full rebuild.
|
|
3337
|
+
|
|
3338
|
+
Regression guard for the front door wiring: the verified replay and the
|
|
3339
|
+
verbatim index are cached on the long-lived server and reused while the
|
|
3340
|
+
log signature is unchanged, so the 2.4.2 incremental-retrieval win
|
|
3341
|
+
actually reaches MCP checkout instead of rebuilding from the whole log
|
|
3342
|
+
on every call.
|
|
3343
|
+
"""
|
|
3344
|
+
server.session_manager.replay.return_value = MagicMock(events=[])
|
|
3345
|
+
eventlog = server.session_manager.get.return_value.eventlog
|
|
3346
|
+
args = {"query": "current state", "session_id": "agent-1", "limit": 5}
|
|
3347
|
+
with (
|
|
3348
|
+
patch("zaxy.mcp_server.QueryRouter") as mock_router_cls,
|
|
3349
|
+
patch("zaxy.mcp_server.record_memory_activity"),
|
|
3350
|
+
):
|
|
3351
|
+
router = AsyncMock()
|
|
3352
|
+
router.query.return_value = []
|
|
3353
|
+
mock_router_cls.return_value = router
|
|
3354
|
+
|
|
3355
|
+
await server.handle_memory_checkout(dict(args))
|
|
3356
|
+
await server.handle_memory_checkout(dict(args))
|
|
3357
|
+
|
|
3358
|
+
# Cold build on the first checkout populates both caches; the second
|
|
3359
|
+
# checkout hits them (same file signature) without a second verified
|
|
3360
|
+
# replay or a second verbatim read of the log.
|
|
3361
|
+
assert server.session_manager.replay.call_count == 1
|
|
3362
|
+
assert eventlog.read_from_offset.call_count == 1
|
|
3332
3363
|
|
|
3333
3364
|
async def test_context_after_turn_appends_and_assembles(self, server: ZaxyMCPServer) -> None:
|
|
3334
3365
|
"""context_after_turn should persist the latest turn before assembly."""
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"""Unit tests for the shared per-session retrieval cache."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
from zaxy.retrieval_cache import SessionRetrievalCache
|
|
8
|
+
from zaxy.session import SessionManager
|
|
9
|
+
from zaxy.verbatim import VerbatimIndex
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def _append(manager: SessionManager, session_id: str, content: str, turn: int) -> None:
|
|
13
|
+
manager.get(session_id).eventlog.append(
|
|
14
|
+
"transcript.turn",
|
|
15
|
+
actor="assistant",
|
|
16
|
+
payload={"source": "codex", "turn_index": turn, "role": "assistant", "content": content},
|
|
17
|
+
thread=session_id,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def test_verbatim_index_reuses_then_extends_byte_identically(tmp_path: Path) -> None:
|
|
22
|
+
"""The index is cached on an unchanged log and extended (not rebuilt) on growth.
|
|
23
|
+
|
|
24
|
+
The incrementally-extended index must produce the same ranking as a full
|
|
25
|
+
rebuild over the combined corpus.
|
|
26
|
+
"""
|
|
27
|
+
manager = SessionManager(base_path=str(tmp_path / ".eventloom"))
|
|
28
|
+
cache = SessionRetrievalCache(manager)
|
|
29
|
+
_append(manager, "agent", "Cached verbatim recall keeps answer assembly fast.", 1)
|
|
30
|
+
|
|
31
|
+
first = cache.verbatim_index("agent")
|
|
32
|
+
# Unchanged log returns the very same cached object, not a rebuild.
|
|
33
|
+
assert cache.verbatim_index("agent") is first
|
|
34
|
+
|
|
35
|
+
_append(manager, "agent", "A new event should extend the cached verbatim index.", 2)
|
|
36
|
+
extended = cache.verbatim_index("agent")
|
|
37
|
+
assert extended is not first # the append was reflected
|
|
38
|
+
|
|
39
|
+
events = manager.get("agent").eventlog.read_all()
|
|
40
|
+
full = VerbatimIndex.from_events(events)
|
|
41
|
+
query = "extend cached verbatim index"
|
|
42
|
+
inc_hits = [(h.citation, round(h.score, 9)) for h in extended.query(query, limit=5)]
|
|
43
|
+
full_hits = [(h.citation, round(h.score, 9)) for h in full.query(query, limit=5)]
|
|
44
|
+
assert inc_hits == full_hits
|
|
45
|
+
assert inc_hits # the new content is retrievable
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def test_verified_replay_is_cached_and_integrity_holds(tmp_path: Path) -> None:
|
|
49
|
+
"""Verified replay returns a passing integrity report and caches the result."""
|
|
50
|
+
manager = SessionManager(base_path=str(tmp_path / ".eventloom"))
|
|
51
|
+
cache = SessionRetrievalCache(manager)
|
|
52
|
+
_append(manager, "agent", "first", 1)
|
|
53
|
+
_append(manager, "agent", "second", 2)
|
|
54
|
+
|
|
55
|
+
result = cache.verified_replay("agent")
|
|
56
|
+
assert result.integrity is not None and result.integrity.ok
|
|
57
|
+
assert [event.seq for event in result.events] == [1, 2]
|
|
58
|
+
# Unchanged log: same cached result object is returned.
|
|
59
|
+
assert cache.verified_replay("agent") is result
|
|
60
|
+
|
|
61
|
+
# from_seq slices the cached replay without re-reading.
|
|
62
|
+
sliced = cache.verified_replay("agent", from_seq=2)
|
|
63
|
+
assert [event.seq for event in sliced.events] == [2]
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def test_invalidate_forces_a_cold_rebuild(tmp_path: Path) -> None:
|
|
67
|
+
"""invalidate() drops cached state so the next read rebuilds from the log."""
|
|
68
|
+
manager = SessionManager(base_path=str(tmp_path / ".eventloom"))
|
|
69
|
+
cache = SessionRetrievalCache(manager)
|
|
70
|
+
_append(manager, "agent", "only event", 1)
|
|
71
|
+
|
|
72
|
+
first = cache.verbatim_index("agent")
|
|
73
|
+
cache.invalidate("agent")
|
|
74
|
+
rebuilt = cache.verbatim_index("agent")
|
|
75
|
+
assert rebuilt is not first
|
|
76
|
+
# Same corpus -> same ranking after the forced rebuild.
|
|
77
|
+
query = "only event"
|
|
78
|
+
assert [h.citation for h in rebuilt.query(query, limit=5)] == [
|
|
79
|
+
h.citation for h in first.query(query, limit=5)
|
|
80
|
+
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|