Metric space

Subsystems

Visible architecture boundaries mapped by rollup pressure, complexity, public surface, and contained package cycles.

The Subsystems lens takes the package or source-folder boundaries currently visible in Topology and Matrix and maps them into metric space. It keeps the shared expansion state, but replaces dependency geometry with curated X, Y, size, and colour readings.

Visible boundaries

Topology and Matrix author the shared expansion state. Expand or collapse packages there to change which boundaries Subsystems compares. Every bubble uses metrics rolled up across its complete subtree. A terminal package or source folder remains a valid boundary, with a one-unit rollup equal to its own package metrics. AtlasArc does not require you to declare subsystem groups first, and it does not pretend that every visible area has the same job.

Rollup context

When an expanded parent and its descendants are both visible, the parent is not redundant. Dependencies between children are internal at the parent boundary but cross the finer child boundaries. A dashed ring identifies that parent as an expanded rollup, so you can read the coarse boundary alongside the detail inside it without mistaking them for unrelated peers.

Use the same Current Focus, preset, and chart scale for this pair. It should make the shared expansion effect visible without suggesting that Subsystems has its own expand control.

Screenshot: Subsystems with one collapsed parent represented as a single subtree boundary
One coarse perimeter. The parent owns one rollup because its descendants are not currently visible in the structural expansion.
Screenshot: same Subsystems view after structural expansion, retaining the dashed parent ring beside visible child boundaries
Coarse and fine pressure together. The dashed aggregate parent remains context while its descendants expose the narrower perimeters.

Double-click a non-terminal bubble to make it Current Focus. A terminal bubble opens its package details instead. The view uses curated presets rather than raw axis selectors, keeping each map tied to a concrete architectural question.

Subsystems opens in Boundary Risk. Switch presets when the investigation moves from boundary traffic to complexity, visibility, or contained package cycles.

Boundary Risk

Boundary Risk puts outgoing boundary dependencies on X and incoming boundary dependencies on Y. Size follows total class count, and colour follows Instability. A high-right bubble carries substantial pressure in both directions. That makes it a strong place to inspect, not an automatic defect verdict.

Use the dashed-ring parent to ask whether the coarse boundary holds together, then inspect its visible descendants to see where the pressure sits. Open the Boundary Matrix when you need the concrete package-to-package crossings.

Screenshot: Subsystems Boundary Risk with outgoing pressure on X, incoming pressure on Y, class-count size, Instability colour, and one aggregate ring
Read boundary traffic first. Include axis and colour legends so a high-right bubble reads as substantial two-way pressure rather than an unexplained risk score.

Complexity Load

Complexity Load plots the highest cyclomatic and cognitive complexity found anywhere inside each boundary and sizes the bubble by total lines of code. A large red bubble contains expensive code; it does not mean every package inside the boundary is complex.

Use it to find which architectural area owns the larger change burden. Drill into a non-terminal boundary or switch to Hotspots to locate the exact package or class.

Screenshot: Subsystems Complexity Load with cyclomatic and cognitive complexity axes and LOC-sized boundaries
Locate which boundary owns difficult code. Keep the rollup role visible so a large bubble is understood as contained burden, not uniform complexity.

Visibility Surface

Visibility Surface maps Recursive visibility on X and Recursive abstractness on Y. Size follows class count, and colour also follows Recursive abstractness. It separates concrete public surfaces from contract-heavy areas without declaring either shape universally healthy.

Use it when the question is information hiding rather than raw coupling volume. A high/right boundary may be a deliberate public contract or a surface worth narrowing. The intended responsibility decides which.

Screenshot: Subsystems Visibility Surface with Recursive visibility on X, Recursive abstractness on Y and colour, and class-count size labels visible
Inspect the public surface. Choose a model with both concrete and contract-heavy boundaries so the screenshot shows a spectrum rather than implying one healthy corner.

Internal Tangles

Internal Tangles maps package-cycle groups fully contained by each boundary. X is the number of contained groups, Y is the largest contained package cycle, and size follows package count. A coarse boundary can look calm externally while containing a difficult package dependency knot.

A terminal package cannot contain a multi-package cycle by itself. Cycles between its classes or source files remain Package Internals evidence in the Topology Graph; AtlasArc does not mix those implementation tangles into this package-level rollup.

Screenshot: Subsystems Internal Tangles with contained cycle-group count, largest cycle, package-count size, and terminal zero-boundary context
Find knots hidden inside coarse boundaries. Include at least one calm external boundary with a strong internal cycle rollup and one terminal boundary for contrast.

Native metric encodings

X, Y, size, and colour are part of the selected Subsystems question. They are not a Heatmap overlay, and colour does not carry one universal risk meaning between presets. Read the axis and legend labels before interpreting a bubble; use the resulting pattern as a place to investigate, not as an automatic architecture verdict.

What carries into other lenses

Current Focus belongs to the shared investigation. Topology and Matrix author the package expansion that decides which boundaries Subsystems compares; Subsystems consumes that boundary set without adding a second expansion model. The curated preset, plotted encodings, selection, zoom, and pan remain local to this lens.

Take the boundary map with you

Snapshot as PNG captures the current metric map. Data as CSV exports the plotted values and identifies whether each row is an expanded rollup, a collapsed subtree boundary, or a terminal one-unit boundary. An Architecture Report remains a separately assembled model-driven product.

When there are no boundaries to compare

If shared focus, expansion, or filters leave no eligible boundaries, AtlasArc names the active narrowing and points back to the structural view or reset that can change it. If a preset requires evidence the current analysis does not provide, that read is unavailable rather than plotted as misleading zeroes. A valid one-unit terminal boundary remains visible; it is not discarded merely because it has no children.