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.
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/.githooks/pre-commit +29 -5
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/.githooks/pre-push +10 -3
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/.github/workflows/publish.yml +1 -1
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/.github/workflows/python-package.yml +3 -3
- arango_entity_resolution-3.8.0/.github/workflows/runtime-platform-matrix.yml +279 -0
- arango_entity_resolution-3.8.0/.github/workflows/ui-contract.yml +66 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/.gitignore +19 -1
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/CHANGELOG.md +258 -7
- arango_entity_resolution-3.8.0/LICENSE +191 -0
- arango_entity_resolution-3.8.0/Makefile +58 -0
- arango_entity_resolution-3.8.0/PKG-INFO +437 -0
- arango_entity_resolution-3.8.0/README.md +381 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/SECURITY.md +31 -4
- arango_entity_resolution-3.8.0/ci/runtime-quality/baselines/apple-silicon.json +11 -0
- arango_entity_resolution-3.8.0/ci/runtime-quality/baselines/linux-cpu.json +11 -0
- arango_entity_resolution-3.8.0/ci/runtime-quality/baselines/linux-gpu.json +8 -0
- arango_entity_resolution-3.8.0/ci/runtime-quality/corpus/runtime_quality_corpus.json +45 -0
- arango_entity_resolution-3.8.0/ci/runtime-quality/quality_gate_policy.json +35 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/config/er_config.example.yaml +10 -1
- arango_entity_resolution-3.8.0/config/test-database.md +152 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/config/vector_search_setup.md +10 -11
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docker-compose.test.yml +1 -1
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docker-compose.yml +3 -1
- arango_entity_resolution-3.8.0/docs/IMPLEMENTATION_PLAN_2026-06.md +260 -0
- arango_entity_resolution-3.8.0/docs/IMPLEMENTATION_PLAN_PHASE2_PHASE3.md +256 -0
- arango_entity_resolution-3.8.0/docs/PRD.md +244 -0
- arango_entity_resolution-3.8.0/docs/PROJECT_REVIEW_2026-06.md +197 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/README.md +12 -5
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/TESTING.md +6 -2
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/api/API_REFERENCE.md +3 -1
- arango_entity_resolution-3.8.0/docs/architecture/CENTRALIZED_ER_SERVICE.md +594 -0
- arango_entity_resolution-3.8.0/docs/architecture/ENTITY_RESOLUTION_UI.md +840 -0
- {arango_entity_resolution-3.3.0/docs/development → arango_entity_resolution-3.8.0/docs/archive/completed-work}/LIBRARY_ENHANCEMENT_PLAN.md +171 -49
- arango_entity_resolution-3.8.0/docs/development/COMPREHENSIVE_PROJECT_REVIEW_2026-06-01.md +162 -0
- arango_entity_resolution-3.8.0/docs/development/ENTITY_RESOLUTION_ADVISOR_MCP_EXAMPLES.md +571 -0
- arango_entity_resolution-3.8.0/docs/development/ENTITY_RESOLUTION_ADVISOR_MCP_SPEC.md +589 -0
- arango_entity_resolution-3.8.0/docs/development/GAE_ENHANCEMENT_PATH.md +166 -0
- arango_entity_resolution-3.8.0/docs/development/MAINTAINABILITY_API_MIGRATION_PLAN.md +127 -0
- arango_entity_resolution-3.8.0/docs/development/MCP_OPTIONS_MIGRATION_GUIDE.md +266 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/NEXT_RELEASE_IMPLEMENTATION_BRIEF.md +209 -39
- arango_entity_resolution-3.8.0/docs/development/PHASE_0_COMPLETION_NOTES.md +45 -0
- arango_entity_resolution-3.8.0/docs/development/PROVIDER_ROLLOUT_RUNBOOK.md +454 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/RELEASE_CHECKLIST.md +5 -5
- arango_entity_resolution-3.8.0/docs/development/REMEDIATION_PLAN_2026-06-01.md +238 -0
- arango_entity_resolution-3.8.0/docs/development/RUNTIME_HEALTH_CI_RUNBOOK.md +514 -0
- arango_entity_resolution-3.8.0/docs/development/UI_IMPLEMENTATION_PLAN.md +1035 -0
- arango_entity_resolution-3.8.0/docs/guides/ADVANCED_MODULES_GUIDE.md +887 -0
- arango_entity_resolution-3.8.0/docs/guides/PERFORMANCE_GUIDE.md +160 -0
- arango_entity_resolution-3.8.0/docs/guides/PLATFORM_SETUP.md +197 -0
- arango_entity_resolution-3.8.0/docs/guides/PROVIDER_COMPATIBILITY_MATRIX.md +300 -0
- arango_entity_resolution-3.8.0/docs/guides/PROVIDER_MATRIX.md +100 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/guides/QUICK_START.md +1 -1
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/env.example +7 -2
- arango_entity_resolution-3.8.0/examples/clustering_backend_comparison.py +120 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/examples/complete_entity_resolution_demo.py +67 -47
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/examples/enhanced_er_examples.py +8 -13
- arango_entity_resolution-3.8.0/examples/incremental_resolution.py +148 -0
- arango_entity_resolution-3.8.0/examples/multi_strategy_orchestration.py +113 -0
- arango_entity_resolution-3.8.0/examples/ollama_llm_verification.py +79 -0
- arango_entity_resolution-3.8.0/examples/onnx_runtime_embedding.py +200 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/examples/vector_blocking_example.py +7 -42
- arango_entity_resolution-3.8.0/examples/yaml_config_pipeline.py +178 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/pyproject.toml +17 -5
- arango_entity_resolution-3.8.0/scripts/benchmark_vector_blocking.py +122 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/comprehensive_qa_tests.py +4 -3
- arango_entity_resolution-3.8.0/scripts/export_openapi.py +62 -0
- arango_entity_resolution-3.8.0/scripts/migrations/001_fix_graphrag_self_loop_edges.py +120 -0
- arango_entity_resolution-3.8.0/scripts/summarize_runtime_activation.py +59 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/__init__.py +212 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/cli.py +1578 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/config/__init__.py +4 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/config/er_config.py +496 -30
- arango_entity_resolution-3.8.0/src/entity_resolution/core/address_pipeline.py +173 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/core/async_pipeline.py +8 -1
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/core/configurable_pipeline.py +379 -23
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/core/incremental_resolver.py +11 -2
- arango_entity_resolution-3.8.0/src/entity_resolution/core/orchestrator.py +273 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/data/data_manager.py +15 -7
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/etl/arangoimport.py +10 -8
- arango_entity_resolution-3.8.0/src/entity_resolution/learning/__init__.py +23 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/learning/em_estimator.py +221 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/learning/fellegi_sunter_scorer.py +82 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/learning/field_profiler.py +248 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/learning/model_parameter_estimator.py +270 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/mcp/connection.py +32 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/mcp/contracts.py +109 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/mcp/demo.py +15 -9
- arango_entity_resolution-3.8.0/src/entity_resolution/mcp/normalization.py +599 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/mcp/resources/collections.py +4 -2
- arango_entity_resolution-3.8.0/src/entity_resolution/mcp/server.py +734 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/mcp/tools/advisor.py +1347 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/mcp/tools/cluster.py +4 -3
- arango_entity_resolution-3.8.0/src/entity_resolution/mcp/tools/entity.py +629 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/mcp/tools/pipeline.py +1055 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/migrations/__init__.py +20 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/migrations/registry.py +67 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/migrations/runner.py +140 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/reasoning/feedback.py +104 -7
- arango_entity_resolution-3.8.0/src/entity_resolution/reasoning/graph_rag.py +283 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/reasoning/llm_verifier.py +442 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/services/__init__.py +40 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/address_er_service.py +248 -52
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/batch_similarity_service.py +43 -13
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/blocking_service.py +20 -8
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/cluster_export_service.py +6 -3
- arango_entity_resolution-3.8.0/src/entity_resolution/services/cluster_repair_service.py +264 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/services/clustering_backends/__init__.py +22 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/services/clustering_backends/aql_graph.py +133 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/services/clustering_backends/base.py +24 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/services/clustering_backends/gae_connection.py +733 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/services/clustering_backends/gae_wcc.py +241 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/services/clustering_backends/python_dfs.py +99 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/services/clustering_backends/python_sparse.py +96 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/services/clustering_backends/python_union_find.py +95 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/cross_collection_matching_service.py +60 -26
- arango_entity_resolution-3.8.0/src/entity_resolution/services/curation_service.py +91 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/embedding_service.py +147 -41
- arango_entity_resolution-3.8.0/src/entity_resolution/services/evaluation_service.py +377 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/services/feedback_application_service.py +467 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/golden_record_persistence_service.py +106 -20
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/golden_record_service.py +34 -80
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/node2vec_embedding_service.py +2 -1
- arango_entity_resolution-3.8.0/src/entity_resolution/services/onnx_embedding_backend.py +438 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/services/onnx_model_exporter.py +196 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/services/runtime_activation_evidence_service.py +120 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/services/runtime_benchmark_service.py +131 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/services/runtime_compare_report_service.py +111 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/services/runtime_profile_registry.py +161 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/services/runtime_quality_benchmark_service.py +230 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/services/runtime_quality_gate_service.py +72 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/services/runtime_quality_policy_service.py +83 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/services/runtime_telemetry_service.py +39 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/similarity_edge_service.py +11 -5
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/similarity_service.py +145 -56
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/tuple_embedding_serializer.py +64 -27
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/wcc_clustering_service.py +131 -259
- arango_entity_resolution-3.8.0/src/entity_resolution/similarity/ann_adapter.py +391 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/similarity/geospatial_validator.py +215 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/similarity/weighted_field_similarity.py +17 -3
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/strategies/base_strategy.py +40 -14
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/strategies/bm25_blocking.py +62 -44
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/strategies/collect_blocking.py +39 -94
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/strategies/geographic_blocking.py +1 -71
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/strategies/graph_traversal_blocking.py +6 -38
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/strategies/hybrid_blocking.py +86 -69
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/strategies/lsh_blocking.py +2 -2
- arango_entity_resolution-3.8.0/src/entity_resolution/strategies/shard_parallel_blocking.py +168 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/strategies/vector_blocking.py +194 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/ui/__init__.py +1 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/ui/app.py +193 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/ui/auth.py +76 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/ui/models/__init__.py +1 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/ui/models/schemas.py +151 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/__init__.py +1 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/clusters.py +222 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/collections.py +128 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/config.py +85 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/curation.py +243 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/export.py +87 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/golden.py +257 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/metrics.py +198 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/pipeline.py +174 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/profile.py +45 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/resolve.py +76 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/review.py +375 -0
- arango_entity_resolution-3.8.0/src/entity_resolution/ui/routes/ws.py +78 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/config.py +5 -3
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/config_utils.py +3 -2
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/constants.py +12 -7
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/database.py +34 -82
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/logging.py +0 -12
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/validation.py +76 -5
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/view_utils.py +2 -2
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/conftest.py +30 -0
- arango_entity_resolution-3.8.0/tests/security/test_aql_injection.py +166 -0
- arango_entity_resolution-3.8.0/tests/security/test_mcp_sse_auth.py +65 -0
- arango_entity_resolution-3.8.0/tests/security/test_ui_auth.py +157 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_address_er_service_unit.py +5 -4
- arango_entity_resolution-3.8.0/tests/test_address_pipeline.py +541 -0
- arango_entity_resolution-3.8.0/tests/test_ann_adapter.py +116 -0
- arango_entity_resolution-3.8.0/tests/test_ann_adapter_unit.py +168 -0
- arango_entity_resolution-3.8.0/tests/test_ann_adapter_vector_index.py +92 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_arangoimport_helper.py +30 -2
- arango_entity_resolution-3.8.0/tests/test_auto_backend_selection.py +175 -0
- {arango_entity_resolution-3.3.0/examples → arango_entity_resolution-3.8.0/tests}/test_blocking_service.py +3 -3
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_blocking_strategies.py +89 -0
- arango_entity_resolution-3.8.0/tests/test_cli.py +2081 -0
- arango_entity_resolution-3.8.0/tests/test_cluster_repair_service.py +70 -0
- arango_entity_resolution-3.8.0/tests/test_cluster_repair_service_integration.py +108 -0
- arango_entity_resolution-3.8.0/tests/test_clustering_backends.py +265 -0
- arango_entity_resolution-3.8.0/tests/test_clustering_backends_integration.py +80 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_configurable_pipeline_blocking_fields.py +2 -2
- arango_entity_resolution-3.8.0/tests/test_configurable_pipeline_unit.py +626 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_cross_collection_matching_service_unit.py +12 -7
- arango_entity_resolution-3.8.0/tests/test_curation_routes_integration.py +138 -0
- arango_entity_resolution-3.8.0/tests/test_curation_service.py +88 -0
- arango_entity_resolution-3.8.0/tests/test_curation_service_integration.py +35 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_data_manager_unit.py +7 -2
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_database_manager_unit.py +0 -13
- arango_entity_resolution-3.8.0/tests/test_device_resolution.py +98 -0
- arango_entity_resolution-3.8.0/tests/test_em_estimator.py +115 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_embedding_service_multi_resolution.py +41 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_er_config.py +123 -2
- arango_entity_resolution-3.8.0/tests/test_evaluation_service.py +133 -0
- arango_entity_resolution-3.8.0/tests/test_evaluation_service_integration.py +110 -0
- arango_entity_resolution-3.8.0/tests/test_feedback.py +274 -0
- arango_entity_resolution-3.8.0/tests/test_feedback_application_integration.py +161 -0
- arango_entity_resolution-3.8.0/tests/test_feedback_application_service.py +386 -0
- arango_entity_resolution-3.8.0/tests/test_fellegi_sunter_scorer.py +65 -0
- arango_entity_resolution-3.8.0/tests/test_field_profiler.py +110 -0
- arango_entity_resolution-3.8.0/tests/test_field_profiler_integration.py +56 -0
- arango_entity_resolution-3.8.0/tests/test_gae_clustering.py +283 -0
- arango_entity_resolution-3.8.0/tests/test_gae_integration.py +129 -0
- arango_entity_resolution-3.8.0/tests/test_geographic_blocking.py +326 -0
- arango_entity_resolution-3.8.0/tests/test_geospatial_validator.py +125 -0
- arango_entity_resolution-3.8.0/tests/test_golden_record_persistence_service.py +255 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_golden_record_service.py +15 -38
- arango_entity_resolution-3.8.0/tests/test_graph_rag.py +134 -0
- arango_entity_resolution-3.8.0/tests/test_hybrid_blocking.py +315 -0
- arango_entity_resolution-3.8.0/tests/test_llm_healthcheck.py +57 -0
- arango_entity_resolution-3.8.0/tests/test_llm_provider_config.py +153 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_llm_verifier.py +78 -0
- arango_entity_resolution-3.8.0/tests/test_mcp_normalization.py +461 -0
- arango_entity_resolution-3.8.0/tests/test_mcp_tools.py +2816 -0
- arango_entity_resolution-3.8.0/tests/test_migrations.py +158 -0
- arango_entity_resolution-3.8.0/tests/test_migrations_integration.py +66 -0
- arango_entity_resolution-3.8.0/tests/test_model_parameter_estimator.py +126 -0
- arango_entity_resolution-3.8.0/tests/test_model_parameter_estimator_integration.py +115 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_node2vec_embedding_service.py +6 -1
- arango_entity_resolution-3.8.0/tests/test_onnx_embedding_backend.py +166 -0
- arango_entity_resolution-3.8.0/tests/test_onnx_encode_and_export.py +142 -0
- arango_entity_resolution-3.8.0/tests/test_orchestrator.py +119 -0
- arango_entity_resolution-3.8.0/tests/test_profile_route_integration.py +46 -0
- arango_entity_resolution-3.8.0/tests/test_runtime_activation_evidence_service.py +66 -0
- arango_entity_resolution-3.8.0/tests/test_runtime_benchmark_service.py +81 -0
- arango_entity_resolution-3.8.0/tests/test_runtime_compare_report_service.py +76 -0
- arango_entity_resolution-3.8.0/tests/test_runtime_profile_registry.py +67 -0
- arango_entity_resolution-3.8.0/tests/test_runtime_quality_benchmark_service.py +71 -0
- arango_entity_resolution-3.8.0/tests/test_runtime_quality_gate_service.py +32 -0
- arango_entity_resolution-3.8.0/tests/test_runtime_quality_policy_ci.py +57 -0
- arango_entity_resolution-3.8.0/tests/test_runtime_quality_policy_service.py +124 -0
- arango_entity_resolution-3.8.0/tests/test_shard_parallel_blocking.py +79 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_similarity_edge_service_unit.py +14 -4
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_similarity_service_legacy_unit.py +89 -0
- {arango_entity_resolution-3.3.0/examples → arango_entity_resolution-3.8.0/tests}/test_similarity_service_resilient.py +7 -5
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_top3_features.py +3 -3
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_tuple_embedding_serializer.py +68 -0
- arango_entity_resolution-3.8.0/tests/test_ui_core_additions.py +459 -0
- arango_entity_resolution-3.8.0/tests/test_ui_routes.py +942 -0
- arango_entity_resolution-3.8.0/tests/test_ui_schemas.py +393 -0
- arango_entity_resolution-3.8.0/tests/test_validation.py +362 -0
- arango_entity_resolution-3.8.0/tests/test_vector_blocking_strategy_unit.py +119 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_weighted_field_similarity.py +40 -0
- arango_entity_resolution-3.8.0/ui/index.html +13 -0
- arango_entity_resolution-3.8.0/ui/openapi.json +3380 -0
- arango_entity_resolution-3.8.0/ui/package-lock.json +4741 -0
- arango_entity_resolution-3.8.0/ui/package.json +42 -0
- arango_entity_resolution-3.8.0/ui/public/vite.svg +1 -0
- arango_entity_resolution-3.8.0/ui/src/App.tsx +42 -0
- arango_entity_resolution-3.8.0/ui/src/api/client.ts +51 -0
- arango_entity_resolution-3.8.0/ui/src/api/clusters.ts +88 -0
- arango_entity_resolution-3.8.0/ui/src/api/collections.ts +31 -0
- arango_entity_resolution-3.8.0/ui/src/api/config.ts +78 -0
- arango_entity_resolution-3.8.0/ui/src/api/curation.ts +84 -0
- arango_entity_resolution-3.8.0/ui/src/api/export.ts +33 -0
- arango_entity_resolution-3.8.0/ui/src/api/golden.ts +112 -0
- arango_entity_resolution-3.8.0/ui/src/api/metrics.ts +62 -0
- arango_entity_resolution-3.8.0/ui/src/api/pipeline.ts +46 -0
- arango_entity_resolution-3.8.0/ui/src/api/profile.ts +59 -0
- arango_entity_resolution-3.8.0/ui/src/api/resolve.ts +37 -0
- arango_entity_resolution-3.8.0/ui/src/api/review.test.ts +22 -0
- arango_entity_resolution-3.8.0/ui/src/api/review.ts +161 -0
- arango_entity_resolution-3.8.0/ui/src/api/schema.ts +2835 -0
- arango_entity_resolution-3.8.0/ui/src/components/clusters/ClusterDetail.tsx +310 -0
- arango_entity_resolution-3.8.0/ui/src/components/clusters/ClusterFilters.tsx +39 -0
- arango_entity_resolution-3.8.0/ui/src/components/clusters/ClusterGraph.tsx +193 -0
- arango_entity_resolution-3.8.0/ui/src/components/clusters/ClusterList.tsx +148 -0
- arango_entity_resolution-3.8.0/ui/src/components/clusters/ClusterMembers.tsx +98 -0
- arango_entity_resolution-3.8.0/ui/src/components/clusters/ClusterTable.tsx +255 -0
- arango_entity_resolution-3.8.0/ui/src/components/clusters/ExplainMatchModal.tsx +191 -0
- arango_entity_resolution-3.8.0/ui/src/components/clusters/SuspectClusters.tsx +77 -0
- arango_entity_resolution-3.8.0/ui/src/components/clusters/index.ts +7 -0
- arango_entity_resolution-3.8.0/ui/src/components/config/BlockingSection.tsx +175 -0
- arango_entity_resolution-3.8.0/ui/src/components/config/ClusteringSection.tsx +74 -0
- arango_entity_resolution-3.8.0/ui/src/components/config/CollectionSection.tsx +142 -0
- arango_entity_resolution-3.8.0/ui/src/components/config/ConfigBuilder.tsx +512 -0
- arango_entity_resolution-3.8.0/ui/src/components/config/LLMSection.tsx +121 -0
- arango_entity_resolution-3.8.0/ui/src/components/config/SimilaritySection.tsx +135 -0
- arango_entity_resolution-3.8.0/ui/src/components/config/WeightSlider.tsx +54 -0
- arango_entity_resolution-3.8.0/ui/src/components/config/index.ts +7 -0
- arango_entity_resolution-3.8.0/ui/src/components/dashboard/DistributionChart.tsx +109 -0
- arango_entity_resolution-3.8.0/ui/src/components/dashboard/RecentRuns.tsx +12 -0
- arango_entity_resolution-3.8.0/ui/src/components/dashboard/StatsGrid.tsx +69 -0
- arango_entity_resolution-3.8.0/ui/src/components/dashboard/index.ts +3 -0
- arango_entity_resolution-3.8.0/ui/src/components/export/ExportCenter.tsx +150 -0
- arango_entity_resolution-3.8.0/ui/src/components/export/ExportOptions.tsx +93 -0
- arango_entity_resolution-3.8.0/ui/src/components/export/index.ts +2 -0
- arango_entity_resolution-3.8.0/ui/src/components/golden/ConflictResolver.tsx +88 -0
- arango_entity_resolution-3.8.0/ui/src/components/golden/GoldenRecordView.tsx +195 -0
- arango_entity_resolution-3.8.0/ui/src/components/golden/MergeStrategySelector.tsx +46 -0
- arango_entity_resolution-3.8.0/ui/src/components/golden/ProvenanceTable.tsx +88 -0
- arango_entity_resolution-3.8.0/ui/src/components/golden/SourceRecords.tsx +107 -0
- arango_entity_resolution-3.8.0/ui/src/components/golden/index.ts +5 -0
- arango_entity_resolution-3.8.0/ui/src/components/layout/AppShell.tsx +71 -0
- arango_entity_resolution-3.8.0/ui/src/components/layout/ReviewerChip.tsx +31 -0
- arango_entity_resolution-3.8.0/ui/src/components/layout/Sidebar.tsx +105 -0
- arango_entity_resolution-3.8.0/ui/src/components/pipeline/ConfigUploader.tsx +232 -0
- arango_entity_resolution-3.8.0/ui/src/components/pipeline/PipelineHistory.tsx +169 -0
- arango_entity_resolution-3.8.0/ui/src/components/pipeline/PipelineResults.tsx +129 -0
- arango_entity_resolution-3.8.0/ui/src/components/pipeline/PipelineRunner.tsx +132 -0
- arango_entity_resolution-3.8.0/ui/src/components/pipeline/StageProgress.tsx +112 -0
- arango_entity_resolution-3.8.0/ui/src/components/pipeline/index.ts +5 -0
- arango_entity_resolution-3.8.0/ui/src/components/resolve/EntityResolver.tsx +207 -0
- arango_entity_resolution-3.8.0/ui/src/components/resolve/MatchResult.tsx +50 -0
- arango_entity_resolution-3.8.0/ui/src/components/resolve/RecordInputForm.tsx +60 -0
- arango_entity_resolution-3.8.0/ui/src/components/resolve/index.ts +3 -0
- arango_entity_resolution-3.8.0/ui/src/components/review/FieldScoreBar.tsx +33 -0
- arango_entity_resolution-3.8.0/ui/src/components/review/PairComparison.tsx +215 -0
- arango_entity_resolution-3.8.0/ui/src/components/review/ReviewFilters.tsx +85 -0
- arango_entity_resolution-3.8.0/ui/src/components/review/ReviewQueue.tsx +286 -0
- arango_entity_resolution-3.8.0/ui/src/components/review/ShortcutsModal.test.tsx +24 -0
- arango_entity_resolution-3.8.0/ui/src/components/review/ShortcutsModal.tsx +51 -0
- arango_entity_resolution-3.8.0/ui/src/components/review/ThresholdBanner.tsx +80 -0
- arango_entity_resolution-3.8.0/ui/src/components/review/VerdictPanel.tsx +168 -0
- arango_entity_resolution-3.8.0/ui/src/components/review/index.ts +6 -0
- arango_entity_resolution-3.8.0/ui/src/components/shared/Badge.tsx +35 -0
- arango_entity_resolution-3.8.0/ui/src/components/shared/DataTable.tsx +187 -0
- arango_entity_resolution-3.8.0/ui/src/components/shared/EmptyState.tsx +34 -0
- arango_entity_resolution-3.8.0/ui/src/components/shared/ErrorBoundary.tsx +55 -0
- arango_entity_resolution-3.8.0/ui/src/components/shared/FieldDiff.tsx +71 -0
- arango_entity_resolution-3.8.0/ui/src/components/shared/LoadingSpinner.tsx +28 -0
- arango_entity_resolution-3.8.0/ui/src/components/shared/ScoreBadge.tsx +27 -0
- arango_entity_resolution-3.8.0/ui/src/components/shared/SearchBar.tsx +37 -0
- arango_entity_resolution-3.8.0/ui/src/components/shared/StatCard.tsx +57 -0
- arango_entity_resolution-3.8.0/ui/src/components/tuning/ScoreHistogram.tsx +59 -0
- arango_entity_resolution-3.8.0/ui/src/contexts/CollectionContext.tsx +58 -0
- arango_entity_resolution-3.8.0/ui/src/hooks/useClusters.ts +49 -0
- arango_entity_resolution-3.8.0/ui/src/hooks/useCollections.ts +17 -0
- arango_entity_resolution-3.8.0/ui/src/hooks/useCuration.ts +75 -0
- arango_entity_resolution-3.8.0/ui/src/hooks/useMetrics.ts +26 -0
- arango_entity_resolution-3.8.0/ui/src/hooks/usePipeline.ts +34 -0
- arango_entity_resolution-3.8.0/ui/src/hooks/usePipelineWs.ts +187 -0
- arango_entity_resolution-3.8.0/ui/src/hooks/useProfile.ts +13 -0
- arango_entity_resolution-3.8.0/ui/src/hooks/useReview.ts +70 -0
- arango_entity_resolution-3.8.0/ui/src/hooks/useReviewer.ts +35 -0
- arango_entity_resolution-3.8.0/ui/src/index.css +21 -0
- arango_entity_resolution-3.8.0/ui/src/lib/cn.ts +6 -0
- arango_entity_resolution-3.8.0/ui/src/main.tsx +28 -0
- arango_entity_resolution-3.8.0/ui/src/pages/ClusterDetailPage.tsx +23 -0
- arango_entity_resolution-3.8.0/ui/src/pages/ClustersPage.tsx +34 -0
- arango_entity_resolution-3.8.0/ui/src/pages/ConfigPage.tsx +19 -0
- arango_entity_resolution-3.8.0/ui/src/pages/DashboardPage.tsx +28 -0
- arango_entity_resolution-3.8.0/ui/src/pages/ExportPage.tsx +33 -0
- arango_entity_resolution-3.8.0/ui/src/pages/GoldenRecordDetailPage.tsx +155 -0
- arango_entity_resolution-3.8.0/ui/src/pages/GoldenRecordsPage.tsx +212 -0
- arango_entity_resolution-3.8.0/ui/src/pages/PipelinePage.tsx +24 -0
- arango_entity_resolution-3.8.0/ui/src/pages/ProfilePage.tsx +157 -0
- arango_entity_resolution-3.8.0/ui/src/pages/ResolvePage.tsx +16 -0
- arango_entity_resolution-3.8.0/ui/src/pages/ReviewPage.tsx +70 -0
- arango_entity_resolution-3.8.0/ui/src/pages/ThresholdTunerPage.tsx +186 -0
- arango_entity_resolution-3.8.0/ui/src/test/setup.ts +1 -0
- arango_entity_resolution-3.8.0/ui/tsconfig.app.json +27 -0
- arango_entity_resolution-3.8.0/ui/tsconfig.json +7 -0
- arango_entity_resolution-3.8.0/ui/tsconfig.node.json +20 -0
- arango_entity_resolution-3.8.0/ui/vite.config.ts +36 -0
- arango_entity_resolution-3.3.0/COVERAGE_SUMMARY.txt +0 -57
- arango_entity_resolution-3.3.0/PKG-INFO +0 -1136
- arango_entity_resolution-3.3.0/README.md +0 -1090
- arango_entity_resolution-3.3.0/VERSION_HISTORY.md +0 -106
- arango_entity_resolution-3.3.0/VERSION_SUMMARY.md +0 -82
- arango_entity_resolution-3.3.0/config/test-database.md +0 -241
- arango_entity_resolution-3.3.0/coverage.json +0 -1
- arango_entity_resolution-3.3.0/detailed_coverage_analysis_20251003_061624.json +0 -98
- arango_entity_resolution-3.3.0/docs/PRD.md +0 -155
- arango_entity_resolution-3.3.0/docs/development/CLAUDE.md +0 -99
- arango_entity_resolution-3.3.0/docs/development/GAE_ENHANCEMENT_PATH.md +0 -464
- arango_entity_resolution-3.3.0/docs/guides/LIBRARY_ENHANCEMENT_PLAN.md +0 -797
- arango_entity_resolution-3.3.0/legacy/foxx-implementation/foxx-services/entity-resolution/manifest.json +0 -49
- arango_entity_resolution-3.3.0/legacy/foxx-implementation/foxx-services/test-service/manifest.json +0 -9
- arango_entity_resolution-3.3.0/scripts/benchmark_ann_adapter.py +0 -337
- arango_entity_resolution-3.3.0/src/entity_resolution/__init__.py +0 -194
- arango_entity_resolution-3.3.0/src/entity_resolution/cli.py +0 -336
- arango_entity_resolution-3.3.0/src/entity_resolution/mcp/server.py +0 -314
- arango_entity_resolution-3.3.0/src/entity_resolution/mcp/tools/entity.py +0 -142
- arango_entity_resolution-3.3.0/src/entity_resolution/mcp/tools/pipeline.py +0 -128
- arango_entity_resolution-3.3.0/src/entity_resolution/reasoning/llm_verifier.py +0 -239
- arango_entity_resolution-3.3.0/src/entity_resolution/services/__init__.py +0 -22
- arango_entity_resolution-3.3.0/src/entity_resolution/similarity/ann_adapter.py +0 -528
- arango_entity_resolution-3.3.0/src/entity_resolution/strategies/vector_blocking.py +0 -442
- arango_entity_resolution-3.3.0/src/entity_resolution/utils/archive_unused/enhanced_config.py +0 -209
- arango_entity_resolution-3.3.0/src/entity_resolution/utils/archive_unused/enhanced_logging.py +0 -111
- arango_entity_resolution-3.3.0/tests/archive_broken/test_address_er_service.py +0 -756
- arango_entity_resolution-3.3.0/tests/archive_broken/test_algorithms.py +0 -71
- arango_entity_resolution-3.3.0/tests/archive_broken/test_base_service.py +0 -71
- arango_entity_resolution-3.3.0/tests/archive_broken/test_blocking_service.py +0 -77
- arango_entity_resolution-3.3.0/tests/archive_broken/test_bulk_integration.py +0 -394
- arango_entity_resolution-3.3.0/tests/archive_broken/test_clustering_enhanced.py +0 -312
- arango_entity_resolution-3.3.0/tests/archive_broken/test_clustering_service.py +0 -77
- arango_entity_resolution-3.3.0/tests/archive_broken/test_clustering_service_fixed.py +0 -200
- arango_entity_resolution-3.3.0/tests/archive_broken/test_configurable_pipeline.py +0 -546
- arango_entity_resolution-3.3.0/tests/archive_broken/test_constants.py +0 -71
- arango_entity_resolution-3.3.0/tests/archive_broken/test_data_manager.py +0 -71
- arango_entity_resolution-3.3.0/tests/archive_broken/test_data_manager_comprehensive.py +0 -566
- arango_entity_resolution-3.3.0/tests/archive_broken/test_database.py +0 -454
- arango_entity_resolution-3.3.0/tests/archive_broken/test_demo_manager.py +0 -71
- arango_entity_resolution-3.3.0/tests/archive_broken/test_deterministic_edge_keys.py +0 -406
- arango_entity_resolution-3.3.0/tests/archive_broken/test_embedding_service.py +0 -579
- arango_entity_resolution-3.3.0/tests/archive_broken/test_entity_resolver.py +0 -71
- arango_entity_resolution-3.3.0/tests/archive_broken/test_entity_resolver_comprehensive.py +0 -718
- arango_entity_resolution-3.3.0/tests/archive_broken/test_entity_resolver_enhanced.py +0 -353
- arango_entity_resolution-3.3.0/tests/archive_broken/test_entity_resolver_simple.py +0 -142
- arango_entity_resolution-3.3.0/tests/archive_broken/test_graph_utils.py +0 -265
- arango_entity_resolution-3.3.0/tests/archive_broken/test_integration_and_performance.py +0 -441
- arango_entity_resolution-3.3.0/tests/archive_broken/test_logging.py +0 -71
- arango_entity_resolution-3.3.0/tests/archive_broken/test_performance_benchmarks.py +0 -370
- arango_entity_resolution-3.3.0/tests/archive_broken/test_pipeline_utils.py +0 -145
- arango_entity_resolution-3.3.0/tests/archive_broken/test_round_trip_v3.py +0 -481
- arango_entity_resolution-3.3.0/tests/archive_broken/test_similarity_and_edge_services.py +0 -314
- arango_entity_resolution-3.3.0/tests/archive_broken/test_similarity_enhanced.py +0 -324
- arango_entity_resolution-3.3.0/tests/archive_broken/test_similarity_service.py +0 -77
- arango_entity_resolution-3.3.0/tests/archive_broken/test_similarity_service_fixed.py +0 -214
- arango_entity_resolution-3.3.0/tests/archive_broken/test_validation_security.py +0 -526
- arango_entity_resolution-3.3.0/tests/archive_broken/test_validation_utils.py +0 -224
- arango_entity_resolution-3.3.0/tests/archive_broken/test_vector_blocking.py +0 -591
- arango_entity_resolution-3.3.0/tests/archive_broken/test_vector_blocking_performance.py +0 -396
- arango_entity_resolution-3.3.0/tests/archive_broken/test_view_utils.py +0 -279
- arango_entity_resolution-3.3.0/tests/archive_broken/test_wcc_performance.py +0 -559
- arango_entity_resolution-3.3.0/tests/test_ann_adapter.py +0 -501
- arango_entity_resolution-3.3.0/tests/test_ann_adapter_unit.py +0 -119
- arango_entity_resolution-3.3.0/tests/test_cli.py +0 -317
- arango_entity_resolution-3.3.0/tests/test_configurable_pipeline_unit.py +0 -296
- arango_entity_resolution-3.3.0/tests/test_golden_record_persistence_service.py +0 -116
- arango_entity_resolution-3.3.0/tests/test_mcp_tools.py +0 -446
- arango_entity_resolution-3.3.0/tests/test_vector_blocking_strategy_unit.py +0 -133
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/.cursorrules +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/.env.example +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/IMPLEMENTATION_STATUS.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/config.example.json +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/data/sample/customers_sample.json +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/PRESENTATION_SCRIPT.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/README.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/data/demo_customers.json +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/data/demo_metadata.json +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/data/demo_report_20251003_084613.json +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/data/duplicate_groups.json +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/data/industry_scenarios/b2b_sales_scenario.json +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/data/industry_scenarios/ecommerce_scenario.json +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/data/industry_scenarios/financial_scenario.json +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/data/industry_scenarios/healthcare_scenario.json +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/data/industry_scenarios/scenarios_summary.json +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/launch_presentation_demo.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/scripts/data_generator.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/scripts/database_inspector.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/scripts/demo_orchestrator.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/scripts/industry_scenarios.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/scripts/interactive_presentation_demo.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/scripts/package_demo.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/demo/templates/demo_dashboard.html +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/DOCKER_TESTING_SETUP.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/E2E_TEST_STATUS.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/TEST_COVERAGE_SUMMARY.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/architecture/DESIGN.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/architecture/GRAPH_ALGORITHMS_EXPLANATION.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/ADDRESS_ER_ANALYZER_FIX_AUDIT.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/AUDIT_2025_SUMMARY.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/AUDIT_CHECKLIST.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/AUDIT_QUICK_SUMMARY.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/CODE_AUDIT_REPORT.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/CODE_AUDIT_SUMMARY.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/CODE_AUDIT_V3.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/COMPREHENSIVE_AUDIT_REPORT.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/DOCUMENTATION_AUDIT.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/FINAL_CODE_AUDIT.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/IMPROVEMENT_OPPORTUNITIES_SUMMARY.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/PRE_COMMIT_RISK_ASSESSMENT.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/PROJECT_EVALUATION_2025.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/QUICK_WINS_IMPLEMENTATION_2025.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/audits/TEST_COVERAGE_AUDIT.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/API_DOCUMENTATION_SUMMARY.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/API_EXAMPLES.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/API_PYTHON.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/API_QUICKSTART.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/API_REFERENCE.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/DEPLOYMENT_VALIDATION_REPORT.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/DESIGN_SIMPLIFICATION.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/DOCUMENTATION_INDEX.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/ENHANCEMENT_ANALYSIS_SUMMARY.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/ENHANCEMENT_ROADMAP.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/LIB_USER_UPDATE_CHECKLIST.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/LIB_USER_UPDATE_EXAMPLES.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/LIB_USER_UPDATE_GUIDE.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/PERFORMANCE_IMPROVEMENTS_SUMMARY.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/REFACTORING_COMPLETE.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/SECURITY_FIXES_APPLIED.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/completed-work/SECURITY_FIXES_NEEDED.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/library-enhancements-summary-v2.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/pre-commit-summary.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/session-notes/HIGH_PRIORITY_RISKS_RESOLVED.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/session-notes/IMPLEMENTATION_PROGRESS.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/session-notes/QUICK_WINS_COMPLETE.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/session-notes/SESSION_SUMMARY.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/session-notes/TODO_REVIEW.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/test-reports/ALL_TESTS_FIXED.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/test-reports/TESTING_AND_DOCS_SUMMARY.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/test-reports/TEST_COVERAGE_SUMMARY.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/test-reports/TEST_IMPROVEMENTS_COMPLETE.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/test-reports/TEST_RESULTS.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/test-reports/TEST_STATUS.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/test-reports/TEST_VERIFICATION_REPORT.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/archive/test-reports/WHATS_NEW_TEST_COVERAGE.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/AVAILABLE_DATASETS.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/BATCH_VS_BULK_PROCESSING.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/BLOCKING_BENCHMARKS.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/BULK_PROCESSING_IMPLEMENTATION_SUMMARY.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/CODE_QUALITY_ANALYSIS_REPORT_2026-02-12.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/DIAGRAM_GENERATION_GUIDE.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/EDGE_BULK_LOADING_ANALYSIS.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/GIT_HOOKS.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/LIBRARY_PORT_ANALYSIS.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/PROJECT_EVOLUTION.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/TESTING.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/TUPLE_EMBEDDING_SERIALIZATION.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/code-quality-audit.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/documentation-audit.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/documentation-quality-review.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/merge-conflict-analysis.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/pre-push-hook-issue.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/vector-search-code-quality-review.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/wcc-performance-fix/CUSTOMER_SUMMARY.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/wcc-performance-fix/README.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/wcc-performance-fix/TECHNICAL.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/development/wcc-performance-fix/WITH_CLAUSE.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/README.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/arango-multimodel.mermaid +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/arango-multimodel.svg +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/architecture.mermaid +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/architecture.svg +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/component-architecture.mermaid +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/component-architecture.svg +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/high-level-architecture.mermaid +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/high-level-architecture.svg +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/system-architecture.mermaid +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/system-architecture.svg +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/workflow.mermaid +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/diagrams/workflow.svg +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/enrichments.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/guides/COMPUTED_FIELDS_GUIDE.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/guides/CUSTOM_COLLECTIONS_GUIDE.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/guides/MIGRATION_GUIDE_V2.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/guides/MIGRATION_GUIDE_V3.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/guides/TESTING_GUIDE.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/openapi.yaml +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/testing/README.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/testing/e2e-test-results.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/testing/functional-test-results.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/testing/post-merge-test-results.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/testing/testing-complete.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/testing/testing-status.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/validation/README.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/validation/hardware_ground_truth.json +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/validation/medical_ground_truth.json +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/validation/validate_metrics.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/validation/validation_methodology.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/validation/validation_results.json +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/validation/validation_results_hardware.json +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/docs/validation/validation_results_medical.json +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/examples/bulk_processing_demo.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/examples/cross_collection_matching_examples.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/examples/enrichments/domain_agnostic_examples.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/examples/enrichments/hardware_er_example.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/pytest.ini +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/reports/complete_pipeline_report.json +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/reports/demo_report.json +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/reports/performance_benchmark.json +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/requirements.txt +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/CONTRIBUTION_CHECKLIST.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/ENRICHMENTS_INTEGRATION_COMPLETE.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/FINAL_APPROVAL_HARDWARE_ER.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/FINAL_SIGNOFF_HARDWARE_ER.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/HARDWARE_ER_FEEDBACK_SUMMARY.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/HARDWARE_ER_FINAL_REVIEW.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/HARDWARE_ER_TLDR.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/IC_ENRICHMENT_PACK_ASSESSMENT.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/README.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/SEND_NOW_HARDWARE_ER.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/bibliography.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/notes/arango_search_implementation_strategy.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/papers/README.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/papers/blocking/2014_Papadakis_BlockingFilteringSurvey_notes.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/papers/blocking/2021_Thirumuruganathan_LearningBlocking_notes.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/papers/embeddings/2018_Ebraheem_DistributedEntityMatching_notes.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/papers/embeddings/2018_Mudgal_DeepLearningEntityMatching_notes.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/papers/similarity/1969_Fellegi_ProbabilisticRecordLinkage_notes.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/research/papers/systems/2016_Doan_MagellanEntityMatching_notes.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/advanced_similarity_tuning.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/arango_test_down.sh +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/arango_test_up.sh +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/auto_cleanup_databases.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/benchmark_lsh_blocking.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/benchmarks/performance_comparison.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/benchmarks/similarity_performance_test.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/cleanup_report_files.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/code_quality_audit.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/code_quality_cleanup.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/common/__init__.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/comprehensive_cleanup.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/comprehensive_code_review.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/comprehensive_system_test.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/consolidated_test_suite.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/create_comprehensive_unit_tests.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/crud/crud_operations.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/database/manage_db.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/demo_walkthrough.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/enhanced_clustering_algorithms.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/enhanced_qa_tests.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/entity_resolution_demo.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/final_code_quality_check.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/fix_bare_except_clauses.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/fix_todo_comments.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/focused_er_demo.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/implement_configuration_management.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/implement_logging_framework.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/improved_database_manager.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/performance_optimization.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/publish.sh +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/realistic_integration_tests.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/run_node2vec_integration_with_docker.sh +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/run_tests_with_temp_arango.sh +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/setup-git-hooks.sh +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/setup.sh +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/setup_demo_database.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/setup_test_database.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/shared_utils.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/teardown.sh +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/test_configuration_management.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/test_coverage_analyzer.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/test_error_handling.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/test_logging_framework.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/tests/analyze_test_coverage.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/tests/detailed_coverage_analysis.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/tests/diagnose_similarity_issue.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/tests/final_comprehensive_tests.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/unified_cleanup.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/validate_deployment.sh +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/scripts/validate_performance.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/core/__init__.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/core/entity_resolver.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/data/__init__.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/demo/__init__.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/demo/demo_manager.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/enrichments/README.md +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/enrichments/__init__.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/enrichments/acronym_handler.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/enrichments/context_resolver.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/enrichments/relationship_sweeper.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/enrichments/type_constraints.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/etl/__init__.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/etl/canonical_resolver.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/etl/normalizers.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/etl/provenance.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/mcp/__init__.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/mcp/resources/__init__.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/mcp/tools/__init__.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/py.typed +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/reasoning/__init__.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/ab_evaluation_harness.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/ab_evaluation_runner.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/base_service.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/bulk_blocking_service.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/services/clustering_service.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/similarity/__init__.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/strategies/__init__.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/__init__.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/algorithms.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/aql_builders.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/graph_utils.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/pipeline_utils.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/src/entity_resolution/utils/validation_utils.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/enrichments/test_components.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_ab_evaluation_harness.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_ab_evaluation_runner.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_address_er_service_arangoimport_redaction.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_algorithms_comprehensive.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_aql_builders_filter_builder.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_blocking_service_legacy_unit.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_bulk_blocking_service.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_canonical_resolver.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_canonical_resolver_integration.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_cluster_export_service.py +0 -0
- {arango_entity_resolution-3.3.0/examples → arango_entity_resolution-3.8.0/tests}/test_clustering_service.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_computed_fields.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_config.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_config_utils.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_cross_collection_matching_service_validation.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_embedding_service_identifier_validation.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_entity_resolver_pipeline_unit.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_lsh_blocking.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_node2vec_embedding_service_integration.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_normalizers.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_pipeline_utils.py +0 -0
- {arango_entity_resolution-3.3.0/examples → arango_entity_resolution-3.8.0/tests}/test_similarity_service.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_validation_utils_full.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_view_utils_full.py +0 -0
- {arango_entity_resolution-3.3.0 → arango_entity_resolution-3.8.0}/tests/test_view_utils_validation.py +0 -0
- {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
|
-
|
|
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
|
-
|
|
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
|
|
60
|
-
if
|
|
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
|
-
|
|
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)" "
|
|
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" "
|
|
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" "
|
|
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
|
|
|
@@ -15,17 +15,17 @@ jobs:
|
|
|
15
15
|
steps:
|
|
16
16
|
- uses: actions/checkout@v4
|
|
17
17
|
|
|
18
|
-
- name: Set up Python 3.
|
|
18
|
+
- name: Set up Python 3.11
|
|
19
19
|
uses: actions/setup-python@v5
|
|
20
20
|
with:
|
|
21
|
-
python-version: "3.
|
|
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
|