graphforge 0.5.1__tar.gz → 0.5.2__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.
Potentially problematic release.
This version of graphforge might be problematic. Click here for more details.
- {graphforge-0.5.1 → graphforge-0.5.2}/Cargo.lock +17 -17
- {graphforge-0.5.1 → graphforge-0.5.2}/Cargo.toml +1 -1
- {graphforge-0.5.1 → graphforge-0.5.2}/PKG-INFO +3 -3
- {graphforge-0.5.1 → graphforge-0.5.2}/README.md +2 -2
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/Cargo.toml +10 -10
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/algorithm_runs.rs +97 -1
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/belief_projection.rs +230 -1
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/bulk_construction.rs +996 -134
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/canonical_arrow.rs +177 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/checkpoints.rs +795 -62
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/composite_publish.rs +293 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/composite_transaction.rs +49 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/concurrency_test_support.rs +37 -0
- graphforge-0.5.2/crates/graphforge-api/src/graph_inspection.rs +363 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/hypotheses.rs +103 -39
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/invocation_descriptor.rs +243 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/knowledge.rs +640 -16
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/lib.rs +734 -58
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/provider_embedding_execution.rs +286 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/provider_find.rs +103 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/provider_rerank.rs +54 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/provider_session.rs +58 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/repository.rs +715 -1
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/valid_time.rs +31 -0
- graphforge-0.5.2/crates/graphforge-api/tests/bdd/api_steps.rs +1787 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/bdd/main.rs +41 -7
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/bdd/timing.rs +2 -2
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/bdd_timing.rs +5 -4
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/public_facade_remaining_conformance.rs +15 -27
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ast/Cargo.toml +1 -1
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ast/src/tests.rs +109 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/Cargo.toml +2 -2
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/README.md +2 -2
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/src/lib.rs +3 -39
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/bulk_construction.py +2 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/composite_transaction.py +141 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/non_cypher_release.py +57 -34
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/smoke.py +25 -26
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-cli/Cargo.toml +1 -1
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-cli/src/lib.rs +591 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-core/src/algorithms.rs +28 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-core/src/canonical.rs +167 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-core/src/embedding_options.rs +60 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-core/src/lib.rs +152 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-core/src/manifest.rs +11 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-core/src/uuid.rs +9 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-cypher/Cargo.toml +4 -4
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-cypher/src/parser/clauses.rs +64 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-cypher/src/parser/expr.rs +80 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-cypher/src/parser/patterns.rs +64 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/Cargo.toml +6 -6
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze.rs +345 -1
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_graph.rs +314 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_matching_state.rs +49 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_output.rs +141 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_paths.rs +177 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/demand.rs +267 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/lib.rs +1952 -6
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/write_driver.rs +760 -52
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/Cargo.toml +3 -3
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/src/binder.rs +684 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-knowledge/Cargo.toml +1 -1
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-knowledge/src/belief_projection.rs +80 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-knowledge/src/hypothesis.rs +154 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-knowledge/src/lib.rs +346 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-knowledge/src/reasoning.rs +24 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-knowledge/src/status.rs +17 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ontology/Cargo.toml +1 -1
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ontology/src/error.rs +37 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ontology/src/handle.rs +32 -1
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ontology/src/migration.rs +111 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-plan/Cargo.toml +2 -2
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-plan/src/lib.rs +267 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-provenance/Cargo.toml +1 -1
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-provenance/src/lib.rs +128 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/Cargo.toml +5 -5
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/src/expr.rs +2779 -303
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/src/lowerer.rs +1155 -116
- graphforge-0.5.2/crates/graphforge-rel/tests/expression_lowering_matrix.rs +102 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/Cargo.toml +1 -1
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/embedding_scheduler.rs +28 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/embedding_source.rs +78 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/lifecycle.rs +333 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/provider_batching.rs +60 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/provider_execution.rs +68 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/provider_openrouter.rs +148 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/provider_publication.rs +23 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/provider_reranking.rs +28 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/provider_response.rs +82 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/source.rs +180 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/text_index.rs +303 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/vector_lifecycle.rs +17 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/Cargo.toml +3 -3
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/adjacency.rs +200 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/catalog.rs +256 -1
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/embedding_catalog.rs +133 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/embedding_discovery.rs +73 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/embedding_identity.rs +54 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/embedding_mutations.rs +25 -1
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/embedding_publication.rs +645 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/embedding_refresh_config.rs +328 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/graph_projection.rs +651 -4
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/project_checkpoints.rs +508 -14
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/project_generation.rs +291 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/project_portable.rs +396 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/project_publication.rs +667 -9
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/search_publication.rs +196 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/vector_store.rs +258 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/writer.rs +339 -1
- {graphforge-0.5.1 → graphforge-0.5.2}/pyproject.toml +1 -1
- {graphforge-0.5.1 → graphforge-0.5.2}/python/graphforge/_graphforge_rs.pyi +0 -3
- graphforge-0.5.1/crates/graphforge-api/tests/bdd/api_steps.rs +0 -1270
- {graphforge-0.5.1 → graphforge-0.5.2}/LICENSE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/NOTICE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/THIRD_PARTY_NOTICES.md +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/LICENSE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/NOTICE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/examples/atomic_recovery_workflow.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/examples/correction_churn_workflow.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/examples/cyber_intrusion_workflow.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/examples/derived_state_freshness_workflow.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/examples/finance_fraud_workflow.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/examples/knowledge_evolution_workflow.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/examples/ontology_emergence_strict_handoff.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/examples/probate_genealogy_workflow.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/examples/release_load_probe.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/examples/sna_intelligence_workflow.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/examples/strict_add_node_fixture.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/adjacency_rebuild_barrier.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/algorithm_writeback.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/capabilities.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/checkpoint_graph_diff.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/composite_receipt.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/composite_recovery_tests.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/composite_validation.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/construction.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/embedding_freshness.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/embedding_publication.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/embedding_refresh.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/embedding_spaces.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/epistemic_snapshot.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/find_execution.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/graph_snapshot.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/m18_embedding_publication.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/multi_process_publication_tests.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/node_selector.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/ontology_lifecycle.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/paging.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/portable.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/provenance.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/provider_embedding.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/same_process_concurrency_tests.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/schema_inventory.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/search_find.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/search_index.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/search_output.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/shared_directory_semantics_tests.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/stream_cancellation_isolation_tests.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/workspace_ontology.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/src/write_modes.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/bdd/fixture.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/bdd/tck_steps.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/belief_subject_contract.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/bind_error_spans.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/clear.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/conductance.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/create_scaling.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/e2e_baseline.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/existential_subquery.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/facade_methods.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/fixed_hop_limit.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/graph_internal_metadata.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/inference_provenance.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/knowledge_isolation.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/list_semantics.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/m22_m18_public_surface.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/m22_m19_public_surface.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/m22_provider_public_surface.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/max_bipartite_matching.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/max_cardinality_matching.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/max_weight_matching.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/minimum_k_spanning_tree.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/modularity.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/multi_label_scaling.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/pattern_comprehension.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/percentile_aggregates.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/provider_session.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/public_lifecycle_conformance.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/release_load_construction.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/strict_runtime_properties.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/support/project_fixture.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/value_access_semantics.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/value_semantics.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/with_aggregation.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-api/tests/xor_scaling.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ast/LICENSE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ast/NOTICE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ast/src/ast.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ast/src/lib.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ast/src/parse_error.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ast/src/token.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/LICENSE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/NOTICE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/THIRD_PARTY_NOTICES.md +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/src/composite.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/caller_embeddings.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/checkpoints.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/cli_entrypoint.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/cli_lifecycle.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/cli_smoke.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/concurrency_parity.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/embedding_options.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/embedding_refresh.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/embedding_space_deletion.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/embedding_spaces.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/gil_release.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/gomory_hu.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/m18_embedding_publication.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/ontology_lifecycle.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/project_skills.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/provider_workflow.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/search_index.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/steiner.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/strict_add_node.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/stub_surface.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-bindings-py/tests/test_invocation_descriptor.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-cli/LICENSE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-cli/NOTICE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-cli/THIRD_PARTY_NOTICES.md +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-cli/build.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-cli/src/main.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-cli/tests/checkpoints.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-cli/tests/portable.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-cli/tests/repository.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-core/Cargo.toml +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-core/LICENSE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-core/NOTICE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-cypher/LICENSE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-cypher/NOTICE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-cypher/src/lexer.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-cypher/src/lib.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-cypher/src/parser/mod.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-cypher/tests/corpus/valid.json +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-cypher/tests/corpus.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/LICENSE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/NOTICE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/adjacency.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_automorphism.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_automorphism_count.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_bipartite.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_bipartite_matching.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_chromatic_number.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_conductance.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_dag_longest_path.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_dag_longest_path_weighted.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_dag_topology.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_dyad_census.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_edge_coloring.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_euler.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_find_cycles.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_has_euler_circuit.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_has_euler_path.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_is_planar.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_k1_coloring.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_lowlink.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_max_cardinality_matching.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_minimum_k_spanning_tree.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_minimum_spanning_forest.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_modularity.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_node_coloring.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_transitivity.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_triad_census.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_analyze_triangle_count.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_cluster.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_cluster_biconnected.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_cluster_hdbscan.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_cluster_kmeans.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_cluster_max_cut.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_cluster_scc.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_cluster_spectral.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_cluster_spinglass.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_cluster_walktrap.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_dispatch.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_embedding_control.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_embedding_fastrp.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_embedding_graphsage.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_embedding_hashgnn.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_embedding_invocation.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_embedding_node2vec.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_embedding_options.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_embedding_output.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_embedding_rng.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_k_core.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_matching_blossom.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_neighbors.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_partition.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_paths_astar.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_paths_bellman_ford.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_paths_delta_stepping.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_paths_dfs.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_paths_dijkstra.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_paths_floyd_warshall.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_paths_gomory_hu.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_paths_max_flow.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_paths_min_cost_flow.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_paths_min_cut.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_paths_min_steiner.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_paths_prize_steiner.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_paths_random_walk.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_paths_steiner.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_paths_transitive_closure.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_paths_yens.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_rank.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_similar.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_similar_jaccard.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_similar_knn.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/src/algorithm_weighted_undirected.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/tests/adjacency_expand.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/tests/bench_traversal_scaling.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/tests/create_execution.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/tests/create_input_driven.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/tests/differential_traversal.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/tests/explain_goldens/explain_snapshots__single_hop_index_absent_expand_exec.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/tests/explain_goldens/explain_snapshots__single_hop_index_present_expand_exec.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/tests/explain_goldens/explain_snapshots__var_len_index_absent.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/tests/explain_goldens/explain_snapshots__var_len_index_present.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/tests/explain_snapshots.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/tests/optional_match.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/tests/persistent_adjacency.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/tests/read_execution.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/tests/unwind.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/tests/var_len_expand.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-exec/tests/write_statement.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/LICENSE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/NOTICE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/src/catalog.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/src/expr.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/src/lib.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/src/plan.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/src/procedure.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/tests/golden.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/tests/ir_goldens/golden__aggregation.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/tests/ir_goldens/golden__filtered_scan.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/tests/ir_goldens/golden__named_path_fixed_segment_and_return_p.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/tests/ir_goldens/golden__named_path_variable_functions.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/tests/ir_goldens/golden__one_hop_expand.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/tests/ir_goldens/golden__optional_match.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/tests/ir_goldens/golden__order_by_limit.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/tests/ir_goldens/golden__parameter.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/tests/ir_goldens/golden__simple_node_scan.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/tests/ir_goldens/golden__two_hop_expand.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/tests/ir_goldens/golden__unwind.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/tests/ir_goldens/golden__variable_length_expand.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ir/tests/ir_goldens/golden__with_pipeline.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-knowledge/LICENSE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-knowledge/NOTICE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-knowledge/src/supersession.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-knowledge/src/valid_time.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ontology/LICENSE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ontology/NOTICE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ontology/src/compiler.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ontology/src/lib.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ontology/src/loader.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ontology/src/ontology.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ontology/src/persistence.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ontology/src/registry.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ontology/src/schemas.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ontology/src/validator.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ontology/tests/fixtures/hr.json +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ontology/tests/fixtures/hr.yaml +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-ontology/tests/integration.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-plan/LICENSE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-plan/NOTICE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-provenance/LICENSE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-provenance/NOTICE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/LICENSE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/NOTICE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/src/calendar.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/src/lib.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/src/temporal.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/tests/logical_plan_golden.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/tests/logical_plan_goldens/logical_plan_golden__filtered_scan.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/tests/logical_plan_goldens/logical_plan_golden__named_path_fixed_segment_and_return_p.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/tests/logical_plan_goldens/logical_plan_golden__named_path_variable_functions.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/tests/logical_plan_goldens/logical_plan_golden__one_hop_expand.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/tests/logical_plan_goldens/logical_plan_golden__optional_match.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/tests/logical_plan_goldens/logical_plan_golden__order_by_limit.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/tests/logical_plan_goldens/logical_plan_golden__parameter.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/tests/logical_plan_goldens/logical_plan_golden__property_read.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/tests/logical_plan_goldens/logical_plan_golden__simple_node_scan.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/tests/logical_plan_goldens/logical_plan_golden__undirected_expand.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/tests/logical_plan_goldens/logical_plan_golden__unlabeled_scan.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/tests/logical_plan_goldens/logical_plan_golden__unwind.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/tests/logical_plan_goldens/logical_plan_golden__unwind_list_literal.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/tests/logical_plan_goldens/logical_plan_golden__variable_length_edge_var_length.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-rel/tests/logical_plan_goldens/logical_plan_golden__variable_length_expand.snap +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/LICENSE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/NOTICE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/analyzer.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/embedding_lifecycle.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/embedding_proactive.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/embedding_query.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/embedding_refresh.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/find.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/fusion.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/indexing.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/lib.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/provider.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-search/src/provider_adapter.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/LICENSE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/NOTICE +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/adjacency_delta.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/embedding_batch.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/embedding_freshness.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/embedding_manifest.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/generation.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/io_stats.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/lib.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/mutator.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/project_failpoint.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/project_recovery.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/schemas.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/search_manifest.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/staging.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/src/workspace_participants.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/tests/adjacency_delta_write.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/tests/filtered_read.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/tests/graph_writer.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/crates/graphforge-storage/tests/io_stats.rs +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/python/graphforge/__init__.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/python/graphforge/_project_skills/README.md +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/python/graphforge/_project_skills/graphforge-bootstrap/SKILL.md +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/python/graphforge/_project_skills/graphforge-build-knowledge/SKILL.md +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/python/graphforge/_project_skills/manifest.json +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/python/graphforge/api.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/python/graphforge/cli.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/python/graphforge/exceptions.py +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/python/graphforge/py.typed +0 -0
- {graphforge-0.5.1 → graphforge-0.5.2}/python/graphforge/recipes/__init__.py +0 -0
|
@@ -2018,7 +2018,7 @@ dependencies = [
|
|
|
2018
2018
|
|
|
2019
2019
|
[[package]]
|
|
2020
2020
|
name = "graphforge-api"
|
|
2021
|
-
version = "0.5.
|
|
2021
|
+
version = "0.5.2"
|
|
2022
2022
|
dependencies = [
|
|
2023
2023
|
"arrow",
|
|
2024
2024
|
"cucumber",
|
|
@@ -2048,7 +2048,7 @@ dependencies = [
|
|
|
2048
2048
|
|
|
2049
2049
|
[[package]]
|
|
2050
2050
|
name = "graphforge-ast"
|
|
2051
|
-
version = "0.5.
|
|
2051
|
+
version = "0.5.2"
|
|
2052
2052
|
dependencies = [
|
|
2053
2053
|
"graphforge-core",
|
|
2054
2054
|
"serde",
|
|
@@ -2058,7 +2058,7 @@ dependencies = [
|
|
|
2058
2058
|
|
|
2059
2059
|
[[package]]
|
|
2060
2060
|
name = "graphforge-bindings-node"
|
|
2061
|
-
version = "0.5.
|
|
2061
|
+
version = "0.5.2"
|
|
2062
2062
|
dependencies = [
|
|
2063
2063
|
"arrow",
|
|
2064
2064
|
"graphforge-api",
|
|
@@ -2072,7 +2072,7 @@ dependencies = [
|
|
|
2072
2072
|
|
|
2073
2073
|
[[package]]
|
|
2074
2074
|
name = "graphforge-bindings-py"
|
|
2075
|
-
version = "0.5.
|
|
2075
|
+
version = "0.5.2"
|
|
2076
2076
|
dependencies = [
|
|
2077
2077
|
"arrow",
|
|
2078
2078
|
"futures",
|
|
@@ -2085,7 +2085,7 @@ dependencies = [
|
|
|
2085
2085
|
|
|
2086
2086
|
[[package]]
|
|
2087
2087
|
name = "graphforge-cli"
|
|
2088
|
-
version = "0.5.
|
|
2088
|
+
version = "0.5.2"
|
|
2089
2089
|
dependencies = [
|
|
2090
2090
|
"arrow",
|
|
2091
2091
|
"clap",
|
|
@@ -2098,7 +2098,7 @@ dependencies = [
|
|
|
2098
2098
|
|
|
2099
2099
|
[[package]]
|
|
2100
2100
|
name = "graphforge-core"
|
|
2101
|
-
version = "0.5.
|
|
2101
|
+
version = "0.5.2"
|
|
2102
2102
|
dependencies = [
|
|
2103
2103
|
"serde",
|
|
2104
2104
|
"serde_yaml_ng",
|
|
@@ -2109,7 +2109,7 @@ dependencies = [
|
|
|
2109
2109
|
|
|
2110
2110
|
[[package]]
|
|
2111
2111
|
name = "graphforge-cypher"
|
|
2112
|
-
version = "0.5.
|
|
2112
|
+
version = "0.5.2"
|
|
2113
2113
|
dependencies = [
|
|
2114
2114
|
"graphforge-ast",
|
|
2115
2115
|
"graphforge-core",
|
|
@@ -2121,7 +2121,7 @@ dependencies = [
|
|
|
2121
2121
|
|
|
2122
2122
|
[[package]]
|
|
2123
2123
|
name = "graphforge-exec"
|
|
2124
|
-
version = "0.5.
|
|
2124
|
+
version = "0.5.2"
|
|
2125
2125
|
dependencies = [
|
|
2126
2126
|
"anyhow",
|
|
2127
2127
|
"arrow",
|
|
@@ -2146,7 +2146,7 @@ dependencies = [
|
|
|
2146
2146
|
|
|
2147
2147
|
[[package]]
|
|
2148
2148
|
name = "graphforge-io"
|
|
2149
|
-
version = "0.5.
|
|
2149
|
+
version = "0.5.2"
|
|
2150
2150
|
dependencies = [
|
|
2151
2151
|
"graphforge-core",
|
|
2152
2152
|
"graphforge-storage",
|
|
@@ -2155,7 +2155,7 @@ dependencies = [
|
|
|
2155
2155
|
|
|
2156
2156
|
[[package]]
|
|
2157
2157
|
name = "graphforge-ir"
|
|
2158
|
-
version = "0.5.
|
|
2158
|
+
version = "0.5.2"
|
|
2159
2159
|
dependencies = [
|
|
2160
2160
|
"arrow",
|
|
2161
2161
|
"graphforge-ast",
|
|
@@ -2170,7 +2170,7 @@ dependencies = [
|
|
|
2170
2170
|
|
|
2171
2171
|
[[package]]
|
|
2172
2172
|
name = "graphforge-knowledge"
|
|
2173
|
-
version = "0.5.
|
|
2173
|
+
version = "0.5.2"
|
|
2174
2174
|
dependencies = [
|
|
2175
2175
|
"arrow",
|
|
2176
2176
|
"graphforge-core",
|
|
@@ -2183,7 +2183,7 @@ dependencies = [
|
|
|
2183
2183
|
|
|
2184
2184
|
[[package]]
|
|
2185
2185
|
name = "graphforge-ontology"
|
|
2186
|
-
version = "0.5.
|
|
2186
|
+
version = "0.5.2"
|
|
2187
2187
|
dependencies = [
|
|
2188
2188
|
"arrow",
|
|
2189
2189
|
"graphforge-core",
|
|
@@ -2198,7 +2198,7 @@ dependencies = [
|
|
|
2198
2198
|
|
|
2199
2199
|
[[package]]
|
|
2200
2200
|
name = "graphforge-plan"
|
|
2201
|
-
version = "0.5.
|
|
2201
|
+
version = "0.5.2"
|
|
2202
2202
|
dependencies = [
|
|
2203
2203
|
"datafusion",
|
|
2204
2204
|
"graphforge-core",
|
|
@@ -2208,7 +2208,7 @@ dependencies = [
|
|
|
2208
2208
|
|
|
2209
2209
|
[[package]]
|
|
2210
2210
|
name = "graphforge-provenance"
|
|
2211
|
-
version = "0.5.
|
|
2211
|
+
version = "0.5.2"
|
|
2212
2212
|
dependencies = [
|
|
2213
2213
|
"arrow",
|
|
2214
2214
|
"graphforge-core",
|
|
@@ -2219,7 +2219,7 @@ dependencies = [
|
|
|
2219
2219
|
|
|
2220
2220
|
[[package]]
|
|
2221
2221
|
name = "graphforge-rel"
|
|
2222
|
-
version = "0.5.
|
|
2222
|
+
version = "0.5.2"
|
|
2223
2223
|
dependencies = [
|
|
2224
2224
|
"arrow-data",
|
|
2225
2225
|
"chrono",
|
|
@@ -2239,7 +2239,7 @@ dependencies = [
|
|
|
2239
2239
|
|
|
2240
2240
|
[[package]]
|
|
2241
2241
|
name = "graphforge-search"
|
|
2242
|
-
version = "0.5.
|
|
2242
|
+
version = "0.5.2"
|
|
2243
2243
|
dependencies = [
|
|
2244
2244
|
"arrow",
|
|
2245
2245
|
"graphforge-core",
|
|
@@ -2254,7 +2254,7 @@ dependencies = [
|
|
|
2254
2254
|
|
|
2255
2255
|
[[package]]
|
|
2256
2256
|
name = "graphforge-storage"
|
|
2257
|
-
version = "0.5.
|
|
2257
|
+
version = "0.5.2"
|
|
2258
2258
|
dependencies = [
|
|
2259
2259
|
"arrow",
|
|
2260
2260
|
"async-trait",
|
|
@@ -3,7 +3,7 @@ resolver = "2"
|
|
|
3
3
|
members = ["crates/graphforge-core", "crates/graphforge-ast", "crates/graphforge-cypher", "crates/graphforge-ir", "crates/graphforge-rel", "crates/graphforge-exec", "crates/graphforge-search", "crates/graphforge-storage", "crates/graphforge-provenance", "crates/graphforge-knowledge", "crates/graphforge-ontology", "crates/graphforge-plan", "crates/graphforge-api", "crates/graphforge-bindings-py", "crates/graphforge-cli"]
|
|
4
4
|
|
|
5
5
|
[workspace.package]
|
|
6
|
-
version = "0.5.
|
|
6
|
+
version = "0.5.2"
|
|
7
7
|
edition = "2024"
|
|
8
8
|
license = "Apache-2.0"
|
|
9
9
|
license-file = "LICENSE"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: graphforge
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.2
|
|
4
4
|
Classifier: Development Status :: 4 - Beta
|
|
5
5
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -33,13 +33,13 @@ with Rust-owned behavior, Arrow results, and a thin repository lifecycle CLI.
|
|
|
33
33
|
**pip**
|
|
34
34
|
|
|
35
35
|
```bash
|
|
36
|
-
pip install
|
|
36
|
+
pip install graphforge
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
**uv** (recommended)
|
|
40
40
|
|
|
41
41
|
```bash
|
|
42
|
-
uv add
|
|
42
|
+
uv add graphforge
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
## First use
|
|
@@ -8,13 +8,13 @@ with Rust-owned behavior, Arrow results, and a thin repository lifecycle CLI.
|
|
|
8
8
|
**pip**
|
|
9
9
|
|
|
10
10
|
```bash
|
|
11
|
-
pip install
|
|
11
|
+
pip install graphforge
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
**uv** (recommended)
|
|
15
15
|
|
|
16
16
|
```bash
|
|
17
|
-
uv add
|
|
17
|
+
uv add graphforge
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
## First use
|
|
@@ -8,16 +8,16 @@ license-file = "LICENSE"
|
|
|
8
8
|
repository.workspace = true
|
|
9
9
|
|
|
10
10
|
[dependencies]
|
|
11
|
-
graphforge-core = { version = "0.5.
|
|
12
|
-
graphforge-ir = { version = "0.5.
|
|
13
|
-
graphforge-ontology = { version = "0.5.
|
|
14
|
-
graphforge-provenance = { version = "0.5.
|
|
15
|
-
graphforge-knowledge = { version = "0.5.
|
|
16
|
-
graphforge-cypher = { version = "0.5.
|
|
17
|
-
graphforge-rel = { version = "0.5.
|
|
18
|
-
graphforge-storage = { version = "0.5.
|
|
19
|
-
graphforge-exec = { version = "0.5.
|
|
20
|
-
graphforge-search = { version = "0.5.
|
|
11
|
+
graphforge-core = { version = "0.5.2", path = "../graphforge-core" }
|
|
12
|
+
graphforge-ir = { version = "0.5.2", path = "../graphforge-ir" }
|
|
13
|
+
graphforge-ontology = { version = "0.5.2", path = "../graphforge-ontology" }
|
|
14
|
+
graphforge-provenance = { version = "0.5.2", path = "../graphforge-provenance" }
|
|
15
|
+
graphforge-knowledge = { version = "0.5.2", path = "../graphforge-knowledge" }
|
|
16
|
+
graphforge-cypher = { version = "0.5.2", path = "../graphforge-cypher" }
|
|
17
|
+
graphforge-rel = { version = "0.5.2", path = "../graphforge-rel" }
|
|
18
|
+
graphforge-storage = { version = "0.5.2", path = "../graphforge-storage" }
|
|
19
|
+
graphforge-exec = { version = "0.5.2", path = "../graphforge-exec" }
|
|
20
|
+
graphforge-search = { version = "0.5.2", path = "../graphforge-search" }
|
|
21
21
|
arrow = { workspace = true }
|
|
22
22
|
datafusion = { workspace = true }
|
|
23
23
|
futures = { workspace = true }
|
|
@@ -749,7 +749,7 @@ fn api_error(code: ApiErrorCode, message: impl Into<String>) -> GfError {
|
|
|
749
749
|
|
|
750
750
|
#[cfg(test)]
|
|
751
751
|
mod tests {
|
|
752
|
-
use std::collections::HashMap;
|
|
752
|
+
use std::collections::{BTreeMap, HashMap};
|
|
753
753
|
use std::process::{Command, Stdio};
|
|
754
754
|
use std::time::{Duration, Instant};
|
|
755
755
|
|
|
@@ -795,6 +795,102 @@ mod tests {
|
|
|
795
795
|
(graph, descriptor)
|
|
796
796
|
}
|
|
797
797
|
|
|
798
|
+
#[test]
|
|
799
|
+
fn wave10_request_identity_and_error_translation_guards_are_structured() {
|
|
800
|
+
let root = tempfile::tempdir().unwrap();
|
|
801
|
+
let (_, descriptor) = recorded_fixture(&root);
|
|
802
|
+
let base = RecordedAlgorithmRequest {
|
|
803
|
+
context: WriteContext {
|
|
804
|
+
operation_uuid: OperationId(uuid7(20)),
|
|
805
|
+
actor_uuid: None,
|
|
806
|
+
},
|
|
807
|
+
run_uuid: uuid7(21),
|
|
808
|
+
descriptor,
|
|
809
|
+
cancellation: None,
|
|
810
|
+
};
|
|
811
|
+
|
|
812
|
+
let mut request = base.clone();
|
|
813
|
+
request.context.operation_uuid = OperationId(Uuid::nil());
|
|
814
|
+
assert_eq!(
|
|
815
|
+
validate_request(&request).unwrap_err().code(),
|
|
816
|
+
"GF_VALIDATION"
|
|
817
|
+
);
|
|
818
|
+
let mut request = base.clone();
|
|
819
|
+
request.context.actor_uuid = Some(Uuid::nil());
|
|
820
|
+
assert_eq!(
|
|
821
|
+
validate_request(&request).unwrap_err().code(),
|
|
822
|
+
"GF_VALIDATION"
|
|
823
|
+
);
|
|
824
|
+
let mut request = base.clone();
|
|
825
|
+
request.run_uuid = Uuid::nil();
|
|
826
|
+
assert_eq!(
|
|
827
|
+
validate_request(&request).unwrap_err().code(),
|
|
828
|
+
"GF_VALIDATION"
|
|
829
|
+
);
|
|
830
|
+
let mut request = base;
|
|
831
|
+
request.run_uuid = Uuid::from_u128(1);
|
|
832
|
+
assert_eq!(
|
|
833
|
+
validate_request(&request).unwrap_err().code(),
|
|
834
|
+
"GF_VALIDATION"
|
|
835
|
+
);
|
|
836
|
+
|
|
837
|
+
assert_eq!(
|
|
838
|
+
invocation_error(InvocationError::SchemaMismatch).code(),
|
|
839
|
+
"GF_SCHEMA_MISMATCH"
|
|
840
|
+
);
|
|
841
|
+
assert_eq!(
|
|
842
|
+
invocation_error(InvocationError::ProjectionChanged).code(),
|
|
843
|
+
"GF_EXECUTION"
|
|
844
|
+
);
|
|
845
|
+
assert_eq!(
|
|
846
|
+
invocation_error(InvocationError::Graph(GfError::Validation("bad".into()))).code(),
|
|
847
|
+
"GF_VALIDATION"
|
|
848
|
+
);
|
|
849
|
+
let descriptor_error = InvocationDescriptor::new(
|
|
850
|
+
Algorithm::Rank(RankAlgorithm::Degree),
|
|
851
|
+
[0; 32],
|
|
852
|
+
BTreeMap::new(),
|
|
853
|
+
)
|
|
854
|
+
.unwrap_err();
|
|
855
|
+
assert_eq!(
|
|
856
|
+
invocation_error(InvocationError::Descriptor(descriptor_error)).code(),
|
|
857
|
+
"GF_VALIDATION"
|
|
858
|
+
);
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
#[test]
|
|
862
|
+
fn wave10_existing_run_lifecycle_errors_distinguish_all_terminal_states() {
|
|
863
|
+
let completed = AlgorithmRunEvent::new(
|
|
864
|
+
uuid7(30),
|
|
865
|
+
uuid7(31),
|
|
866
|
+
AlgorithmRunState::Completed,
|
|
867
|
+
Some([1; 32]),
|
|
868
|
+
None,
|
|
869
|
+
2,
|
|
870
|
+
uuid7(32),
|
|
871
|
+
)
|
|
872
|
+
.unwrap();
|
|
873
|
+
assert_eq!(
|
|
874
|
+
existing_lifecycle_error(Some(&completed)).code(),
|
|
875
|
+
"GF_RESULT_NOT_RETAINED"
|
|
876
|
+
);
|
|
877
|
+
let failed = AlgorithmRunEvent::new(
|
|
878
|
+
uuid7(33),
|
|
879
|
+
uuid7(31),
|
|
880
|
+
AlgorithmRunState::Failed,
|
|
881
|
+
None,
|
|
882
|
+
Some("GF_TEST".into()),
|
|
883
|
+
3,
|
|
884
|
+
uuid7(34),
|
|
885
|
+
)
|
|
886
|
+
.unwrap();
|
|
887
|
+
assert_eq!(
|
|
888
|
+
existing_lifecycle_error(Some(&failed)).code(),
|
|
889
|
+
"GF_EXECUTION"
|
|
890
|
+
);
|
|
891
|
+
assert_eq!(existing_lifecycle_error(None).code(), "GF_EXECUTION");
|
|
892
|
+
}
|
|
893
|
+
|
|
798
894
|
#[test]
|
|
799
895
|
fn recorded_dispatch_commits_start_and_completed_before_return() {
|
|
800
896
|
let root = tempfile::tempdir().unwrap();
|
|
@@ -1393,7 +1393,7 @@ mod tests {
|
|
|
1393
1393
|
use std::sync::{Arc, mpsc};
|
|
1394
1394
|
use std::time::Duration;
|
|
1395
1395
|
|
|
1396
|
-
use arrow::array::{FixedSizeBinaryBuilder, ListBuilder, StringBuilder};
|
|
1396
|
+
use arrow::array::{FixedSizeBinaryArray, FixedSizeBinaryBuilder, ListBuilder, StringBuilder};
|
|
1397
1397
|
use arrow::datatypes::{DataType, Field, Schema};
|
|
1398
1398
|
|
|
1399
1399
|
use super::*;
|
|
@@ -1411,6 +1411,226 @@ mod tests {
|
|
|
1411
1411
|
Uuid::from_bytes(bytes)
|
|
1412
1412
|
}
|
|
1413
1413
|
|
|
1414
|
+
#[test]
|
|
1415
|
+
fn wave12_attachment_and_projection_helper_errors_are_exact_and_closed() {
|
|
1416
|
+
let duplicate_policy = BeliefProjectionPolicyV1 {
|
|
1417
|
+
included_statuses: vec![AssertionStatus::Supported, AssertionStatus::Supported],
|
|
1418
|
+
statusless: StatuslessPolicyV1::Include,
|
|
1419
|
+
supersession_branches: SupersessionBranchPolicyV1::Reject,
|
|
1420
|
+
hypotheses: HypothesisSelectionPolicyV1::IncludeAllCurrentMembers,
|
|
1421
|
+
};
|
|
1422
|
+
assert_eq!(
|
|
1423
|
+
duplicate_policy.canonical_bytes().unwrap_err().code(),
|
|
1424
|
+
"GF_VALIDATION"
|
|
1425
|
+
);
|
|
1426
|
+
let descriptor = InvocationDescriptor::new(
|
|
1427
|
+
graphforge_core::algorithms::Algorithm::Rank(
|
|
1428
|
+
graphforge_core::algorithms::RankAlgorithm::Degree,
|
|
1429
|
+
),
|
|
1430
|
+
[0; 32],
|
|
1431
|
+
BTreeMap::from([
|
|
1432
|
+
("directed".into(), crate::InvocationParameter::Bool(false)),
|
|
1433
|
+
(
|
|
1434
|
+
"label".into(),
|
|
1435
|
+
crate::InvocationParameter::Utf8("Person".into()),
|
|
1436
|
+
),
|
|
1437
|
+
("via".into(), crate::InvocationParameter::Utf8("*".into())),
|
|
1438
|
+
]),
|
|
1439
|
+
)
|
|
1440
|
+
.unwrap();
|
|
1441
|
+
let valid = AttachResolvedRunRequest {
|
|
1442
|
+
context: WriteContext {
|
|
1443
|
+
operation_uuid: OperationId(uuid7(1)),
|
|
1444
|
+
actor_uuid: None,
|
|
1445
|
+
},
|
|
1446
|
+
attachment_uuid: uuid7(2),
|
|
1447
|
+
run_uuid: uuid7(3),
|
|
1448
|
+
descriptor,
|
|
1449
|
+
};
|
|
1450
|
+
assert!(validate_attachment_request(&valid).is_ok());
|
|
1451
|
+
for (mut request, message) in [
|
|
1452
|
+
(
|
|
1453
|
+
AttachResolvedRunRequest {
|
|
1454
|
+
context: WriteContext {
|
|
1455
|
+
operation_uuid: OperationId(Uuid::nil()),
|
|
1456
|
+
actor_uuid: None,
|
|
1457
|
+
},
|
|
1458
|
+
..valid.clone()
|
|
1459
|
+
},
|
|
1460
|
+
"operation_uuid must not be nil",
|
|
1461
|
+
),
|
|
1462
|
+
(
|
|
1463
|
+
AttachResolvedRunRequest {
|
|
1464
|
+
attachment_uuid: Uuid::nil(),
|
|
1465
|
+
..valid.clone()
|
|
1466
|
+
},
|
|
1467
|
+
"attachment_uuid must not be nil",
|
|
1468
|
+
),
|
|
1469
|
+
(
|
|
1470
|
+
AttachResolvedRunRequest {
|
|
1471
|
+
run_uuid: Uuid::nil(),
|
|
1472
|
+
..valid.clone()
|
|
1473
|
+
},
|
|
1474
|
+
"run_uuid must not be nil",
|
|
1475
|
+
),
|
|
1476
|
+
(
|
|
1477
|
+
AttachResolvedRunRequest {
|
|
1478
|
+
context: WriteContext {
|
|
1479
|
+
operation_uuid: OperationId(uuid7(4)),
|
|
1480
|
+
actor_uuid: Some(Uuid::nil()),
|
|
1481
|
+
},
|
|
1482
|
+
..valid.clone()
|
|
1483
|
+
},
|
|
1484
|
+
"actor_uuid must not be nil",
|
|
1485
|
+
),
|
|
1486
|
+
(
|
|
1487
|
+
AttachResolvedRunRequest {
|
|
1488
|
+
attachment_uuid: Uuid::from_u128(5),
|
|
1489
|
+
..valid
|
|
1490
|
+
},
|
|
1491
|
+
"attachment_uuid must be UUIDv7",
|
|
1492
|
+
),
|
|
1493
|
+
] {
|
|
1494
|
+
let error = validate_attachment_request(&request).unwrap_err();
|
|
1495
|
+
assert_eq!(error.code(), "GF_VALIDATION");
|
|
1496
|
+
assert_eq!(error.to_string(), format!("validation error: {message}"));
|
|
1497
|
+
request.context.actor_uuid = None;
|
|
1498
|
+
}
|
|
1499
|
+
assert_eq!(schema("bad schema").code(), "GF_SCHEMA_MISMATCH");
|
|
1500
|
+
assert_eq!(ambiguous("two branches").code(), "GF_AMBIGUOUS_PROJECTION");
|
|
1501
|
+
assert_eq!(
|
|
1502
|
+
transaction_conflict("drift").code(),
|
|
1503
|
+
"GF_IDEMPOTENCY_CONFLICT"
|
|
1504
|
+
);
|
|
1505
|
+
assert_eq!(
|
|
1506
|
+
descriptor_fingerprint(b"not a descriptor")
|
|
1507
|
+
.unwrap_err()
|
|
1508
|
+
.code(),
|
|
1509
|
+
"GF_SCHEMA_MISMATCH"
|
|
1510
|
+
);
|
|
1511
|
+
|
|
1512
|
+
let empty = RecordBatch::new_empty(Arc::new(Schema::empty()));
|
|
1513
|
+
assert_eq!(
|
|
1514
|
+
exact_fingerprint(
|
|
1515
|
+
&empty,
|
|
1516
|
+
&FixedSizeBinaryArray::try_from_iter([vec![0; 32]].into_iter()).unwrap(),
|
|
1517
|
+
)
|
|
1518
|
+
.unwrap_err()
|
|
1519
|
+
.code(),
|
|
1520
|
+
"GF_SCHEMA_MISMATCH"
|
|
1521
|
+
);
|
|
1522
|
+
for result in [
|
|
1523
|
+
strings(&empty, "missing").map(|_| ()),
|
|
1524
|
+
fixed(&empty, "missing").map(|_| ()),
|
|
1525
|
+
lists(&empty, "missing").map(|_| ()),
|
|
1526
|
+
] {
|
|
1527
|
+
assert_eq!(result.unwrap_err().code(), "GF_SCHEMA_MISMATCH");
|
|
1528
|
+
}
|
|
1529
|
+
let no_batches = graphforge_exec::ExecutionResult {
|
|
1530
|
+
schema: Arc::new(Schema::empty()),
|
|
1531
|
+
batches: vec![],
|
|
1532
|
+
stats: graphforge_exec::ExecutionStats::default(),
|
|
1533
|
+
side_effects: None,
|
|
1534
|
+
mutation_receipt: None,
|
|
1535
|
+
};
|
|
1536
|
+
assert_eq!(
|
|
1537
|
+
one_batch(&no_batches, "empty").unwrap_err().code(),
|
|
1538
|
+
"GF_SCHEMA_MISMATCH"
|
|
1539
|
+
);
|
|
1540
|
+
let null_uuid =
|
|
1541
|
+
FixedSizeBinaryArray::try_from_sparse_iter_with_size([None::<Vec<u8>>].into_iter(), 16)
|
|
1542
|
+
.unwrap();
|
|
1543
|
+
assert_eq!(
|
|
1544
|
+
uuid_at(&null_uuid, 0, "assertion_uuid").unwrap_err().code(),
|
|
1545
|
+
"GF_SCHEMA_MISMATCH"
|
|
1546
|
+
);
|
|
1547
|
+
let fingerprints =
|
|
1548
|
+
FixedSizeBinaryArray::try_from_iter([vec![1; 32], vec![2; 32]].into_iter()).unwrap();
|
|
1549
|
+
let fingerprint_batch = RecordBatch::try_new(
|
|
1550
|
+
Arc::new(Schema::new(vec![Field::new(
|
|
1551
|
+
"result_fingerprint",
|
|
1552
|
+
DataType::FixedSizeBinary(32),
|
|
1553
|
+
false,
|
|
1554
|
+
)])),
|
|
1555
|
+
vec![Arc::new(fingerprints.clone())],
|
|
1556
|
+
)
|
|
1557
|
+
.unwrap();
|
|
1558
|
+
assert_eq!(
|
|
1559
|
+
exact_fingerprint(&fingerprint_batch, &fingerprints)
|
|
1560
|
+
.unwrap_err()
|
|
1561
|
+
.code(),
|
|
1562
|
+
"GF_SCHEMA_MISMATCH"
|
|
1563
|
+
);
|
|
1564
|
+
}
|
|
1565
|
+
|
|
1566
|
+
#[test]
|
|
1567
|
+
fn attachment_replay_requires_exact_resolved_content() {
|
|
1568
|
+
let graph = GraphForge::new(None).unwrap();
|
|
1569
|
+
let policy = BeliefProjectionPolicyV1 {
|
|
1570
|
+
included_statuses: vec![AssertionStatus::Supported],
|
|
1571
|
+
statusless: StatuslessPolicyV1::Include,
|
|
1572
|
+
supersession_branches: SupersessionBranchPolicyV1::Reject,
|
|
1573
|
+
hypotheses: HypothesisSelectionPolicyV1::IncludeAllCurrentMembers,
|
|
1574
|
+
};
|
|
1575
|
+
let (policy_bytes, policy_fingerprint) = policy_fingerprint(&policy).unwrap();
|
|
1576
|
+
let descriptor = InvocationDescriptor::new(
|
|
1577
|
+
graphforge_core::algorithms::Algorithm::Rank(
|
|
1578
|
+
graphforge_core::algorithms::RankAlgorithm::Degree,
|
|
1579
|
+
),
|
|
1580
|
+
[0; 32],
|
|
1581
|
+
BTreeMap::from([
|
|
1582
|
+
("directed".into(), crate::InvocationParameter::Bool(false)),
|
|
1583
|
+
(
|
|
1584
|
+
"label".into(),
|
|
1585
|
+
crate::InvocationParameter::Utf8("Person".into()),
|
|
1586
|
+
),
|
|
1587
|
+
("via".into(), crate::InvocationParameter::Utf8("*".into())),
|
|
1588
|
+
]),
|
|
1589
|
+
)
|
|
1590
|
+
.unwrap();
|
|
1591
|
+
let projection = ResolvedBeliefProjection {
|
|
1592
|
+
graph: Box::new(graph),
|
|
1593
|
+
source_generation_uuid: uuid7(20),
|
|
1594
|
+
transaction_cutoff_micros: 10,
|
|
1595
|
+
valid_time_micros: None,
|
|
1596
|
+
policy_bytes: policy_bytes.clone(),
|
|
1597
|
+
policy_fingerprint,
|
|
1598
|
+
snapshot_fingerprint: [1; 32],
|
|
1599
|
+
valid_time_fingerprint: None,
|
|
1600
|
+
graph_content_fingerprint: [2; 32],
|
|
1601
|
+
source_record_uuids: vec![uuid7(21)],
|
|
1602
|
+
};
|
|
1603
|
+
let request = AttachResolvedRunRequest {
|
|
1604
|
+
context: context(22),
|
|
1605
|
+
attachment_uuid: uuid7(23),
|
|
1606
|
+
run_uuid: uuid7(24),
|
|
1607
|
+
descriptor,
|
|
1608
|
+
};
|
|
1609
|
+
let row = BeliefProjectionAttachment::new(
|
|
1610
|
+
request.attachment_uuid,
|
|
1611
|
+
uuid7(25),
|
|
1612
|
+
projection.source_generation_uuid,
|
|
1613
|
+
projection.transaction_cutoff_micros,
|
|
1614
|
+
projection.valid_time_micros,
|
|
1615
|
+
BELIEF_PROJECTION_POLICY_VERSION,
|
|
1616
|
+
policy_bytes,
|
|
1617
|
+
projection.snapshot_fingerprint,
|
|
1618
|
+
projection.valid_time_fingerprint,
|
|
1619
|
+
projection.graph_content_fingerprint,
|
|
1620
|
+
*request.descriptor.fingerprint(),
|
|
1621
|
+
projection.source_record_uuids.clone(),
|
|
1622
|
+
uuid7(26),
|
|
1623
|
+
11,
|
|
1624
|
+
)
|
|
1625
|
+
.unwrap();
|
|
1626
|
+
assert_eq!(
|
|
1627
|
+
verify_existing_attachment(&row, &projection, &request)
|
|
1628
|
+
.unwrap_err()
|
|
1629
|
+
.code(),
|
|
1630
|
+
"GF_IDEMPOTENCY_CONFLICT"
|
|
1631
|
+
);
|
|
1632
|
+
}
|
|
1633
|
+
|
|
1414
1634
|
fn context(seed: u8) -> WriteContext {
|
|
1415
1635
|
WriteContext {
|
|
1416
1636
|
operation_uuid: OperationId(uuid7(seed)),
|
|
@@ -1485,6 +1705,15 @@ mod tests {
|
|
|
1485
1705
|
policy: policy.clone(),
|
|
1486
1706
|
})
|
|
1487
1707
|
.unwrap();
|
|
1708
|
+
assert_ne!(projection.source_generation_uuid(), Uuid::nil());
|
|
1709
|
+
assert!(!projection.policy_bytes().is_empty());
|
|
1710
|
+
assert_ne!(projection.policy_fingerprint(), [0; 32]);
|
|
1711
|
+
assert_ne!(projection.snapshot_fingerprint(), [0; 32]);
|
|
1712
|
+
assert_eq!(projection.transaction_cutoff_micros(), i64::MAX);
|
|
1713
|
+
assert_eq!(projection.valid_time_micros(), None);
|
|
1714
|
+
assert_eq!(projection.valid_time_fingerprint(), None);
|
|
1715
|
+
assert_ne!(projection.graph_content_fingerprint(), [0; 32]);
|
|
1716
|
+
assert_eq!(projection.source_record_uuids(), &[uuid7(5)]);
|
|
1488
1717
|
assert_eq!(
|
|
1489
1718
|
graphforge_storage::read_nodes(&projection.graph.dir)
|
|
1490
1719
|
.unwrap()
|