zaxy-memory 2.4.2__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.2 → zaxy_memory-2.4.4}/CHANGELOG.md +41 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/PKG-INFO +1 -1
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/pyproject.toml +1 -1
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/index.html +2 -2
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/core.py +9 -100
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/mcp_server.py +49 -21
- zaxy_memory-2.4.4/src/zaxy/retrieval_cache.py +159 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_docs_site.py +1 -1
- {zaxy_memory-2.4.2 → 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.2 → zaxy_memory-2.4.4}/.gitignore +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/AGENTS.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/Dockerfile +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/LICENSE +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/README.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docker-compose.prod.yml +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docker-compose.yml +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/agent-events.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/announcements/zaxy-0.4.0.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/announcements/zaxy-coordinate.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/announcements/zaxy-v1.0-x-article.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/announcements/zaxy-v1.0.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/announcements/zaxy-v1.1-x-article.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/announcements/zaxy-v2.1.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/announcements/zaxy-v2.2-x-article.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/announcements/zaxy-v2.3-x-article.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/announcements/zaxy-v2.4-x-article.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/api-inventory.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/api.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/architecture.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/benchmark-contributions.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/benchmark-review.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/competitive-positioning.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/experimental-associative-memory.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/longmembench.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/memory-is-purpose-zaxy-analysis.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/release-validation-checklist.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/synthesis-context-research.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/v09-gate-audit.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/v1-roadmap.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/v10-gate-audit.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/zero-friction-runtime-roadmap.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/assets/zaxy-coordinate-header.png +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/assets/zaxy-v1-header.png +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/assets/zaxy-v1.1-header.png +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/assets/zaxy-v2.1-header.png +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/assets/zaxy-v2.1-hero.png +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/assets/zaxy-v2.2-header.png +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/assets/zaxy-v2.3-header.png +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/assets/zaxy-v2.4-header.png +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/assets/zaxy-v2.4-header.svg +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/benchmarks.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/codebase.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/configuration.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/consolidation.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/coordinate-quickstart.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/coordinate-roadmap.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/deployment.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/embeddings.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/eventloom.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/examples/external-validation-report.example.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/examples/first-run-timing-report.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/examples/mcp-response-snapshots.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/examples/mcp-tool-contract.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/examples/memory-checkout-contract.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/examples/native-integration-contract.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/examples/v1-schema-freeze.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/experimental/portable-export-conformance.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/experimental/portable-export-security.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/external-validation.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/first-run-validation.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/getting-started.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/graph-schema.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/hooks.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/integrations.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/mcp-install-targets.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/mcp-quickstart.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/mcp.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/media/zaxy-2-5-3-0-latent-memory-roadmap-header.png +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/media/zaxy-codebase-review-header.png +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/media/zaxy-collaborate-demo.gif +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/media/zaxy-collaborate-demo.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/media/zaxy-collaborate-demo.mp4 +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/migration.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/operations.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/packet-analyzer.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/ann-engineering-2026-06.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/2-3-research/backend-options.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/2-3-research/external-validation.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/2-3-research/int8_bench_e_results.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/2-3-research/int8_bench_results.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/2-3-research/kuzu-usage-audit.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/2-3-research/promotion-pass.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/BASELINE.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/after-dim1536-r1.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/after-dim1536-r2.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/after-dim64-100k.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/after-dim64-r1.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/after-dim64-r2.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/after-dim64-r3.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann2-d64-10k-postcopy.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-gauss-r1.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-gauss-r2.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-hash-r1.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-hash-record.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-50k-gauss-crossover.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann3-d64-100k-r1.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann3-d64-100k-r2.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann4-d1536-50k-dimension-gated.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann4-d1536-50k-gauss-efs800.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann4-d1536-50k-gauss-r2.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann4-d64-100k-confirm.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/baseline-dim1536.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/baseline-dim64.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/diag-d1536-f32-ceiling.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/diag-gauss-efs-sweep.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/diag-ties-gaussian.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/experiments-e1-e4.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/profiling-a2.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/codebase-review-2026-06-09.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/zaxy-memory-fabric-paper.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/retrieval.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/runbook.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/security.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/stability-commitment.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-08-codebase-file-map.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-08-domain-separated-defaults.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-08-local-first-retrieval.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-08-remote-mcp-rate-limit-audit.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-09-agent-integration-templates.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-09-retention-metadata-extraction.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-09-retrieval-feedback-events.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-10-merge-sprint.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-16-runtime-dashboard.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-17-skill-memory.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-18-pggraph-adapter.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-18-projection-backend-contract.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-20-zero-friction-embedded-graph-runtime.md +0 -0
- {zaxy_memory-2.4.2 → 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.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-31-v1-release-docs-media.md +0 -0
- {zaxy_memory-2.4.2 → 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.2 → 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.2 → 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.2 → 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.2 → 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.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-06-09-codebase-review-high-value-remediation.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-05-08-codebase-file-map-design.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-05-08-domain-separated-defaults-design.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-05-08-local-first-retrieval-design.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-05-08-remote-mcp-rate-limit-audit-design.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-05-16-runtime-dashboard-design.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-05-17-skill-memory-pggraph-evaluation-design.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-05-31-v1-release-docs-media-design.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-06-07-zaxy-2-0-roadmap-design.md +0 -0
- {zaxy_memory-2.4.2 → 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.2 → 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.2 → 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.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-06-11-zaxy-2-2-ann-engineering-plan.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-06-11-zaxy-2-3-readiness-research.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/testing.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/why-zaxy.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/workspace-genesis.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/examples/__init__.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/examples/adapters/coordinationbench_zaxy_adapter.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/examples/claude_compatible_memory.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/examples/coordinate_three_worker_project.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/examples/langgraph_memory.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/examples/openai_compatible_memory.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/examples/single_agent_memory.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/reports/archive/benchmarks/longmembench-adapter-kit/README.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/reports/archive/benchmarks/purpose-v1/holdouts/public-derived-purpose-v1/README.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/reports/benchmarks/purpose-v1/holdouts/public-derived-purpose-v1/README.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/backend-shootout.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/backup.sh +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/benchmark-guardrails.sh +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/beta-uat.sh +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/build-backend-shootout-workload.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/build-dist.sh +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/build-site-docs.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/check-backend-shootout.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/check-coverage.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/check-external-validation.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/check-state-recovery-benchmark.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/chunk_rag_token_compare.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/generate-certs.sh +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/generate-release-media.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/integration-check.sh +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/live-benchmark.sh +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/mcp_smoke_test.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/release-check.sh +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/restore.sh +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/rotate-logs.sh +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/setup.sh +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/setup_neo4j_indexes.cypher +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/validate-deployment.sh +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/validate-docs.sh +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/README.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/assets/graph.png +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/assets/zaxy-coordinate-header.png +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/assets/zaxy-v1-header.png +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/assets/zaxy-v1.1-header.png +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/assets/zaxy-v2.1-header.png +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/assets/zaxy-v2.1-hero.png +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/assets/zaxy-v2.2-header.png +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/assets/zaxy-v2.3-header.png +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/assets/zaxy-v2.4-header.png +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/agent-events.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-0.4.0.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-coordinate.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-v1.0-x-article.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-v1.0.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-v1.1-x-article.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-v2.1.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-v2.2-x-article.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-v2.3-x-article.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-v2.4-x-article.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/api-inventory.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/api.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/architecture.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/benchmark-contributions.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/benchmark-review.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/competitive-positioning.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/experimental-associative-memory.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/longmembench.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/memory-is-purpose-zaxy-analysis.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/release-validation-checklist.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/synthesis-context-research.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/v09-gate-audit.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/v1-roadmap.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/v10-gate-audit.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/zero-friction-runtime-roadmap.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/benchmarks.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/codebase.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/configuration.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/consolidation.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/coordinate-quickstart.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/coordinate-roadmap.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/deployment.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/embeddings.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/eventloom.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/external-validation.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/first-run-validation.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/getting-started.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/graph-schema.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/hooks.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/integrations.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/mcp-install-targets.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/mcp-quickstart.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/mcp.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/media/zaxy-collaborate-demo.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/migration.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/operations.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/packet-analyzer.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/research/ann-engineering-2026-06.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/research/artifacts/2-3-research/backend-options.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/research/artifacts/2-3-research/external-validation.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/research/artifacts/2-3-research/kuzu-usage-audit.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/research/artifacts/2-3-research/promotion-pass.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/research/artifacts/ann-2026-06/BASELINE.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/research/codebase-review-2026-06-09.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/research/zaxy-memory-fabric-paper.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/retrieval.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/runbook.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/security.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/stability-commitment.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-08-codebase-file-map.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-08-domain-separated-defaults.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-08-local-first-retrieval.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-08-remote-mcp-rate-limit-audit.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-09-agent-integration-templates.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-09-retention-metadata-extraction.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-09-retrieval-feedback-events.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-10-merge-sprint.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-16-runtime-dashboard.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-17-skill-memory.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-18-pggraph-adapter.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-18-projection-backend-contract.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-20-zero-friction-embedded-graph-runtime.html +0 -0
- {zaxy_memory-2.4.2 → 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.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-31-v1-release-docs-media.html +0 -0
- {zaxy_memory-2.4.2 → 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.2 → 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.2 → 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.2 → 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.2 → 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.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-06-09-codebase-review-high-value-remediation.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-05-08-codebase-file-map-design.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-05-08-domain-separated-defaults-design.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-05-08-local-first-retrieval-design.html +0 -0
- {zaxy_memory-2.4.2 → 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.2 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-05-16-runtime-dashboard-design.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-05-17-skill-memory-pggraph-evaluation-design.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-05-31-v1-release-docs-media-design.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-06-07-zaxy-2-0-roadmap-design.html +0 -0
- {zaxy_memory-2.4.2 → 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.2 → 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.2 → 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.2 → 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.2 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-06-11-zaxy-2-3-readiness-research.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/testing.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/why-zaxy.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/workspace-genesis.html +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/style.css +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/__init__.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/__main__.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/adapters/__init__.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/adapters/_common.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/adapters/claude_compatible.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/adapters/coordination.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/adapters/crewai.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/adapters/langgraph.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/adapters/openai_compatible.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/associative_memory.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/capabilities.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/capture_manager.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/capture_soak.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/causal.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/checkout.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/cli/__init__.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/cli/benchmarks.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/cli/evaluation.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/cli/runtime.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/cli/serving.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/cli/workspace.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/codebase.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/codex_capture.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/compaction.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/config.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/consolidation.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/consolidation_pipeline.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/context.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/context_refresh.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/coordination.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/coordination_git.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/coordination_semantic.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/coordination_templates.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/coordinationbench_adapter.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/dashboard.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/doctor.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/documents.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/domain.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/embedded_graph_store.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/embedding.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/event.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/event_context.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/evidence.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/evidence_candidates.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/evidence_program.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/external_validation.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/extract.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/extract_templates.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/feature_evidence.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/graph.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/graph_walk.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/hooks.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/inference.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/install.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/integrations.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/latticedb_store.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/lifecycle.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/local_profile.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/log.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/mcp_runtime.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/memory_persistence.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/memory_status.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/metacognition.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/metrics.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/neutral.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/observation.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/offload.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/onboarding.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/packet_analyzer.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/packet_guidance.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/packet_projection.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/pagination.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/pggraph_store.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/portable/__init__.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/portable/anchor.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/portable/envelope.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/portable/export.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/portable/merkle.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/portable/rehydration.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/portable/signing.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/procedural_planning.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/procedure_mining.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/projection.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/projection_backends.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/purpose.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/purpose_control.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/py.typed +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/query.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/reasoning_primitives.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/recall.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/recovery.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/refs.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/release.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/remote_security.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/__init__.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/README.md +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/__init__.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/schemas/result.schema.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/schemas/runner-manifest.schema.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/templates/activegraph.runner-manifest.template.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/templates/agent_memory.runner-manifest.template.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/templates/hybi.runner-manifest.template.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/templates/mem0.runner-manifest.template.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/templates/quarq.runner-manifest.template.json +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/unsupported_runner.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/retrieval_intent.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/retrieval_plan/__init__.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/retrieval_plan/bundles.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/retrieval_plan/duration_evidence.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/retrieval_plan/fact_queries.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/retrieval_plan/foundations.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/retrieval_plan/ordering.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/retrieval_plan/scalars.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/retrieval_profile.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/runtime.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/salience.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/schema.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/security.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/session.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/synthesis/__init__.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/synthesis/evidence_rows.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/synthesis/foundations.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/synthesis/labels.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/synthesis/ledgers.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/synthesis/operations.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/synthesis_artifact.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/synthesis_packet.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/token_budget.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/tool_profiles.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/trace.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/transcripts.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/verbatim.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/viewer.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/working_set.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/workspace.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/conftest.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_agent_experience_lanes.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_anchor.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_associative_memory.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_backend_shootout.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_benchmarks.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_capabilities.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_capture_manager.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_capture_soak.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_causal.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_causal_benchmark.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_causal_checkout.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_checkout.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_chunk_rag_methodology.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_claude_compatible_adapter.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_cli.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_codebase.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_codex_capture.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_cognitive_lanes.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_cognitive_profile.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_compaction.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_competitive_benchmarks.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_compose.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_config.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_consolidation.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_consolidation_benchmark.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_consolidation_pipeline.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_context.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_context_refresh.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_coordination.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_coordination_adapters.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_coordination_benchmark.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_coordination_semantic.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_coordinationbench_adapter.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_core.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_coverage_ratchet.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_crewai_adapter.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_dashboard.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_doctor.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_documents.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_domain.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_embedded_graph_store.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_embedding.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_envelope.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_event.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_evidence.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_evidence_program.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_examples_v05.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_extract.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_extract_templates.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_feature_evidence.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_graph.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_graph_scale_lanes.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_graph_walk.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_harvey_lab_benchmark.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_inference.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_install.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_integration_check_script.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_integrations.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_langgraph_adapter.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_latticedb_store.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_lifecycle.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_live_benchmark.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_local_profile.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_longmembench.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_mcp_runtime.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_mcp_server.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_memory_injection.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_memory_persistence.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_memory_status.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_metacognition.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_metrics.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_neutral.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_observation.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_offload.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_onboarding.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_openai_compatible_adapter.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_ops_scripts.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_packaging.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_packet_analyzer.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_packet_memory_e2e.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_packet_projection.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_pagination.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_pggraph_store.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_portable_export.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_procedural_planning.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_procedure_mining.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_projection.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_purpose.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_purpose_benchmark.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_purpose_control.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_query.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_rc_benchmark_freeze.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_reasoning_benchmark.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_reasoning_primitives.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_recovery.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_refs.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_rehydration.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_remote_security.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_retrieval_plan.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_retrieval_profiles.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_runtime.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_salience.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_schema_migrations.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_security.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_session.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_setup_script.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_statistical_benchmark.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_synthesis.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_synthesis_artifact.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_synthesis_packet.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_token_budget.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_trace.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_transcripts.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_v05_positioning.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_verbatim.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_viewer.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_working_set.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_workspace.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/__init__.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/agent_experience_lanes.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/benchmark.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/causal_benchmark.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/consolidation_benchmark.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/coordination_benchmark.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/fok_calibration_lane.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/forgetting_lane.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/graph_walk_lane.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/harvey_lab_benchmark.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/live_benchmark.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/longmembench.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/purpose_benchmark.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/rc_benchmark_freeze.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/reasoning_benchmark.py +0 -0
- {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/vector_scale_lane.py +0 -0
|
@@ -2,6 +2,47 @@
|
|
|
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
|
+
|
|
27
|
+
## 2.4.3 - 2026-06-15
|
|
28
|
+
|
|
29
|
+
- **`memory_checkout` no longer blocks the MCP event loop — interrupting an
|
|
30
|
+
in-flight checkout cancels cleanly instead of tearing down the server.**
|
|
31
|
+
Checkout's synchronous, CPU/IO-bound retrieval (full replay + verbatim index
|
|
32
|
+
build + packet assembly) ran directly on the asyncio event loop, so while a
|
|
33
|
+
checkout was in progress the server could not read stdin or honor the
|
|
34
|
+
client's cancellation. A killed call therefore escalated to a transport
|
|
35
|
+
teardown and the server process exited ("server crashed when I killed the
|
|
36
|
+
call"). The heavy sections now run in worker threads via `asyncio.to_thread`,
|
|
37
|
+
keeping the loop responsive so cancellation unwinds gracefully and the server
|
|
38
|
+
stays up.
|
|
39
|
+
- `handle_memory_checkout` and `_assemble_context` offload `replay`, the
|
|
40
|
+
`VerbatimIndex` build, and `build_memory_checkout` to threads.
|
|
41
|
+
- A new per-server `asyncio.Lock` serializes the off-loop checkout body,
|
|
42
|
+
preserving the prior single-flight invariant over shared session/index
|
|
43
|
+
state now that the work can overlap across awaits.
|
|
44
|
+
- No API or behavior change; same cited facts are surfaced.
|
|
45
|
+
|
|
5
46
|
## 2.4.2 - 2026-06-15
|
|
6
47
|
|
|
7
48
|
- **Memory Checkout latency fix — warm `memory_checkout` ~19s → ~1.6s on a
|
|
@@ -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,
|
|
@@ -1380,8 +1381,24 @@ class ZaxyMCPServer:
|
|
|
1380
1381
|
# signature so any append rebuilds it (the log-signature pattern used
|
|
1381
1382
|
# by the projection's derived read caches).
|
|
1382
1383
|
self._fok_index_cache: dict[str, tuple[str, FeelingOfKnowingIndex]] = {}
|
|
1384
|
+
# Serializes the heavy, off-loop checkout body. Checkout's retrieval
|
|
1385
|
+
# (full replay + verbatim index build) is synchronous and CPU/IO-bound;
|
|
1386
|
+
# it runs in a worker thread (see handle_memory_checkout) so the event
|
|
1387
|
+
# loop stays free to read stdin and honor client cancellations. The lock
|
|
1388
|
+
# preserves the previous "one checkout at a time" invariant that the
|
|
1389
|
+
# shared session/index state was written under, now that the work can
|
|
1390
|
+
# overlap across awaits.
|
|
1391
|
+
self._checkout_lock = asyncio.Lock()
|
|
1383
1392
|
self._eventloom_path = eventloom_path or settings.eventloom_path
|
|
1384
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)
|
|
1385
1402
|
self.refs = MemoryRefStore(self._eventloom_path)
|
|
1386
1403
|
self._neo4j_uri = neo4j_uri or settings.neo4j_uri
|
|
1387
1404
|
self._neo4j_user = neo4j_user or settings.neo4j_user
|
|
@@ -2870,21 +2887,30 @@ class ZaxyMCPServer:
|
|
|
2870
2887
|
resolved_ref = self._resolve_checkout_ref(ref, session_id=session_id)
|
|
2871
2888
|
checkout_session_id = resolved_ref.session_id if resolved_ref is not None else session_id
|
|
2872
2889
|
|
|
2873
|
-
|
|
2874
|
-
|
|
2875
|
-
|
|
2876
|
-
|
|
2877
|
-
|
|
2878
|
-
|
|
2879
|
-
|
|
2880
|
-
|
|
2881
|
-
|
|
2882
|
-
|
|
2883
|
-
|
|
2884
|
-
|
|
2885
|
-
|
|
2886
|
-
|
|
2887
|
-
|
|
2890
|
+
# Hold the checkout lock across the heavy retrieval/build so the
|
|
2891
|
+
# synchronous, thread-offloaded sections stay serialized (preserving the
|
|
2892
|
+
# prior single-flight invariant) while the event loop remains free to
|
|
2893
|
+
# service stdin and cancellations. If the client cancels mid-checkout,
|
|
2894
|
+
# the await points below raise CancelledError and unwind cleanly; the
|
|
2895
|
+
# orphaned worker thread finishes harmlessly and the server stays up.
|
|
2896
|
+
async with self._checkout_lock:
|
|
2897
|
+
assembly, replay_events = await self._assemble_context(
|
|
2898
|
+
query=query,
|
|
2899
|
+
session_id=checkout_session_id,
|
|
2900
|
+
replay_from_seq=replay_from_seq,
|
|
2901
|
+
limit=limit,
|
|
2902
|
+
max_recent_events=max_recent_events,
|
|
2903
|
+
as_of_seq=resolved_ref.target_seq if resolved_ref is not None else None,
|
|
2904
|
+
)
|
|
2905
|
+
built = await asyncio.to_thread(
|
|
2906
|
+
build_memory_checkout,
|
|
2907
|
+
query=query,
|
|
2908
|
+
assembly=_context_assembly_from_payload(assembly, replay_events=replay_events),
|
|
2909
|
+
ref=resolved_ref,
|
|
2910
|
+
purpose=arguments.get("purpose"),
|
|
2911
|
+
now=datetime.now(UTC),
|
|
2912
|
+
)
|
|
2913
|
+
output = built.to_dict()
|
|
2888
2914
|
output = apply_checkout_budget(output, max_tokens=max_tokens)
|
|
2889
2915
|
activity = record_memory_activity(
|
|
2890
2916
|
self._eventloom_path,
|
|
@@ -3068,10 +3094,10 @@ class ZaxyMCPServer:
|
|
|
3068
3094
|
resolve citations into sealed refs and to replay diagnostics-only
|
|
3069
3095
|
salience without an extra log scan.
|
|
3070
3096
|
"""
|
|
3071
|
-
replay =
|
|
3097
|
+
replay = await asyncio.to_thread(
|
|
3098
|
+
self._retrieval_cache.verified_replay,
|
|
3072
3099
|
session_id,
|
|
3073
|
-
|
|
3074
|
-
verify_integrity=False,
|
|
3100
|
+
replay_from_seq,
|
|
3075
3101
|
)
|
|
3076
3102
|
events = list(replay.events)
|
|
3077
3103
|
if as_of_seq is not None:
|
|
@@ -3086,9 +3112,11 @@ class ZaxyMCPServer:
|
|
|
3086
3112
|
results = await router.query(query, limit=limit)
|
|
3087
3113
|
graph_contexts = [_context_from_query_result(result) for result in results]
|
|
3088
3114
|
verbatim_hits = (
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3115
|
+
await asyncio.to_thread(
|
|
3116
|
+
lambda: self._retrieval_cache.verbatim_index(session_id).query(
|
|
3117
|
+
query, limit=limit
|
|
3118
|
+
)
|
|
3119
|
+
)
|
|
3092
3120
|
if self.context_assembly_policy.should_query_verbatim(limit=limit)
|
|
3093
3121
|
else []
|
|
3094
3122
|
)
|
|
@@ -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."""
|