qlinks architecture diagnosis

Static import analysis · commit d72a152ca082
Python modules160
Top-level packages19
Source lines101,305
Module edges538
Implementation SCCs0
Surface/re-export SCCs3
Boundary violations0
Broad architecture guardrails pass. No implementation import-time cycles. No import-time package cycles.

Package dependency overview

Arrows point from a package to the package it imports. Vertical placement follows dependency depth, so lower nodes tend to be architectural foundations. Edge thickness represents the number of resolved internal import references.

qlinks1 files · 0 deps backends2 files · 0 deps basis9 files · 2 deps builders4 files · 3 deps caging46 files · 8 deps constraints11 files · 2 deps conventions2 files · 1 deps distributed1 files · 0 deps encoded5 files · 5 deps exceptions1 files · 0 deps io3 files · 1 deps lattice8 files · 0 deps local_structure4 files · 0 deps models10 files · 9 deps open_system20 files · 5 deps operators11 files · 3 deps qec10 files · 6 deps variables5 files · 0 deps visualizer7 files · 3 deps

Click a package to highlight its immediate dependencies and dependents. Click empty graph space to reset.

Module explorer

Use this view for targeted diagnosis inside one top-level package. This keeps the report readable even when the repository has hundreds of modules.

Solid edges include eager module-scope imports; dashed edges are type-only or function-local dependency references.

Package metrics

PackageFilesLinesFan-inFan-outImports inImports out
qlinks.caging464012048525
qlinks.open_system202498005034
qlinks.visualizer7107640305
qlinks.models105107391237
qlinks.qec10469306015
qlinks.constraints113480321315
qlinks.operators113053431416
qlinks.basis9203172209
qlinks.lattice8198570250
qlinks.encoded5169145118
qlinks.io38290101
qlinks.builders47182326
qlinks.variables565580400
qlinks.local_structure455120250
qlinks.distributed12740000
qlinks.backends22243040
qlinks.conventions21051111
qlinks1280000
qlinks.exceptions1170000

Coupling hotspots

Highest fan-out

ModuleFan-outImport refsLines
qlinks.caging35351059
qlinks.open_system1313311
qlinks.open_system.constructions.cage_lindblad13133328
qlinks.open_system.constructions.deprecated.cage13134365
qlinks.caging.local_search1010195
qlinks.constraints101097
qlinks.models.qlm10101200
qlinks.operators1010117
qlinks.caging.local_search_qdm99584
qlinks.models99118
qlinks.caging.stability814171
qlinks.qec.profile814736
qlinks.qec.sector_matching811710
qlinks.caging.local_search_certification881124
qlinks.caging.stability_qdm881691

Highest fan-in

ModuleFan-inImport refsLines
qlinks.variables404023
qlinks.lattice252537
qlinks.basis212149
qlinks.caging.local_search_types15151749
qlinks.constraints121297
qlinks.caging.nullspace111186
qlinks.operators1111117
qlinks.constraints.base1010267
qlinks.models.base1010970
qlinks.caging.candidate9937
qlinks.caging.local_search_global99256
qlinks.models.local_terms9968
qlinks.operators.base99257
qlinks.qec.reporting828107
qlinks.caging.local_search_padding881339

Cycle diagnostics

Import-time SCCs use only eager module-scope imports and are split into API/re-export cycles (package initializers or known compatibility facades) versus implementation cycles. The secondary “type/lazy static” entries appear only when TYPE_CHECKING and function-local imports are included, so intentional typing or cycle-breaking imports are not mistaken for eager import cycles. Package-level import-time cycles are reported separately in the summary.

KindModulesStrongly connected component
API/re-export import-time2qlinks.basis → qlinks.basis.sectors
API/re-export import-time2qlinks.caging → qlinks.caging.stability
API/re-export import-time2qlinks.encoded → qlinks.encoded.flux
type/lazy static2qlinks.caging.classification → qlinks.caging.diagnostics

Architecture guardrails

The report mirrors the broad dependency rules in AGENTS.md: caging/open-system separation, neutral local structure, temporary-facade isolation, and the focused local-search ordering. The dedicated pytest architecture tests remain the blocking source of truth for CI.

RuleSourceTargetLocation
None detected.

Interpretation

Treat fan-in/fan-out and line count as navigation aids, not quality scores. A large scientific module can be legitimate; the strongest warning signs are cross-layer violations, strongly connected components, and high coupling that crosses responsibility boundaries.