engraphis 1.7__tar.gz → 1.7.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (562) hide show
  1. {engraphis-1.7 → engraphis-1.7.3}/BENCHMARKS.md +4 -4
  2. {engraphis-1.7 → engraphis-1.7.3}/CHANGELOG.md +118 -10
  3. {engraphis-1.7 → engraphis-1.7.3}/MANIFEST.in +2 -0
  4. {engraphis-1.7 → engraphis-1.7.3}/PKG-INFO +24 -8
  5. {engraphis-1.7 → engraphis-1.7.3}/README.md +20 -4
  6. engraphis-1.7.3/docs/CODING_ACCEPTANCE_CORPUS.md +159 -0
  7. engraphis-1.7.3/docs/ENGINE_CAPACITY_PROTOCOL.md +177 -0
  8. engraphis-1.7.3/docs/PAID_EVALUATION_PROPOSAL.md +111 -0
  9. engraphis-1.7.3/docs/REWORK_EXECUTION.md +139 -0
  10. engraphis-1.7.3/docs/images/context-efficiency.svg +161 -0
  11. {engraphis-1.7 → engraphis-1.7.3}/engraphis/__init__.py +2 -2
  12. {engraphis-1.7 → engraphis-1.7.3}/engraphis/backends/embedder_st.py +12 -0
  13. {engraphis-1.7 → engraphis-1.7.3}/engraphis/backends/encrypted_db.py +14 -4
  14. {engraphis-1.7 → engraphis-1.7.3}/engraphis/backends/vector_numpy.py +8 -52
  15. {engraphis-1.7 → engraphis-1.7.3}/engraphis/backends/vector_sqlitevec.py +20 -39
  16. engraphis-1.7.3/engraphis/build_info.py +42 -0
  17. {engraphis-1.7/engraphis/static → engraphis-1.7.3/engraphis/classic_assets}/dashboard.js +26 -17
  18. {engraphis-1.7 → engraphis-1.7.3}/engraphis/classic_assets/index.html +1 -1
  19. {engraphis-1.7 → engraphis-1.7.3}/engraphis/cloud_features.py +30 -25
  20. {engraphis-1.7 → engraphis-1.7.3}/engraphis/commercial.py +13 -0
  21. {engraphis-1.7 → engraphis-1.7.3}/engraphis/commercial_manifest.json +12 -3
  22. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/__init__.py +8 -0
  23. engraphis-1.7.3/engraphis/core/browsing.py +165 -0
  24. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/context.py +200 -121
  25. engraphis-1.7.3/engraphis/core/diagnostics.py +32 -0
  26. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/engine.py +432 -289
  27. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/graph_scene.py +150 -42
  28. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/graphrank.py +45 -35
  29. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/grounded.py +66 -66
  30. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/interfaces.py +9 -0
  31. engraphis-1.7.3/engraphis/core/mutations.py +178 -0
  32. engraphis-1.7.3/engraphis/core/read_snapshots.py +206 -0
  33. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/recall.py +71 -27
  34. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/resolve.py +45 -1
  35. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/retrieval_policy.py +2 -2
  36. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/schema.py +140 -1
  37. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/secrets.py +122 -8
  38. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/store.py +297 -9
  39. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/sync.py +66 -70
  40. engraphis-1.7.3/engraphis/core/vector_repair.py +208 -0
  41. engraphis-1.7.3/engraphis/core/vector_search.py +55 -0
  42. {engraphis-1.7 → engraphis-1.7.3}/engraphis/dashboard_app.py +14 -1
  43. engraphis-1.7.3/engraphis/dashboard_assets/ask-requests.js +105 -0
  44. {engraphis-1.7 → engraphis-1.7.3}/engraphis/dashboard_assets/engraphis-graph-every.js +31 -5
  45. {engraphis-1.7 → engraphis-1.7.3}/engraphis/dashboard_assets/engraphis-graph.js +746 -121
  46. engraphis-1.7.3/engraphis/dashboard_assets/graph-lifecycle.js +105 -0
  47. {engraphis-1.7 → engraphis-1.7.3}/engraphis/dashboard_assets/index.html +158 -43
  48. {engraphis-1.7 → engraphis-1.7.3}/engraphis/dashboard_assets/ledger.css +7 -1
  49. {engraphis-1.7 → engraphis-1.7.3}/engraphis/dashboard_assets/ledger.js +539 -176
  50. engraphis-1.7.3/engraphis/dashboard_assets/managed-processing.js +82 -0
  51. engraphis-1.7.3/engraphis/dashboard_assets/memory-history.js +111 -0
  52. engraphis-1.7.3/engraphis/dashboard_assets/memory-revision.js +34 -0
  53. engraphis-1.7.3/engraphis/dashboard_assets/memory-workflow.css +61 -0
  54. engraphis-1.7.3/engraphis/dashboard_assets/workflow-context.js +168 -0
  55. engraphis-1.7.3/engraphis/managed_processing.py +106 -0
  56. {engraphis-1.7 → engraphis-1.7.3}/engraphis/mcp_server.py +177 -27
  57. {engraphis-1.7 → engraphis-1.7.3}/engraphis/routes/v2_api.py +193 -54
  58. {engraphis-1.7 → engraphis-1.7.3}/engraphis/service.py +354 -86
  59. engraphis-1.7.3/engraphis/service_context.py +58 -0
  60. {engraphis-1.7/engraphis/classic_assets → engraphis-1.7.3/engraphis/static}/dashboard.js +26 -17
  61. {engraphis-1.7 → engraphis-1.7.3}/engraphis/static/index.html +1 -1
  62. {engraphis-1.7 → engraphis-1.7.3}/engraphis.egg-info/PKG-INFO +24 -8
  63. {engraphis-1.7 → engraphis-1.7.3}/engraphis.egg-info/SOURCES.txt +68 -0
  64. {engraphis-1.7 → engraphis-1.7.3}/engraphis.egg-info/requires.txt +3 -3
  65. engraphis-1.7.3/eval/capacity_matrix.py +336 -0
  66. engraphis-1.7.3/eval/coding_acceptance.py +234 -0
  67. engraphis-1.7.3/eval/datasets/resolver_write_acceptance.jsonl +12 -0
  68. engraphis-1.7.3/eval/engine_capacity.py +493 -0
  69. engraphis-1.7.3/eval/fts_insert_scaling.py +102 -0
  70. engraphis-1.7.3/eval/native_coverage_scaling.py +166 -0
  71. engraphis-1.7.3/eval/repair_discovery.py +179 -0
  72. engraphis-1.7.3/eval/resolver_reworded_corrections.py +297 -0
  73. engraphis-1.7.3/eval/rework_statistics.py +26 -0
  74. engraphis-1.7.3/eval/task_pairs.py +218 -0
  75. {engraphis-1.7 → engraphis-1.7.3}/eval/vector_scale.py +45 -0
  76. engraphis-1.7.3/eval/vector_scale_storage.py +429 -0
  77. engraphis-1.7.3/eval/vector_scan_plan.py +141 -0
  78. {engraphis-1.7 → engraphis-1.7.3}/pyproject.toml +4 -4
  79. {engraphis-1.7 → engraphis-1.7.3}/scripts/check_commercial_manifest.py +12 -1
  80. engraphis-1.7.3/scripts/export_mcp_contract.py +68 -0
  81. {engraphis-1.7 → engraphis-1.7.3}/scripts/init.py +154 -28
  82. engraphis-1.7.3/scripts/installation_profile.py +64 -0
  83. {engraphis-1.7 → engraphis-1.7.3}/scripts/update.py +22 -6
  84. {engraphis-1.7 → engraphis-1.7.3}/scripts/verify_distribution_contents.py +17 -0
  85. {engraphis-1.7 → engraphis-1.7.3}/tests/test_backends_factories.py +46 -0
  86. {engraphis-1.7 → engraphis-1.7.3}/tests/test_benchmark_evidence.py +120 -63
  87. {engraphis-1.7 → engraphis-1.7.3}/tests/test_bitemporal_recall.py +21 -1
  88. engraphis-1.7.3/tests/test_browse_portable.py +252 -0
  89. engraphis-1.7.3/tests/test_capacity_matrix.py +133 -0
  90. {engraphis-1.7 → engraphis-1.7.3}/tests/test_cloud_features.py +36 -69
  91. engraphis-1.7.3/tests/test_coding_acceptance.py +114 -0
  92. {engraphis-1.7 → engraphis-1.7.3}/tests/test_context_economy.py +3 -2
  93. engraphis-1.7.3/tests/test_context_evidence_preservation.py +165 -0
  94. engraphis-1.7.3/tests/test_context_packer.py +247 -0
  95. {engraphis-1.7 → engraphis-1.7.3}/tests/test_context_packing.py +17 -13
  96. engraphis-1.7.3/tests/test_context_scope_grounding.py +266 -0
  97. {engraphis-1.7 → engraphis-1.7.3}/tests/test_dashboard_auth_placement.py +31 -25
  98. {engraphis-1.7 → engraphis-1.7.3}/tests/test_dashboard_v2.py +71 -5
  99. {engraphis-1.7 → engraphis-1.7.3}/tests/test_decay_idempotent.py +9 -1
  100. {engraphis-1.7 → engraphis-1.7.3}/tests/test_documentation_contracts.py +18 -7
  101. {engraphis-1.7 → engraphis-1.7.3}/tests/test_encrypted_store.py +22 -0
  102. {engraphis-1.7 → engraphis-1.7.3}/tests/test_engine.py +1 -1
  103. engraphis-1.7.3/tests/test_engine_capacity.py +84 -0
  104. engraphis-1.7.3/tests/test_fts_insert_scaling.py +13 -0
  105. engraphis-1.7.3/tests/test_galaxy_operating_bounds.py +235 -0
  106. engraphis-1.7.3/tests/test_governed_concurrency.py +307 -0
  107. {engraphis-1.7 → engraphis-1.7.3}/tests/test_graph_engine_asset.py +315 -21
  108. {engraphis-1.7 → engraphis-1.7.3}/tests/test_graph_explorer_v2.py +29 -2
  109. {engraphis-1.7 → engraphis-1.7.3}/tests/test_graph_scene_contract.py +2 -2
  110. {engraphis-1.7 → engraphis-1.7.3}/tests/test_grounded.py +3 -2
  111. engraphis-1.7.3/tests/test_history_scope.py +184 -0
  112. {engraphis-1.7 → engraphis-1.7.3}/tests/test_hosted_plan_resolution.py +29 -2
  113. {engraphis-1.7 → engraphis-1.7.3}/tests/test_init.py +135 -0
  114. engraphis-1.7.3/tests/test_installation_profile.py +54 -0
  115. engraphis-1.7.3/tests/test_ledger_sliders_and_physics.py +520 -0
  116. engraphis-1.7.3/tests/test_live_read_snapshots.py +308 -0
  117. engraphis-1.7.3/tests/test_managed_processing_policy.py +479 -0
  118. engraphis-1.7.3/tests/test_manual_graph_probe.py +40 -0
  119. engraphis-1.7.3/tests/test_mcp_contract.py +90 -0
  120. {engraphis-1.7 → engraphis-1.7.3}/tests/test_mcp_server.py +155 -0
  121. engraphis-1.7.3/tests/test_memory_browsing.py +134 -0
  122. engraphis-1.7.3/tests/test_memory_revisions.py +276 -0
  123. engraphis-1.7.3/tests/test_native_coverage_equivalence.py +60 -0
  124. {engraphis-1.7 → engraphis-1.7.3}/tests/test_obsidian_import_schema.py +4 -4
  125. engraphis-1.7.3/tests/test_pro_cta.py +117 -0
  126. {engraphis-1.7 → engraphis-1.7.3}/tests/test_recall.py +41 -0
  127. engraphis-1.7.3/tests/test_recall_narrow_arm_opt_in.py +195 -0
  128. {engraphis-1.7 → engraphis-1.7.3}/tests/test_release_evidence.py +2 -2
  129. {engraphis-1.7 → engraphis-1.7.3}/tests/test_release_infrastructure.py +1 -0
  130. {engraphis-1.7 → engraphis-1.7.3}/tests/test_release_write_path.py +24 -0
  131. engraphis-1.7.3/tests/test_repair_discovery_probe.py +35 -0
  132. {engraphis-1.7 → engraphis-1.7.3}/tests/test_resolve.py +68 -0
  133. engraphis-1.7.3/tests/test_resolver_acceptance.py +107 -0
  134. engraphis-1.7.3/tests/test_resource_import_atomicity.py +354 -0
  135. {engraphis-1.7 → engraphis-1.7.3}/tests/test_retrieval_policy.py +3 -0
  136. {engraphis-1.7 → engraphis-1.7.3}/tests/test_secret_hygiene.py +18 -0
  137. {engraphis-1.7 → engraphis-1.7.3}/tests/test_secrets_edge_cases.py +12 -0
  138. engraphis-1.7.3/tests/test_service_context.py +70 -0
  139. engraphis-1.7.3/tests/test_startup_transform_gates.py +116 -0
  140. engraphis-1.7.3/tests/test_storage_concurrency_repair.py +756 -0
  141. engraphis-1.7.3/tests/test_store_fts_insert.py +167 -0
  142. {engraphis-1.7 → engraphis-1.7.3}/tests/test_sync.py +2 -2
  143. engraphis-1.7.3/tests/test_sync_index_repair.py +405 -0
  144. engraphis-1.7.3/tests/test_task_pairs.py +103 -0
  145. {engraphis-1.7 → engraphis-1.7.3}/tests/test_update.py +72 -0
  146. {engraphis-1.7 → engraphis-1.7.3}/tests/test_vector_numpy.py +2 -2
  147. engraphis-1.7.3/tests/test_vector_repair_discovery.py +275 -0
  148. engraphis-1.7.3/tests/test_vector_scale_storage.py +104 -0
  149. engraphis-1.7.3/tests/test_vector_scan_plan.py +15 -0
  150. engraphis-1.7.3/tests/test_vector_snapshot_plan.py +81 -0
  151. {engraphis-1.7 → engraphis-1.7.3}/tests/test_vector_sqlitevec_backend.py +106 -0
  152. engraphis-1.7.3/tests/test_workflow_diagnostics.py +101 -0
  153. engraphis-1.7/docs/images/context-efficiency.svg +0 -41
  154. engraphis-1.7/eval/resolver_reworded_corrections.py +0 -163
  155. engraphis-1.7/tests/test_pro_cta.py +0 -54
  156. {engraphis-1.7 → engraphis-1.7.3}/.env.example +0 -0
  157. {engraphis-1.7 → engraphis-1.7.3}/Dockerfile +0 -0
  158. {engraphis-1.7 → engraphis-1.7.3}/LICENSE +0 -0
  159. {engraphis-1.7 → engraphis-1.7.3}/NOTICE +0 -0
  160. {engraphis-1.7 → engraphis-1.7.3}/deploy/force-graph-1.51.4.licenses.json +0 -0
  161. {engraphis-1.7 → engraphis-1.7.3}/deploy/force-graph-1.51.4.yarn.lock +0 -0
  162. {engraphis-1.7 → engraphis-1.7.3}/docker-compose.lan.yml +0 -0
  163. {engraphis-1.7 → engraphis-1.7.3}/docker-compose.yml +0 -0
  164. {engraphis-1.7 → engraphis-1.7.3}/docker-entrypoint.sh +0 -0
  165. {engraphis-1.7 → engraphis-1.7.3}/docs/DOCUMENT_IMPORT.md +0 -0
  166. {engraphis-1.7 → engraphis-1.7.3}/docs/OBSIDIAN_IMPORT.md +0 -0
  167. {engraphis-1.7 → engraphis-1.7.3}/docs/RECALL_RECOVERY.md +0 -0
  168. {engraphis-1.7 → engraphis-1.7.3}/engraphis/ai_context.py +0 -0
  169. {engraphis-1.7 → engraphis-1.7.3}/engraphis/app.py +0 -0
  170. {engraphis-1.7 → engraphis-1.7.3}/engraphis/backends/__init__.py +0 -0
  171. {engraphis-1.7 → engraphis-1.7.3}/engraphis/backends/codegraph.py +0 -0
  172. {engraphis-1.7 → engraphis-1.7.3}/engraphis/backends/embedder_api.py +0 -0
  173. {engraphis-1.7 → engraphis-1.7.3}/engraphis/backends/embedder_deterministic.py +0 -0
  174. {engraphis-1.7 → engraphis-1.7.3}/engraphis/backends/extractor.py +0 -0
  175. {engraphis-1.7 → engraphis-1.7.3}/engraphis/backends/graph_extractor.py +0 -0
  176. {engraphis-1.7 → engraphis-1.7.3}/engraphis/backends/model_source.py +0 -0
  177. {engraphis-1.7 → engraphis-1.7.3}/engraphis/backends/postgres_schema.py +0 -0
  178. {engraphis-1.7 → engraphis-1.7.3}/engraphis/backends/query_planner.py +0 -0
  179. {engraphis-1.7 → engraphis-1.7.3}/engraphis/backends/reranker.py +0 -0
  180. {engraphis-1.7 → engraphis-1.7.3}/engraphis/backends/resources.py +0 -0
  181. {engraphis-1.7 → engraphis-1.7.3}/engraphis/backends/retention.py +0 -0
  182. {engraphis-1.7 → engraphis-1.7.3}/engraphis/backends/sync_folder.py +0 -0
  183. {engraphis-1.7 → engraphis-1.7.3}/engraphis/backends/sync_relay.py +0 -0
  184. {engraphis-1.7 → engraphis-1.7.3}/engraphis/classic_assets/__init__.py +0 -0
  185. {engraphis-1.7 → engraphis-1.7.3}/engraphis/classic_assets/dashboard.css +0 -0
  186. {engraphis-1.7 → engraphis-1.7.3}/engraphis/classic_assets/engraphis-graph.js +0 -0
  187. {engraphis-1.7 → engraphis-1.7.3}/engraphis/classic_assets/engraphis-icon.png +0 -0
  188. {engraphis-1.7 → engraphis-1.7.3}/engraphis/classic_assets/engraphis.ico +0 -0
  189. {engraphis-1.7 → engraphis-1.7.3}/engraphis/classic_assets/favicon-32.png +0 -0
  190. {engraphis-1.7 → engraphis-1.7.3}/engraphis/classic_assets/vendor/d3.LICENSE +0 -0
  191. {engraphis-1.7 → engraphis-1.7.3}/engraphis/classic_assets/vendor/d3.min.js +0 -0
  192. {engraphis-1.7 → engraphis-1.7.3}/engraphis/classic_assets/vendor/force-graph.LICENSE +0 -0
  193. {engraphis-1.7 → engraphis-1.7.3}/engraphis/classic_assets/vendor/force-graph.min.js +0 -0
  194. {engraphis-1.7 → engraphis-1.7.3}/engraphis/classic_assets/vendor/marked.LICENSE +0 -0
  195. {engraphis-1.7 → engraphis-1.7.3}/engraphis/classic_assets/vendor/marked.min.js +0 -0
  196. {engraphis-1.7 → engraphis-1.7.3}/engraphis/classic_assets/vendor/purify.min.js +0 -0
  197. {engraphis-1.7 → engraphis-1.7.3}/engraphis/cloud_authz.py +0 -0
  198. {engraphis-1.7 → engraphis-1.7.3}/engraphis/cloud_session.py +0 -0
  199. {engraphis-1.7 → engraphis-1.7.3}/engraphis/config.py +0 -0
  200. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/adaptive_context.py +0 -0
  201. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/codegraph_export.py +0 -0
  202. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/conflicts.py +0 -0
  203. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/consolidate.py +0 -0
  204. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/documents.py +0 -0
  205. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/fsutil.py +0 -0
  206. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/graph_layers.py +0 -0
  207. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/graph_policy.py +0 -0
  208. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/ids.py +0 -0
  209. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/obsidian.py +0 -0
  210. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/poisoning.py +0 -0
  211. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/query_planner.py +0 -0
  212. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/retention_policy.py +0 -0
  213. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/savings.py +0 -0
  214. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/scoring.py +0 -0
  215. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/textutil.py +0 -0
  216. {engraphis-1.7 → engraphis-1.7.3}/engraphis/core/user_model.py +0 -0
  217. {engraphis-1.7 → engraphis-1.7.3}/engraphis/dashboard_assets/__init__.py +0 -0
  218. {engraphis-1.7 → engraphis-1.7.3}/engraphis/dashboard_assets/engraphis-graph-compat.js +0 -0
  219. {engraphis-1.7 → engraphis-1.7.3}/engraphis/dashboard_assets/engraphis-graph-every-worker.js +0 -0
  220. {engraphis-1.7 → engraphis-1.7.3}/engraphis/dashboard_assets/engraphis-icon.png +0 -0
  221. {engraphis-1.7 → engraphis-1.7.3}/engraphis/dashboard_assets/engraphis-spacetime.js +0 -0
  222. {engraphis-1.7 → engraphis-1.7.3}/engraphis/dashboard_assets/engraphis.ico +0 -0
  223. {engraphis-1.7 → engraphis-1.7.3}/engraphis/dashboard_assets/favicon-32.png +0 -0
  224. {engraphis-1.7 → engraphis-1.7.3}/engraphis/dashboard_assets/vendor/d3.LICENSE +0 -0
  225. {engraphis-1.7 → engraphis-1.7.3}/engraphis/dashboard_assets/vendor/d3.min.js +0 -0
  226. {engraphis-1.7 → engraphis-1.7.3}/engraphis/dashboard_assets/vendor/force-graph.LICENSE +0 -0
  227. {engraphis-1.7 → engraphis-1.7.3}/engraphis/dashboard_assets/vendor/force-graph.min.js +0 -0
  228. {engraphis-1.7 → engraphis-1.7.3}/engraphis/dashboard_assets/vendor/manifest.json +0 -0
  229. {engraphis-1.7 → engraphis-1.7.3}/engraphis/device_connect.py +0 -0
  230. {engraphis-1.7 → engraphis-1.7.3}/engraphis/document_import.py +0 -0
  231. {engraphis-1.7 → engraphis-1.7.3}/engraphis/engines/__init__.py +0 -0
  232. {engraphis-1.7 → engraphis-1.7.3}/engraphis/engines/embedder.py +0 -0
  233. {engraphis-1.7 → engraphis-1.7.3}/engraphis/engines/ingest.py +0 -0
  234. {engraphis-1.7 → engraphis-1.7.3}/engraphis/engines/intelligence.py +0 -0
  235. {engraphis-1.7 → engraphis-1.7.3}/engraphis/engines/recall.py +0 -0
  236. {engraphis-1.7 → engraphis-1.7.3}/engraphis/engines/reweight.py +0 -0
  237. {engraphis-1.7 → engraphis-1.7.3}/engraphis/engines/thoughts.py +0 -0
  238. {engraphis-1.7 → engraphis-1.7.3}/engraphis/factory.py +0 -0
  239. {engraphis-1.7 → engraphis-1.7.3}/engraphis/graphdata.py +0 -0
  240. {engraphis-1.7 → engraphis-1.7.3}/engraphis/hosted_client.py +0 -0
  241. {engraphis-1.7 → engraphis-1.7.3}/engraphis/http_security.py +0 -0
  242. {engraphis-1.7 → engraphis-1.7.3}/engraphis/inspector/__init__.py +0 -0
  243. {engraphis-1.7 → engraphis-1.7.3}/engraphis/inspector/app.py +0 -0
  244. {engraphis-1.7 → engraphis-1.7.3}/engraphis/licensing.py +0 -0
  245. {engraphis-1.7 → engraphis-1.7.3}/engraphis/llm/__init__.py +0 -0
  246. {engraphis-1.7 → engraphis-1.7.3}/engraphis/llm/client.py +0 -0
  247. {engraphis-1.7 → engraphis-1.7.3}/engraphis/local_auth.py +0 -0
  248. {engraphis-1.7 → engraphis-1.7.3}/engraphis/logging_setup.py +0 -0
  249. {engraphis-1.7 → engraphis-1.7.3}/engraphis/mcp_classic_cli.py +0 -0
  250. {engraphis-1.7 → engraphis-1.7.3}/engraphis/mcp_cli.py +0 -0
  251. {engraphis-1.7 → engraphis-1.7.3}/engraphis/mcp_http_cli.py +0 -0
  252. {engraphis-1.7 → engraphis-1.7.3}/engraphis/models.py +0 -0
  253. {engraphis-1.7 → engraphis-1.7.3}/engraphis/netutil.py +0 -0
  254. {engraphis-1.7 → engraphis-1.7.3}/engraphis/observability.py +0 -0
  255. {engraphis-1.7 → engraphis-1.7.3}/engraphis/obsidian_import.py +0 -0
  256. {engraphis-1.7 → engraphis-1.7.3}/engraphis/private_state.py +0 -0
  257. {engraphis-1.7 → engraphis-1.7.3}/engraphis/read_only_api.py +0 -0
  258. {engraphis-1.7 → engraphis-1.7.3}/engraphis/redirector.py +0 -0
  259. {engraphis-1.7 → engraphis-1.7.3}/engraphis/routes/__init__.py +0 -0
  260. {engraphis-1.7 → engraphis-1.7.3}/engraphis/routes/memory.py +0 -0
  261. {engraphis-1.7 → engraphis-1.7.3}/engraphis/routes/vault.py +0 -0
  262. {engraphis-1.7 → engraphis-1.7.3}/engraphis/static/__init__.py +0 -0
  263. {engraphis-1.7 → engraphis-1.7.3}/engraphis/static/dashboard.css +0 -0
  264. {engraphis-1.7 → engraphis-1.7.3}/engraphis/static/engraphis-graph.js +0 -0
  265. {engraphis-1.7 → engraphis-1.7.3}/engraphis/static/engraphis-icon.png +0 -0
  266. {engraphis-1.7 → engraphis-1.7.3}/engraphis/static/engraphis.ico +0 -0
  267. {engraphis-1.7 → engraphis-1.7.3}/engraphis/static/favicon-32.png +0 -0
  268. {engraphis-1.7 → engraphis-1.7.3}/engraphis/static/vendor/d3.LICENSE +0 -0
  269. {engraphis-1.7 → engraphis-1.7.3}/engraphis/static/vendor/d3.min.js +0 -0
  270. {engraphis-1.7 → engraphis-1.7.3}/engraphis/static/vendor/force-graph.LICENSE +0 -0
  271. {engraphis-1.7 → engraphis-1.7.3}/engraphis/static/vendor/force-graph.min.js +0 -0
  272. {engraphis-1.7 → engraphis-1.7.3}/engraphis/static/vendor/marked.LICENSE +0 -0
  273. {engraphis-1.7 → engraphis-1.7.3}/engraphis/static/vendor/marked.min.js +0 -0
  274. {engraphis-1.7 → engraphis-1.7.3}/engraphis/static/vendor/purify.min.js +0 -0
  275. {engraphis-1.7 → engraphis-1.7.3}/engraphis/stores/__init__.py +0 -0
  276. {engraphis-1.7 → engraphis-1.7.3}/engraphis/stores/graph.py +0 -0
  277. {engraphis-1.7 → engraphis-1.7.3}/engraphis/stores/ledger.py +0 -0
  278. {engraphis-1.7 → engraphis-1.7.3}/engraphis/stores/vaults.py +0 -0
  279. {engraphis-1.7 → engraphis-1.7.3}/engraphis/stores/vectors.py +0 -0
  280. {engraphis-1.7 → engraphis-1.7.3}/engraphis/update_check.py +0 -0
  281. {engraphis-1.7 → engraphis-1.7.3}/engraphis.egg-info/dependency_links.txt +0 -0
  282. {engraphis-1.7 → engraphis-1.7.3}/engraphis.egg-info/entry_points.txt +0 -0
  283. {engraphis-1.7 → engraphis-1.7.3}/engraphis.egg-info/top_level.txt +0 -0
  284. {engraphis-1.7 → engraphis-1.7.3}/eval/BASELINES.md +0 -0
  285. {engraphis-1.7 → engraphis-1.7.3}/eval/EVIDENCE.md +0 -0
  286. {engraphis-1.7 → engraphis-1.7.3}/eval/__init__.py +0 -0
  287. {engraphis-1.7 → engraphis-1.7.3}/eval/ablation.py +0 -0
  288. {engraphis-1.7 → engraphis-1.7.3}/eval/adversarial_memory_security.py +0 -0
  289. {engraphis-1.7 → engraphis-1.7.3}/eval/agent_benchmarks.py +0 -0
  290. {engraphis-1.7 → engraphis-1.7.3}/eval/benchmark.py +0 -0
  291. {engraphis-1.7 → engraphis-1.7.3}/eval/chunking_eval.py +0 -0
  292. {engraphis-1.7 → engraphis-1.7.3}/eval/code_agent_ab.py +0 -0
  293. {engraphis-1.7 → engraphis-1.7.3}/eval/code_arm.py +0 -0
  294. {engraphis-1.7 → engraphis-1.7.3}/eval/configs/longmemeval_v2_engraphis.json +0 -0
  295. {engraphis-1.7 → engraphis-1.7.3}/eval/configs/longmemeval_v2_engraphis_planner.json +0 -0
  296. {engraphis-1.7 → engraphis-1.7.3}/eval/configs/longmemeval_v2_engraphis_planner_type_limits.json +0 -0
  297. {engraphis-1.7 → engraphis-1.7.3}/eval/configs/longmemeval_v2_engraphis_type_limits.json +0 -0
  298. {engraphis-1.7 → engraphis-1.7.3}/eval/consolidation_ranking.py +0 -0
  299. {engraphis-1.7 → engraphis-1.7.3}/eval/context_economy.py +0 -0
  300. {engraphis-1.7 → engraphis-1.7.3}/eval/context_efficiency_guardrails.py +0 -0
  301. {engraphis-1.7 → engraphis-1.7.3}/eval/datasets/adversarial.jsonl +0 -0
  302. {engraphis-1.7 → engraphis-1.7.3}/eval/datasets/code_arm.jsonl +0 -0
  303. {engraphis-1.7 → engraphis-1.7.3}/eval/datasets/codemem.jsonl +0 -0
  304. {engraphis-1.7 → engraphis-1.7.3}/eval/datasets/consolidation_ranking.jsonl +0 -0
  305. {engraphis-1.7 → engraphis-1.7.3}/eval/datasets/context_routing_stress.jsonl +0 -0
  306. {engraphis-1.7 → engraphis-1.7.3}/eval/datasets/graph_layer_routing.jsonl +0 -0
  307. {engraphis-1.7 → engraphis-1.7.3}/eval/datasets/graph_multihop.jsonl +0 -0
  308. {engraphis-1.7 → engraphis-1.7.3}/eval/datasets/grounded_distractors.jsonl +0 -0
  309. {engraphis-1.7 → engraphis-1.7.3}/eval/datasets/handoff_quality.jsonl +0 -0
  310. {engraphis-1.7 → engraphis-1.7.3}/eval/datasets/locomo10_repair_manifest.json +0 -0
  311. {engraphis-1.7 → engraphis-1.7.3}/eval/datasets/longdoc.jsonl +0 -0
  312. {engraphis-1.7 → engraphis-1.7.3}/eval/datasets/proactive_ranking.jsonl +0 -0
  313. {engraphis-1.7 → engraphis-1.7.3}/eval/datasets/redteam_poisoning.jsonl +0 -0
  314. {engraphis-1.7 → engraphis-1.7.3}/eval/datasets/resolver_reworded_corrections.jsonl +0 -0
  315. {engraphis-1.7 → engraphis-1.7.3}/eval/datasets/sample.jsonl +0 -0
  316. {engraphis-1.7 → engraphis-1.7.3}/eval/external.py +0 -0
  317. {engraphis-1.7 → engraphis-1.7.3}/eval/extractor_quality.py +0 -0
  318. {engraphis-1.7 → engraphis-1.7.3}/eval/graph_every_bench.py +0 -0
  319. {engraphis-1.7 → engraphis-1.7.3}/eval/graph_traversal.py +0 -0
  320. {engraphis-1.7 → engraphis-1.7.3}/eval/grounded.py +0 -0
  321. {engraphis-1.7 → engraphis-1.7.3}/eval/handoff_quality.py +0 -0
  322. {engraphis-1.7 → engraphis-1.7.3}/eval/harness.py +0 -0
  323. {engraphis-1.7 → engraphis-1.7.3}/eval/hosted_evidence.py +0 -0
  324. {engraphis-1.7 → engraphis-1.7.3}/eval/hosted_ledger.py +0 -0
  325. {engraphis-1.7 → engraphis-1.7.3}/eval/hosted_luna.py +0 -0
  326. {engraphis-1.7 → engraphis-1.7.3}/eval/longmemeval_v2.py +0 -0
  327. {engraphis-1.7 → engraphis-1.7.3}/eval/longmemeval_v2_evidence.py +0 -0
  328. {engraphis-1.7 → engraphis-1.7.3}/eval/longmemeval_v2_matrix.py +0 -0
  329. {engraphis-1.7 → engraphis-1.7.3}/eval/metrics.py +0 -0
  330. {engraphis-1.7 → engraphis-1.7.3}/eval/performance.py +0 -0
  331. {engraphis-1.7 → engraphis-1.7.3}/eval/planned_recall.py +0 -0
  332. {engraphis-1.7 → engraphis-1.7.3}/eval/proactive_ranking.py +0 -0
  333. {engraphis-1.7 → engraphis-1.7.3}/eval/productivity.py +0 -0
  334. {engraphis-1.7 → engraphis-1.7.3}/eval/public_readiness.py +0 -0
  335. {engraphis-1.7 → engraphis-1.7.3}/eval/redteam_poisoning.py +0 -0
  336. {engraphis-1.7 → engraphis-1.7.3}/eval/reinforcement.py +0 -0
  337. {engraphis-1.7 → engraphis-1.7.3}/eval/resource_hierarchy.py +0 -0
  338. {engraphis-1.7 → engraphis-1.7.3}/eval/run_longmemeval_v2.py +0 -0
  339. {engraphis-1.7 → engraphis-1.7.3}/railway.json +0 -0
  340. {engraphis-1.7 → engraphis-1.7.3}/requirements.txt +0 -0
  341. {engraphis-1.7 → engraphis-1.7.3}/scripts/__init__.py +0 -0
  342. {engraphis-1.7 → engraphis-1.7.3}/scripts/approve_memory.py +0 -0
  343. {engraphis-1.7 → engraphis-1.7.3}/scripts/backfill_graph.py +0 -0
  344. {engraphis-1.7 → engraphis-1.7.3}/scripts/check_codeql_sarif.py +0 -0
  345. {engraphis-1.7 → engraphis-1.7.3}/scripts/cli.py +0 -0
  346. {engraphis-1.7 → engraphis-1.7.3}/scripts/connect.py +0 -0
  347. {engraphis-1.7 → engraphis-1.7.3}/scripts/consolidate.py +0 -0
  348. {engraphis-1.7 → engraphis-1.7.3}/scripts/entry.py +0 -0
  349. {engraphis-1.7 → engraphis-1.7.3}/scripts/externalize_dashboard_assets.py +0 -0
  350. {engraphis-1.7 → engraphis-1.7.3}/scripts/graph_cli.py +0 -0
  351. {engraphis-1.7 → engraphis-1.7.3}/scripts/graph_server.py +0 -0
  352. {engraphis-1.7 → engraphis-1.7.3}/scripts/importer.py +0 -0
  353. {engraphis-1.7 → engraphis-1.7.3}/scripts/inspector.py +0 -0
  354. {engraphis-1.7 → engraphis-1.7.3}/scripts/install_cc_hook.py +0 -0
  355. {engraphis-1.7 → engraphis-1.7.3}/scripts/install_prime_agent.py +0 -0
  356. {engraphis-1.7 → engraphis-1.7.3}/scripts/install_shortcuts.py +0 -0
  357. {engraphis-1.7 → engraphis-1.7.3}/scripts/legacy_reference.py +0 -0
  358. {engraphis-1.7 → engraphis-1.7.3}/scripts/mcp_server_http.py +0 -0
  359. {engraphis-1.7 → engraphis-1.7.3}/scripts/migrate_to_v2.py +0 -0
  360. {engraphis-1.7 → engraphis-1.7.3}/scripts/normalize_sdist.py +0 -0
  361. {engraphis-1.7 → engraphis-1.7.3}/scripts/release_evidence.py +0 -0
  362. {engraphis-1.7 → engraphis-1.7.3}/scripts/repair_embed_dim.py +0 -0
  363. {engraphis-1.7 → engraphis-1.7.3}/scripts/rescan_poisoning.py +0 -0
  364. {engraphis-1.7 → engraphis-1.7.3}/scripts/run_public_benchmark.py +0 -0
  365. {engraphis-1.7 → engraphis-1.7.3}/scripts/sdk_compat.py +0 -0
  366. {engraphis-1.7 → engraphis-1.7.3}/scripts/seed_from_obsidian.py +0 -0
  367. {engraphis-1.7 → engraphis-1.7.3}/scripts/smoke_entry_points.py +0 -0
  368. {engraphis-1.7 → engraphis-1.7.3}/scripts/start_dashboard.py +0 -0
  369. {engraphis-1.7 → engraphis-1.7.3}/scripts/start_server.py +0 -0
  370. {engraphis-1.7 → engraphis-1.7.3}/scripts/sync.py +0 -0
  371. {engraphis-1.7 → engraphis-1.7.3}/scripts/test_routes.py +0 -0
  372. {engraphis-1.7 → engraphis-1.7.3}/scripts/validate_compose_contract.py +0 -0
  373. {engraphis-1.7 → engraphis-1.7.3}/scripts/verify_release_artifacts.py +0 -0
  374. {engraphis-1.7 → engraphis-1.7.3}/scripts/watch_repo.py +0 -0
  375. {engraphis-1.7 → engraphis-1.7.3}/setup.cfg +0 -0
  376. {engraphis-1.7 → engraphis-1.7.3}/setup.py +0 -0
  377. {engraphis-1.7 → engraphis-1.7.3}/tests/__init__.py +0 -0
  378. {engraphis-1.7 → engraphis-1.7.3}/tests/conftest.py +0 -0
  379. {engraphis-1.7 → engraphis-1.7.3}/tests/test_adaptive_context.py +0 -0
  380. {engraphis-1.7 → engraphis-1.7.3}/tests/test_adaptive_context_route.py +0 -0
  381. {engraphis-1.7 → engraphis-1.7.3}/tests/test_agent_connect.py +0 -0
  382. {engraphis-1.7 → engraphis-1.7.3}/tests/test_app_auth.py +0 -0
  383. {engraphis-1.7 → engraphis-1.7.3}/tests/test_artifact_smoke.py +0 -0
  384. {engraphis-1.7 → engraphis-1.7.3}/tests/test_benchmark_adversarial.py +0 -0
  385. {engraphis-1.7 → engraphis-1.7.3}/tests/test_benchmark_longmemeval_v2.py +0 -0
  386. {engraphis-1.7 → engraphis-1.7.3}/tests/test_bounded_uploads.py +0 -0
  387. {engraphis-1.7 → engraphis-1.7.3}/tests/test_canonical_export.py +0 -0
  388. {engraphis-1.7 → engraphis-1.7.3}/tests/test_chunking_eval.py +0 -0
  389. {engraphis-1.7 → engraphis-1.7.3}/tests/test_chunking_extractor.py +0 -0
  390. {engraphis-1.7 → engraphis-1.7.3}/tests/test_cli_entrypoints.py +0 -0
  391. {engraphis-1.7 → engraphis-1.7.3}/tests/test_client_launch.py +0 -0
  392. {engraphis-1.7 → engraphis-1.7.3}/tests/test_cloud_session.py +0 -0
  393. {engraphis-1.7 → engraphis-1.7.3}/tests/test_code_agent_ab.py +0 -0
  394. {engraphis-1.7 → engraphis-1.7.3}/tests/test_code_index_route_security.py +0 -0
  395. {engraphis-1.7 → engraphis-1.7.3}/tests/test_code_recall_arm.py +0 -0
  396. {engraphis-1.7 → engraphis-1.7.3}/tests/test_codegraph.py +0 -0
  397. {engraphis-1.7 → engraphis-1.7.3}/tests/test_codeql_sarif_gate.py +0 -0
  398. {engraphis-1.7 → engraphis-1.7.3}/tests/test_commercial_hardening.py +0 -0
  399. {engraphis-1.7 → engraphis-1.7.3}/tests/test_compact_recall.py +0 -0
  400. {engraphis-1.7 → engraphis-1.7.3}/tests/test_config.py +0 -0
  401. {engraphis-1.7 → engraphis-1.7.3}/tests/test_conflict_repair.py +0 -0
  402. {engraphis-1.7 → engraphis-1.7.3}/tests/test_conflicts.py +0 -0
  403. {engraphis-1.7 → engraphis-1.7.3}/tests/test_consolidate.py +0 -0
  404. {engraphis-1.7 → engraphis-1.7.3}/tests/test_consolidate_recall.py +0 -0
  405. {engraphis-1.7 → engraphis-1.7.3}/tests/test_consolidation_loop.py +0 -0
  406. {engraphis-1.7 → engraphis-1.7.3}/tests/test_context_efficiency_guardrails.py +0 -0
  407. {engraphis-1.7 → engraphis-1.7.3}/tests/test_core_ids.py +0 -0
  408. {engraphis-1.7 → engraphis-1.7.3}/tests/test_core_store.py +0 -0
  409. {engraphis-1.7 → engraphis-1.7.3}/tests/test_cron_write_tools_workspace_default.py +0 -0
  410. {engraphis-1.7 → engraphis-1.7.3}/tests/test_customer_node_hardening.py +0 -0
  411. {engraphis-1.7 → engraphis-1.7.3}/tests/test_dashboard_button_regressions.py +0 -0
  412. {engraphis-1.7 → engraphis-1.7.3}/tests/test_dashboard_dream_ui.py +0 -0
  413. {engraphis-1.7 → engraphis-1.7.3}/tests/test_dashboard_security_headers_and_open_window.py +0 -0
  414. {engraphis-1.7 → engraphis-1.7.3}/tests/test_dashboard_vendor_assets.py +0 -0
  415. {engraphis-1.7 → engraphis-1.7.3}/tests/test_db_path_default.py +0 -0
  416. {engraphis-1.7 → engraphis-1.7.3}/tests/test_deployment_mode_isolation.py +0 -0
  417. {engraphis-1.7 → engraphis-1.7.3}/tests/test_device_connect.py +0 -0
  418. {engraphis-1.7 → engraphis-1.7.3}/tests/test_document_import_cli.py +0 -0
  419. {engraphis-1.7 → engraphis-1.7.3}/tests/test_document_importer.py +0 -0
  420. {engraphis-1.7 → engraphis-1.7.3}/tests/test_documents.py +0 -0
  421. {engraphis-1.7 → engraphis-1.7.3}/tests/test_embedder_threading.py +0 -0
  422. {engraphis-1.7 → engraphis-1.7.3}/tests/test_embeddings.py +0 -0
  423. {engraphis-1.7 → engraphis-1.7.3}/tests/test_encryption_dependency.py +0 -0
  424. {engraphis-1.7 → engraphis-1.7.3}/tests/test_entity_resolution.py +0 -0
  425. {engraphis-1.7 → engraphis-1.7.3}/tests/test_envelope_additions_v16.py +0 -0
  426. {engraphis-1.7 → engraphis-1.7.3}/tests/test_eval_ablation.py +0 -0
  427. {engraphis-1.7 → engraphis-1.7.3}/tests/test_eval_adversarial_memory_security.py +0 -0
  428. {engraphis-1.7 → engraphis-1.7.3}/tests/test_eval_agent_benchmarks.py +0 -0
  429. {engraphis-1.7 → engraphis-1.7.3}/tests/test_eval_code_arm.py +0 -0
  430. {engraphis-1.7 → engraphis-1.7.3}/tests/test_eval_consolidation_ranking.py +0 -0
  431. {engraphis-1.7 → engraphis-1.7.3}/tests/test_eval_external.py +0 -0
  432. {engraphis-1.7 → engraphis-1.7.3}/tests/test_eval_external_locomo_evidence.py +0 -0
  433. {engraphis-1.7 → engraphis-1.7.3}/tests/test_eval_graph_traversal.py +0 -0
  434. {engraphis-1.7 → engraphis-1.7.3}/tests/test_eval_grounded.py +0 -0
  435. {engraphis-1.7 → engraphis-1.7.3}/tests/test_eval_harness.py +0 -0
  436. {engraphis-1.7 → engraphis-1.7.3}/tests/test_eval_performance.py +0 -0
  437. {engraphis-1.7 → engraphis-1.7.3}/tests/test_eval_redteam_poisoning.py +0 -0
  438. {engraphis-1.7 → engraphis-1.7.3}/tests/test_eval_reinforcement.py +0 -0
  439. {engraphis-1.7 → engraphis-1.7.3}/tests/test_externalize_dashboard_assets.py +0 -0
  440. {engraphis-1.7 → engraphis-1.7.3}/tests/test_extractor.py +0 -0
  441. {engraphis-1.7 → engraphis-1.7.3}/tests/test_fsutil.py +0 -0
  442. {engraphis-1.7 → engraphis-1.7.3}/tests/test_galaxy_gravity_floor.py +0 -0
  443. {engraphis-1.7 → engraphis-1.7.3}/tests/test_galaxy_gravity_slider.py +0 -0
  444. {engraphis-1.7 → engraphis-1.7.3}/tests/test_galaxy_gravity_slider_no_dead_zone.py +0 -0
  445. {engraphis-1.7 → engraphis-1.7.3}/tests/test_graph_cli.py +0 -0
  446. {engraphis-1.7 → engraphis-1.7.3}/tests/test_graph_every_asset.py +0 -0
  447. {engraphis-1.7 → engraphis-1.7.3}/tests/test_graph_extractor.py +0 -0
  448. {engraphis-1.7 → engraphis-1.7.3}/tests/test_graph_server.py +0 -0
  449. {engraphis-1.7 → engraphis-1.7.3}/tests/test_graph_trust_backfill.py +0 -0
  450. {engraphis-1.7 → engraphis-1.7.3}/tests/test_graphdata.py +0 -0
  451. {engraphis-1.7 → engraphis-1.7.3}/tests/test_graphrank.py +0 -0
  452. {engraphis-1.7 → engraphis-1.7.3}/tests/test_hosted_client.py +0 -0
  453. {engraphis-1.7 → engraphis-1.7.3}/tests/test_hosted_evidence.py +0 -0
  454. {engraphis-1.7 → engraphis-1.7.3}/tests/test_hosted_ledger.py +0 -0
  455. {engraphis-1.7 → engraphis-1.7.3}/tests/test_hosted_luna.py +0 -0
  456. {engraphis-1.7 → engraphis-1.7.3}/tests/test_hotfix_security.py +0 -0
  457. {engraphis-1.7 → engraphis-1.7.3}/tests/test_http_security.py +0 -0
  458. {engraphis-1.7 → engraphis-1.7.3}/tests/test_import_chunking.py +0 -0
  459. {engraphis-1.7 → engraphis-1.7.3}/tests/test_import_error_redaction.py +0 -0
  460. {engraphis-1.7 → engraphis-1.7.3}/tests/test_ingest_entities.py +0 -0
  461. {engraphis-1.7 → engraphis-1.7.3}/tests/test_inspector.py +0 -0
  462. {engraphis-1.7 → engraphis-1.7.3}/tests/test_inspector_pro.py +0 -0
  463. {engraphis-1.7 → engraphis-1.7.3}/tests/test_install_cc_hook.py +0 -0
  464. {engraphis-1.7 → engraphis-1.7.3}/tests/test_install_shortcuts.py +0 -0
  465. {engraphis-1.7 → engraphis-1.7.3}/tests/test_intelligence.py +0 -0
  466. {engraphis-1.7 → engraphis-1.7.3}/tests/test_intent_paywall.py +0 -0
  467. {engraphis-1.7 → engraphis-1.7.3}/tests/test_legacy_reference_surface.py +0 -0
  468. {engraphis-1.7 → engraphis-1.7.3}/tests/test_licensing_boundary_docs.py +0 -0
  469. {engraphis-1.7 → engraphis-1.7.3}/tests/test_licensing_launch.py +0 -0
  470. {engraphis-1.7 → engraphis-1.7.3}/tests/test_llm_config.py +0 -0
  471. {engraphis-1.7 → engraphis-1.7.3}/tests/test_llm_dashboard.py +0 -0
  472. {engraphis-1.7 → engraphis-1.7.3}/tests/test_local_auth_browser_session.py +0 -0
  473. {engraphis-1.7 → engraphis-1.7.3}/tests/test_local_isolation.py +0 -0
  474. {engraphis-1.7 → engraphis-1.7.3}/tests/test_logging_setup.py +0 -0
  475. {engraphis-1.7 → engraphis-1.7.3}/tests/test_longmemeval_v2_evidence.py +0 -0
  476. {engraphis-1.7 → engraphis-1.7.3}/tests/test_longmemeval_v2_matrix.py +0 -0
  477. {engraphis-1.7 → engraphis-1.7.3}/tests/test_mcp_annotation_idempotency.py +0 -0
  478. {engraphis-1.7 → engraphis-1.7.3}/tests/test_memory_routes_fixes.py +0 -0
  479. {engraphis-1.7 → engraphis-1.7.3}/tests/test_merge.py +0 -0
  480. {engraphis-1.7 → engraphis-1.7.3}/tests/test_metadata_activity_forgery.py +0 -0
  481. {engraphis-1.7 → engraphis-1.7.3}/tests/test_migration.py +0 -0
  482. {engraphis-1.7 → engraphis-1.7.3}/tests/test_netutil.py +0 -0
  483. {engraphis-1.7 → engraphis-1.7.3}/tests/test_observability.py +0 -0
  484. {engraphis-1.7 → engraphis-1.7.3}/tests/test_obsidian_cli.py +0 -0
  485. {engraphis-1.7 → engraphis-1.7.3}/tests/test_obsidian_importer.py +0 -0
  486. {engraphis-1.7 → engraphis-1.7.3}/tests/test_obsidian_parser.py +0 -0
  487. {engraphis-1.7 → engraphis-1.7.3}/tests/test_obsidian_service.py +0 -0
  488. {engraphis-1.7 → engraphis-1.7.3}/tests/test_packaging.py +0 -0
  489. {engraphis-1.7 → engraphis-1.7.3}/tests/test_parse_provider_chain.py +0 -0
  490. {engraphis-1.7 → engraphis-1.7.3}/tests/test_personal_folders.py +0 -0
  491. {engraphis-1.7 → engraphis-1.7.3}/tests/test_planned_recall.py +0 -0
  492. {engraphis-1.7 → engraphis-1.7.3}/tests/test_planned_recall_eval.py +0 -0
  493. {engraphis-1.7 → engraphis-1.7.3}/tests/test_poisoning.py +0 -0
  494. {engraphis-1.7 → engraphis-1.7.3}/tests/test_postgres_schema.py +0 -0
  495. {engraphis-1.7 → engraphis-1.7.3}/tests/test_private_state_boundaries.py +0 -0
  496. {engraphis-1.7 → engraphis-1.7.3}/tests/test_proactive_context.py +0 -0
  497. {engraphis-1.7 → engraphis-1.7.3}/tests/test_proactive_ranking.py +0 -0
  498. {engraphis-1.7 → engraphis-1.7.3}/tests/test_productivity_eval.py +0 -0
  499. {engraphis-1.7 → engraphis-1.7.3}/tests/test_protocol_upgrades.py +0 -0
  500. {engraphis-1.7 → engraphis-1.7.3}/tests/test_provenance_flags.py +0 -0
  501. {engraphis-1.7 → engraphis-1.7.3}/tests/test_provider_docs.py +0 -0
  502. {engraphis-1.7 → engraphis-1.7.3}/tests/test_provider_error_redaction.py +0 -0
  503. {engraphis-1.7 → engraphis-1.7.3}/tests/test_public_benchmark_workflow.py +0 -0
  504. {engraphis-1.7 → engraphis-1.7.3}/tests/test_public_readiness.py +0 -0
  505. {engraphis-1.7 → engraphis-1.7.3}/tests/test_public_research_boundary.py +0 -0
  506. {engraphis-1.7 → engraphis-1.7.3}/tests/test_public_retrieval_benchmark_workflow.py +0 -0
  507. {engraphis-1.7 → engraphis-1.7.3}/tests/test_railway_runtime.py +0 -0
  508. {engraphis-1.7 → engraphis-1.7.3}/tests/test_read_only_api.py +0 -0
  509. {engraphis-1.7 → engraphis-1.7.3}/tests/test_ready.py +0 -0
  510. {engraphis-1.7 → engraphis-1.7.3}/tests/test_recall_arm_candidate_k_cap.py +0 -0
  511. {engraphis-1.7 → engraphis-1.7.3}/tests/test_recall_entity_workspace_widening.py +0 -0
  512. {engraphis-1.7 → engraphis-1.7.3}/tests/test_recall_recovery.py +0 -0
  513. {engraphis-1.7 → engraphis-1.7.3}/tests/test_recall_release.py +0 -0
  514. {engraphis-1.7 → engraphis-1.7.3}/tests/test_receipts.py +0 -0
  515. {engraphis-1.7 → engraphis-1.7.3}/tests/test_relay_device_credentials.py +0 -0
  516. {engraphis-1.7 → engraphis-1.7.3}/tests/test_release_artifacts.py +0 -0
  517. {engraphis-1.7 → engraphis-1.7.3}/tests/test_release_grounded_eval.py +0 -0
  518. {engraphis-1.7 → engraphis-1.7.3}/tests/test_release_manifest_gate.py +0 -0
  519. {engraphis-1.7 → engraphis-1.7.3}/tests/test_release_proactive_divergence.py +0 -0
  520. {engraphis-1.7 → engraphis-1.7.3}/tests/test_release_py39_parity.py +0 -0
  521. {engraphis-1.7 → engraphis-1.7.3}/tests/test_release_recall_contract.py +0 -0
  522. {engraphis-1.7 → engraphis-1.7.3}/tests/test_remember_atomicity.py +0 -0
  523. {engraphis-1.7 → engraphis-1.7.3}/tests/test_remember_many.py +0 -0
  524. {engraphis-1.7 → engraphis-1.7.3}/tests/test_reproducible_sdist.py +0 -0
  525. {engraphis-1.7 → engraphis-1.7.3}/tests/test_rescan_poisoning.py +0 -0
  526. {engraphis-1.7 → engraphis-1.7.3}/tests/test_resource_hierarchy_eval.py +0 -0
  527. {engraphis-1.7 → engraphis-1.7.3}/tests/test_resources.py +0 -0
  528. {engraphis-1.7 → engraphis-1.7.3}/tests/test_retention.py +0 -0
  529. {engraphis-1.7 → engraphis-1.7.3}/tests/test_retention_policy.py +0 -0
  530. {engraphis-1.7 → engraphis-1.7.3}/tests/test_round17_fixes.py +0 -0
  531. {engraphis-1.7 → engraphis-1.7.3}/tests/test_run_public_benchmark.py +0 -0
  532. {engraphis-1.7 → engraphis-1.7.3}/tests/test_savings.py +0 -0
  533. {engraphis-1.7 → engraphis-1.7.3}/tests/test_scoring.py +0 -0
  534. {engraphis-1.7 → engraphis-1.7.3}/tests/test_screen_demo.py +0 -0
  535. {engraphis-1.7 → engraphis-1.7.3}/tests/test_security_fixes.py +0 -0
  536. {engraphis-1.7 → engraphis-1.7.3}/tests/test_service.py +0 -0
  537. {engraphis-1.7 → engraphis-1.7.3}/tests/test_service_graph.py +0 -0
  538. {engraphis-1.7 → engraphis-1.7.3}/tests/test_service_isolation.py +0 -0
  539. {engraphis-1.7 → engraphis-1.7.3}/tests/test_session_idempotent.py +0 -0
  540. {engraphis-1.7 → engraphis-1.7.3}/tests/test_session_start_hook.py +0 -0
  541. {engraphis-1.7 → engraphis-1.7.3}/tests/test_setup_plugin_distribution.py +0 -0
  542. {engraphis-1.7 → engraphis-1.7.3}/tests/test_skill_package.py +0 -0
  543. {engraphis-1.7 → engraphis-1.7.3}/tests/test_slider_response.py +0 -0
  544. {engraphis-1.7 → engraphis-1.7.3}/tests/test_smart_mcp_gateway.py +0 -0
  545. {engraphis-1.7 → engraphis-1.7.3}/tests/test_start_dashboard.py +0 -0
  546. {engraphis-1.7 → engraphis-1.7.3}/tests/test_start_session_workspace_default.py +0 -0
  547. {engraphis-1.7 → engraphis-1.7.3}/tests/test_store_class_integrity.py +0 -0
  548. {engraphis-1.7 → engraphis-1.7.3}/tests/test_store_v4_migration.py +0 -0
  549. {engraphis-1.7 → engraphis-1.7.3}/tests/test_sync_cli.py +0 -0
  550. {engraphis-1.7 → engraphis-1.7.3}/tests/test_sync_dashboard.py +0 -0
  551. {engraphis-1.7 → engraphis-1.7.3}/tests/test_sync_e2ee.py +0 -0
  552. {engraphis-1.7 → engraphis-1.7.3}/tests/test_sync_tombstones.py +0 -0
  553. {engraphis-1.7 → engraphis-1.7.3}/tests/test_update_check.py +0 -0
  554. {engraphis-1.7 → engraphis-1.7.3}/tests/test_user_model.py +0 -0
  555. {engraphis-1.7 → engraphis-1.7.3}/tests/test_v1_auto_migrate.py +0 -0
  556. {engraphis-1.7 → engraphis-1.7.3}/tests/test_v1_hardening.py +0 -0
  557. {engraphis-1.7 → engraphis-1.7.3}/tests/test_v1_ingest_trust.py +0 -0
  558. {engraphis-1.7 → engraphis-1.7.3}/tests/test_v1_licensing.py +0 -0
  559. {engraphis-1.7 → engraphis-1.7.3}/tests/test_v2_service_binding.py +0 -0
  560. {engraphis-1.7 → engraphis-1.7.3}/tests/test_vector_scale.py +0 -0
  561. {engraphis-1.7 → engraphis-1.7.3}/tests/test_workspace_isolation.py +0 -0
  562. {engraphis-1.7 → engraphis-1.7.3}/tests/test_workspace_ops.py +0 -0
