Conversation
There was a problem hiding this comment.
Graphify reviewed this change.
Looks safe to merge — no coupling regressions and no blocking issues, checked against the code graph (not a self-assessment).
Formal verification. No changes could be formally verified in this run.
Graphify review — findings
Reclassifies cross-file Python import uses edges from INFERRED/0.95 (weight 0.8) to EXTRACTED/1.0 (weight 1.0), on the grounds that these edges come from explicit source syntax rather than inference. Renames the test helper _inferred_uses to _uses_edges and updates the existing suite to match, and adds test_3539_ast_uses_edge_metadata_is_extracted plus test_3539_references_and_uses_collapse_retains_extracted_metadata covering the new metadata and the references/uses collapse in build_from_json.
No blocking issues surfaced. 3 lower-confidence candidates did not survive cross-model review.
Analysis details — impact, health, verification
Impact & health
Graphify review
Impact — 2169 functions depend on the 570 functions this change touches.
Health — this change adds coupling hotspots:
- new:
extract()— 591 callers, 44 callees - new:
_rebuild_code()— 116 callers, 51 callees - new:
_extract_generic()— 18 callers, 26 callees - new:
extract_js()— 85 callers, 4 callees - new:
extract_xaml()— 19 callers, 17 callees - new:
_resolve_js_module_path()— 34 callers, 9 callees - new:
dispatch_command()— 2 callers, 124 callees - new:
extract_objc()— 27 callers, 9 callees - …and 35 more — each is listed as a finding
Verification — 2169 functions in the blast radius were not formally verified this run (proofs are advisory here).
Gate & verification
graphify gate
PASS — objectively clean (no health regressions, tests not run — proofs not run this pass (advisory)). Grounded, not self-assessed.
Advisory (not blocking):
- verification_scope: 1227 function(s) in the blast radius were not formally verified this run
Test selection
Test selection
34 of 275 test file(s) selected (12%) via static blast radius.
tests/test_astro_extraction.py— impacttests/test_build.py— impacttests/test_cjs_module_extension.py— impacttests/test_cpp_nested_and_cli.py— impacttests/test_dotnet.py— impacttests/test_extract.py— impact, changed-testtests/test_forwarding_review_findings.py— impacttests/test_import_extension_resolution.py— impacttests/test_indirect_dispatch.py— impacttests/test_indirect_dispatch_assign_return.py— impacttests/test_indirect_dispatch_getattr.py— impacttests/test_js_exported_scalar_bindings.py— impacttests/test_languages.py— impacttests/test_multilang.py— impacttests/test_package_json_subpath_imports.py— impacttests/test_pascal.py— impacttests/test_pascal_resolution.py— impacttests/test_phantom_external_import.py— impacttests/test_python_import_resolution.py— impacttests/test_python_parse_memoization.py— impacttests/test_python_underscore_resolution.py— impacttests/test_rationale.py— impacttests/test_resolve_memoization.py— impacttests/test_ruby_resolution.py— impacttests/test_scala_self_type.py— impacttests/test_source_key_memoization.py— impacttests/test_src_layout_import_resolution.py— impacttests/test_swift_computed_properties.py— impacttests/test_trailing_newline_not_a_syntax_error.py— impacttests/test_ts_new_expression_calls.py— impacttests/test_typescript_module_extensions.py— impacttests/test_unmapped_at_alias_resolution.py— impacttests/test_vue_extraction.py— impacttests/test_walk_python_tree_iterative.py— impact
Selection is safe under the controlled-regression assumption; always-run tests + a periodic full run are the backstops. Advisory — it never changes the check verdict.
Formal verification
Could not verify: Could not verify \_resolve\_cross\_file\_imports.
The verifier did not have enough to check \_resolve\_cross\_file\_imports, so it is saying so rather than guessing. No false assurance is the whole point.
Guarantee: No guarantee either way, this is an honest abstention, not a pass.
Note: Reason: non-vacuity: domain too small (only 2 distinct inputs exercised, need 3) — 'no divergence' would be near-vacuous
· 43 more finding(s) on lines outside this diff (see the check run).
Summary
Fixes #3539
AST cross-file
usesedges were incorrectly emitted asINFERRED/0.95/0.8even though they are deterministically extracted from explicit Python AST syntax.This PR updates these edges to use the
EXTRACTEDconfidence tier.Changes
usesedges asEXTRACTEDwithconfidence_score: 1.0.weightto1.0, consistent with other structurally extracted relationships.usestests to reflect the corrected confidence tier.usesedge metadata.references+usescollapse preserving the extracted metadata.build.py, Apex, and other language extractors unchanged.Validation
usestests: 10 passedtest_extract.py: 223 passed, 8 skippedgit diff --check: clean.The one unrelated failure encountered in the broader extraction suite is a pre-existing Windows
MAX_PATHfixture-path issue.