Architecture Rules

Purpose

To enforce structural patterns, type usage, and dependency management rules that maintain architectural integrity.

Requirements

Requirement: Import Hub Enforcement [VBL201]

The system SHALL enforce the import hub pattern, where non-hub modules must not expose public imports.

Priority: High

Scenario: Public import in non-hub module

  • WHEN a module not designated as a “hub” (e.g., __init__.py) imports a name without aliasing it to private (e.g., import os)

  • THEN a violation is reported

Scenario: Valid private alias

  • WHEN a module imports a name as private (e.g., import os as _os)

  • THEN no violation is reported

Requirement: Import Spaghetti Detection [VBL202]

The system SHALL prevent excessive relative import depth to reduce coupling.

Priority: High

Scenario: Excessive relative depth

  • WHEN a relative import exceeds the maximum allowed depth (e.g., from ...module import name)

  • THEN a violation is reported

Scenario: Invalid sibling import in hub

  • WHEN a re-export hub (__.py) uses single-level relative import (from . import)

  • THEN a violation is reported (to prevent circular backward imports)

Requirement: Collection Type Variance (REQ-004) [Not Implemented]

The system SHALL require abstract collection types for parameters and concrete types for returns.

Priority: High

Scenario: Concrete parameter type

  • WHEN a function parameter is typed as a concrete collection (e.g., list, dict)

  • THEN a suggestion to use an abstract type (e.g., Sequence, Mapping) is reported

Scenario: Abstract return type

  • WHEN a return type is annotated as abstract (e.g., Sequence)

  • THEN a suggestion to use a concrete or immutable type is reported