@@ -11,12 +11,12 @@ For the locked operator sequence for a public canonical run, see
11
11
  Every exact public aggregate retained below comes from the checked-in, public-safe
12
12
  [`offline-fixtures-v1.json`](docs/benchmark-evidence/offline-fixtures-v1.json) artifact. Its
13
13
  SHA-256 is
14
- `8a74e9f48e25f33d625d4cc5c1b14fec3055891944adccf615c440e84e4b0255`, also recorded in the
14
+ `4d5056d137182ae5cf116c5d59af18b38a7a0ed7731885e9597f63e549cb46b7`, also recorded in the
15
15
  adjacent `.sha256` file. The artifact contains no raw questions, answers, prompts, customer data,
16
16
  or per-record content fingerprints.
17
17
 
18
18
  The fixture-suite digest is
19
- `4d7e40607319cd4bf8caee3897f1e416dbe5b81998b37a7e4839409ee2923537`. The artifact defines
19
+ `f5544b56f009b2fc16dbae992039971899daf2b0095ee8d15bad5914c7f399a9`. The artifact defines
20
20
  the digest algorithm and records the SHA-256 of every suite and dataset file. Each evidence ID
21
21
  also binds its exact command through `sha256(UTF-8 exact command)`:
22
22
 
@@ -72,8 +72,8 @@ frontier-model QA score.
72
72
  JSON-safe schema. Payload proxies are sampled once per question, independently of the number
