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