feat(merge): link a type declaration two repos share - #3008
Graphify — looks good
Looks safe to merge — no coupling regressions and no blocking issues, checked against the code graph (not a self-assessment).
Details
Graphify reviewed this change.
Looks safe to merge — no coupling regressions and no blocking issues, checked against the code graph (not a self-assessment).
Graphify review — findings
Adds a same_type_as cross-repo linking pass: new graphify/cross_repo_types.py with link_shared_type_declarations, wired into dispatch_command's merge-graphs path to connect sourced type declarations that share namespace and name across different repos (edges only, no node merging). Includes tests in test_cross_repo_shared_types.py covering the match, and the non-matches (same name different namespace, same-repo duplicates, missing namespace, non-type nodes, sourceless stubs).
No blocking issues surfaced. 6 lower-confidence candidates did not survive cross-model review.
Analysis details — impact, health, verification
Impact & health
Graphify review
Impact — 250 functions depend on the 64 functions this change touches.
Health — this change adds coupling hotspots:
- new:
dispatch_command()— 2 callers, 120 callees - new:
_stale_graph_sources()— 7 callers, 6 callees - new:
_run_hook_guard()— 4 callers, 7 callees - new:
test_poisoned_manifest_is_healed()— 0 callers, 6 callees
Verification — 250 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: 203 function(s) in the blast radius were not formally verified this run