73
73
  of timed iterations; they are not serialized MCP envelopes or transport responses. In the
74
74
  registered CodeMem run, 26 payload samples total **23,810** full-proxy
75
- `engraphis.regex.v1` tokens versus **10,202** compact-proxy tokens, avoiding **13,608** proxy
76
- tokens (**57.15% lower**), while 260 recalls are timed. Packed context across the same 26
75
+ `engraphis.regex.v1` tokens versus **10,982** compact-proxy tokens, avoiding **12,828** proxy
76
+ tokens (**53.88% lower**), while 260 recalls are timed. Packed context across the same 26
77
77
  samples averages **85.38** tokens and reaches **108** under a 1,500-token cap; Recall@5,
78
78
  hit@5, and answer-token recall remain 1.000. These aggregates are evidence ID
79
79
  `offline-performance` in the registry above. `--filler-memories`, `--candidate-k`, and
@@ -1,7 +1,114 @@
1
1
  # Changelog
2
2
 
3
- All notable changes to Engraphis are documented here. Format loosely follows
4
- [Keep a Changelog](https://keepachangelog.com/); versions use SemVer.
3
+ All notable changes to Engraphis are documented here. Format loosely follows
4
+ [Keep a Changelog](https://keepachangelog.com/); versions use SemVer.
5
+
6
+ ## [Unreleased]
7
+
8
+ - Added schema 18 content-free command receipts and cross-process source revalidation for
9
+ corrections, approvals, promotions and merges. Combined memory revisions have expected
10
+ versions, operation IDs, atomic metadata/history, and typed conflicts.
11
+ - Sync publication uses current canonical state and generation-aware repair; delayed work
12
+ cannot restore erased vectors. Native-index failures roll back canonical changes.
13
+ - Context retains distinct scoped evidence; synthesis falls back when complete source
14
+ units, titles, values or conditions are lost. Answer coverage defaults to unknown.
15
+ - Added project-aware memory workflows and paginated record history.
16
+ - Library cursors survive unrelated activity and work across processes. File-backed
17
+ browsing uses bounded live read snapshots; completed graph migrations are not
18
+ repeated at ordinary startup.
19
+ - Ask separates answer/preview retries, cancellation and answer coverage. Home uses
20
+ actionable review state; Explore pauses hidden views through existing renderers.
21
+ - Added content-free diagnostics and build/capability information, strict coding
22
+ acceptance validation and a file-backed independent-process capacity harness.
23
+ These provide measurement infrastructure, not verified 100k capacity claims.
24
+
25
+ ## [1.7.3] - 2026-09-07
26
+
27
+ ### Fixed
28
+
29
+ - Preserved Galaxy carrier lane and kinematic orbit invariants through central-field slider
30
+ changes, including the global and core cached radii used by the next fixed slice.
31
+ - Refreshed the retained local orbital speed budget when the effective local-gravity control
32
+ changes, preventing a stale phase cache from masking the slider.
33
+ - Kept high-density Galaxy layouts inside the strict speed cap while maintaining authored
34
+ carrier and nested local orbit phase.
35
+ - Bounded the zero central-gravity radius response so finite far-field envelopes cannot leave
36
+ oversized kinematic carrier caches behind, and counted fallback speed-cap activations.
37
+ - Bumped the deterministic Galaxy scene algorithm identity to `galaxy-v13-responsive-compact-orbits`
38
+ so cached layouts cannot be confused with the revised placement contract.
39
+
40
+ ### Tests
41
+
42
+ - Added deterministic regressions for central-field cache scaling and local-gravity phase
43
+ invalidation, alongside the existing 500-body and browser accessibility coverage.
44
+
45
+ ## [1.7.2] - 2026-09-05
46
+
47
+ ### Added
48
+
49
+ - Added `idx_vector_index_repairs_queue` composite index on `(identity, generation, memory_id)`
50
+ in `engraphis/core/schema.py` to prevent table scans during external vector repair queue dequeue.
51
+ - Added explicit operator opt-out verification with `403 Forbidden` (`processing_operator_disabled`)
52
+ for authenticated direct POST requests to `/managed-processing` in `engraphis/routes/v2_api.py`.
53
+ - Added `_only_environment_title_order_changed` in `engraphis/core/resolve.py` ensuring unkeyed
54
+ facts with permuted environment titles resolve to `NOOP` rather than false conflicts.
55
+ - Added comprehensive reliability regression coverage covering storage concurrency, vector index
56
+ repair indexing, and managed processing policy enforcement.
57
+
58
+ ### Fixed
59
+
60
+ - Preserved `[all]` extras fallback for legacy editable installations in `scripts/update.py`
61
+ when no installation profile is recorded.
62
+ - Fixed external vector index hydration on physical index recreation and rebuilds.
63
+ - Fixed docstring dedenting and contract normalization across Python 3.9 through 3.14.
64
+
65
+ ### Changed
66
+
67
+ - Bumped `tree-sitter-language-pack` to 1.16.1.
68
+ - Updated `codeql-action`, `anchore/scan-action`, and `anchore/sbom-action` GitHub Actions dependencies.
69
+
70
+ ### Reliability and privacy
71
+
72
+ - Preserve distinct context claims, qualified sentences and complete units under tight budgets;
73
+ measure false NOOP outcomes through real write sequences.
74
+ - Preserve separate sources during packing and keep MCP gist responses within the canonical
75
+ context budget. Response caps retain or omit complete context and report accurate usage.
76
+ - Canonical temporal browsing, server-side Library filtering/pagination, independent Ask states,
77
+ actionable setup diagnostics and retained installation capabilities.
78
+ - Cross-process write resolution and schema 17 durable vector-index repair, with canonical
79
+ fallback and bounded NumPy scans. Public engine entrypoints remain compatible.
80
+ - Commit native batch indexing with canonical memory state and roll back both on failure.
81
+ Retain the established 12,000-memory graph window pending quality evidence for a smaller one.
82
+ - Explicit workspace managed-processing approval; missing legacy policy pauses readable uploads.
83
+ Requires the compatible cloud migration before rollout. Encrypted sync remains separate.
84
+ - Generated Smart/Classic MCP contract and integration inputs; Pro three-day and Team ten-day
85
+ trial copy aligned with cloud authority. Real browser and Workers evidence remains distinct
86
+ from production verification. See `docs/RELIABILITY_PROGRAM.md`.
87
+ - Isolate the manual graph diagnostic on an available local port with a private in-memory
88
+ server; fail before contacting an existing service when the requested port is occupied.
89
+
90
+ ## [1.7.1] - 2026-09-03
91
+
92
+ ### Fixed
93
+
94
+ - Isolated stdio transport wire in `engraphis.mcp_server`: redirected `sys.stdout`
95
+ to `sys.stderr` while preserving the raw binary stream for JSON-RPC wire
96
+ communication, preventing external library stdout chatter (e.g. PyTorch,
97
+ Hugging Face, tqdm) from corrupting the wire and triggering `write EOF` stream
98
+ disconnection errors in Node.js harnesses (Command Code, Cursor, Claude Code, Cline).
99
+ - Added thread-safe singleton initialization with `threading.Lock()` to
100
+ `engraphis.mcp_server.service()`.
101
+ - Added non-blocking background daemon warmup (`_start_background_warmup()`) in
102
+ `engraphis.mcp_server` to pre-warm the database and embedder, eliminating
103
+ cold-start latency and timeout disconnects on the first MCP tool call. Can be
104
+ bypassed with `ENGRAPHIS_MCP_WARMUP=0`.
105
+ - Added cache-first fast path (`local_files_only=True`) in
106
+ `SentenceTransformerEmbedder` (`engraphis/backends/embedder_st.py`), allowing
107
+ locally cached models to initialize in ~0.3s without network calls or remote
108
+ registry checks.
109
+ - Added embedder forward-pass diagnostic check to `engraphis-init --check` and
110
+ added `engraphis-init --prefetch` command to download and cache model weights
111
+ during setup.
5
112
 
6
113
  ## [1.7] - 2026-09-03
7
114
 
@@ -13,9 +120,8 @@ All notable changes to Engraphis are documented here. Format loosely follows
13
120
  (savings_ratio 0.0 -> 0.4975) with no caller-side arguments. The packer is the
14
121
  existing 1.6 contract; the change just makes it the default fast path.
15
122
  - Smart MCP `engraphis_remember` now accepts and forwards `subject_key` and
16
- `claim_kind` to the classic tool. Without this, every keyed write silently stored
17
- empty keys because the served gateway surface dropped the parameters; the
18
- documented safe-supersession mechanism is now reachable through MCP.
123
+ `claim_kind` to the classic tool, so the documented safe-supersession
124
+ mechanism is reachable through MCP.
19
125
  - A new integration at `integrations/commandcode/session_start_hook.py` (with
20
126
  `scripts/install_cc_hook.py` for idempotent user-scope install/uninstall) wires
21
127
  durable-memory recall into Command Code's SessionStart lifecycle: each new
@@ -27,7 +133,11 @@ All notable changes to Engraphis are documented here. Format loosely follows
27
133
  / `ENGRAPHIS_RERANK_MODEL`). Evaluated offline on the bundled retrieval gates
28
134
  (sample.jsonl, codemem.jsonl, k=5): hit@5 stays at 1.0 with zero per-question
29
135
  regressions, MRR@5 lifts 0.889 -> 0.944 (sample) and 0.962 -> 0.981 (codemem),
30
- with ~15 ms per query added. Not the default; flip with a one-line config.
136
+ with ~15 ms per query added. Not the default; set the value in the trusted
137
+ config file (`~/.engraphis/config.env` on the operator account, or as a
138
+ process environment variable); Engraphis deliberately does not read the
139
+ CWD `.env`, so editing `./.env` and restarting leaves the identity
140
+ reranker active. Restart the MCP server and dashboard after the change.
31
141
 
32
142
  ### Changed
33
143
 
@@ -55,10 +165,8 @@ All notable changes to Engraphis are documented here. Format loosely follows
55
165
 
56
166
  ### Fixed
57
167
 
58
- - The Smart MCP gateway `engraphis_remember` binding was silently dropping
59
- `subject_key` and `claim_kind`; this is the underlying cause of the
60
- benchmark correction-miss pattern that the reworded-correction detector
61
- then had to compensate for.
168
+ - The Smart MCP gateway `engraphis_remember` now forwards `subject_key` and
169
+ `claim_kind` end to end, matching the **Added** entry above.
62
170
 
63
171
  ### Operational
64
172
 
@@ -10,6 +10,8 @@ recursive-include engraphis/dashboard_assets/vendor *
10
10
  include engraphis/commercial_manifest.json
11
11
  include LICENSE NOTICE README.md CHANGELOG.md BENCHMARKS.md
12
12
  include docs/RECALL_RECOVERY.md
13
+ include docs/REWORK_EXECUTION.md docs/ENGINE_CAPACITY_PROTOCOL.md docs/CODING_ACCEPTANCE_CORPUS.md
14
+ include docs/PAID_EVALUATION_PROPOSAL.md
13
15
  include docs/DOCUMENT_IMPORT.md docs/OBSIDIAN_IMPORT.md
14
16
  include docs/images/context-efficiency.svg
15
17
  include pyproject.toml
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: engraphis
3
- Version: 1.7
3
+ Version: 1.7.3
4
4
  Summary: Local-first AI memory engine for agents — Ebbinghaus decay, interaction-aware recall, bi-temporal facts, hybrid retrieval, and an MCP server. You bring the LLM.
5
5
  Author: The Engraphis Authors
6
6
  License-Expression: Apache-2.0
@@ -52,7 +52,7 @@ Requires-Dist: sentence-transformers>=2.7; python_version >= "3.10" and extra ==
52
52
  Provides-Extra: code
53
53
  Requires-Dist: tree-sitter>=0.23; python_version >= "3.10" and extra == "code"
54
54
  Requires-Dist: tree-sitter-language-pack==0.9.0; python_version < "3.10" and extra == "code"
55
- Requires-Dist: tree-sitter-language-pack==1.15.8; python_version >= "3.10" and extra == "code"
55
+ Requires-Dist: tree-sitter-language-pack==1.16.1; python_version >= "3.10" and extra == "code"
56
56
  Provides-Extra: documents
57
57
  Requires-Dist: pypdf>=6.15.0; extra == "documents"
58
58
  Requires-Dist: Pillow>=12.3.0; python_version >= "3.10" and extra == "documents"
@@ -78,7 +78,7 @@ Requires-Dist: pydantic-settings>=2.14.2; python_version >= "3.10" and extra ==
78
78
  Requires-Dist: cryptography>=50.0.0; python_version >= "3.10" and extra == "all"
79
79
  Requires-Dist: tree-sitter>=0.23; python_version >= "3.10" and extra == "all"
80
80
  Requires-Dist: tree-sitter-language-pack==0.9.0; python_version < "3.10" and extra == "all"
81
- Requires-Dist: tree-sitter-language-pack==1.15.8; python_version >= "3.10" and extra == "all"
81
+ Requires-Dist: tree-sitter-language-pack==1.16.1; python_version >= "3.10" and extra == "all"
82
82
  Requires-Dist: pypdf>=6.15.0; extra == "all"
83
83
  Requires-Dist: Pillow>=12.3.0; python_version >= "3.10" and extra == "all"
84
84
  Requires-Dist: pytesseract>=0.3.10; python_version >= "3.10" and extra == "all"
@@ -107,7 +107,7 @@ Requires-Dist: pydantic-settings>=2.14.2; python_version >= "3.10" and extra ==
107
107
  Requires-Dist: cryptography>=50.0.0; python_version >= "3.10" and extra == "test"
108
108
  Requires-Dist: tree-sitter>=0.23; python_version >= "3.10" and extra == "test"
109
109
  Requires-Dist: tree-sitter-language-pack==0.9.0; python_version < "3.10" and extra == "test"
110
- Requires-Dist: tree-sitter-language-pack==1.15.8; python_version >= "3.10" and extra == "test"
110
+ Requires-Dist: tree-sitter-language-pack==1.16.1; python_version >= "3.10" and extra == "test"
111
111
  Requires-Dist: pypdf>=6.15.0; extra == "test"
112
112
  Requires-Dist: Pillow>=12.3.0; python_version >= "3.10" and extra == "test"
113
113
  Requires-Dist: pytesseract>=0.3.10; python_version >= "3.10" and extra == "test"
@@ -162,7 +162,7 @@ by default, or accept an explicit workspace plus optional `from_ts`, `to_ts`, an
162
162
  `release_version` filters.
163
163
 
164
164
  <p align="center">
165
- <img src="https://raw.githubusercontent.com/Coding-Dev-Tools/engraphis/main/docs/images/context-efficiency.svg" alt="Dark chart of local measurements and deterministic fixtures, including a local LoCoMo diagnostic marked with an asterisk. Cross-session handoff satisfaction rises from 3 of 15 queries with the last memories to 15 of 15 with proactive ranking or a consolidated summary. Intent-layered graph routing rises from 0 of 3 to 3 of 3 correct top-1 targets, and two-hop graph recall rises from 0 of 3 with one-hop expansion to 3 of 3 with Personalized PageRank. Consolidation-aware ranking selects the expected digest in 2 of 2 summary cases instead of 0 of 2 for the baseline. Structure-aware chunks reduce context from 740.3 to 214.3 tokens and the smallest evidence-holding memory from 162.2 to 42.4 tokens. A compact JSON-shape proxy uses 10,202 rather than 23,810 tokens. Grounded recall makes 10 of 10 correct decisions and packed context averages 85.38 tokens under a 1,500-token cap." width="100%">
165
+ <img src="https://raw.githubusercontent.com/Coding-Dev-Tools/engraphis/main/docs/images/context-efficiency.svg" alt="Dark chart of local measurements and deterministic fixtures, including a local LoCoMo diagnostic marked with an asterisk. Cross-session handoff satisfaction rises from 3 of 15 queries with the last memories to 15 of 15 with proactive ranking or a consolidated summary. Intent-layered graph routing rises from 0 of 3 to 3 of 3 correct top-1 targets, and two-hop graph recall rises from 0 of 3 with one-hop expansion to 3 of 3 with Personalized PageRank. Consolidation-aware ranking selects the expected digest in 2 of 2 summary cases instead of 0 of 2 for the baseline. Structure-aware chunks reduce context from 740.3 to 214.3 tokens and the smallest evidence-holding memory from 162.2 to 42.4 tokens. A compact JSON-shape proxy uses 10,982 rather than 23,810 tokens. Grounded recall makes 11 of 11 correct decisions and packed context averages 85.38 tokens under a 1,500-token cap." width="100%">
166
166
  <br>
167
167
  <sup>Less repeated history means more room for the task, tools, and useful evidence.</sup>
168
168
  </p>
@@ -191,13 +191,13 @@ its counting boundary explicit.
191
191
  |---|---|---|---|
192
192
  | Retrieved top-5 memory content, averaged per question | Whole documents: **740.3** tokens → structure-aware chunks: **214.3** tokens | **526.0 fewer tokens per question** (**71.1% lower**, about **3.5× smaller**) | Recall@5 **1.000** in both modes across 6 documents and 18 questions |
193
193
  | Smallest returned memory that contains the reference evidence | Whole documents: **162.2** tokens → chunks: **42.4** tokens | **119.8 fewer tokens to evidence** (**73.9% lower**, about **3.8× smaller**) | The same 18 questions had a returned evidence-holding memory in both modes |
194
- | Full versus compact recall payload proxy across one 26-question pass within a 260-timed-recall CodeMem run | Full proxy: **23,810** `engraphis.regex.v1` tokens → compact proxy: **10,202** tokens | **13,608 proxy tokens avoided** (**57.15% lower**) | 26 payload samples; 260 timed recalls; Recall@5, hit@5, and answer-token recall all **1.000** |
194
+ | Full versus compact recall payload proxy across one 26-question pass within a 260-timed-recall CodeMem run | Full proxy: **23,810** `engraphis.regex.v1` tokens → compact proxy: **10,982** tokens | **12,828 proxy tokens avoided** (**53.88% lower**) | 26 payload samples; 260 timed recalls; Recall@5, hit@5, and answer-token recall all **1.000** |
195
195
  | Packed prompt-context usage in the same 26-question CodeMem sample pass | Hard budget: **1,500** tokens; observed mean: **85.38**; observed maximum: **108** | A hard cap prevents a recall from exceeding its configured context budget | This is usage accounting, not a before/after savings comparison |
196
196
 
197
197
  These values are evidence IDs `offline-chunking` and `offline-performance` in
198
198
  [`offline-fixtures-v1.json`](https://github.com/Coding-Dev-Tools/engraphis/blob/main/docs/benchmark-evidence/offline-fixtures-v1.json),
199
199
  SHA-256
200
- `8a74e9f48e25f33d625d4cc5c1b14fec3055891944adccf615c440e84e4b0255`.
200
+ `4d5056d137182ae5cf116c5d59af18b38a7a0ed7731885e9597f63e549cb46b7`.
201
201
  [`BENCHMARKS.md`](https://github.com/Coding-Dev-Tools/engraphis/blob/main/BENCHMARKS.md#public-numeric-evidence-registry)
202
202
  records the matching suite digest, exact commands, and per-command config digests. External,
203
203
  model-dependent, consolidation, productivity, and latency results remain unpublished until the
@@ -922,7 +922,7 @@ file. It never searches the working directory for `.env`, and explicit process v
922
922
  | `ENGRAPHIS_CLOUD_REFRESH_CREDENTIAL` | Not set | Bootstrap-only rotating hosted credential; after first use the owner-only cloud session replacement takes precedence |
923
923
  | `ENGRAPHIS_CLOUD_TOKEN_SUBJECT` | `member` | Subject fixed during hosted bootstrap (`device` or `member`); set explicitly with an environment-only refresh credential |
924
924
  | `ENGRAPHIS_CLOUD_ACCESS_TOKEN` | Not set | Optional short-lived access token for ephemeral jobs |
925
- | `ENGRAPHIS_MANAGED_COMPUTE_CONSENT` | *(auto)* | Operator override only; default follows whether a cloud session is configured (connected = allowed, local-only = never). `0` opts a connected installation out; `1` permits local snapshot preparation but does not create a cloud credential or authorize an upload |
925
+ | `ENGRAPHIS_MANAGED_COMPUTE_CONSENT` | *(unset)* | Deny-only operator override: `0` pauses readable managed processing. A truthy value cannot grant approval. Each workspace requires explicit confirmation in Manage → Settings; encrypted sync is separate |
926
926
 
927
927
  The optional cross-encoder reranker is model- and hardware-dependent. Treat its quality and
928
928
  latency as deployment-specific until a versioned model identity, exact configuration, and
@@ -987,3 +987,19 @@ under Apache-2.0 keeps that grant; later releases cannot retroactively withdraw
987
987
  official hosted control plane, its production credentials and records, managed operations,
988
988
  support, and future separately delivered commercial modules are outside the public source
989
989
  grant. See [`docs/LICENSING.md`](https://github.com/Coding-Dev-Tools/engraphis/blob/main/docs/LICENSING.md) for the complete boundary.
990
+
991
+ ### Reliability implementation candidate
992
+
993
+ The current source uses schema 18 for durable, content-free vector-index repair and
994
+ atomic memory-command receipts. Upgrades use the existing verified-backup migration path.
995
+ The [rework execution register](https://github.com/Coding-Dev-Tools/engraphis/blob/main/docs/REWORK_EXECUTION.md) records the current findings,
996
+ compatibility decisions, acceptance evidence, remaining work and recovery procedure.
997
+ See [the reliability program](https://github.com/Coding-Dev-Tools/engraphis/blob/main/docs/RELIABILITY_PROGRAM.md) for exact implementation,
998
+ validation, migration and release boundaries. Managed processing now requires explicit
999
+ workspace approval in Settings. Existing installations start with readable
1000
+ uploads paused until confirmed; connecting an account does not grant approval.
1001
+
1002
+ For setup diagnostics use `engraphis-init --check --json`. New configurations get an
1003
+ owner-private local API token. Existing configs are preserved. Record selected install
1004
+ capabilities with `engraphis-init --extras server,mcp` or `--extras none`; future updates
1005
+ preserve that choice. `ENGRAPHIS_UPDATE_EXTRAS` remains an explicit override.
@@ -44,7 +44,7 @@ by default, or accept an explicit workspace plus optional `from_ts`, `to_ts`, an
44
44
  `release_version` filters.
45
45
 
46
46
  <p align="center">
47
- <img src="https://raw.githubusercontent.com/Coding-Dev-Tools/engraphis/main/docs/images/context-efficiency.svg" alt="Dark chart of local measurements and deterministic fixtures, including a local LoCoMo diagnostic marked with an asterisk. Cross-session handoff satisfaction rises from 3 of 15 queries with the last memories to 15 of 15 with proactive ranking or a consolidated summary. Intent-layered graph routing rises from 0 of 3 to 3 of 3 correct top-1 targets, and two-hop graph recall rises from 0 of 3 with one-hop expansion to 3 of 3 with Personalized PageRank. Consolidation-aware ranking selects the expected digest in 2 of 2 summary cases instead of 0 of 2 for the baseline. Structure-aware chunks reduce context from 740.3 to 214.3 tokens and the smallest evidence-holding memory from 162.2 to 42.4 tokens. A compact JSON-shape proxy uses 10,202 rather than 23,810 tokens. Grounded recall makes 10 of 10 correct decisions and packed context averages 85.38 tokens under a 1,500-token cap." width="100%">
47
+ <img src="https://raw.githubusercontent.com/Coding-Dev-Tools/engraphis/main/docs/images/context-efficiency.svg" alt="Dark chart of local measurements and deterministic fixtures, including a local LoCoMo diagnostic marked with an asterisk. Cross-session handoff satisfaction rises from 3 of 15 queries with the last memories to 15 of 15 with proactive ranking or a consolidated summary. Intent-layered graph routing rises from 0 of 3 to 3 of 3 correct top-1 targets, and two-hop graph recall rises from 0 of 3 with one-hop expansion to 3 of 3 with Personalized PageRank. Consolidation-aware ranking selects the expected digest in 2 of 2 summary cases instead of 0 of 2 for the baseline. Structure-aware chunks reduce context from 740.3 to 214.3 tokens and the smallest evidence-holding memory from 162.2 to 42.4 tokens. A compact JSON-shape proxy uses 10,982 rather than 23,810 tokens. Grounded recall makes 11 of 11 correct decisions and packed context averages 85.38 tokens under a 1,500-token cap." width="100%">
48
48
  <br>
49
49
  <sup>Less repeated history means more room for the task, tools, and useful evidence.</sup>
50
50
  </p>
@@ -73,13 +73,13 @@ its counting boundary explicit.
73
73
  |---|---|---|---|
74
74
  | Retrieved top-5 memory content, averaged per question | Whole documents: **740.3** tokens → structure-aware chunks: **214.3** tokens | **526.0 fewer tokens per question** (**71.1% lower**, about **3.5× smaller**) | Recall@5 **1.000** in both modes across 6 documents and 18 questions |
75
75
  | Smallest returned memory that contains the reference evidence | Whole documents: **162.2** tokens → chunks: **42.4** tokens | **119.8 fewer tokens to evidence** (**73.9% lower**, about **3.8× smaller**) | The same 18 questions had a returned evidence-holding memory in both modes |
76
- | Full versus compact recall payload proxy across one 26-question pass within a 260-timed-recall CodeMem run | Full proxy: **23,810** `engraphis.regex.v1` tokens → compact proxy: **10,202** tokens | **13,608 proxy tokens avoided** (**57.15% lower**) | 26 payload samples; 260 timed recalls; Recall@5, hit@5, and answer-token recall all **1.000** |
76
+ | Full versus compact recall payload proxy across one 26-question pass within a 260-timed-recall CodeMem run | Full proxy: **23,810** `engraphis.regex.v1` tokens → compact proxy: **10,982** tokens | **12,828 proxy tokens avoided** (**53.88% lower**) | 26 payload samples; 260 timed recalls; Recall@5, hit@5, and answer-token recall all **1.000** |
77
77
  | Packed prompt-context usage in the same 26-question CodeMem sample pass | Hard budget: **1,500** tokens; observed mean: **85.38**; observed maximum: **108** | A hard cap prevents a recall from exceeding its configured context budget | This is usage accounting, not a before/after savings comparison |
78
78
 
79
79
  These values are evidence IDs `offline-chunking` and `offline-performance` in
80
80
  [`offline-fixtures-v1.json`](https://github.com/Coding-Dev-Tools/engraphis/blob/main/docs/benchmark-evidence/offline-fixtures-v1.json),
81
81
  SHA-256
82
- `8a74e9f48e25f33d625d4cc5c1b14fec3055891944adccf615c440e84e4b0255`.
82
+ `4d5056d137182ae5cf116c5d59af18b38a7a0ed7731885e9597f63e549cb46b7`.
83
83
  [`BENCHMARKS.md`](https://github.com/Coding-Dev-Tools/engraphis/blob/main/BENCHMARKS.md#public-numeric-evidence-registry)
84
84
  records the matching suite digest, exact commands, and per-command config digests. External,
85
85
  model-dependent, consolidation, productivity, and latency results remain unpublished until the
@@ -804,7 +804,7 @@ file. It never searches the working directory for `.env`, and explicit process v
804
804
  | `ENGRAPHIS_CLOUD_REFRESH_CREDENTIAL` | Not set | Bootstrap-only rotating hosted credential; after first use the owner-only cloud session replacement takes precedence |
805
805
  | `ENGRAPHIS_CLOUD_TOKEN_SUBJECT` | `member` | Subject fixed during hosted bootstrap (`device` or `member`); set explicitly with an environment-only refresh credential |
806
806
  | `ENGRAPHIS_CLOUD_ACCESS_TOKEN` | Not set | Optional short-lived access token for ephemeral jobs |
807
- | `ENGRAPHIS_MANAGED_COMPUTE_CONSENT` | *(auto)* | Operator override only; default follows whether a cloud session is configured (connected = allowed, local-only = never). `0` opts a connected installation out; `1` permits local snapshot preparation but does not create a cloud credential or authorize an upload |
807
+ | `ENGRAPHIS_MANAGED_COMPUTE_CONSENT` | *(unset)* | Deny-only operator override: `0` pauses readable managed processing. A truthy value cannot grant approval. Each workspace requires explicit confirmation in Manage → Settings; encrypted sync is separate |
808
808
 
809
809
  The optional cross-encoder reranker is model- and hardware-dependent. Treat its quality and
810
810
  latency as deployment-specific until a versioned model identity, exact configuration, and
@@ -869,3 +869,19 @@ under Apache-2.0 keeps that grant; later releases cannot retroactively withdraw
869
869
  official hosted control plane, its production credentials and records, managed operations,
870
870
  support, and future separately delivered commercial modules are outside the public source
871
871
  grant. See [`docs/LICENSING.md`](https://github.com/Coding-Dev-Tools/engraphis/blob/main/docs/LICENSING.md) for the complete boundary.
872
+
873
+ ### Reliability implementation candidate
874
+
875
+ The current source uses schema 18 for durable, content-free vector-index repair and
876
+ atomic memory-command receipts. Upgrades use the existing verified-backup migration path.
877
+ The [rework execution register](https://github.com/Coding-Dev-Tools/engraphis/blob/main/docs/REWORK_EXECUTION.md) records the current findings,
878
+ compatibility decisions, acceptance evidence, remaining work and recovery procedure.
879
+ See [the reliability program](https://github.com/Coding-Dev-Tools/engraphis/blob/main/docs/RELIABILITY_PROGRAM.md) for exact implementation,
880
+ validation, migration and release boundaries. Managed processing now requires explicit
881
+ workspace approval in Settings. Existing installations start with readable
882
+ uploads paused until confirmed; connecting an account does not grant approval.
883
+
884
+ For setup diagnostics use `engraphis-init --check --json`. New configurations get an
885
+ owner-private local API token. Existing configs are preserved. Record selected install
886
+ capabilities with `engraphis-init --extras server,mcp` or `--extras none`; future updates
887
+ preserve that choice. `ENGRAPHIS_UPDATE_EXTRAS` remains an explicit override.
@@ -0,0 +1,159 @@
1
+ # Independent coding-memory acceptance corpus
2
+
3
+ `eval.coding_acceptance` defines a versioned manifest and validates structural
4
+ and provenance declarations. It does not contain an independently authored corpus,
5
+ execute model calls, prove authorship, or authorize evaluation spending.
6
+ Existing deterministic fixtures remain useful regression tests and keep their
7
+ implementation-authored or synthetic labels.
8
+
9
+ ## Frozen task structure
10
+
11
+ Require **400 scenarios in 40 repository families**. Each family supplies exactly
12
+ one scenario in each of these ten categories:
13
+
14
+ | Category | Required behavior to label |
15
+ | --- | --- |
16
+ | Corrections | Real remember/correct/recall sequence; false NOOP and false merge |
17
+ | Temporal history | Future/current/expired facts, known-at and valid-at history |
18
+ | Scope boundaries | Workspace/repository/session ownership and equal-content facts |
19
+ | Paraphrases | Retrieval with a pinned semantic embedder; no supplied similarities |
20
+ | Code relationships | Symbols, files/calls and explicit evidence bridges |
21
+ | Unsupported questions | Grounded abstention and unsupported-answer rate |
22
+ | Poisoning | Untrusted ingested instructions cannot change review/authorization |
23
+ | Conditions and values | Complete subjects, numbers, units, negation and conditions |
24
+ | Long documents | Evidence beyond early chunks; budget omissions remain explicit |
25
+ | Multilingual | Whole conditions and titles retained across languages |
26
+
27
+ The split is by family, never by question: **80 development, 80 validation and
28
+ 240 held-out** scenarios. Sort families by SHA-256 of `split_seed:family_id`; assign
29
+ the first eight families to development, the next eight to validation and the
30
+ remaining 24 to held-out. Freeze the family identities and seed before tuning.
31
+ Human reviewers must also check related forks, shared templates and paraphrased
32
+ tasks across families; an identifier validator cannot detect semantic leakage.
33
+
34
+ Each scenario binds an ID, family, category, split, declared origin, author IDs,
35
+ source SHA-256, oracle SHA-256 and required evidence IDs. The manifest binds the
36
+ implementation authors, two distinct reviewers, a timezone-aware freeze time and
37
+ an authorship-attestation SHA-256. Independent task authors, implementation
38
+ authors and reviewers must not overlap. Licensing, consent, authorship method,
39
+ family lineage and review/adjudication should be recorded in the attestation.
40
+
41
+ Source and oracle hashes reference separately frozen task artifacts. Those
42
+ artifacts must contain the initial history/repository, ordered operations, query,
43
+ scope/time anchors, expected memory transitions, evidence units, unsupported
44
+ claims, deterministic task oracle and safe disposable setup/cleanup instructions.
45
+ This manifest validator checks the hash format, not the referenced bytes or the
46
+ behavior of those tasks. A future corpus loader must verify the bytes and execute
47
+ the sequence before a report can claim coverage.
48
+
49
+ ## Validator use and evidence boundaries
50
+
51
+ ```console
52
+ python -m eval.coding_acceptance
53
+ python -m eval.coding_acceptance --corpus corpus.json --attestation authorship.txt
54
+ python -m eval.coding_acceptance --corpus generated-fixture.json --fixture
55
+ ```
56
+
57
+ With no corpus, the command emits portable JSON Schema. The Python validator also
58
+ enforces cross-row counts, categories, exact family splits, unique IDs, author
59
+ separation and the matched arms/budgets. Candidate independent validation requires
60
+ the actual attestation file to match its digest. `--fixture` permits a structural
61
+ check while retaining the declared origin.
62
+
63
+ Synthetic and implementation-authored manifests are rejected by the independent
64
+ candidate mode. Changing only a manifest's origin cannot relabel its scenarios.
65
+ No automated metadata check can prove that every declaration is truthful: even a
66
+ matching attestation returns `independently_authored_verified=false`,
67
+ `publication_ready=false` and at most `authorship_status=attested_unverified`.
68
+ The generated 400-row test data is explicitly a test of this validator, never
69
+ 400 completed acceptance tasks or independent evidence.
70
+
71
+ ## Matched comparison bindings
72
+
73
+ Use **five arms** (no memory, full history, lexical, dense, hybrid) at **three
74
+ retrieval budgets** (512, 1,500, 4,096). A binding file contains exactly 15 cells.
75
+ All cells share corpus/prompt/source-visibility hashes, reader and tokenizer
76
+ identities/revisions, local semantic embedding identity/revision, random seed,
77
+ and hard input/output ceilings. Hashing cannot be declared a semantic dense
78
+ baseline. Validate with:
79
+
80
+ ```console
81
+ python -m eval.coding_acceptance --bindings bindings.json
82
+ ```
83
+
84
+ Each cell contains `arm`, `token_budget`, `corpus_sha256`, `prompt_sha256`,
85
+ `reader_id`, `reader_revision`, `tokenizer_id`, `tokenizer_revision`,
86
+ `max_input_tokens`, `max_output_tokens`, `embedding_id`, `embedding_revision`,
87
+ `embedding_semantic`, `source_visibility_sha256`, `history_overflow_policy` and
88
+ `seed`. All fields except arm/budget must be identical. The overflow policy is
89
+ `fail_preflight`: full history receives all eligible history within the common
90
+ hard input ceiling, or that task fails preflight for every matched arm. Do not
91
+ silently truncate full history. No-memory/full-history are repeated in each
92
+ budget stratum and must not be counted as new independent tasks.
93
+
94
+ Bindings are a preflight contract, not an execution adapter. Validation reports
95
+ zero model calls and `paid_run_authorized=false`. The cost and execution-approval
96
+ boundary remains [the separate paid evaluation proposal](PAID_EVALUATION_PROPOSAL.md).
97
+
98
+ ## Scoring and release gates
99
+
100
+ Keep candidate discovery, write resolution, ranking, packing, grounding and final
101
+ task success separate. Citation validity asks whether a cited source supports a
102
+ claim; answer completeness asks whether all required evidence was covered. Count
103
+ false NOOPs, false merges, unsupported assertions, missed conditions, scope/time
104
+ violations and abstention independently. Record context/model tokens, latency,
105
+ memory, disk and costs without using token reduction as evidence of correctness.
106
+
107
+ Run development tasks while tuning; freeze the candidate and all bindings before
108
+ validation; reserve held-out families for the final comparison. Require zero
109
+ critical integrity/authorization violations. Predeclare one percentage point as
110
+ the task-success non-inferiority margin and require paired family-cluster 95%
111
+ intervals, with category-level failures reported. If uncertainty cannot exclude
112
+ the declared degradation, retain the current default. Missing/error outcomes
113
+ stay in the denominator; do not silently retry or exclude difficult tasks.
114
+
115
+ The remaining work is actual independent authorship and adjudication, frozen
116
+ artifact/license verification, the executable five-arm adapter, task-oracle and
117
+ budget-interruption tests, and approved paired validation/held-out runs. Passing
118
+ this validator establishes none of those operational results.
119
+
120
+ ## Matched outcome aggregation
121
+
122
+ `eval.task_pairs` analyzes one matched arm/budget comparison using the full corpus
123
+ manifest and its 15 run bindings. It does not execute tasks or call models.
124
+
125
+ ```console
126
+ python -m eval.task_pairs --baseline baseline.json --candidate candidate.json --corpus corpus.json --bindings bindings.json --output paired-results.json
127
+ ```
128
+
129
+ The default comparison is full history versus hybrid, budget 1,500, 240 held-out
130
+ tasks and three repetitions. Outcomes bind `scenario_id`, source/oracle hashes,
131
+ the canonical run-binding hash, `repetition` (zero-based), `status`, boolean
132
+ `task_success`, `evidence_retained_ids`, `critical_violations`, implementation
133
+ source hash and a unique `run_id`. Only arm identity and the explicitly reported
134
+ implementation source identity may differ between paired conditions. The common
135
+ reader, model, tokenizer, prompts, resource limits and source visibility are bound
136
+ through the validated matrix. Duplicate attempts and incompatible bindings fail.
137
+
138
+ Missing attempts remain zero-success/zero-retention failures in the predeclared
139
+ denominator and disable non-inferiority. Tasks with no required evidence report
140
+ retention as unavailable, rather than receiving a free perfect score. Task success
141
+ and evidence retention have separate means and candidate-minus-baseline intervals;
142
+ required-evidence coverage does not establish citation validity or answer completeness.
143
+
144
+ The 95% percentile bootstrap first averages paired effects within each repository
145
+ family, then resamples families as blocks. Repeated answers never become new
146
+ independent families. Report category intervals as exploratory; they have no
147
+ multiple-comparison adjustment and cannot select a winning default independently.
148
+ At least 24 held-out families, 240 tasks and three repetitions are required before
149
+ the statistical non-inferiority check at margin 0.01 is eligible. The lower bound
150
+ must strictly exceed -0.01; incomplete/error pairs, critical violations, synthetic
151
+ authorship and degenerate intervals disable that check. Constant effects produce
152
+ no defensible resampling uncertainty and cannot manufacture a pass, even when
153
+ both conditions report perfect scores. These minima are not a power guarantee.
154
+
155
+ Even statistical support retains `default_action=keep_current_defaults` and
156
+ `independently_authored_verified=false`: matching declarations and attestations
157
+ cannot prove real execution or independent authorship. Completing one pair is
158
+ also not execution of the full five-arm corpus. Local tests and benchmarking are
159
+ already authorized; paid calls remain governed by their separate proposal.