arango-entity-resolution 3.3.0__tar.gz → 3.8.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (705) hide show
  1. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/.githooks/pre-commit +29 -5
  2. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/.githooks/pre-push +10 -3
  3. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/.github/workflows/publish.yml +1 -1
  4. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/.github/workflows/python-package.yml +3 -3
  5. arango_entity_resolution-3.8.0/.github/workflows/runtime-platform-matrix.yml +279 -0
  6. arango_entity_resolution-3.8.0/.github/workflows/ui-contract.yml +66 -0
  7. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/.gitignore +19 -1
  8. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/CHANGELOG.md +258 -7
  9. arango_entity_resolution-3.8.0/LICENSE +191 -0
  10. arango_entity_resolution-3.8.0/Makefile +58 -0
  11. arango_entity_resolution-3.8.0/PKG-INFO +437 -0
  12. arango_entity_resolution-3.8.0/README.md +381 -0
  13. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/SECURITY.md +31 -4
  14. arango_entity_resolution-3.8.0/ci/runtime-quality/baselines/apple-silicon.json +11 -0
  15. arango_entity_resolution-3.8.0/ci/runtime-quality/baselines/linux-cpu.json +11 -0
  16. arango_entity_resolution-3.8.0/ci/runtime-quality/baselines/linux-gpu.json +8 -0
  17. arango_entity_resolution-3.8.0/ci/runtime-quality/corpus/runtime_quality_corpus.json +45 -0
  18. arango_entity_resolution-3.8.0/ci/runtime-quality/quality_gate_policy.json +35 -0
  19. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/config/er_config.example.yaml +10 -1
  20. arango_entity_resolution-3.8.0/config/test-database.md +152 -0
  21. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/config/vector_search_setup.md +10 -11
  22. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docker-compose.test.yml +1 -1
  23. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docker-compose.yml +3 -1
  24. arango_entity_resolution-3.8.0/docs/IMPLEMENTATION_PLAN_2026-06.md +260 -0
  25. arango_entity_resolution-3.8.0/docs/IMPLEMENTATION_PLAN_PHASE2_PHASE3.md +256 -0
  26. arango_entity_resolution-3.8.0/docs/PRD.md +244 -0
  27. arango_entity_resolution-3.8.0/docs/PROJECT_REVIEW_2026-06.md +197 -0
  28. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/README.md +12 -5
  29. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/TESTING.md +6 -2
  30. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/api/API_REFERENCE.md +3 -1
  31. arango_entity_resolution-3.8.0/docs/architecture/CENTRALIZED_ER_SERVICE.md +594 -0
  32. arango_entity_resolution-3.8.0/docs/architecture/ENTITY_RESOLUTION_UI.md +840 -0
  33. {arango_entity_resolution-3.3.0/docs/development → arango_entity_resolution-3.8.0/docs/archive/completed-work}/LIBRARY_ENHANCEMENT_PLAN.md +171 -49
  34. arango_entity_resolution-3.8.0/docs/development/COMPREHENSIVE_PROJECT_REVIEW_2026-06-01.md +162 -0
  35. arango_entity_resolution-3.8.0/docs/development/ENTITY_RESOLUTION_ADVISOR_MCP_EXAMPLES.md +571 -0
  36. arango_entity_resolution-3.8.0/docs/development/ENTITY_RESOLUTION_ADVISOR_MCP_SPEC.md +589 -0
  37. arango_entity_resolution-3.8.0/docs/development/GAE_ENHANCEMENT_PATH.md +166 -0
  38. arango_entity_resolution-3.8.0/docs/development/MAINTAINABILITY_API_MIGRATION_PLAN.md +127 -0
  39. arango_entity_resolution-3.8.0/docs/development/MCP_OPTIONS_MIGRATION_GUIDE.md +266 -0
  40. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/NEXT_RELEASE_IMPLEMENTATION_BRIEF.md +209 -39
  41. arango_entity_resolution-3.8.0/docs/development/PHASE_0_COMPLETION_NOTES.md +45 -0
  42. arango_entity_resolution-3.8.0/docs/development/PROVIDER_ROLLOUT_RUNBOOK.md +454 -0
  43. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/RELEASE_CHECKLIST.md +5 -5
  44. arango_entity_resolution-3.8.0/docs/development/REMEDIATION_PLAN_2026-06-01.md +238 -0
  45. arango_entity_resolution-3.8.0/docs/development/RUNTIME_HEALTH_CI_RUNBOOK.md +514 -0
  46. arango_entity_resolution-3.8.0/docs/development/UI_IMPLEMENTATION_PLAN.md +1035 -0
  47. arango_entity_resolution-3.8.0/docs/guides/ADVANCED_MODULES_GUIDE.md +887 -0
  48. arango_entity_resolution-3.8.0/docs/guides/PERFORMANCE_GUIDE.md +160 -0
  49. arango_entity_resolution-3.8.0/docs/guides/PLATFORM_SETUP.md +197 -0
  50. arango_entity_resolution-3.8.0/docs/guides/PROVIDER_COMPATIBILITY_MATRIX.md +300 -0
  51. arango_entity_resolution-3.8.0/docs/guides/PROVIDER_MATRIX.md +100 -0
  52. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/guides/QUICK_START.md +1 -1
  53. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/env.example +7 -2
  54. arango_entity_resolution-3.8.0/examples/clustering_backend_comparison.py +120 -0
  55. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/examples/complete_entity_resolution_demo.py +67 -47
  56. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/examples/enhanced_er_examples.py +8 -13
  57. arango_entity_resolution-3.8.0/examples/incremental_resolution.py +148 -0
  58. arango_entity_resolution-3.8.0/examples/multi_strategy_orchestration.py +113 -0
  59. arango_entity_resolution-3.8.0/examples/ollama_llm_verification.py +79 -0
  60. arango_entity_resolution-3.8.0/examples/onnx_runtime_embedding.py +200 -0
  61. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/examples/vector_blocking_example.py +7 -42
  62. arango_entity_resolution-3.8.0/examples/yaml_config_pipeline.py +178 -0
  63. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/pyproject.toml +17 -5
  64. arango_entity_resolution-3.8.0/scripts/benchmark_vector_blocking.py +122 -0
  65. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/comprehensive_qa_tests.py +4 -3
  66. arango_entity_resolution-3.8.0/scripts/export_openapi.py +62 -0
  67. arango_entity_resolution-3.8.0/scripts/migrations/001_fix_graphrag_self_loop_edges.py +120 -0
  68. arango_entity_resolution-3.8.0/scripts/summarize_runtime_activation.py +59 -0
  69. arango_entity_resolution-3.8.0/src/entity_resolution/__init__.py +212 -0
  70. arango_entity_resolution-3.8.0/src/entity_resolution/cli.py +1578 -0
  71. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/config/__init__.py +4 -0
  72. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/config/er_config.py +496 -30
  73. arango_entity_resolution-3.8.0/src/entity_resolution/core/address_pipeline.py +173 -0
  74. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/core/async_pipeline.py +8 -1
  75. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/core/configurable_pipeline.py +379 -23
  76. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/core/incremental_resolver.py +11 -2
  77. arango_entity_resolution-3.8.0/src/entity_resolution/core/orchestrator.py +273 -0
  78. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/data/data_manager.py +15 -7
  79. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/etl/arangoimport.py +10 -8
  80. arango_entity_resolution-3.8.0/src/entity_resolution/learning/__init__.py +23 -0
  81. arango_entity_resolution-3.8.0/src/entity_resolution/learning/em_estimator.py +221 -0
  82. arango_entity_resolution-3.8.0/src/entity_resolution/learning/fellegi_sunter_scorer.py +82 -0
  83. arango_entity_resolution-3.8.0/src/entity_resolution/learning/field_profiler.py +248 -0
  84. arango_entity_resolution-3.8.0/src/entity_resolution/learning/model_parameter_estimator.py +270 -0
  85. arango_entity_resolution-3.8.0/src/entity_resolution/mcp/connection.py +32 -0
  86. arango_entity_resolution-3.8.0/src/entity_resolution/mcp/contracts.py +109 -0
  87. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/mcp/demo.py +15 -9
  88. arango_entity_resolution-3.8.0/src/entity_resolution/mcp/normalization.py +599 -0
  89. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/mcp/resources/collections.py +4 -2
  90. arango_entity_resolution-3.8.0/src/entity_resolution/mcp/server.py +734 -0
  91. arango_entity_resolution-3.8.0/src/entity_resolution/mcp/tools/advisor.py +1347 -0
  92. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/mcp/tools/cluster.py +4 -3
  93. arango_entity_resolution-3.8.0/src/entity_resolution/mcp/tools/entity.py +629 -0
  94. arango_entity_resolution-3.8.0/src/entity_resolution/mcp/tools/pipeline.py +1055 -0
  95. arango_entity_resolution-3.8.0/src/entity_resolution/migrations/__init__.py +20 -0
  96. arango_entity_resolution-3.8.0/src/entity_resolution/migrations/registry.py +67 -0
  97. arango_entity_resolution-3.8.0/src/entity_resolution/migrations/runner.py +140 -0
  98. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/reasoning/feedback.py +104 -7
  99. arango_entity_resolution-3.8.0/src/entity_resolution/reasoning/graph_rag.py +283 -0
  100. arango_entity_resolution-3.8.0/src/entity_resolution/reasoning/llm_verifier.py +442 -0
  101. arango_entity_resolution-3.8.0/src/entity_resolution/services/__init__.py +40 -0
  102. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/address_er_service.py +248 -52
  103. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/batch_similarity_service.py +43 -13
  104. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/blocking_service.py +20 -8
  105. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/cluster_export_service.py +6 -3
  106. arango_entity_resolution-3.8.0/src/entity_resolution/services/cluster_repair_service.py +264 -0
  107. arango_entity_resolution-3.8.0/src/entity_resolution/services/clustering_backends/__init__.py +22 -0
  108. arango_entity_resolution-3.8.0/src/entity_resolution/services/clustering_backends/aql_graph.py +133 -0
  109. arango_entity_resolution-3.8.0/src/entity_resolution/services/clustering_backends/base.py +24 -0
  110. arango_entity_resolution-3.8.0/src/entity_resolution/services/clustering_backends/gae_connection.py +733 -0
  111. arango_entity_resolution-3.8.0/src/entity_resolution/services/clustering_backends/gae_wcc.py +241 -0
  112. arango_entity_resolution-3.8.0/src/entity_resolution/services/clustering_backends/python_dfs.py +99 -0
  113. arango_entity_resolution-3.8.0/src/entity_resolution/services/clustering_backends/python_sparse.py +96 -0
  114. arango_entity_resolution-3.8.0/src/entity_resolution/services/clustering_backends/python_union_find.py +95 -0
  115. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/cross_collection_matching_service.py +60 -26
  116. arango_entity_resolution-3.8.0/src/entity_resolution/services/curation_service.py +91 -0
  117. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/embedding_service.py +147 -41
  118. arango_entity_resolution-3.8.0/src/entity_resolution/services/evaluation_service.py +377 -0
  119. arango_entity_resolution-3.8.0/src/entity_resolution/services/feedback_application_service.py +467 -0
  120. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/golden_record_persistence_service.py +106 -20
  121. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/golden_record_service.py +34 -80
  122. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/node2vec_embedding_service.py +2 -1
  123. arango_entity_resolution-3.8.0/src/entity_resolution/services/onnx_embedding_backend.py +438 -0
  124. arango_entity_resolution-3.8.0/src/entity_resolution/services/onnx_model_exporter.py +196 -0
  125. arango_entity_resolution-3.8.0/src/entity_resolution/services/runtime_activation_evidence_service.py +120 -0
  126. arango_entity_resolution-3.8.0/src/entity_resolution/services/runtime_benchmark_service.py +131 -0
  127. arango_entity_resolution-3.8.0/src/entity_resolution/services/runtime_compare_report_service.py +111 -0
  128. arango_entity_resolution-3.8.0/src/entity_resolution/services/runtime_profile_registry.py +161 -0
  129. arango_entity_resolution-3.8.0/src/entity_resolution/services/runtime_quality_benchmark_service.py +230 -0
  130. arango_entity_resolution-3.8.0/src/entity_resolution/services/runtime_quality_gate_service.py +72 -0
  131. arango_entity_resolution-3.8.0/src/entity_resolution/services/runtime_quality_policy_service.py +83 -0
  132. arango_entity_resolution-3.8.0/src/entity_resolution/services/runtime_telemetry_service.py +39 -0
  133. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/similarity_edge_service.py +11 -5
  134. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/similarity_service.py +145 -56
  135. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/tuple_embedding_serializer.py +64 -27
  136. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/wcc_clustering_service.py +131 -259
  137. arango_entity_resolution-3.8.0/src/entity_resolution/similarity/ann_adapter.py +391 -0
  138. arango_entity_resolution-3.8.0/src/entity_resolution/similarity/geospatial_validator.py +215 -0
  139. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/similarity/weighted_field_similarity.py +17 -3
  140. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/strategies/base_strategy.py +40 -14
  141. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/strategies/bm25_blocking.py +62 -44
  142. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/strategies/collect_blocking.py +39 -94
  143. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/strategies/geographic_blocking.py +1 -71
  144. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/strategies/graph_traversal_blocking.py +6 -38
  145. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/strategies/hybrid_blocking.py +86 -69
  146. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/strategies/lsh_blocking.py +2 -2
  147. arango_entity_resolution-3.8.0/src/entity_resolution/strategies/shard_parallel_blocking.py +168 -0
  148. arango_entity_resolution-3.8.0/src/entity_resolution/strategies/vector_blocking.py +194 -0
  149. arango_entity_resolution-3.8.0/src/entity_resolution/ui/__init__.py +1 -0
  150. arango_entity_resolution-3.8.0/src/entity_resolution/ui/app.py +193 -0
  151. arango_entity_resolution-3.8.0/src/entity_resolution/ui/auth.py +76 -0
  152. arango_entity_resolution-3.8.0/src/entity_resolution/ui/models/__init__.py +1 -0
  153. arango_entity_resolution-3.8.0/src/entity_resolution/ui/models/schemas.py +151 -0
  154. arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/__init__.py +1 -0
  155. arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/clusters.py +222 -0
  156. arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/collections.py +128 -0
  157. arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/config.py +85 -0
  158. arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/curation.py +243 -0
  159. arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/export.py +87 -0
  160. arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/golden.py +257 -0
  161. arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/metrics.py +198 -0
  162. arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/pipeline.py +174 -0
  163. arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/profile.py +45 -0
  164. arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/resolve.py +76 -0
  165. arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/review.py +375 -0
  166. arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/ws.py +78 -0
  167. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/config.py +5 -3
  168. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/config_utils.py +3 -2
  169. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/constants.py +12 -7
  170. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/database.py +34 -82
  171. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/logging.py +0 -12
  172. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/validation.py +76 -5
  173. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/view_utils.py +2 -2
  174. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/conftest.py +30 -0
  175. arango_entity_resolution-3.8.0/tests/security/test_aql_injection.py +166 -0
  176. arango_entity_resolution-3.8.0/tests/security/test_mcp_sse_auth.py +65 -0
  177. arango_entity_resolution-3.8.0/tests/security/test_ui_auth.py +157 -0
  178. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_address_er_service_unit.py +5 -4
  179. arango_entity_resolution-3.8.0/tests/test_address_pipeline.py +541 -0
  180. arango_entity_resolution-3.8.0/tests/test_ann_adapter.py +116 -0
  181. arango_entity_resolution-3.8.0/tests/test_ann_adapter_unit.py +168 -0
  182. arango_entity_resolution-3.8.0/tests/test_ann_adapter_vector_index.py +92 -0
  183. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_arangoimport_helper.py +30 -2
  184. arango_entity_resolution-3.8.0/tests/test_auto_backend_selection.py +175 -0
  185. {arango_entity_resolution-3.3.0/examples → arango_entity_resolution-3.8.0/tests}/test_blocking_service.py +3 -3
  186. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_blocking_strategies.py +89 -0
  187. arango_entity_resolution-3.8.0/tests/test_cli.py +2081 -0
  188. arango_entity_resolution-3.8.0/tests/test_cluster_repair_service.py +70 -0
  189. arango_entity_resolution-3.8.0/tests/test_cluster_repair_service_integration.py +108 -0
  190. arango_entity_resolution-3.8.0/tests/test_clustering_backends.py +265 -0
  191. arango_entity_resolution-3.8.0/tests/test_clustering_backends_integration.py +80 -0
  192. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_configurable_pipeline_blocking_fields.py +2 -2
  193. arango_entity_resolution-3.8.0/tests/test_configurable_pipeline_unit.py +626 -0
  194. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_cross_collection_matching_service_unit.py +12 -7
  195. arango_entity_resolution-3.8.0/tests/test_curation_routes_integration.py +138 -0
  196. arango_entity_resolution-3.8.0/tests/test_curation_service.py +88 -0
  197. arango_entity_resolution-3.8.0/tests/test_curation_service_integration.py +35 -0
  198. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_data_manager_unit.py +7 -2
  199. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_database_manager_unit.py +0 -13
  200. arango_entity_resolution-3.8.0/tests/test_device_resolution.py +98 -0
  201. arango_entity_resolution-3.8.0/tests/test_em_estimator.py +115 -0
  202. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_embedding_service_multi_resolution.py +41 -0
  203. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_er_config.py +123 -2
  204. arango_entity_resolution-3.8.0/tests/test_evaluation_service.py +133 -0
  205. arango_entity_resolution-3.8.0/tests/test_evaluation_service_integration.py +110 -0
  206. arango_entity_resolution-3.8.0/tests/test_feedback.py +274 -0
  207. arango_entity_resolution-3.8.0/tests/test_feedback_application_integration.py +161 -0
  208. arango_entity_resolution-3.8.0/tests/test_feedback_application_service.py +386 -0
  209. arango_entity_resolution-3.8.0/tests/test_fellegi_sunter_scorer.py +65 -0
  210. arango_entity_resolution-3.8.0/tests/test_field_profiler.py +110 -0
  211. arango_entity_resolution-3.8.0/tests/test_field_profiler_integration.py +56 -0
  212. arango_entity_resolution-3.8.0/tests/test_gae_clustering.py +283 -0
  213. arango_entity_resolution-3.8.0/tests/test_gae_integration.py +129 -0
  214. arango_entity_resolution-3.8.0/tests/test_geographic_blocking.py +326 -0
  215. arango_entity_resolution-3.8.0/tests/test_geospatial_validator.py +125 -0
  216. arango_entity_resolution-3.8.0/tests/test_golden_record_persistence_service.py +255 -0
  217. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_golden_record_service.py +15 -38
  218. arango_entity_resolution-3.8.0/tests/test_graph_rag.py +134 -0
  219. arango_entity_resolution-3.8.0/tests/test_hybrid_blocking.py +315 -0
  220. arango_entity_resolution-3.8.0/tests/test_llm_healthcheck.py +57 -0
  221. arango_entity_resolution-3.8.0/tests/test_llm_provider_config.py +153 -0
  222. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_llm_verifier.py +78 -0
  223. arango_entity_resolution-3.8.0/tests/test_mcp_normalization.py +461 -0
  224. arango_entity_resolution-3.8.0/tests/test_mcp_tools.py +2816 -0
  225. arango_entity_resolution-3.8.0/tests/test_migrations.py +158 -0
  226. arango_entity_resolution-3.8.0/tests/test_migrations_integration.py +66 -0
  227. arango_entity_resolution-3.8.0/tests/test_model_parameter_estimator.py +126 -0
  228. arango_entity_resolution-3.8.0/tests/test_model_parameter_estimator_integration.py +115 -0
  229. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_node2vec_embedding_service.py +6 -1
  230. arango_entity_resolution-3.8.0/tests/test_onnx_embedding_backend.py +166 -0
  231. arango_entity_resolution-3.8.0/tests/test_onnx_encode_and_export.py +142 -0
  232. arango_entity_resolution-3.8.0/tests/test_orchestrator.py +119 -0
  233. arango_entity_resolution-3.8.0/tests/test_profile_route_integration.py +46 -0
  234. arango_entity_resolution-3.8.0/tests/test_runtime_activation_evidence_service.py +66 -0
  235. arango_entity_resolution-3.8.0/tests/test_runtime_benchmark_service.py +81 -0
  236. arango_entity_resolution-3.8.0/tests/test_runtime_compare_report_service.py +76 -0
  237. arango_entity_resolution-3.8.0/tests/test_runtime_profile_registry.py +67 -0
  238. arango_entity_resolution-3.8.0/tests/test_runtime_quality_benchmark_service.py +71 -0
  239. arango_entity_resolution-3.8.0/tests/test_runtime_quality_gate_service.py +32 -0
  240. arango_entity_resolution-3.8.0/tests/test_runtime_quality_policy_ci.py +57 -0
  241. arango_entity_resolution-3.8.0/tests/test_runtime_quality_policy_service.py +124 -0
  242. arango_entity_resolution-3.8.0/tests/test_shard_parallel_blocking.py +79 -0
  243. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_similarity_edge_service_unit.py +14 -4
  244. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_similarity_service_legacy_unit.py +89 -0
  245. {arango_entity_resolution-3.3.0/examples → arango_entity_resolution-3.8.0/tests}/test_similarity_service_resilient.py +7 -5
  246. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_top3_features.py +3 -3
  247. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_tuple_embedding_serializer.py +68 -0
  248. arango_entity_resolution-3.8.0/tests/test_ui_core_additions.py +459 -0
  249. arango_entity_resolution-3.8.0/tests/test_ui_routes.py +942 -0
  250. arango_entity_resolution-3.8.0/tests/test_ui_schemas.py +393 -0
  251. arango_entity_resolution-3.8.0/tests/test_validation.py +362 -0
  252. arango_entity_resolution-3.8.0/tests/test_vector_blocking_strategy_unit.py +119 -0
  253. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_weighted_field_similarity.py +40 -0
  254. arango_entity_resolution-3.8.0/ui/index.html +13 -0
  255. arango_entity_resolution-3.8.0/ui/openapi.json +3380 -0
  256. arango_entity_resolution-3.8.0/ui/package-lock.json +4741 -0
  257. arango_entity_resolution-3.8.0/ui/package.json +42 -0
  258. arango_entity_resolution-3.8.0/ui/public/vite.svg +1 -0
  259. arango_entity_resolution-3.8.0/ui/src/App.tsx +42 -0
  260. arango_entity_resolution-3.8.0/ui/src/api/client.ts +51 -0
  261. arango_entity_resolution-3.8.0/ui/src/api/clusters.ts +88 -0
  262. arango_entity_resolution-3.8.0/ui/src/api/collections.ts +31 -0
  263. arango_entity_resolution-3.8.0/ui/src/api/config.ts +78 -0
  264. arango_entity_resolution-3.8.0/ui/src/api/curation.ts +84 -0
  265. arango_entity_resolution-3.8.0/ui/src/api/export.ts +33 -0
  266. arango_entity_resolution-3.8.0/ui/src/api/golden.ts +112 -0
  267. arango_entity_resolution-3.8.0/ui/src/api/metrics.ts +62 -0
  268. arango_entity_resolution-3.8.0/ui/src/api/pipeline.ts +46 -0
  269. arango_entity_resolution-3.8.0/ui/src/api/profile.ts +59 -0
  270. arango_entity_resolution-3.8.0/ui/src/api/resolve.ts +37 -0
  271. arango_entity_resolution-3.8.0/ui/src/api/review.test.ts +22 -0
  272. arango_entity_resolution-3.8.0/ui/src/api/review.ts +161 -0
  273. arango_entity_resolution-3.8.0/ui/src/api/schema.ts +2835 -0
  274. arango_entity_resolution-3.8.0/ui/src/components/clusters/ClusterDetail.tsx +310 -0
  275. arango_entity_resolution-3.8.0/ui/src/components/clusters/ClusterFilters.tsx +39 -0
  276. arango_entity_resolution-3.8.0/ui/src/components/clusters/ClusterGraph.tsx +193 -0
  277. arango_entity_resolution-3.8.0/ui/src/components/clusters/ClusterList.tsx +148 -0
  278. arango_entity_resolution-3.8.0/ui/src/components/clusters/ClusterMembers.tsx +98 -0
  279. arango_entity_resolution-3.8.0/ui/src/components/clusters/ClusterTable.tsx +255 -0
  280. arango_entity_resolution-3.8.0/ui/src/components/clusters/ExplainMatchModal.tsx +191 -0
  281. arango_entity_resolution-3.8.0/ui/src/components/clusters/SuspectClusters.tsx +77 -0
  282. arango_entity_resolution-3.8.0/ui/src/components/clusters/index.ts +7 -0
  283. arango_entity_resolution-3.8.0/ui/src/components/config/BlockingSection.tsx +175 -0
  284. arango_entity_resolution-3.8.0/ui/src/components/config/ClusteringSection.tsx +74 -0
  285. arango_entity_resolution-3.8.0/ui/src/components/config/CollectionSection.tsx +142 -0
  286. arango_entity_resolution-3.8.0/ui/src/components/config/ConfigBuilder.tsx +512 -0
  287. arango_entity_resolution-3.8.0/ui/src/components/config/LLMSection.tsx +121 -0
  288. arango_entity_resolution-3.8.0/ui/src/components/config/SimilaritySection.tsx +135 -0
  289. arango_entity_resolution-3.8.0/ui/src/components/config/WeightSlider.tsx +54 -0
  290. arango_entity_resolution-3.8.0/ui/src/components/config/index.ts +7 -0
  291. arango_entity_resolution-3.8.0/ui/src/components/dashboard/DistributionChart.tsx +109 -0
  292. arango_entity_resolution-3.8.0/ui/src/components/dashboard/RecentRuns.tsx +12 -0
  293. arango_entity_resolution-3.8.0/ui/src/components/dashboard/StatsGrid.tsx +69 -0
  294. arango_entity_resolution-3.8.0/ui/src/components/dashboard/index.ts +3 -0
  295. arango_entity_resolution-3.8.0/ui/src/components/export/ExportCenter.tsx +150 -0
  296. arango_entity_resolution-3.8.0/ui/src/components/export/ExportOptions.tsx +93 -0
  297. arango_entity_resolution-3.8.0/ui/src/components/export/index.ts +2 -0
  298. arango_entity_resolution-3.8.0/ui/src/components/golden/ConflictResolver.tsx +88 -0
  299. arango_entity_resolution-3.8.0/ui/src/components/golden/GoldenRecordView.tsx +195 -0
  300. arango_entity_resolution-3.8.0/ui/src/components/golden/MergeStrategySelector.tsx +46 -0
  301. arango_entity_resolution-3.8.0/ui/src/components/golden/ProvenanceTable.tsx +88 -0
  302. arango_entity_resolution-3.8.0/ui/src/components/golden/SourceRecords.tsx +107 -0
  303. arango_entity_resolution-3.8.0/ui/src/components/golden/index.ts +5 -0
  304. arango_entity_resolution-3.8.0/ui/src/components/layout/AppShell.tsx +71 -0
  305. arango_entity_resolution-3.8.0/ui/src/components/layout/ReviewerChip.tsx +31 -0
  306. arango_entity_resolution-3.8.0/ui/src/components/layout/Sidebar.tsx +105 -0
  307. arango_entity_resolution-3.8.0/ui/src/components/pipeline/ConfigUploader.tsx +232 -0
  308. arango_entity_resolution-3.8.0/ui/src/components/pipeline/PipelineHistory.tsx +169 -0
  309. arango_entity_resolution-3.8.0/ui/src/components/pipeline/PipelineResults.tsx +129 -0
  310. arango_entity_resolution-3.8.0/ui/src/components/pipeline/PipelineRunner.tsx +132 -0
  311. arango_entity_resolution-3.8.0/ui/src/components/pipeline/StageProgress.tsx +112 -0
  312. arango_entity_resolution-3.8.0/ui/src/components/pipeline/index.ts +5 -0
  313. arango_entity_resolution-3.8.0/ui/src/components/resolve/EntityResolver.tsx +207 -0
  314. arango_entity_resolution-3.8.0/ui/src/components/resolve/MatchResult.tsx +50 -0
  315. arango_entity_resolution-3.8.0/ui/src/components/resolve/RecordInputForm.tsx +60 -0
  316. arango_entity_resolution-3.8.0/ui/src/components/resolve/index.ts +3 -0
  317. arango_entity_resolution-3.8.0/ui/src/components/review/FieldScoreBar.tsx +33 -0
  318. arango_entity_resolution-3.8.0/ui/src/components/review/PairComparison.tsx +215 -0
  319. arango_entity_resolution-3.8.0/ui/src/components/review/ReviewFilters.tsx +85 -0
  320. arango_entity_resolution-3.8.0/ui/src/components/review/ReviewQueue.tsx +286 -0
  321. arango_entity_resolution-3.8.0/ui/src/components/review/ShortcutsModal.test.tsx +24 -0
  322. arango_entity_resolution-3.8.0/ui/src/components/review/ShortcutsModal.tsx +51 -0
  323. arango_entity_resolution-3.8.0/ui/src/components/review/ThresholdBanner.tsx +80 -0
  324. arango_entity_resolution-3.8.0/ui/src/components/review/VerdictPanel.tsx +168 -0
  325. arango_entity_resolution-3.8.0/ui/src/components/review/index.ts +6 -0
  326. arango_entity_resolution-3.8.0/ui/src/components/shared/Badge.tsx +35 -0
  327. arango_entity_resolution-3.8.0/ui/src/components/shared/DataTable.tsx +187 -0
  328. arango_entity_resolution-3.8.0/ui/src/components/shared/EmptyState.tsx +34 -0
  329. arango_entity_resolution-3.8.0/ui/src/components/shared/ErrorBoundary.tsx +55 -0
  330. arango_entity_resolution-3.8.0/ui/src/components/shared/FieldDiff.tsx +71 -0
  331. arango_entity_resolution-3.8.0/ui/src/components/shared/LoadingSpinner.tsx +28 -0
  332. arango_entity_resolution-3.8.0/ui/src/components/shared/ScoreBadge.tsx +27 -0
  333. arango_entity_resolution-3.8.0/ui/src/components/shared/SearchBar.tsx +37 -0
  334. arango_entity_resolution-3.8.0/ui/src/components/shared/StatCard.tsx +57 -0
  335. arango_entity_resolution-3.8.0/ui/src/components/tuning/ScoreHistogram.tsx +59 -0
  336. arango_entity_resolution-3.8.0/ui/src/contexts/CollectionContext.tsx +58 -0
  337. arango_entity_resolution-3.8.0/ui/src/hooks/useClusters.ts +49 -0
  338. arango_entity_resolution-3.8.0/ui/src/hooks/useCollections.ts +17 -0
  339. arango_entity_resolution-3.8.0/ui/src/hooks/useCuration.ts +75 -0
  340. arango_entity_resolution-3.8.0/ui/src/hooks/useMetrics.ts +26 -0
  341. arango_entity_resolution-3.8.0/ui/src/hooks/usePipeline.ts +34 -0
  342. arango_entity_resolution-3.8.0/ui/src/hooks/usePipelineWs.ts +187 -0
  343. arango_entity_resolution-3.8.0/ui/src/hooks/useProfile.ts +13 -0
  344. arango_entity_resolution-3.8.0/ui/src/hooks/useReview.ts +70 -0
  345. arango_entity_resolution-3.8.0/ui/src/hooks/useReviewer.ts +35 -0
  346. arango_entity_resolution-3.8.0/ui/src/index.css +21 -0
  347. arango_entity_resolution-3.8.0/ui/src/lib/cn.ts +6 -0
  348. arango_entity_resolution-3.8.0/ui/src/main.tsx +28 -0
  349. arango_entity_resolution-3.8.0/ui/src/pages/ClusterDetailPage.tsx +23 -0
  350. arango_entity_resolution-3.8.0/ui/src/pages/ClustersPage.tsx +34 -0
  351. arango_entity_resolution-3.8.0/ui/src/pages/ConfigPage.tsx +19 -0
  352. arango_entity_resolution-3.8.0/ui/src/pages/DashboardPage.tsx +28 -0
  353. arango_entity_resolution-3.8.0/ui/src/pages/ExportPage.tsx +33 -0
  354. arango_entity_resolution-3.8.0/ui/src/pages/GoldenRecordDetailPage.tsx +155 -0
  355. arango_entity_resolution-3.8.0/ui/src/pages/GoldenRecordsPage.tsx +212 -0
  356. arango_entity_resolution-3.8.0/ui/src/pages/PipelinePage.tsx +24 -0
  357. arango_entity_resolution-3.8.0/ui/src/pages/ProfilePage.tsx +157 -0
  358. arango_entity_resolution-3.8.0/ui/src/pages/ResolvePage.tsx +16 -0
  359. arango_entity_resolution-3.8.0/ui/src/pages/ReviewPage.tsx +70 -0
  360. arango_entity_resolution-3.8.0/ui/src/pages/ThresholdTunerPage.tsx +186 -0
  361. arango_entity_resolution-3.8.0/ui/src/test/setup.ts +1 -0
  362. arango_entity_resolution-3.8.0/ui/tsconfig.app.json +27 -0
  363. arango_entity_resolution-3.8.0/ui/tsconfig.json +7 -0
  364. arango_entity_resolution-3.8.0/ui/tsconfig.node.json +20 -0
  365. arango_entity_resolution-3.8.0/ui/vite.config.ts +36 -0
  366. arango_entity_resolution-3.3.0/COVERAGE_SUMMARY.txt +0 -57
  367. arango_entity_resolution-3.3.0/PKG-INFO +0 -1136
  368. arango_entity_resolution-3.3.0/README.md +0 -1090
  369. arango_entity_resolution-3.3.0/VERSION_HISTORY.md +0 -106
  370. arango_entity_resolution-3.3.0/VERSION_SUMMARY.md +0 -82
  371. arango_entity_resolution-3.3.0/config/test-database.md +0 -241
  372. arango_entity_resolution-3.3.0/coverage.json +0 -1
  373. arango_entity_resolution-3.3.0/detailed_coverage_analysis_20251003_061624.json +0 -98
  374. arango_entity_resolution-3.3.0/docs/PRD.md +0 -155
  375. arango_entity_resolution-3.3.0/docs/development/CLAUDE.md +0 -99
  376. arango_entity_resolution-3.3.0/docs/development/GAE_ENHANCEMENT_PATH.md +0 -464
  377. arango_entity_resolution-3.3.0/docs/guides/LIBRARY_ENHANCEMENT_PLAN.md +0 -797
  378. arango_entity_resolution-3.3.0/legacy/foxx-implementation/foxx-services/entity-resolution/manifest.json +0 -49
  379. arango_entity_resolution-3.3.0/legacy/foxx-implementation/foxx-services/test-service/manifest.json +0 -9
  380. arango_entity_resolution-3.3.0/scripts/benchmark_ann_adapter.py +0 -337
  381. arango_entity_resolution-3.3.0/src/entity_resolution/__init__.py +0 -194
  382. arango_entity_resolution-3.3.0/src/entity_resolution/cli.py +0 -336
  383. arango_entity_resolution-3.3.0/src/entity_resolution/mcp/server.py +0 -314
  384. arango_entity_resolution-3.3.0/src/entity_resolution/mcp/tools/entity.py +0 -142
  385. arango_entity_resolution-3.3.0/src/entity_resolution/mcp/tools/pipeline.py +0 -128
  386. arango_entity_resolution-3.3.0/src/entity_resolution/reasoning/llm_verifier.py +0 -239
  387. arango_entity_resolution-3.3.0/src/entity_resolution/services/__init__.py +0 -22
  388. arango_entity_resolution-3.3.0/src/entity_resolution/similarity/ann_adapter.py +0 -528
  389. arango_entity_resolution-3.3.0/src/entity_resolution/strategies/vector_blocking.py +0 -442
  390. arango_entity_resolution-3.3.0/src/entity_resolution/utils/archive_unused/enhanced_config.py +0 -209
  391. arango_entity_resolution-3.3.0/src/entity_resolution/utils/archive_unused/enhanced_logging.py +0 -111
  392. arango_entity_resolution-3.3.0/tests/archive_broken/test_address_er_service.py +0 -756
  393. arango_entity_resolution-3.3.0/tests/archive_broken/test_algorithms.py +0 -71
  394. arango_entity_resolution-3.3.0/tests/archive_broken/test_base_service.py +0 -71
  395. arango_entity_resolution-3.3.0/tests/archive_broken/test_blocking_service.py +0 -77
  396. arango_entity_resolution-3.3.0/tests/archive_broken/test_bulk_integration.py +0 -394
  397. arango_entity_resolution-3.3.0/tests/archive_broken/test_clustering_enhanced.py +0 -312
  398. arango_entity_resolution-3.3.0/tests/archive_broken/test_clustering_service.py +0 -77
  399. arango_entity_resolution-3.3.0/tests/archive_broken/test_clustering_service_fixed.py +0 -200
  400. arango_entity_resolution-3.3.0/tests/archive_broken/test_configurable_pipeline.py +0 -546
  401. arango_entity_resolution-3.3.0/tests/archive_broken/test_constants.py +0 -71
  402. arango_entity_resolution-3.3.0/tests/archive_broken/test_data_manager.py +0 -71
  403. arango_entity_resolution-3.3.0/tests/archive_broken/test_data_manager_comprehensive.py +0 -566
  404. arango_entity_resolution-3.3.0/tests/archive_broken/test_database.py +0 -454
  405. arango_entity_resolution-3.3.0/tests/archive_broken/test_demo_manager.py +0 -71
  406. arango_entity_resolution-3.3.0/tests/archive_broken/test_deterministic_edge_keys.py +0 -406
  407. arango_entity_resolution-3.3.0/tests/archive_broken/test_embedding_service.py +0 -579
  408. arango_entity_resolution-3.3.0/tests/archive_broken/test_entity_resolver.py +0 -71
  409. arango_entity_resolution-3.3.0/tests/archive_broken/test_entity_resolver_comprehensive.py +0 -718
  410. arango_entity_resolution-3.3.0/tests/archive_broken/test_entity_resolver_enhanced.py +0 -353
  411. arango_entity_resolution-3.3.0/tests/archive_broken/test_entity_resolver_simple.py +0 -142
  412. arango_entity_resolution-3.3.0/tests/archive_broken/test_graph_utils.py +0 -265
  413. arango_entity_resolution-3.3.0/tests/archive_broken/test_integration_and_performance.py +0 -441
  414. arango_entity_resolution-3.3.0/tests/archive_broken/test_logging.py +0 -71
  415. arango_entity_resolution-3.3.0/tests/archive_broken/test_performance_benchmarks.py +0 -370
  416. arango_entity_resolution-3.3.0/tests/archive_broken/test_pipeline_utils.py +0 -145
  417. arango_entity_resolution-3.3.0/tests/archive_broken/test_round_trip_v3.py +0 -481
  418. arango_entity_resolution-3.3.0/tests/archive_broken/test_similarity_and_edge_services.py +0 -314
  419. arango_entity_resolution-3.3.0/tests/archive_broken/test_similarity_enhanced.py +0 -324
  420. arango_entity_resolution-3.3.0/tests/archive_broken/test_similarity_service.py +0 -77
  421. arango_entity_resolution-3.3.0/tests/archive_broken/test_similarity_service_fixed.py +0 -214
  422. arango_entity_resolution-3.3.0/tests/archive_broken/test_validation_security.py +0 -526
  423. arango_entity_resolution-3.3.0/tests/archive_broken/test_validation_utils.py +0 -224
  424. arango_entity_resolution-3.3.0/tests/archive_broken/test_vector_blocking.py +0 -591
  425. arango_entity_resolution-3.3.0/tests/archive_broken/test_vector_blocking_performance.py +0 -396
  426. arango_entity_resolution-3.3.0/tests/archive_broken/test_view_utils.py +0 -279
  427. arango_entity_resolution-3.3.0/tests/archive_broken/test_wcc_performance.py +0 -559
  428. arango_entity_resolution-3.3.0/tests/test_ann_adapter.py +0 -501
  429. arango_entity_resolution-3.3.0/tests/test_ann_adapter_unit.py +0 -119
  430. arango_entity_resolution-3.3.0/tests/test_cli.py +0 -317
  431. arango_entity_resolution-3.3.0/tests/test_configurable_pipeline_unit.py +0 -296
  432. arango_entity_resolution-3.3.0/tests/test_golden_record_persistence_service.py +0 -116
  433. arango_entity_resolution-3.3.0/tests/test_mcp_tools.py +0 -446
  434. arango_entity_resolution-3.3.0/tests/test_vector_blocking_strategy_unit.py +0 -133
  435. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/.cursorrules +0 -0
  436. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/.env.example +0 -0
  437. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/IMPLEMENTATION_STATUS.md +0 -0
  438. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/config.example.json +0 -0
  439. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/data/sample/customers_sample.json +0 -0
  440. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/PRESENTATION_SCRIPT.md +0 -0
  441. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/README.md +0 -0
  442. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/data/demo_customers.json +0 -0
  443. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/data/demo_metadata.json +0 -0
  444. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/data/demo_report_20251003_084613.json +0 -0
  445. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/data/duplicate_groups.json +0 -0
  446. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/data/industry_scenarios/b2b_sales_scenario.json +0 -0
  447. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/data/industry_scenarios/ecommerce_scenario.json +0 -0
  448. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/data/industry_scenarios/financial_scenario.json +0 -0
  449. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/data/industry_scenarios/healthcare_scenario.json +0 -0
  450. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/data/industry_scenarios/scenarios_summary.json +0 -0
  451. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/launch_presentation_demo.py +0 -0
  452. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/scripts/data_generator.py +0 -0
  453. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/scripts/database_inspector.py +0 -0
  454. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/scripts/demo_orchestrator.py +0 -0
  455. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/scripts/industry_scenarios.py +0 -0
  456. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/scripts/interactive_presentation_demo.py +0 -0
  457. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/scripts/package_demo.py +0 -0
  458. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/templates/demo_dashboard.html +0 -0
  459. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/DOCKER_TESTING_SETUP.md +0 -0
  460. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/E2E_TEST_STATUS.md +0 -0
  461. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/TEST_COVERAGE_SUMMARY.md +0 -0
  462. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/architecture/DESIGN.md +0 -0
  463. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/architecture/GRAPH_ALGORITHMS_EXPLANATION.md +0 -0
  464. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/ADDRESS_ER_ANALYZER_FIX_AUDIT.md +0 -0
  465. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/AUDIT_2025_SUMMARY.md +0 -0
  466. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/AUDIT_CHECKLIST.md +0 -0
  467. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/AUDIT_QUICK_SUMMARY.md +0 -0
  468. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/CODE_AUDIT_REPORT.md +0 -0
  469. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/CODE_AUDIT_SUMMARY.md +0 -0
  470. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/CODE_AUDIT_V3.md +0 -0
  471. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/COMPREHENSIVE_AUDIT_REPORT.md +0 -0
  472. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/DOCUMENTATION_AUDIT.md +0 -0
  473. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/FINAL_CODE_AUDIT.md +0 -0
  474. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/IMPROVEMENT_OPPORTUNITIES_SUMMARY.md +0 -0
  475. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/PRE_COMMIT_RISK_ASSESSMENT.md +0 -0
  476. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/PROJECT_EVALUATION_2025.md +0 -0
  477. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/QUICK_WINS_IMPLEMENTATION_2025.md +0 -0
  478. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/TEST_COVERAGE_AUDIT.md +0 -0
  479. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/API_DOCUMENTATION_SUMMARY.md +0 -0
  480. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/API_EXAMPLES.md +0 -0
  481. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/API_PYTHON.md +0 -0
  482. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/API_QUICKSTART.md +0 -0
  483. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/API_REFERENCE.md +0 -0
  484. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/DEPLOYMENT_VALIDATION_REPORT.md +0 -0
  485. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/DESIGN_SIMPLIFICATION.md +0 -0
  486. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/DOCUMENTATION_INDEX.md +0 -0
  487. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/ENHANCEMENT_ANALYSIS_SUMMARY.md +0 -0
  488. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/ENHANCEMENT_ROADMAP.md +0 -0
  489. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/LIB_USER_UPDATE_CHECKLIST.md +0 -0
  490. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/LIB_USER_UPDATE_EXAMPLES.md +0 -0
  491. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/LIB_USER_UPDATE_GUIDE.md +0 -0
  492. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/PERFORMANCE_IMPROVEMENTS_SUMMARY.md +0 -0
  493. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/REFACTORING_COMPLETE.md +0 -0
  494. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/SECURITY_FIXES_APPLIED.md +0 -0
  495. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/SECURITY_FIXES_NEEDED.md +0 -0
  496. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/library-enhancements-summary-v2.md +0 -0
  497. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/pre-commit-summary.md +0 -0
  498. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/session-notes/HIGH_PRIORITY_RISKS_RESOLVED.md +0 -0
  499. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/session-notes/IMPLEMENTATION_PROGRESS.md +0 -0
  500. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/session-notes/QUICK_WINS_COMPLETE.md +0 -0
  501. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/session-notes/SESSION_SUMMARY.md +0 -0
  502. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/session-notes/TODO_REVIEW.md +0 -0
  503. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/test-reports/ALL_TESTS_FIXED.md +0 -0
  504. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/test-reports/TESTING_AND_DOCS_SUMMARY.md +0 -0
  505. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/test-reports/TEST_COVERAGE_SUMMARY.md +0 -0
  506. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/test-reports/TEST_IMPROVEMENTS_COMPLETE.md +0 -0
  507. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/test-reports/TEST_RESULTS.md +0 -0
  508. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/test-reports/TEST_STATUS.md +0 -0
  509. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/test-reports/TEST_VERIFICATION_REPORT.md +0 -0
  510. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/test-reports/WHATS_NEW_TEST_COVERAGE.md +0 -0
  511. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/AVAILABLE_DATASETS.md +0 -0
  512. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/BATCH_VS_BULK_PROCESSING.md +0 -0
  513. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/BLOCKING_BENCHMARKS.md +0 -0
  514. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/BULK_PROCESSING_IMPLEMENTATION_SUMMARY.md +0 -0
  515. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/CODE_QUALITY_ANALYSIS_REPORT_2026-02-12.md +0 -0
  516. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/DIAGRAM_GENERATION_GUIDE.md +0 -0
  517. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/EDGE_BULK_LOADING_ANALYSIS.md +0 -0
  518. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/GIT_HOOKS.md +0 -0
  519. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/LIBRARY_PORT_ANALYSIS.md +0 -0
  520. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/PROJECT_EVOLUTION.md +0 -0
  521. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/TESTING.md +0 -0
  522. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/TUPLE_EMBEDDING_SERIALIZATION.md +0 -0
  523. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/code-quality-audit.md +0 -0
  524. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/documentation-audit.md +0 -0
  525. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/documentation-quality-review.md +0 -0
  526. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/merge-conflict-analysis.md +0 -0
  527. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/pre-push-hook-issue.md +0 -0
  528. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/vector-search-code-quality-review.md +0 -0
  529. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/wcc-performance-fix/CUSTOMER_SUMMARY.md +0 -0
  530. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/wcc-performance-fix/README.md +0 -0
  531. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/wcc-performance-fix/TECHNICAL.md +0 -0
  532. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/wcc-performance-fix/WITH_CLAUSE.md +0 -0
  533. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/README.md +0 -0
  534. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/arango-multimodel.mermaid +0 -0
  535. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/arango-multimodel.svg +0 -0
  536. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/architecture.mermaid +0 -0
  537. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/architecture.svg +0 -0
  538. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/component-architecture.mermaid +0 -0
  539. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/component-architecture.svg +0 -0
  540. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/high-level-architecture.mermaid +0 -0
  541. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/high-level-architecture.svg +0 -0
  542. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/system-architecture.mermaid +0 -0
  543. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/system-architecture.svg +0 -0
  544. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/workflow.mermaid +0 -0
  545. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/workflow.svg +0 -0
  546. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/enrichments.md +0 -0
  547. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/guides/COMPUTED_FIELDS_GUIDE.md +0 -0
  548. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/guides/CUSTOM_COLLECTIONS_GUIDE.md +0 -0
  549. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/guides/MIGRATION_GUIDE_V2.md +0 -0
  550. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/guides/MIGRATION_GUIDE_V3.md +0 -0
  551. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/guides/TESTING_GUIDE.md +0 -0
  552. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/openapi.yaml +0 -0
  553. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/testing/README.md +0 -0
  554. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/testing/e2e-test-results.md +0 -0
  555. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/testing/functional-test-results.md +0 -0
  556. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/testing/post-merge-test-results.md +0 -0
  557. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/testing/testing-complete.md +0 -0
  558. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/testing/testing-status.md +0 -0
  559. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/validation/README.md +0 -0
  560. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/validation/hardware_ground_truth.json +0 -0
  561. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/validation/medical_ground_truth.json +0 -0
  562. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/validation/validate_metrics.py +0 -0
  563. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/validation/validation_methodology.md +0 -0
  564. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/validation/validation_results.json +0 -0
  565. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/validation/validation_results_hardware.json +0 -0
  566. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/validation/validation_results_medical.json +0 -0
  567. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/examples/bulk_processing_demo.py +0 -0
  568. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/examples/cross_collection_matching_examples.py +0 -0
  569. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/examples/enrichments/domain_agnostic_examples.py +0 -0
  570. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/examples/enrichments/hardware_er_example.py +0 -0
  571. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/pytest.ini +0 -0
  572. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/reports/complete_pipeline_report.json +0 -0
  573. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/reports/demo_report.json +0 -0
  574. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/reports/performance_benchmark.json +0 -0
  575. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/requirements.txt +0 -0
  576. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/CONTRIBUTION_CHECKLIST.md +0 -0
  577. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/ENRICHMENTS_INTEGRATION_COMPLETE.md +0 -0
  578. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/FINAL_APPROVAL_HARDWARE_ER.md +0 -0
  579. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/FINAL_SIGNOFF_HARDWARE_ER.md +0 -0
  580. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/HARDWARE_ER_FEEDBACK_SUMMARY.md +0 -0
  581. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/HARDWARE_ER_FINAL_REVIEW.md +0 -0
  582. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/HARDWARE_ER_TLDR.md +0 -0
  583. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/IC_ENRICHMENT_PACK_ASSESSMENT.md +0 -0
  584. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/README.md +0 -0
  585. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/SEND_NOW_HARDWARE_ER.md +0 -0
  586. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/bibliography.md +0 -0
  587. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/notes/arango_search_implementation_strategy.md +0 -0
  588. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/papers/README.md +0 -0
  589. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/papers/blocking/2014_Papadakis_BlockingFilteringSurvey_notes.md +0 -0
  590. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/papers/blocking/2021_Thirumuruganathan_LearningBlocking_notes.md +0 -0
  591. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/papers/embeddings/2018_Ebraheem_DistributedEntityMatching_notes.md +0 -0
  592. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/papers/embeddings/2018_Mudgal_DeepLearningEntityMatching_notes.md +0 -0
  593. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/papers/similarity/1969_Fellegi_ProbabilisticRecordLinkage_notes.md +0 -0
  594. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/papers/systems/2016_Doan_MagellanEntityMatching_notes.md +0 -0
  595. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/advanced_similarity_tuning.py +0 -0
  596. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/arango_test_down.sh +0 -0
  597. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/arango_test_up.sh +0 -0
  598. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/auto_cleanup_databases.py +0 -0
  599. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/benchmark_lsh_blocking.py +0 -0
  600. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/benchmarks/performance_comparison.py +0 -0
  601. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/benchmarks/similarity_performance_test.py +0 -0
  602. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/cleanup_report_files.py +0 -0
  603. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/code_quality_audit.py +0 -0
  604. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/code_quality_cleanup.py +0 -0
  605. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/common/__init__.py +0 -0
  606. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/comprehensive_cleanup.py +0 -0
  607. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/comprehensive_code_review.py +0 -0
  608. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/comprehensive_system_test.py +0 -0
  609. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/consolidated_test_suite.py +0 -0
  610. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/create_comprehensive_unit_tests.py +0 -0
  611. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/crud/crud_operations.py +0 -0
  612. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/database/manage_db.py +0 -0
  613. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/demo_walkthrough.py +0 -0
  614. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/enhanced_clustering_algorithms.py +0 -0
  615. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/enhanced_qa_tests.py +0 -0
  616. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/entity_resolution_demo.py +0 -0
  617. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/final_code_quality_check.py +0 -0
  618. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/fix_bare_except_clauses.py +0 -0
  619. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/fix_todo_comments.py +0 -0
  620. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/focused_er_demo.py +0 -0
  621. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/implement_configuration_management.py +0 -0
  622. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/implement_logging_framework.py +0 -0
  623. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/improved_database_manager.py +0 -0
  624. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/performance_optimization.py +0 -0
  625. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/publish.sh +0 -0
  626. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/realistic_integration_tests.py +0 -0
  627. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/run_node2vec_integration_with_docker.sh +0 -0
  628. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/run_tests_with_temp_arango.sh +0 -0
  629. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/setup-git-hooks.sh +0 -0
  630. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/setup.sh +0 -0
  631. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/setup_demo_database.py +0 -0
  632. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/setup_test_database.py +0 -0
  633. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/shared_utils.py +0 -0
  634. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/teardown.sh +0 -0
  635. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/test_configuration_management.py +0 -0
  636. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/test_coverage_analyzer.py +0 -0
  637. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/test_error_handling.py +0 -0
  638. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/test_logging_framework.py +0 -0
  639. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/tests/analyze_test_coverage.py +0 -0
  640. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/tests/detailed_coverage_analysis.py +0 -0
  641. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/tests/diagnose_similarity_issue.py +0 -0
  642. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/tests/final_comprehensive_tests.py +0 -0
  643. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/unified_cleanup.py +0 -0
  644. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/validate_deployment.sh +0 -0
  645. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/validate_performance.py +0 -0
  646. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/core/__init__.py +0 -0
  647. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/core/entity_resolver.py +0 -0
  648. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/data/__init__.py +0 -0
  649. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/demo/__init__.py +0 -0
  650. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/demo/demo_manager.py +0 -0
  651. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/enrichments/README.md +0 -0
  652. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/enrichments/__init__.py +0 -0
  653. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/enrichments/acronym_handler.py +0 -0
  654. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/enrichments/context_resolver.py +0 -0
  655. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/enrichments/relationship_sweeper.py +0 -0
  656. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/enrichments/type_constraints.py +0 -0
  657. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/etl/__init__.py +0 -0
  658. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/etl/canonical_resolver.py +0 -0
  659. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/etl/normalizers.py +0 -0
  660. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/etl/provenance.py +0 -0
  661. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/mcp/__init__.py +0 -0
  662. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/mcp/resources/__init__.py +0 -0
  663. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/mcp/tools/__init__.py +0 -0
  664. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/py.typed +0 -0
  665. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/reasoning/__init__.py +0 -0
  666. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/ab_evaluation_harness.py +0 -0
  667. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/ab_evaluation_runner.py +0 -0
  668. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/base_service.py +0 -0
  669. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/bulk_blocking_service.py +0 -0
  670. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/clustering_service.py +0 -0
  671. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/similarity/__init__.py +0 -0
  672. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/strategies/__init__.py +0 -0
  673. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/__init__.py +0 -0
  674. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/algorithms.py +0 -0
  675. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/aql_builders.py +0 -0
  676. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/graph_utils.py +0 -0
  677. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/pipeline_utils.py +0 -0
  678. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/validation_utils.py +0 -0
  679. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/enrichments/test_components.py +0 -0
  680. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_ab_evaluation_harness.py +0 -0
  681. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_ab_evaluation_runner.py +0 -0
  682. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_address_er_service_arangoimport_redaction.py +0 -0
  683. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_algorithms_comprehensive.py +0 -0
  684. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_aql_builders_filter_builder.py +0 -0
  685. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_blocking_service_legacy_unit.py +0 -0
  686. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_bulk_blocking_service.py +0 -0
  687. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_canonical_resolver.py +0 -0
  688. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_canonical_resolver_integration.py +0 -0
  689. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_cluster_export_service.py +0 -0
  690. {arango_entity_resolution-3.3.0/examples → arango_entity_resolution-3.8.0/tests}/test_clustering_service.py +0 -0
  691. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_computed_fields.py +0 -0
  692. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_config.py +0 -0
  693. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_config_utils.py +0 -0
  694. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_cross_collection_matching_service_validation.py +0 -0
  695. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_embedding_service_identifier_validation.py +0 -0
  696. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_entity_resolver_pipeline_unit.py +0 -0
  697. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_lsh_blocking.py +0 -0
  698. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_node2vec_embedding_service_integration.py +0 -0
  699. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_normalizers.py +0 -0
  700. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_pipeline_utils.py +0 -0
  701. {arango_entity_resolution-3.3.0/examples → arango_entity_resolution-3.8.0/tests}/test_similarity_service.py +0 -0
  702. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_validation_utils_full.py +0 -0
  703. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_view_utils_full.py +0 -0
  704. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_view_utils_validation.py +0 -0
  705. {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_wcc_clustering_service.py +0 -0
@@ -29,13 +29,20 @@ fi
29
29
  # Set Python path
30
30
  export PYTHONPATH="${PWD}/src:${PYTHONPATH}"
31
31
 
32
+ # Prefer the project virtualenv (has dependencies); fall back to system python3
33
+ if [ -x ".venv/bin/python" ]; then
34
+ PYTHON=".venv/bin/python"
35
+ else
36
+ PYTHON="python3"
37
+ fi
38
+
32
39
  # Run quick smoke tests
33
40
  echo "[1/4] Checking Python syntax..."
34
- python3 -m py_compile src/entity_resolution/utils/config.py || {
41
+ "$PYTHON" -m py_compile src/entity_resolution/utils/config.py || {
35
42
  echo -e "${RED}[FAIL] Syntax error in config.py${NC}"
36
43
  exit 1
37
44
  }
38
- python3 -m py_compile src/entity_resolution/utils/constants.py || {
45
+ "$PYTHON" -m py_compile src/entity_resolution/utils/constants.py || {
39
46
  echo -e "${RED}[FAIL] Syntax error in constants.py${NC}"
40
47
  exit 1
41
48
  }
@@ -56,8 +63,25 @@ echo -e "${GREEN}[OK] No hardcoded credentials found${NC}"
56
63
 
57
64
  echo ""
58
65
  echo "[3/4] Checking for emoji characters..."
59
- # Check Python files only (not JSON data)
60
- if grep -r "[\x{2713}\x{2714}\x{2715}\x{274C}\x{26A0}\x{1F389}\x{1F44D}]" src/ demo/*.py demo/scripts/*.py 2>/dev/null | grep -v "Binary"; then
66
+ # Check Python source files only (portable: BSD grep does not support \x{...} classes)
67
+ if "$PYTHON" - << 'EMOJICHECK'
68
+ import pathlib, sys
69
+ emoji = {"✓", "✔", "✕", "❌", "⚠", "\U0001F389", "\U0001F44D"}
70
+ hits = []
71
+ for path in pathlib.Path("src").rglob("*.py"):
72
+ try:
73
+ text = path.read_text(encoding="utf-8", errors="ignore")
74
+ except OSError:
75
+ continue
76
+ if any(ch in text for ch in emoji):
77
+ hits.append(str(path))
78
+ if hits:
79
+ print("\n".join(hits))
80
+ sys.exit(1)
81
+ EMOJICHECK
82
+ then
83
+ : # clean
84
+ else
61
85
  echo -e "${YELLOW}[WARNING] Found emoji characters (should use ASCII only)${NC}"
62
86
  echo "Consider replacing emojis with [OK], [ERROR], [WARNING] indicators"
63
87
  # Don't fail, just warn
@@ -66,7 +90,7 @@ echo -e "${GREEN}[OK] Code style check passed${NC}"
66
90
 
67
91
  echo ""
68
92
  echo "[4/4] Running critical module imports..."
69
- python3 << 'PYTEST'
93
+ "$PYTHON" << 'PYTEST'
70
94
  import sys
71
95
  import os
72
96
 
@@ -32,6 +32,13 @@ fi
32
32
  # Set Python path
33
33
  export PYTHONPATH="${PWD}/src:${PYTHONPATH:-}"
34
34
 
35
+ # Prefer the project virtualenv (has dependencies); fall back to system python3
36
+ if [ -x ".venv/bin/python" ]; then
37
+ PYTHON=".venv/bin/python"
38
+ else
39
+ PYTHON="python3"
40
+ fi
41
+
35
42
  # Check if we should skip tests (for emergency pushes)
36
43
  if [ -n "${SKIP_TESTS:-}" ]; then
37
44
  echo -e "${YELLOW}[WARNING] Skipping tests (SKIP_TESTS environment variable set)${NC}"
@@ -67,13 +74,13 @@ if command -v docker >/dev/null 2>&1 && command -v curl >/dev/null 2>&1; then
67
74
  fi
68
75
  else
69
76
  echo -e "${YELLOW}[WARNING] docker and/or curl not found; running unit tests only${NC}"
70
- if ! run_test_section "Unit Tests (no Docker)" "python3 -m pytest -q -m \"not integration and not performance\" 2>&1 | tail -50"; then
77
+ if ! run_test_section "Unit Tests (no Docker)" "\"$PYTHON\" -m pytest -q -m \"not integration and not performance\" 2>&1 | tail -50"; then
71
78
  FAILED_TESTS+=("Unit Tests (no Docker)")
72
79
  fi
73
80
  fi
74
81
 
75
82
  # Test 4: Import Verification
76
- if ! run_test_section "Module Imports" "python3 << 'PYTEST'
83
+ if ! run_test_section "Module Imports" "\"$PYTHON\" << 'PYTEST'
77
84
  import sys
78
85
  import warnings
79
86
  warnings.filterwarnings('ignore')
@@ -116,7 +123,7 @@ PYTEST"; then
116
123
  fi
117
124
 
118
125
  # Test 5: Code Quality (Quick Check)
119
- if ! run_test_section "Code Quality" "python3 -m py_compile src/entity_resolution/utils/config.py src/entity_resolution/utils/constants.py src/entity_resolution/core/entity_resolver.py 2>&1 | head -10"; then
126
+ if ! run_test_section "Code Quality" "\"$PYTHON\" -m py_compile src/entity_resolution/utils/config.py src/entity_resolution/utils/constants.py src/entity_resolution/core/entity_resolver.py 2>&1 | head -10"; then
120
127
  FAILED_TESTS+=("Code Quality")
121
128
  fi
122
129
 
@@ -24,7 +24,7 @@ jobs:
24
24
  run: |
25
25
  python -m pip install --upgrade pip
26
26
  python -m pip install build twine
27
- python -m pip install -e ".[test,ml,llm,mcp]"
27
+ python -m pip install -e ".[test,ml,llm,mcp,ui]"
28
28
 
29
29
  - name: Run unit tests
30
30
  env:
@@ -15,17 +15,17 @@ jobs:
15
15
  steps:
16
16
  - uses: actions/checkout@v4
17
17
 
18
- - name: Set up Python 3.10
18
+ - name: Set up Python 3.11
19
19
  uses: actions/setup-python@v5
20
20
  with:
21
- python-version: "3.10"
21
+ python-version: "3.11"
22
22
  cache: 'pip'
23
23
 
24
24
  - name: Install dependencies
25
25
  run: |
26
26
  python -m pip install --upgrade pip
27
27
  python -m pip install build
28
- python -m pip install -e ".[test,ml,llm,mcp]"
28
+ python -m pip install -e ".[test,ml,llm,mcp,ui]"
29
29
 
30
30
  - name: Build wheel and source distribution
31
31
  run: python -m build
@@ -0,0 +1,279 @@
1
+ name: Runtime Platform Matrix
2
+
3
+ on:
4
+ pull_request:
5
+ branches: ["main"]
6
+ paths:
7
+ - ".github/workflows/runtime-platform-matrix.yml"
8
+ - "scripts/summarize_runtime_activation.py"
9
+ - "src/entity_resolution/cli.py"
10
+ - "src/entity_resolution/services/runtime_*.py"
11
+ - "tests/test_cli.py"
12
+ - "tests/test_runtime_*.py"
13
+ - "docs/development/RUNTIME_HEALTH_CI_RUNBOOK.md"
14
+ - "ci/runtime-quality/**"
15
+ push:
16
+ branches: ["main"]
17
+ paths:
18
+ - ".github/workflows/runtime-platform-matrix.yml"
19
+ - "scripts/summarize_runtime_activation.py"
20
+ - "src/entity_resolution/cli.py"
21
+ - "src/entity_resolution/services/runtime_*.py"
22
+ - "tests/test_cli.py"
23
+ - "tests/test_runtime_*.py"
24
+ - "docs/development/RUNTIME_HEALTH_CI_RUNBOOK.md"
25
+ - "ci/runtime-quality/**"
26
+ workflow_dispatch:
27
+ inputs:
28
+ enable_self_hosted:
29
+ description: "Enable Apple Silicon and Linux GPU self-hosted jobs"
30
+ required: false
31
+ default: false
32
+ type: boolean
33
+
34
+ permissions:
35
+ contents: read
36
+
37
+ concurrency:
38
+ group: runtime-platform-matrix-${{ github.ref }}
39
+ cancel-in-progress: true
40
+
41
+ jobs:
42
+ build-matrix:
43
+ name: Build test matrix
44
+ runs-on: ubuntu-latest
45
+ outputs:
46
+ matrix: ${{ steps.set.outputs.matrix }}
47
+ steps:
48
+ - name: Compute matrix include list
49
+ id: set
50
+ run: |
51
+ BASE='[{"name":"linux-cpu","runs_on":"[\"ubuntu-latest\"]","self_hosted":false,"platform_tag":"linux-cpu","run_quality_gate":true}]'
52
+ FULL='[{"name":"linux-cpu","runs_on":"[\"ubuntu-latest\"]","self_hosted":false,"platform_tag":"linux-cpu","run_quality_gate":true},{"name":"apple-silicon","runs_on":"[\"self-hosted\",\"macOS\",\"ARM64\"]","self_hosted":true,"platform_tag":"apple-silicon","run_quality_gate":false},{"name":"linux-gpu","runs_on":"[\"self-hosted\",\"linux\",\"x64\",\"gpu\",\"nvidia\"]","self_hosted":true,"platform_tag":"linux-gpu","run_quality_gate":false}]'
53
+
54
+ if [[ "${{ github.event_name }}" == "workflow_dispatch" && "${{ github.event.inputs.enable_self_hosted }}" == "true" ]]; then
55
+ echo "matrix={\"include\":$FULL}" >> "$GITHUB_OUTPUT"
56
+ else
57
+ echo "matrix={\"include\":$BASE}" >> "$GITHUB_OUTPUT"
58
+ fi
59
+
60
+ runtime-platform-tests:
61
+ name: ${{ matrix.name }}
62
+ needs: build-matrix
63
+ runs-on: ${{ fromJson(matrix.runs_on) }}
64
+ timeout-minutes: 30
65
+ strategy:
66
+ fail-fast: false
67
+ matrix: ${{ fromJson(needs.build-matrix.outputs.matrix) }}
68
+
69
+ steps:
70
+ - name: Checkout
71
+ uses: actions/checkout@v4
72
+
73
+ - name: Set up Python
74
+ uses: actions/setup-python@v5
75
+ with:
76
+ python-version: "3.11"
77
+ cache: "pip"
78
+
79
+ - name: Install dependencies
80
+ run: |
81
+ python -m pip install --upgrade pip
82
+ python -m pip install -e ".[test,ml,mcp]"
83
+
84
+ - name: Runtime CLI contract smoke checks
85
+ run: |
86
+ arango-er runtime-health-benchmark --help
87
+ arango-er runtime-health-gate --help
88
+ arango-er runtime-quality-policy-validate --help
89
+ arango-er runtime-activation-summary --help
90
+
91
+ - name: Runtime benchmark/gate unit checks
92
+ env:
93
+ USE_DEFAULT_PASSWORD: "true"
94
+ run: |
95
+ pytest -q tests/test_runtime_benchmark_service.py
96
+ pytest -q tests/test_cli.py -k "runtime_health_benchmark or runtime_health_gate"
97
+ pytest -q tests/test_runtime_quality_policy_service.py tests/test_runtime_quality_policy_ci.py
98
+
99
+ - name: Validate quality policy and artifact references
100
+ run: |
101
+ arango-er runtime-quality-policy-validate \
102
+ --policy-file ci/runtime-quality/quality_gate_policy.json
103
+
104
+ - name: Start ephemeral ArangoDB for quality gate
105
+ if: ${{ matrix.run_quality_gate }}
106
+ run: |
107
+ ARANGO_ROOT_PASSWORD="${ARANGO_ROOT_PASSWORD:-${ARANGO_PASSWORD:-$(python - <<'PY'
108
+ import secrets
109
+ print(secrets.token_urlsafe(24))
110
+ PY
111
+ )}}"
112
+ echo "ARANGO_ROOT_PASSWORD=$ARANGO_ROOT_PASSWORD" >> "$GITHUB_ENV"
113
+ echo "ARANGO_PASSWORD=$ARANGO_ROOT_PASSWORD" >> "$GITHUB_ENV"
114
+ docker run -d --name runtime-gate-arango -e ARANGO_ROOT_PASSWORD="$ARANGO_ROOT_PASSWORD" -p 8529:8529 arangodb:3.11
115
+ for i in {1..30}; do
116
+ if curl -fsS -u "root:${ARANGO_ROOT_PASSWORD}" "http://127.0.0.1:8529/_api/version" >/dev/null; then
117
+ echo "ArangoDB is ready"
118
+ exit 0
119
+ fi
120
+ sleep 2
121
+ done
122
+ echo "ArangoDB did not become ready in time" >&2
123
+ exit 1
124
+
125
+ - name: Resolve quality gate policy for lane
126
+ if: ${{ matrix.run_quality_gate }}
127
+ run: |
128
+ python - <<'PY'
129
+ import json
130
+ import os
131
+ from pathlib import Path
132
+
133
+ policy = json.loads(Path("ci/runtime-quality/quality_gate_policy.json").read_text(encoding="utf-8"))
134
+ profile = "${{ matrix.platform_tag }}"
135
+ cfg = policy["profiles"][profile]
136
+
137
+ env_path = Path(os.environ["GITHUB_ENV"])
138
+ with env_path.open("a", encoding="utf-8") as fh:
139
+ fh.write(f"QUALITY_LABEL={cfg['label']}\n")
140
+ fh.write(f"QUALITY_CORPUS={cfg['quality_corpus']}\n")
141
+ fh.write(f"QUALITY_BASELINE={cfg['quality_baseline_metrics']}\n")
142
+ fh.write(f"QUALITY_MODEL_NAME={cfg['quality_model_name']}\n")
143
+ fh.write(f"QUALITY_DEVICE={cfg['quality_device']}\n")
144
+ fh.write(f"QUALITY_BATCH_SIZE={cfg['quality_batch_size']}\n")
145
+ fh.write(f"QUALITY_COSINE_DRIFT_MAX={cfg['quality_cosine_drift_max']}\n")
146
+ fh.write(f"QUALITY_TOPK_OVERLAP_MIN={cfg['quality_topk_overlap_min']}\n")
147
+ PY
148
+
149
+ - name: Run corpus-driven runtime health gate
150
+ if: ${{ matrix.run_quality_gate }}
151
+ run: |
152
+ mkdir -p artifacts/runtime artifacts/quality
153
+ arango-er runtime-health-gate \
154
+ -c config/er_config.example.yaml \
155
+ --host 127.0.0.1 \
156
+ --port 8529 \
157
+ --username root \
158
+ --password "${ARANGO_ROOT_PASSWORD}" \
159
+ --database _system \
160
+ --registry-file artifacts/runtime/runtime_registry_${{ matrix.platform_tag }}.json \
161
+ --label "${QUALITY_LABEL}" \
162
+ --bootstrap-baseline \
163
+ --quality-corpus "${QUALITY_CORPUS}" \
164
+ --quality-model-name "${QUALITY_MODEL_NAME}" \
165
+ --quality-device "${QUALITY_DEVICE}" \
166
+ --quality-batch-size "${QUALITY_BATCH_SIZE}" \
167
+ --quality-baseline-metrics "${QUALITY_BASELINE}" \
168
+ --quality-cosine-drift-max "${QUALITY_COSINE_DRIFT_MAX}" \
169
+ --quality-topk-overlap-min "${QUALITY_TOPK_OVERLAP_MIN}" \
170
+ --fail-on-regression > artifacts/quality/quality_gate_${{ matrix.platform_tag }}.json
171
+
172
+ - name: Stop ephemeral ArangoDB
173
+ if: ${{ always() && matrix.run_quality_gate }}
174
+ run: |
175
+ docker rm -f runtime-gate-arango || true
176
+
177
+ - name: Collect runtime environment evidence
178
+ if: always()
179
+ run: |
180
+ mkdir -p artifacts/runtime
181
+ python - <<'PY'
182
+ import json
183
+ import platform
184
+ from pathlib import Path
185
+
186
+ payload = {
187
+ "platform_tag": "${{ matrix.platform_tag }}",
188
+ "python_version": platform.python_version(),
189
+ "system": platform.system(),
190
+ "machine": platform.machine(),
191
+ "processor": platform.processor(),
192
+ }
193
+
194
+ try:
195
+ import torch
196
+ payload["torch"] = {
197
+ "available": True,
198
+ "version": getattr(torch, "__version__", None),
199
+ "cuda_available": bool(torch.cuda.is_available()),
200
+ "mps_available": bool(
201
+ hasattr(torch.backends, "mps")
202
+ and torch.backends.mps.is_available()
203
+ ),
204
+ }
205
+ except Exception as exc:
206
+ payload["torch"] = {"available": False, "error": str(exc)}
207
+
208
+ try:
209
+ import onnxruntime as ort
210
+ payload["onnxruntime"] = {
211
+ "available": True,
212
+ "version": ort.__version__,
213
+ "providers": ort.get_available_providers(),
214
+ }
215
+ except Exception as exc:
216
+ payload["onnxruntime"] = {"available": False, "error": str(exc)}
217
+
218
+ out = Path("artifacts/runtime") / f"runtime_env_${{ matrix.platform_tag }}.json"
219
+ out.write_text(json.dumps(payload, indent=2), encoding="utf-8")
220
+ print(f"Wrote {out}")
221
+ PY
222
+
223
+ - name: Upload runtime matrix logs
224
+ if: always()
225
+ uses: actions/upload-artifact@v4
226
+ with:
227
+ name: runtime-matrix-${{ matrix.platform_tag }}
228
+ if-no-files-found: ignore
229
+ retention-days: 7
230
+ path: |
231
+ .pytest_cache
232
+ artifacts/runtime/runtime_env_${{ matrix.platform_tag }}.json
233
+ artifacts/runtime/runtime_registry_${{ matrix.platform_tag }}.json
234
+ artifacts/quality/quality_gate_${{ matrix.platform_tag }}.json
235
+
236
+ summarize-activation-evidence:
237
+ name: summarize-activation-evidence
238
+ runs-on: ubuntu-latest
239
+ needs: runtime-platform-tests
240
+ if: always()
241
+ steps:
242
+ - name: Checkout
243
+ uses: actions/checkout@v4
244
+
245
+ - name: Set up Python
246
+ uses: actions/setup-python@v5
247
+ with:
248
+ python-version: "3.11"
249
+ cache: "pip"
250
+
251
+ - name: Install package
252
+ run: |
253
+ python -m pip install --upgrade pip
254
+ python -m pip install -e .
255
+
256
+ - name: Download runtime matrix artifacts
257
+ continue-on-error: true
258
+ uses: actions/download-artifact@v4
259
+ with:
260
+ pattern: runtime-matrix-*
261
+ merge-multiple: true
262
+ path: artifacts
263
+
264
+ - name: Build activation evidence summary
265
+ run: |
266
+ arango-er runtime-activation-summary \
267
+ --artifacts-root artifacts \
268
+ --output-json artifacts/runtime/activation_summary.json \
269
+ --output-md artifacts/runtime/activation_summary.md
270
+
271
+ - name: Upload activation evidence summary
272
+ uses: actions/upload-artifact@v4
273
+ with:
274
+ name: runtime-activation-evidence
275
+ if-no-files-found: ignore
276
+ retention-days: 7
277
+ path: |
278
+ artifacts/runtime/activation_summary.json
279
+ artifacts/runtime/activation_summary.md
@@ -0,0 +1,66 @@
1
+ name: UI Contract
2
+
3
+ # Regenerates the OpenAPI schema and the frontend's TypeScript types, then
4
+ # fails if the committed artifacts are stale. This prevents the frontend
5
+ # (ui/src/api) and the FastAPI backend (src/entity_resolution/ui) from drifting
6
+ # out of contract.
7
+
8
+ on:
9
+ push:
10
+ branches: [ "main" ]
11
+ pull_request:
12
+ branches: [ "main" ]
13
+
14
+ permissions:
15
+ contents: read
16
+
17
+ jobs:
18
+ contract:
19
+ runs-on: ubuntu-latest
20
+ steps:
21
+ - uses: actions/checkout@v4
22
+
23
+ - name: Set up Python 3.11
24
+ uses: actions/setup-python@v5
25
+ with:
26
+ python-version: "3.11"
27
+ cache: 'pip'
28
+
29
+ - name: Install Python package (UI extra)
30
+ run: |
31
+ python -m pip install --upgrade pip
32
+ python -m pip install -e ".[ui]"
33
+
34
+ - name: Set up Node.js
35
+ uses: actions/setup-node@v4
36
+ with:
37
+ node-version: "20"
38
+ cache: 'npm'
39
+ cache-dependency-path: ui/package-lock.json
40
+
41
+ - name: Install UI dependencies
42
+ working-directory: ui
43
+ run: npm ci
44
+
45
+ - name: Regenerate OpenAPI schema
46
+ run: python scripts/export_openapi.py
47
+
48
+ - name: Regenerate TypeScript types
49
+ working-directory: ui
50
+ run: npm run gen:types
51
+
52
+ - name: Fail if generated contract artifacts are stale
53
+ run: |
54
+ if ! git diff --exit-code -- ui/openapi.json ui/src/api/schema.ts; then
55
+ echo "::error::OpenAPI schema or generated TypeScript types are out of date."
56
+ echo "Run 'python scripts/export_openapi.py && (cd ui && npm run gen:types)' and commit the result."
57
+ exit 1
58
+ fi
59
+
60
+ - name: Typecheck UI
61
+ working-directory: ui
62
+ run: npm run typecheck
63
+
64
+ - name: Unit test UI (Vitest)
65
+ working-directory: ui
66
+ run: npm run test
@@ -74,6 +74,8 @@ npm-debug.log*
74
74
  yarn-debug.log*
75
75
  yarn-error.log*
76
76
  package-lock.json
77
+ # The UI lockfile IS committed so CI `npm ci` and the contract gate are reproducible.
78
+ !ui/package-lock.json
77
79
  yarn.lock
78
80
 
79
81
  # Data files
@@ -128,4 +130,20 @@ docs/customer/**
128
130
  # Legacy code (archived implementations)
129
131
  # Foxx services and related code moved to legacy/ for historical reference
130
132
  # Not actively maintained or tested in v2.0+
131
- legacy/
133
+ legacy/
134
+
135
+ # UI frontend build artifacts (rebuilt from ui/ source)
136
+ src/entity_resolution/ui/static/
137
+
138
+ # Runtime artifacts (models, benchmarks, caches)
139
+ artifacts/
140
+ # Coverage and analysis artifacts (never track)
141
+ coverage.json
142
+ COVERAGE_SUMMARY.txt
143
+ detailed_coverage_analysis_*.json
144
+
145
+ # Local Claude Code harness config (per-user, not project-shared)
146
+ .claude/
147
+ .cursor/
148
+ .prd-drift-queue/
149
+ CLAUDE.md