engraphis 1.5__tar.gz → 1.6__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.
- {engraphis-1.5 → engraphis-1.6}/.env.example +22 -17
- {engraphis-1.5 → engraphis-1.6}/BENCHMARKS.md +108 -100
- {engraphis-1.5 → engraphis-1.6}/CHANGELOG.md +385 -2
- {engraphis-1.5 → engraphis-1.6}/Dockerfile +2 -1
- {engraphis-1.5 → engraphis-1.6}/MANIFEST.in +3 -0
- {engraphis-1.5 → engraphis-1.6}/NOTICE +5 -2
- {engraphis-1.5 → engraphis-1.6}/PKG-INFO +168 -95
- {engraphis-1.5 → engraphis-1.6}/README.md +798 -727
- engraphis-1.6/deploy/force-graph-1.51.4.licenses.json +399 -0
- engraphis-1.6/deploy/force-graph-1.51.4.yarn.lock +2344 -0
- engraphis-1.6/docs/DOCUMENT_IMPORT.md +148 -0
- engraphis-1.6/docs/OBSIDIAN_IMPORT.md +123 -0
- {engraphis-1.5 → engraphis-1.6}/docs/RECALL_RECOVERY.md +30 -3
- engraphis-1.6/docs/images/context-efficiency.svg +41 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/__init__.py +25 -2
- {engraphis-1.5 → engraphis-1.6}/engraphis/app.py +90 -56
- {engraphis-1.5 → engraphis-1.6}/engraphis/backends/codegraph.py +153 -18
- {engraphis-1.5 → engraphis-1.6}/engraphis/backends/embedder_api.py +38 -5
- {engraphis-1.5 → engraphis-1.6}/engraphis/backends/embedder_deterministic.py +7 -1
- engraphis-1.6/engraphis/backends/embedder_st.py +350 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/backends/encrypted_db.py +133 -48
- {engraphis-1.5 → engraphis-1.6}/engraphis/backends/extractor.py +157 -17
- {engraphis-1.5 → engraphis-1.6}/engraphis/backends/graph_extractor.py +17 -3
- {engraphis-1.5 → engraphis-1.6}/engraphis/backends/postgres_schema.py +66 -27
- engraphis-1.6/engraphis/backends/query_planner.py +151 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/backends/reranker.py +24 -5
- {engraphis-1.5 → engraphis-1.6}/engraphis/backends/resources.py +126 -69
- {engraphis-1.5 → engraphis-1.6}/engraphis/backends/retention.py +32 -2
- {engraphis-1.5 → engraphis-1.6}/engraphis/backends/sync_folder.py +48 -21
- {engraphis-1.5 → engraphis-1.6}/engraphis/backends/sync_relay.py +116 -33
- {engraphis-1.5 → engraphis-1.6}/engraphis/backends/vector_numpy.py +15 -3
- engraphis-1.6/engraphis/backends/vector_sqlitevec.py +565 -0
- {engraphis-1.5/engraphis/static → engraphis-1.6/engraphis/classic_assets}/dashboard.css +10 -3
- {engraphis-1.5 → engraphis-1.6}/engraphis/classic_assets/dashboard.js +1793 -1698
- {engraphis-1.5 → engraphis-1.6}/engraphis/classic_assets/index.html +22 -10
- engraphis-1.6/engraphis/classic_assets/vendor/d3.min.js +2 -0
- engraphis-1.6/engraphis/classic_assets/vendor/force-graph.min.js +5 -0
- engraphis-1.6/engraphis/cloud_authz.py +138 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/cloud_features.py +7 -2
- {engraphis-1.5 → engraphis-1.6}/engraphis/cloud_session.py +106 -12
- {engraphis-1.5 → engraphis-1.6}/engraphis/commercial_manifest.json +1 -1
- {engraphis-1.5 → engraphis-1.6}/engraphis/config.py +428 -45
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/__init__.py +4 -2
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/consolidate.py +482 -183
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/context.py +102 -9
- engraphis-1.6/engraphis/core/documents.py +1759 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/engine.py +1970 -609
- engraphis-1.6/engraphis/core/fsutil.py +47 -0
- engraphis-1.6/engraphis/core/graph_scene.py +3082 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/graphrank.py +34 -1
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/grounded.py +36 -14
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/ids.py +12 -1
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/interfaces.py +217 -9
- engraphis-1.6/engraphis/core/obsidian.py +569 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/poisoning.py +50 -1
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/query_planner.py +11 -6
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/recall.py +248 -127
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/schema.py +298 -4
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/scoring.py +12 -1
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/store.py +3180 -411
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/sync.py +951 -239
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/user_model.py +56 -18
- engraphis-1.6/engraphis/dashboard_app.py +1365 -0
- engraphis-1.6/engraphis/dashboard_assets/engraphis-graph-every-worker.js +429 -0
- engraphis-1.6/engraphis/dashboard_assets/engraphis-graph-every.js +1529 -0
- engraphis-1.6/engraphis/dashboard_assets/engraphis-graph.js +10562 -0
- engraphis-1.6/engraphis/dashboard_assets/engraphis-spacetime.js +276 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/dashboard_assets/index.html +128 -33
- {engraphis-1.5 → engraphis-1.6}/engraphis/dashboard_assets/ledger.css +307 -29
- {engraphis-1.5 → engraphis-1.6}/engraphis/dashboard_assets/ledger.js +2061 -235
- engraphis-1.6/engraphis/dashboard_assets/vendor/d3.min.js +2 -0
- engraphis-1.6/engraphis/dashboard_assets/vendor/force-graph.min.js +5 -0
- engraphis-1.6/engraphis/dashboard_assets/vendor/manifest.json +29 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/device_connect.py +5 -0
- engraphis-1.6/engraphis/document_import.py +278 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/engines/embedder.py +44 -3
- {engraphis-1.5 → engraphis-1.6}/engraphis/engines/ingest.py +165 -65
- {engraphis-1.5 → engraphis-1.6}/engraphis/engines/intelligence.py +22 -11
- {engraphis-1.5 → engraphis-1.6}/engraphis/engines/recall.py +14 -9
- engraphis-1.6/engraphis/engines/reweight.py +166 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/engines/thoughts.py +9 -1
- engraphis-1.6/engraphis/factory.py +200 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/graphdata.py +12 -3
- {engraphis-1.5 → engraphis-1.6}/engraphis/hosted_client.py +1 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/http_security.py +7 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/inspector/app.py +87 -47
- {engraphis-1.5 → engraphis-1.6}/engraphis/llm/client.py +280 -12
- {engraphis-1.5 → engraphis-1.6}/engraphis/mcp_classic_cli.py +7 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/mcp_cli.py +1 -1
- {engraphis-1.5 → engraphis-1.6}/engraphis/mcp_http_cli.py +36 -1
- {engraphis-1.5 → engraphis-1.6}/engraphis/mcp_server.py +480 -94
- engraphis-1.6/engraphis/models.py +254 -0
- engraphis-1.6/engraphis/obsidian_import.py +1583 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/private_state.py +148 -9
- engraphis-1.6/engraphis/read_only_api.py +406 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/routes/memory.py +150 -76
- {engraphis-1.5 → engraphis-1.6}/engraphis/routes/v2_api.py +574 -206
- {engraphis-1.5 → engraphis-1.6}/engraphis/routes/vault.py +369 -147
- {engraphis-1.5 → engraphis-1.6}/engraphis/service.py +4138 -457
- {engraphis-1.5/engraphis/classic_assets → engraphis-1.6/engraphis/static}/dashboard.css +10 -3
- {engraphis-1.5 → engraphis-1.6}/engraphis/static/dashboard.js +1793 -1698
- {engraphis-1.5 → engraphis-1.6}/engraphis/static/index.html +354 -342
- engraphis-1.6/engraphis/static/vendor/d3.min.js +2 -0
- engraphis-1.6/engraphis/static/vendor/force-graph.min.js +5 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/stores/__init__.py +92 -1
- engraphis-1.6/engraphis/stores/graph.py +296 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/stores/ledger.py +52 -14
- {engraphis-1.5 → engraphis-1.6}/engraphis/stores/vaults.py +72 -17
- {engraphis-1.5 → engraphis-1.6}/engraphis/stores/vectors.py +223 -82
- {engraphis-1.5 → engraphis-1.6}/engraphis/update_check.py +153 -52
- {engraphis-1.5 → engraphis-1.6}/engraphis.egg-info/PKG-INFO +168 -95
- {engraphis-1.5 → engraphis-1.6}/engraphis.egg-info/SOURCES.txt +52 -1
- {engraphis-1.5 → engraphis-1.6}/engraphis.egg-info/entry_points.txt +2 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis.egg-info/requires.txt +7 -7
- {engraphis-1.5 → engraphis-1.6}/eval/EVIDENCE.md +9 -0
- {engraphis-1.5 → engraphis-1.6}/eval/ablation.py +29 -6
- {engraphis-1.5 → engraphis-1.6}/eval/agent_benchmarks.py +1 -0
- {engraphis-1.5 → engraphis-1.6}/eval/benchmark.py +74 -83
- engraphis-1.6/eval/code_arm.py +183 -0
- {engraphis-1.5 → engraphis-1.6}/eval/configs/longmemeval_v2_engraphis_planner_type_limits.json +1 -1
- {engraphis-1.5 → engraphis-1.6}/eval/configs/longmemeval_v2_engraphis_type_limits.json +1 -1
- engraphis-1.6/eval/context_efficiency_guardrails.py +146 -0
- engraphis-1.6/eval/datasets/code_arm.jsonl +2 -0
- engraphis-1.6/eval/datasets/handoff_quality.jsonl +3 -0
- engraphis-1.6/eval/datasets/sample.jsonl +7 -0
- engraphis-1.6/eval/extractor_quality.py +217 -0
- engraphis-1.6/eval/graph_every_bench.py +67 -0
- {engraphis-1.5 → engraphis-1.6}/eval/grounded.py +11 -0
- engraphis-1.6/eval/handoff_quality.py +297 -0
- {engraphis-1.5 → engraphis-1.6}/eval/harness.py +209 -33
- {engraphis-1.5 → engraphis-1.6}/eval/hosted_ledger.py +61 -16
- {engraphis-1.5 → engraphis-1.6}/eval/longmemeval_v2.py +58 -4
- engraphis-1.6/eval/longmemeval_v2_evidence.py +603 -0
- {engraphis-1.5 → engraphis-1.6}/eval/longmemeval_v2_matrix.py +17 -4
- {engraphis-1.5 → engraphis-1.6}/eval/metrics.py +24 -8
- {engraphis-1.5 → engraphis-1.6}/eval/performance.py +10 -4
- {engraphis-1.5 → engraphis-1.6}/eval/productivity.py +7 -8
- {engraphis-1.5 → engraphis-1.6}/eval/public_readiness.py +79 -19
- {engraphis-1.5 → engraphis-1.6}/eval/reinforcement.py +26 -3
- engraphis-1.6/eval/run_longmemeval_v2.py +270 -0
- {engraphis-1.5 → engraphis-1.6}/pyproject.toml +18 -9
- {engraphis-1.5 → engraphis-1.6}/requirements.txt +1 -0
- {engraphis-1.5 → engraphis-1.6}/scripts/approve_memory.py +1 -2
- {engraphis-1.5 → engraphis-1.6}/scripts/backfill_graph.py +62 -60
- {engraphis-1.5 → engraphis-1.6}/scripts/check_codeql_sarif.py +82 -5
- {engraphis-1.5 → engraphis-1.6}/scripts/cli.py +145 -54
- {engraphis-1.5 → engraphis-1.6}/scripts/connect.py +1 -1
- {engraphis-1.5 → engraphis-1.6}/scripts/consolidate.py +10 -11
- {engraphis-1.5 → engraphis-1.6}/scripts/entry.py +4 -0
- {engraphis-1.5 → engraphis-1.6}/scripts/externalize_dashboard_assets.py +26 -5
- {engraphis-1.5 → engraphis-1.6}/scripts/graph_cli.py +63 -37
- {engraphis-1.5 → engraphis-1.6}/scripts/graph_server.py +1 -1
- engraphis-1.6/scripts/importer.py +528 -0
- {engraphis-1.5 → engraphis-1.6}/scripts/init.py +86 -56
- {engraphis-1.5 → engraphis-1.6}/scripts/install_shortcuts.py +186 -64
- engraphis-1.6/scripts/migrate_to_v2.py +771 -0
- engraphis-1.6/scripts/release_evidence.py +1159 -0
- engraphis-1.6/scripts/repair_embed_dim.py +150 -0
- engraphis-1.6/scripts/sdk_compat.py +74 -0
- engraphis-1.6/scripts/seed_from_obsidian.py +80 -0
- {engraphis-1.5 → engraphis-1.6}/scripts/smoke_entry_points.py +2 -0
- {engraphis-1.5 → engraphis-1.6}/scripts/start_dashboard.py +127 -7
- {engraphis-1.5 → engraphis-1.6}/scripts/sync.py +221 -26
- {engraphis-1.5 → engraphis-1.6}/scripts/test_routes.py +6 -1
- {engraphis-1.5 → engraphis-1.6}/scripts/update.py +203 -98
- engraphis-1.6/scripts/validate_compose_contract.py +164 -0
- {engraphis-1.5 → engraphis-1.6}/scripts/verify_distribution_contents.py +4 -0
- engraphis-1.6/scripts/watch_repo.py +476 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_agent_connect.py +30 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_backends_factories.py +195 -18
- {engraphis-1.5 → engraphis-1.6}/tests/test_benchmark_evidence.py +225 -90
- {engraphis-1.5 → engraphis-1.6}/tests/test_benchmark_longmemeval_v2.py +147 -1
- engraphis-1.6/tests/test_bounded_uploads.py +110 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_canonical_export.py +31 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_chunking_extractor.py +159 -0
- engraphis-1.6/tests/test_cli_entrypoints.py +793 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_cloud_features.py +22 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_cloud_session.py +63 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_codegraph.py +85 -8
- {engraphis-1.5 → engraphis-1.6}/tests/test_codeql_sarif_gate.py +73 -0
- engraphis-1.6/tests/test_config.py +516 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_consolidate.py +897 -42
- {engraphis-1.5 → engraphis-1.6}/tests/test_consolidate_recall.py +156 -3
- {engraphis-1.5 → engraphis-1.6}/tests/test_context_economy.py +9 -0
- engraphis-1.6/tests/test_context_efficiency_guardrails.py +48 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_context_packing.py +98 -0
- engraphis-1.6/tests/test_core_ids.py +59 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_core_store.py +1469 -1
- {engraphis-1.5 → engraphis-1.6}/tests/test_dashboard_auth_placement.py +19 -1
- {engraphis-1.5 → engraphis-1.6}/tests/test_dashboard_button_regressions.py +7 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_dashboard_security_headers_and_open_window.py +11 -5
- {engraphis-1.5 → engraphis-1.6}/tests/test_dashboard_v2.py +2073 -1288
- engraphis-1.6/tests/test_dashboard_vendor_assets.py +47 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_db_path_default.py +105 -0
- engraphis-1.6/tests/test_deployment_mode_isolation.py +120 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_device_connect.py +49 -0
- engraphis-1.6/tests/test_document_import_cli.py +528 -0
- engraphis-1.6/tests/test_document_importer.py +565 -0
- engraphis-1.6/tests/test_documentation_contracts.py +294 -0
- engraphis-1.6/tests/test_documents.py +901 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_embedder_threading.py +25 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_embeddings.py +79 -2
- {engraphis-1.5 → engraphis-1.6}/tests/test_encrypted_store.py +135 -0
- engraphis-1.6/tests/test_encryption_dependency.py +257 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_engine.py +1152 -0
- engraphis-1.6/tests/test_envelope_additions_v16.py +142 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_eval_agent_benchmarks.py +45 -1
- engraphis-1.6/tests/test_eval_code_arm.py +29 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_eval_harness.py +119 -8
- {engraphis-1.5 → engraphis-1.6}/tests/test_eval_performance.py +1 -1
- engraphis-1.6/tests/test_eval_reinforcement.py +24 -0
- engraphis-1.6/tests/test_extractor.py +324 -0
- engraphis-1.6/tests/test_fsutil.py +65 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_graph_cli.py +22 -0
- engraphis-1.6/tests/test_graph_engine_asset.py +11522 -0
- engraphis-1.6/tests/test_graph_every_asset.py +429 -0
- engraphis-1.6/tests/test_graph_explorer_v2.py +4348 -0
- engraphis-1.6/tests/test_graph_scene_contract.py +170 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_graph_server.py +18 -5
- {engraphis-1.5 → engraphis-1.6}/tests/test_graph_trust_backfill.py +50 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_graphdata.py +30 -5
- {engraphis-1.5 → engraphis-1.6}/tests/test_grounded.py +38 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_hosted_client.py +1 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_hosted_ledger.py +158 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_hosted_plan_resolution.py +104 -5
- engraphis-1.6/tests/test_hotfix_security.py +33 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_http_security.py +26 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_import_chunking.py +28 -1
- {engraphis-1.5 → engraphis-1.6}/tests/test_import_error_redaction.py +5 -1
- {engraphis-1.5 → engraphis-1.6}/tests/test_ingest_entities.py +2 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_init.py +86 -25
- {engraphis-1.5 → engraphis-1.6}/tests/test_inspector.py +118 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_inspector_pro.py +16 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_install_shortcuts.py +119 -11
- engraphis-1.6/tests/test_intelligence.py +34 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_legacy_reference_surface.py +49 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_llm_dashboard.py +66 -3
- engraphis-1.6/tests/test_local_isolation.py +59 -0
- engraphis-1.6/tests/test_longmemeval_v2_evidence.py +371 -0
- engraphis-1.6/tests/test_longmemeval_v2_matrix.py +27 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_mcp_annotation_idempotency.py +7 -4
- {engraphis-1.5 → engraphis-1.6}/tests/test_mcp_server.py +480 -4
- {engraphis-1.5 → engraphis-1.6}/tests/test_memory_routes_fixes.py +276 -13
- {engraphis-1.5 → engraphis-1.6}/tests/test_metadata_activity_forgery.py +11 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_migration.py +210 -0
- engraphis-1.6/tests/test_obsidian_cli.py +222 -0
- engraphis-1.6/tests/test_obsidian_import_schema.py +694 -0
- engraphis-1.6/tests/test_obsidian_importer.py +813 -0
- engraphis-1.6/tests/test_obsidian_parser.py +193 -0
- engraphis-1.6/tests/test_obsidian_service.py +444 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_packaging.py +150 -7
- engraphis-1.6/tests/test_parse_provider_chain.py +139 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_planned_recall.py +85 -2
- {engraphis-1.5 → engraphis-1.6}/tests/test_poisoning.py +57 -1
- {engraphis-1.5 → engraphis-1.6}/tests/test_postgres_schema.py +305 -4
- {engraphis-1.5 → engraphis-1.6}/tests/test_pro_cta.py +4 -1
- {engraphis-1.5 → engraphis-1.6}/tests/test_productivity_eval.py +44 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_provider_error_redaction.py +3 -2
- {engraphis-1.5 → engraphis-1.6}/tests/test_public_readiness.py +73 -2
- {engraphis-1.5 → engraphis-1.6}/tests/test_public_research_boundary.py +15 -1
- {engraphis-1.5 → engraphis-1.6}/tests/test_railway_runtime.py +30 -1
- {engraphis-1.5 → engraphis-1.6}/tests/test_read_only_api.py +214 -1
- engraphis-1.6/tests/test_ready.py +163 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_recall.py +147 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_recall_recovery.py +73 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_receipts.py +90 -0
- engraphis-1.6/tests/test_release_evidence.py +1324 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_release_infrastructure.py +119 -25
- engraphis-1.6/tests/test_remember_many.py +368 -0
- engraphis-1.6/tests/test_resources.py +300 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_retention.py +22 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_round17_fixes.py +29 -2
- {engraphis-1.5 → engraphis-1.6}/tests/test_savings.py +420 -218
- {engraphis-1.5 → engraphis-1.6}/tests/test_scoring.py +20 -0
- engraphis-1.6/tests/test_screen_demo.py +33 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_secret_hygiene.py +269 -2
- {engraphis-1.5 → engraphis-1.6}/tests/test_service.py +796 -12
- {engraphis-1.5 → engraphis-1.6}/tests/test_service_graph.py +506 -16
- engraphis-1.6/tests/test_setup_plugin_distribution.py +91 -0
- engraphis-1.6/tests/test_skill_package.py +132 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_smart_mcp_gateway.py +65 -5
- {engraphis-1.5 → engraphis-1.6}/tests/test_start_dashboard.py +142 -6
- engraphis-1.6/tests/test_store_class_integrity.py +172 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_store_v4_migration.py +222 -1
- {engraphis-1.5 → engraphis-1.6}/tests/test_sync.py +1615 -117
- {engraphis-1.5 → engraphis-1.6}/tests/test_sync_cli.py +170 -8
- {engraphis-1.5 → engraphis-1.6}/tests/test_sync_e2ee.py +96 -3
- {engraphis-1.5 → engraphis-1.6}/tests/test_sync_tombstones.py +299 -20
- {engraphis-1.5 → engraphis-1.6}/tests/test_update.py +36 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_update_check.py +429 -302
- {engraphis-1.5 → engraphis-1.6}/tests/test_user_model.py +58 -0
- engraphis-1.6/tests/test_v1_auto_migrate.py +335 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_v1_hardening.py +62 -1
- engraphis-1.6/tests/test_v1_ingest_trust.py +324 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_v1_licensing.py +20 -0
- engraphis-1.6/tests/test_v2_service_binding.py +536 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_vector_numpy.py +37 -2
- engraphis-1.6/tests/test_vector_sqlitevec_backend.py +703 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_workspace_ops.py +342 -1
- engraphis-1.5/docs/images/context-efficiency.svg +0 -106
- engraphis-1.5/engraphis/backends/embedder_st.py +0 -163
- engraphis-1.5/engraphis/backends/query_planner.py +0 -93
- engraphis-1.5/engraphis/backends/vector_sqlitevec.py +0 -286
- engraphis-1.5/engraphis/classic_assets/vendor/d3.min.js +0 -2
- engraphis-1.5/engraphis/classic_assets/vendor/force-graph.min.js +0 -5
- engraphis-1.5/engraphis/core/graph_scene.py +0 -1742
- engraphis-1.5/engraphis/dashboard_app.py +0 -532
- engraphis-1.5/engraphis/dashboard_assets/engraphis-graph.js +0 -2273
- engraphis-1.5/engraphis/dashboard_assets/vendor/d3.min.js +0 -2
- engraphis-1.5/engraphis/dashboard_assets/vendor/force-graph.min.js +0 -5
- engraphis-1.5/engraphis/engines/reweight.py +0 -115
- engraphis-1.5/engraphis/models.py +0 -180
- engraphis-1.5/engraphis/read_only_api.py +0 -229
- engraphis-1.5/engraphis/static/vendor/d3.min.js +0 -2
- engraphis-1.5/engraphis/static/vendor/force-graph.min.js +0 -5
- engraphis-1.5/engraphis/stores/graph.py +0 -141
- engraphis-1.5/eval/datasets/sample.jsonl +0 -4
- engraphis-1.5/eval/longmemeval_v2_evidence.py +0 -349
- engraphis-1.5/eval/run_longmemeval_v2.py +0 -110
- engraphis-1.5/scripts/migrate_to_v2.py +0 -425
- engraphis-1.5/scripts/release_evidence.py +0 -464
- engraphis-1.5/scripts/repair_embed_dim.py +0 -97
- engraphis-1.5/scripts/sdk_compat.py +0 -45
- engraphis-1.5/scripts/seed_from_obsidian.py +0 -98
- engraphis-1.5/tests/test_cli_entrypoints.py +0 -342
- engraphis-1.5/tests/test_config.py +0 -217
- engraphis-1.5/tests/test_core_ids.py +0 -22
- engraphis-1.5/tests/test_encryption_dependency.py +0 -28
- engraphis-1.5/tests/test_extractor.py +0 -140
- engraphis-1.5/tests/test_graph_engine_asset.py +0 -2459
- engraphis-1.5/tests/test_graph_explorer_v2.py +0 -1828
- engraphis-1.5/tests/test_graph_scene_contract.py +0 -64
- engraphis-1.5/tests/test_hermes_integration.py +0 -85
- engraphis-1.5/tests/test_longmemeval_v2_evidence.py +0 -172
- engraphis-1.5/tests/test_longmemeval_v2_matrix.py +0 -15
- engraphis-1.5/tests/test_ready.py +0 -101
- engraphis-1.5/tests/test_release_evidence.py +0 -285
- engraphis-1.5/tests/test_resources.py +0 -125
- engraphis-1.5/tests/test_v1_auto_migrate.py +0 -126
- engraphis-1.5/tests/test_v1_ingest_trust.py +0 -151
- engraphis-1.5/tests/test_v2_service_binding.py +0 -57
- engraphis-1.5/tests/test_vector_sqlitevec_backend.py +0 -309
- {engraphis-1.5 → engraphis-1.6}/LICENSE +0 -0
- {engraphis-1.5 → engraphis-1.6}/docker-compose.lan.yml +0 -0
- {engraphis-1.5 → engraphis-1.6}/docker-compose.yml +0 -0
- {engraphis-1.5 → engraphis-1.6}/docker-entrypoint.sh +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/ai_context.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/backends/__init__.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/backends/model_source.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/classic_assets/__init__.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/classic_assets/engraphis-graph.js +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/classic_assets/engraphis-icon.png +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/classic_assets/engraphis.ico +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/classic_assets/favicon-32.png +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/classic_assets/vendor/d3.LICENSE +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/classic_assets/vendor/force-graph.LICENSE +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/classic_assets/vendor/marked.LICENSE +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/classic_assets/vendor/marked.min.js +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/classic_assets/vendor/purify.min.js +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/commercial.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/adaptive_context.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/codegraph_export.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/conflicts.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/graph_layers.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/graph_policy.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/resolve.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/retention_policy.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/retrieval_policy.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/savings.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/secrets.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/core/textutil.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/dashboard_assets/__init__.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/dashboard_assets/engraphis-graph-compat.js +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/dashboard_assets/engraphis-icon.png +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/dashboard_assets/engraphis.ico +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/dashboard_assets/favicon-32.png +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/dashboard_assets/vendor/d3.LICENSE +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/dashboard_assets/vendor/force-graph.LICENSE +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/engines/__init__.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/inspector/__init__.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/licensing.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/llm/__init__.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/local_auth.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/logging_setup.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/netutil.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/observability.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/redirector.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/routes/__init__.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/static/__init__.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/static/engraphis-graph.js +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/static/engraphis-icon.png +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/static/engraphis.ico +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/static/favicon-32.png +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/static/vendor/d3.LICENSE +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/static/vendor/force-graph.LICENSE +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/static/vendor/marked.LICENSE +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/static/vendor/marked.min.js +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis/static/vendor/purify.min.js +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis.egg-info/dependency_links.txt +0 -0
- {engraphis-1.5 → engraphis-1.6}/engraphis.egg-info/top_level.txt +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/BASELINES.md +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/__init__.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/adversarial_memory_security.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/chunking_eval.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/code_agent_ab.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/configs/longmemeval_v2_engraphis.json +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/configs/longmemeval_v2_engraphis_planner.json +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/consolidation_ranking.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/context_economy.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/datasets/adversarial.jsonl +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/datasets/codemem.jsonl +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/datasets/consolidation_ranking.jsonl +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/datasets/context_routing_stress.jsonl +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/datasets/graph_layer_routing.jsonl +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/datasets/graph_multihop.jsonl +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/datasets/locomo10_repair_manifest.json +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/datasets/longdoc.jsonl +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/datasets/proactive_ranking.jsonl +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/datasets/redteam_poisoning.jsonl +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/external.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/graph_traversal.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/hosted_evidence.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/hosted_luna.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/planned_recall.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/proactive_ranking.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/redteam_poisoning.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/resource_hierarchy.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/eval/vector_scale.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/railway.json +0 -0
- {engraphis-1.5 → engraphis-1.6}/scripts/__init__.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/scripts/check_commercial_manifest.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/scripts/inspector.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/scripts/legacy_reference.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/scripts/mcp_server_http.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/scripts/normalize_sdist.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/scripts/rescan_poisoning.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/scripts/run_public_benchmark.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/scripts/start_server.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/scripts/verify_release_artifacts.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/setup.cfg +0 -0
- {engraphis-1.5 → engraphis-1.6}/setup.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/__init__.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/conftest.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_adaptive_context.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_adaptive_context_route.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_app_auth.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_artifact_smoke.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_benchmark_adversarial.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_bitemporal_recall.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_chunking_eval.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_client_launch.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_code_agent_ab.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_code_index_route_security.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_code_recall_arm.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_commercial_hardening.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_compact_recall.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_conflict_repair.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_conflicts.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_consolidation_loop.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_cron_write_tools_workspace_default.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_customer_node_hardening.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_dashboard_dream_ui.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_decay_idempotent.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_entity_resolution.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_eval_ablation.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_eval_adversarial_memory_security.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_eval_consolidation_ranking.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_eval_external.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_eval_external_locomo_evidence.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_eval_graph_traversal.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_eval_grounded.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_eval_redteam_poisoning.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_externalize_dashboard_assets.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_graph_extractor.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_graphrank.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_hosted_evidence.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_hosted_luna.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_intent_paywall.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_licensing_boundary_docs.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_licensing_launch.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_llm_config.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_local_auth_browser_session.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_logging_setup.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_merge.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_netutil.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_observability.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_personal_folders.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_planned_recall_eval.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_private_state_boundaries.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_proactive_context.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_proactive_ranking.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_protocol_upgrades.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_provenance_flags.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_provider_docs.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_public_benchmark_workflow.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_public_retrieval_benchmark_workflow.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_recall_entity_workspace_widening.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_relay_device_credentials.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_release_artifacts.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_remember_atomicity.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_reproducible_sdist.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_rescan_poisoning.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_resolve.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_resource_hierarchy_eval.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_retention_policy.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_retrieval_policy.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_run_public_benchmark.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_secrets_edge_cases.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_security_fixes.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_service_isolation.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_session_idempotent.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_start_session_workspace_default.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_sync_dashboard.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_vector_scale.py +0 -0
- {engraphis-1.5 → engraphis-1.6}/tests/test_workspace_isolation.py +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# ── Engraphis Configuration ──────────────────────────────────────────
|
|
2
|
-
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
2
|
+
# Put the settings you need in the owner-private `~/.engraphis/config.env` created by
|
|
3
|
+
# `engraphis-init`, or export them in the process environment. To select another file,
|
|
4
|
+
# export ENGRAPHIS_ENV_FILE as an absolute owner-private regular-file path before launch.
|
|
5
|
+
# Engraphis deliberately ignores arbitrary working-directory `.env` files.
|
|
5
6
|
|
|
6
7
|
# ── Server ──────────────────────────────────────────────────────────────────
|
|
7
8
|
ENGRAPHIS_HOST=127.0.0.1
|
|
@@ -79,6 +80,8 @@ ENGRAPHIS_EMBED_MODEL=sentence-transformers/all-MiniLM-L6-v2
|
|
|
79
80
|
# ENGRAPHIS_EMBED_REVISION=<lowercase 40-character model commit>
|
|
80
81
|
# Reject mutable remote embedding, reranker, and chunk-tokenizer tags before loading. Off by default.
|
|
81
82
|
# ENGRAPHIS_REQUIRE_IMMUTABLE_MODELS=0
|
|
83
|
+
# Fail startup when a configured optional backend cannot load instead of silently falling back.
|
|
84
|
+
# ENGRAPHIS_REQUIRE_EXACT_BACKENDS=0
|
|
82
85
|
# Embedding dimension is auto-detected from the model. Override only if needed.
|
|
83
86
|
# ENGRAPHIS_EMBED_DIM=384
|
|
84
87
|
# Vector index backend for server entrypoints: "auto" (default; use sqlite-vec when
|
|
@@ -204,17 +207,17 @@ ENGRAPHIS_LLM_MODEL=gpt-4o-mini
|
|
|
204
207
|
# engraphis connect --token engr_ct_... # the command your account portal shows
|
|
205
208
|
# printf %s "$TOKEN" | engraphis connect --token - # keep the token out of shell history
|
|
206
209
|
#
|
|
207
|
-
# That is the supported way to connect a client. It redeems the one-time connect token,
|
|
208
|
-
# the rotating refresh credential with 0600 permissions, and keeps it rotated
|
|
209
|
-
#
|
|
210
|
-
#
|
|
211
|
-
#
|
|
210
|
+
# That is the supported way to connect a client. It redeems the one-time connect token,
|
|
211
|
+
# saves the rotating refresh credential with 0600 permissions, and keeps it rotated.
|
|
212
|
+
# The saved control and compute endpoints are immutable members of that credential family:
|
|
213
|
+
# later environment changes cannot redirect its refresh or workspace upload. Reconnect
|
|
214
|
+
# explicitly to change either endpoint. See docs/AGENT_CONNECT.md.
|
|
212
215
|
#
|
|
213
|
-
# For non-interactive deployments a refresh credential may be injected as a bootstrap
|
|
214
|
-
# It rotates on use; the owner-only saved replacement
|
|
215
|
-
# the environment
|
|
216
|
-
# credentials to the subject assigned at onboarding
|
|
217
|
-
# token is supported for jobs.
|
|
216
|
+
# For non-interactive deployments a refresh credential may be injected as a bootstrap
|
|
217
|
+
# secret. It rotates on use; the owner-only saved replacement and its bound endpoints take
|
|
218
|
+
# precedence afterward, even while the environment variables remain set. Never commit it.
|
|
219
|
+
# Bind environment-only bootstrap credentials to the subject assigned at onboarding
|
|
220
|
+
# (device or member). A short-lived access token is supported for jobs.
|
|
218
221
|
# ENGRAPHIS_CLOUD_REFRESH_CREDENTIAL=
|
|
219
222
|
# ENGRAPHIS_CLOUD_TOKEN_SUBJECT=member
|
|
220
223
|
# ENGRAPHIS_CLOUD_ACCESS_TOKEN=
|
|
@@ -320,13 +323,14 @@ ENGRAPHIS_LLM_MODEL=gpt-4o-mini
|
|
|
320
323
|
# rerankers when ENGRAPHIS_REQUIRE_IMMUTABLE_MODELS=1.
|
|
321
324
|
# ENGRAPHIS_RERANK_REVISION=<lowercase 40-character model commit>
|
|
322
325
|
|
|
323
|
-
# Workspace allow-list: comma-separated names. Empty = all allowed.
|
|
324
|
-
# ENGRAPHIS_WORKSPACES=acme,personal
|
|
325
|
-
|
|
326
326
|
# Cloud Sync relay: endpoint and optional token for self-hosted relay.
|
|
327
327
|
# ENGRAPHIS_RELAY_URL=https://relay.example.com
|
|
328
328
|
# ENGRAPHIS_SYNC_TOKEN=
|
|
329
329
|
# ENGRAPHIS_SYNC_READ_ONLY=0
|
|
330
|
+
# Origin binding for standalone sync tokens. Must match the relay origin that issued
|
|
331
|
+
# the token; prevents cross-origin token reuse. Required when using ENGRAPHIS_SYNC_TOKEN
|
|
332
|
+
# without a full session credential.
|
|
333
|
+
# ENGRAPHIS_SYNC_TOKEN_ORIGIN=https://relay.example.com
|
|
330
334
|
# End-to-end encryption key for Cloud Sync bundles (relay transport). A single
|
|
331
335
|
# immutable 32-byte URL-safe base64 value (43 chars, or 44 with one '=' pad) that
|
|
332
336
|
# every authorized device shares; changing it makes previously stored ciphertext
|
|
@@ -338,7 +342,8 @@ ENGRAPHIS_LLM_MODEL=gpt-4o-mini
|
|
|
338
342
|
# ENGRAPHIS_PRO_UPGRADE_URL=
|
|
339
343
|
# ENGRAPHIS_TEAM_UPGRADE_URL=
|
|
340
344
|
|
|
341
|
-
# Update check cache duration (seconds)
|
|
345
|
+
# Update check cache duration (seconds), bounded to 1..31622400. Invalid values use the
|
|
346
|
+
# 86400-second (1 day) default. The cache path is fixed under owner-private Engraphis state.
|
|
342
347
|
# ENGRAPHIS_UPDATE_CACHE=86400
|
|
343
348
|
|
|
344
349
|
# Legacy inspector port (retired 2026-07-10; redirects to dashboard).
|
|
@@ -6,6 +6,31 @@ those results. When this document and the code disagree, the code is the source
|
|
|
6
6
|
For the locked operator sequence for a public canonical run, see
|
|
7
7
|
[`docs/PUBLIC_BENCHMARK_RUNBOOK.md`](docs/PUBLIC_BENCHMARK_RUNBOOK.md).
|
|
8
8
|
|
|
9
|
+
### Public numeric evidence registry
|
|
10
|
+
|
|
11
|
+
Every exact public aggregate retained below comes from the checked-in, public-safe
|
|
12
|
+
[`offline-fixtures-v1.json`](docs/benchmark-evidence/offline-fixtures-v1.json) artifact. Its
|
|
13
|
+
SHA-256 is
|
|
14
|
+
`0f60b0868444f676fe14c5f94d7db2c475e22669930c4d760881d0842eaa6800`, also recorded in the
|
|
15
|
+
adjacent `.sha256` file. The artifact contains no raw questions, answers, prompts, customer data,
|
|
16
|
+
or per-record content fingerprints.
|
|
17
|
+
|
|
18
|
+
The fixture-suite digest is
|
|
19
|
+
`4d7e40607319cd4bf8caee3897f1e416dbe5b81998b37a7e4839409ee2923537`. The artifact defines
|
|
20
|
+
the digest algorithm and records the SHA-256 of every suite and dataset file. Each evidence ID
|
|
21
|
+
also binds its exact command through `sha256(UTF-8 exact command)`:
|
|
22
|
+
|
|
23
|
+
| Evidence ID | Exact command | Config digest |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| `offline-chunking` | `python -m eval.chunking_eval --dataset eval/datasets/longdoc.jsonl --k 5` | `c1c8196aa7e1568ef3844a9fb2d76b87f342c39108e32d6ad144b885a76143b8` |
|
|
26
|
+
| `offline-performance` | `python -m eval.performance --dataset eval/datasets/codemem.jsonl --k 5 --iterations 10 --json` | `bbe4aca81e58d4830e50a8fc7729a1d15b71d97a6299bccd79432b7f119677d7` |
|
|
27
|
+
| `offline-grounded` | `python -m eval.grounded` | `590442e51e3642c10489165759919dc86ffac62c182937330c153e7f8d5fc26f` |
|
|
28
|
+
|
|
29
|
+
External, model-dependent, latency, consolidation, and productivity numbers are not published
|
|
30
|
+
until a redacted immutable artifact with the same three bindings exists. Use the
|
|
31
|
+
[public benchmark runbook](docs/PUBLIC_BENCHMARK_RUNBOOK.md) to produce that evidence; absence
|
|
32
|
+
from this registry means no public number is claimed.
|
|
33
|
+
|
|
9
34
|
## What we measure today (all offline, no API key)
|
|
10
35
|
|
|
11
36
|
Most Engraphis evals score **retrieval**, not end-to-end QA. The separate productivity benchmark
|
|
@@ -26,33 +51,34 @@ frontier-model QA score.
|
|
|
26
51
|
retrieval-only aggregates rather than silently dropping them. `eval.longmemeval_v2` is a local,
|
|
27
52
|
text-only adapter for the official LongMemEval-V2 `insert(trajectory)` / `query(query,
|
|
28
53
|
query_image=None)` memory interface; it does not download data or call a model.
|
|
29
|
-
- **Grounded**: `eval/grounded.py`: answerable → cite, off-topic → abstain.
|
|
54
|
+
- **Grounded**: `eval/grounded.py`: answerable → cite, off-topic → abstain. Exact fixture
|
|
55
|
+
outcomes are evidence ID `offline-grounded` in the registry above.
|
|
30
56
|
- **Chunking (quality per token)**: `eval/chunking_eval.py` over `eval/datasets/longdoc.jsonl`
|
|
31
57
|
ingests a multi-topic corpus twice: once as one memory per document (`whole`) and once with
|
|
32
58
|
sub-file `ChunkingExtractor` (`chunked`), then queries both through the real recall pipeline.
|
|
33
59
|
The checked-in corpus is explicitly marked trusted eval data so the measurement isolates
|
|
34
60
|
chunking from the production trust gate, which excludes arbitrary raw imports from normal
|
|
35
61
|
agent context. On the deterministic embedder, **recall@5 is 1.000 for both modes; mean
|
|
36
|
-
retrieved top-5 content falls from 740.3 to 214.
|
|
62
|
+
retrieved top-5 content falls from 740.3 to 214.3 tokens (526.0 fewer, 71.1% lower, about
|
|
37
63
|
3.5× smaller), while the smallest returned evidence-holding memory falls from 162.2 to 42.4
|
|
38
|
-
tokens (119.8 fewer, 73.9% lower, about 3.8× smaller).**
|
|
39
|
-
|
|
40
|
-
|
|
64
|
+
tokens (119.8 fewer, 73.9% lower, about 3.8× smaller).** These aggregates are evidence ID
|
|
65
|
+
`offline-chunking` in the registry above. Pass `--embed-model
|
|
66
|
+
sentence-transformers/all-MiniLM-L6-v2` to run a model-dependent experiment; do not publish
|
|
67
|
+
that result without a new immutable artifact and pinned model revision.
|
|
41
68
|
- **Full-pipeline latency + quality**: `eval/performance.py` times the shipped semantic +
|
|
42
69
|
lexical + graph + fusion + scoring + rerank + packing path after warmup, with reinforcement
|
|
43
70
|
disabled so repeated measurements do not mutate their corpus. It reports p50/p95/p99 latency,
|
|
44
71
|
retrieval quality, packed context tokens, and full/compact JSON-shape payload proxies in one
|
|
45
72
|
JSON-safe schema. Payload proxies are sampled once per question, independently of the number
|
|
46
73
|
of timed iterations; they are not serialized MCP envelopes or transport responses. In the
|
|
47
|
-
|
|
74
|
+
registered CodeMem run, 26 payload samples total **23,810** full-proxy
|
|
48
75
|
`engraphis.regex.v1` tokens versus **10,202** compact-proxy tokens, avoiding **13,608** proxy
|
|
49
76
|
tokens (**57.15% lower**), while 260 recalls are timed. Packed context across the same 26
|
|
50
77
|
samples averages **85.38** tokens and reaches **108** under a 1,500-token cap; Recall@5,
|
|
51
|
-
hit@5, and answer-token recall remain 1.000.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
unmeasured hunch.
|
|
78
|
+
hit@5, and answer-token recall remain 1.000. These aggregates are evidence ID
|
|
79
|
+
`offline-performance` in the registry above. `--filler-memories`, `--candidate-k`, and
|
|
80
|
+
`--retrieval-profile` make scaling and routing experiments executable, but their results need
|
|
81
|
+
separate evidence before publication.
|
|
56
82
|
- **Exact vector scale envelope**: `eval/vector_scale.py` measures the production
|
|
57
83
|
`NumpyVectorIndex` directly at requested corpus sizes with deterministic normalized vectors and
|
|
58
84
|
queries. It records a corpus fingerprint, result hashes, environment, and observed
|
|
@@ -80,41 +106,20 @@ frontier-model QA score.
|
|
|
80
106
|
answer, and is identified in every report; inject a real agent callable for model-specific
|
|
81
107
|
results. Optional provider telemetry is reported separately from the deterministic token
|
|
82
108
|
counter and is not a provider billing estimate.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
The complementary real-model LoCoMo workload diagnostic covers 10 conversations and 1,986
|
|
99
|
-
questions with `all-MiniLM-L6-v2`, `k=10`, a 512-token reader budget, and conflict resolution
|
|
100
|
-
disabled. **This is an unpinned, noncanonical workload diagnostic of reader-context use only, not
|
|
101
|
-
answer quality or leaderboard accuracy.** Engraphis used **891,857** cumulative reader-context
|
|
102
|
-
tokens versus **49,915,394** for uncapped full history, **98.2133% lower**. Charging one complete
|
|
103
|
-
246,539-token corpus pass to indexing produces a conservative Engraphis total of **1,138,396**,
|
|
104
|
-
still **97.7193% lower**, with a calculated break-even at query 10. The quality tradeoff is
|
|
105
|
-
explicit:
|
|
106
|
-
|
|
107
|
-
| LoCoMo workload method (unpinned, noncanonical context-use diagnostic; not answer quality or leaderboard accuracy) | Retrieval recall | Hit rate | Answer-token recall | Mean reader context |
|
|
108
|
-
|---|---:|---:|---:|---:|
|
|
109
|
-
| Engraphis hybrid recall | **0.600457** | **0.657417** | **0.679614** | **449.07** tokens |
|
|
110
|
-
| Same-budget recency window | 0.011289 | 0.012614 | 0.339941 | 487.87 tokens |
|
|
111
|
-
| Uncapped full history | 0.996997 | 0.997477 | 0.917247 | 25,133.63 tokens |
|
|
112
|
-
|
|
113
|
-
This diagnostic supports a precise statement: Engraphis recovered much more useful evidence than
|
|
114
|
-
a same-budget recency window while using a small fraction of full-history context. It does not
|
|
115
|
-
support “same quality as full history,” provider-billing, or end-to-end answer-accuracy claims.
|
|
116
|
-
The embedding model revision was not pinned in that run, so rerun it with an immutable revision
|
|
117
|
-
before treating the numbers as canonical release evidence.
|
|
109
|
+
- **Dashboard graph layout settle**: `eval/graph_every_bench.py` drives the Every-node
|
|
110
|
+
dashboard engine's real worker (`engraphis-graph-every-worker.js`) through a
|
|
111
|
+
`prepare → settled` round-trip over synthetic node/link loads and reports wall-clock settle
|
|
112
|
+
time plus the scaling ratio across sizes. It measures initial layout cost only: camera pans
|
|
113
|
+
and zooms never touch the worker (they are GPU-uniform updates), so no per-frame number can
|
|
114
|
+
come out of this harness and none should be quoted. Results are host- and Node-version
|
|
115
|
+
dependent local diagnostics, not registered public evidence; run the harness on the target
|
|
116
|
+
class of machine before quoting a figure.
|
|
117
|
+
|
|
118
|
+
The context-economy and productivity tools intentionally report when a small workload does not
|
|
119
|
+
benefit from memory, and the external loaders expose retrieval-quality tradeoffs rather than
|
|
120
|
+
hiding them. Their prior local results are not retained as public numbers because no matching
|
|
121
|
+
redacted immutable artifact is checked in. Run the registered protocol and publish the resulting
|
|
122
|
+
artifact before making a quantitative claim.
|
|
118
123
|
|
|
119
124
|
### Reproduce
|
|
120
125
|
|
|
@@ -168,17 +173,12 @@ names every remaining replacement/removal, must be fully consumed, and is record
|
|
|
168
173
|
report with its own hash. Any source update, unused repair, or unresolved ID fails the run. This
|
|
169
174
|
repairs retrieval references only; it does not claim to correct LoCoMo's semantic answer labels.
|
|
170
175
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
gold evidence and were scored. The result was recall@10 **0.6045**, hit@10 **0.6625**,
|
|
178
|
-
MRR@10 **0.4138**, NDCG@10 **0.4424**, and answer-token recall **0.4607**. Six questions used
|
|
179
|
-
mechanical ID normalization, three source-audited manifest repairs were applied, and four
|
|
180
|
-
questions were explicitly excluded as `no_gold_evidence`. These values measure evidence
|
|
181
|
-
retrieval only; they are not end-to-end QA accuracy or an official LoCoMo leaderboard score.
|
|
176
|
+
A private pinned retrieval diagnostic was inspected during development, but its result artifact is
|
|
177
|
+
not checked into the public evidence registry. This document therefore publishes none of that
|
|
178
|
+
run's workload counts or scores. Reproduce it from the hash-bound source and repair manifest,
|
|
179
|
+
export a public-safe immutable artifact, and validate its checksum before adding quantitative
|
|
180
|
+
claims. Any future values remain evidence-retrieval metrics, not end-to-end QA accuracy or an
|
|
181
|
+
official LoCoMo leaderboard score.
|
|
182
182
|
|
|
183
183
|
## What we do NOT yet claim
|
|
184
184
|
|
|
@@ -226,10 +226,14 @@ cases. Retrieval-only abstention/no-evidence records remain visible in the artif
|
|
|
226
226
|
`exclusions`; they are not counted as evidence-retrieval scores.
|
|
227
227
|
|
|
228
228
|
Official LongMemEval-V2 output can be converted into a public-safe QA artifact with
|
|
229
|
-
`python -m eval.longmemeval_v2_evidence`. The exporter
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
229
|
+
`python -m eval.longmemeval_v2_evidence`. The exporter requires the completion manifest written by
|
|
230
|
+
the pinned runner after a successful, complete official run. It binds the exact per-question
|
|
231
|
+
output, questions, haystack, trajectories, memory configuration, matrix manifest, seed, clean
|
|
232
|
+
official checkout, and recorded environment. The public artifact keeps the official QA score,
|
|
233
|
+
fixed-reader context token count, aggregate source-file digests, repository state, and artifact
|
|
234
|
+
checksum. It removes raw questions, answers, prompts, reader output, and retrieved context, and
|
|
235
|
+
does not publish per-record content fingerprints. See the
|
|
236
|
+
[`public benchmark runbook`](docs/PUBLIC_BENCHMARK_RUNBOOK.md) for the end-to-end operator sequence.
|
|
233
237
|
|
|
234
238
|
### LongMemEval-V2 memory-module adapter
|
|
235
239
|
|
|
@@ -241,31 +245,42 @@ the artifact can be written. See [`eval/EVIDENCE.md`](eval/EVIDENCE.md) for the
|
|
|
241
245
|
with the official harness. The config pins `Qwen/Qwen3-Embedding-8B` to revision
|
|
242
246
|
`1d8ad4ca9b3dd8059ad90a75d4983776a23d44af`; mutable embedding revisions are rejected, and a
|
|
243
247
|
canonical adapter run fails instead of relabeling the deterministic offline fallback as Qwen.
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
+
First materialize the six declared variants at all five token budgets:
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
python -m eval.longmemeval_v2_matrix \
|
|
252
|
+
--output "$ENGRAPHIS_EVIDENCE_RUN_DIR/configs"
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
This writes a 30-run manifest: balanced, planner, episodic-cap, planner-plus-episodic-cap, and
|
|
256
|
+
matched `context_k=2` comparators for both capped variants, each at 256, 512, 1,024, 2,048, and
|
|
257
|
+
4,096 evidence tokens. Run each manifest cell through `python -m eval.run_longmemeval_v2` with all
|
|
258
|
+
eight `--engraphis-*` completion-receipt arguments. The wrapper imports the adapter before the
|
|
259
|
+
official registry builds the memory module, forces the pinned reader processor revision, and
|
|
260
|
+
delegates the remaining official harness arguments unchanged. Only after a successful return does
|
|
261
|
+
it verify that the output question IDs exactly cover the source question IDs and write the
|
|
262
|
+
immutable execution manifest.
|
|
248
263
|
|
|
249
264
|
The checked-in configuration is canonical only when the adapter resolves the pinned Qwen reader
|
|
250
|
-
processor at `c202236235762e1c871ad0ccb60c8ee5ba337b9a`. The wrapper
|
|
251
|
-
official
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
265
|
+
processor at `c202236235762e1c871ad0ccb60c8ee5ba337b9a`. The wrapper refuses a dirty or non-pinned
|
|
266
|
+
official checkout and refuses to start if the optional processor dependency or immutable revision
|
|
267
|
+
is unavailable; the local regex counter is never silently relabeled as a reader budget. The
|
|
268
|
+
recorded budget counts each returned context item's content with that reader tokenizer (without
|
|
269
|
+
prompt framing or inter-item separators), so it is a hard **evidence-item content** budget, not a
|
|
270
|
+
claim about total chat-prompt tokens. Packed sources are returned as separate context items,
|
|
271
|
+
preserving the largest fitting evidence prefix instead of dropping one oversized monolithic item.
|
|
272
|
+
Every official per-question row reports inserted and retrieved counts by memory type. A
|
|
273
|
+
memory-type-cap claim additionally requires at least two populated inserted types, so a nominal cap
|
|
274
|
+
over a single-type workload cannot qualify as evidence. The adapter does not download benchmark
|
|
275
|
+
data or call the reader/evaluator; the official harness owns those steps.
|
|
259
276
|
|
|
260
277
|
## External evidence status and remaining executions
|
|
261
278
|
|
|
262
279
|
1. **Run the official LongMemEval-V2 reader and evaluator.** The adapter, pinned runner, and
|
|
263
280
|
redacted evidence exporter are implemented. The exact upstream commit boots in an isolated
|
|
264
|
-
Python 3.11 environment and the wrapper reaches the official harness CLI.
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
resources, sufficient compute, and evaluator configuration; no canonical QA score is claimed
|
|
268
|
-
until that run completes.
|
|
281
|
+
Python 3.11 environment and the wrapper reaches the official harness CLI. The dataset, pinned
|
|
282
|
+
Qwen reader, and embedding assets require substantial storage and compute; no canonical QA
|
|
283
|
+
score is claimed until that run completes.
|
|
269
284
|
2. **Publish production-backend latency.** Run `eval/performance.py` with the real embedder and
|
|
270
285
|
sqlite-vec/backend configuration on a fixed machine class and corpus scale.
|
|
271
286
|
3. **Run the fixed-budget curve on the complete official datasets.** The v2 harness now measures
|
|
@@ -299,20 +314,15 @@ Use `--artifact` on any of these commands to write a redacted, immutable evidenc
|
|
|
299
314
|
an adjacent SHA256 file. The ordinary console/`--json` report is private run material and may
|
|
300
315
|
contain source questions for debugging.
|
|
301
316
|
|
|
302
|
-
### Upstream-data
|
|
303
|
-
|
|
304
|
-
These runs use the dependency-free deterministic embedder on upstream data. They validate the
|
|
305
|
-
adapters and expose product gaps; they are noncanonical diagnostics, not leaderboard or marketing
|
|
306
|
-
claims. The artifact validator accepted every completed envelope.
|
|
317
|
+
### Upstream-data diagnostics awaiting public artifacts
|
|
307
318
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
| Mem2ActBench upstream smoke | 2 public rows | Recall@10, hit@10, MRR@10, and NDCG@10 **1.0000**; expected tool-call JSON token coverage **0.5714**. This is retrieval/context coverage, not generated action success. |
|
|
319
|
+
The LoCoMo-Plus, MemoryAgentBench, and Mem2ActBench adapters have been exercised against upstream
|
|
320
|
+
data and exposed useful product gaps. Their earlier local envelopes are not present in the
|
|
321
|
+
checked-in evidence registry, so this document withholds their case counts, retrieval scores,
|
|
322
|
+
token coverage, and throughput measurements. Rerun each adapter with `--artifact`, publish the
|
|
323
|
+
redacted immutable envelope and checksum, and add its suite/config binding before quoting a
|
|
324
|
+
number. Until then these lanes demonstrate executable plumbing only, not leaderboard,
|
|
325
|
+
answer-quality, or marketing results.
|
|
316
326
|
|
|
317
327
|
The MemoryAgentBench loader accepts both its aligned public JSON export and the Hugging Face
|
|
318
328
|
dataset-server `rows[].row` envelope. Rows without gold evidence remain useful for answer-token
|
|
@@ -338,13 +348,11 @@ or invent a task-success oracle.
|
|
|
338
348
|
1. **Budget-aware packing**: compare full source, safe summary, sentence-aligned safe summary
|
|
339
349
|
excerpt, and raw-source excerpt at fixed budgets. Gate on support/answer retention and
|
|
340
350
|
qualifier preservation, not token count alone.
|
|
341
|
-
2. **Adaptive retrieval work**: `--candidate-depth adaptive` is
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
reduction. These are machine-specific regression results, not production latency claims. Keep
|
|
347
|
-
the default fixed until complete external categories meet predeclared quality margins.
|
|
351
|
+
2. **Adaptive retrieval work**: `--candidate-depth adaptive` is an opt-in performance experiment.
|
|
352
|
+
It keeps wider graph/code pools and reduces routine lexical/balanced pools while reporting the
|
|
353
|
+
requested and actual depth. A local experiment motivated this option, but no public number is
|
|
354
|
+
retained because its machine-specific artifact is not in the evidence registry. Keep the
|
|
355
|
+
default fixed until complete external categories meet predeclared quality margins.
|
|
348
356
|
3. **Packing-pressure consolidation**: prioritize memory families that are frequently recalled,
|
|
349
357
|
repeatedly omitted, or costly per useful token. Count write/index/storage cost as well as later
|
|
350
358
|
reader-context savings.
|
|
@@ -354,7 +362,7 @@ or invent a task-success oracle.
|
|
|
354
362
|
measuring tokens-to-evidence, recall, and storage/index growth together before recommending a
|
|
355
363
|
model-specific default.
|
|
356
364
|
5. **Bulk ingestion**: add batch embedding plus a transaction-aware vector upsert path, then rerun
|
|
357
|
-
the
|
|
365
|
+
the complete MemoryAgentBench Test-Time Learning input. Gate this on identical stored-memory,
|
|
358
366
|
provenance, graph-link, and temporal-resolution outcomes, not throughput alone.
|
|
359
367
|
6. **Scoped caches**: benchmark query embeddings and repeat-recall results keyed by workspace,
|
|
360
368
|
repo, time anchors, profile, and corpus version. Test invalidation correctness before claiming
|