Files
flights_web/docs/superpowers/phase-1/frozen-barrels.md
T

1.3 KiB

Frozen public barrels

Rule. Cross-module imports inside src/ go through exactly these five public entries:

  • @/features/online-board
  • @/features/schedule
  • @/features/flights-map
  • @/features/popular-requests
  • @/ui

No file outside src/features/<feature>/ may import from src/features/<feature>/components/... or any deeper path. No file outside src/ui/ may import src/ui/primitives/Button. Enforcement lands in sub-plan 1A-3 via eslint-plugin-boundaries + no-restricted-imports.

Why this is frozen. Phase 0 assumption A1 (customer's standard remote-frontend module template) may arrive after 1A-1 ships. When it does, the rename pass documented in rename-pass-plan.md must be a mechanical move: rename directories, update import paths at the five barrels, done. If cross-module imports fan out through deep paths, the rename becomes a surgery across dozens of files.

What this unblocks. Every Phase 1 sub-plan can add internal files to a feature/UI directory without coordinating with other sub-plans, because nothing outside the barrel depends on internals. The barrel file itself is the review gate.

What this costs. Small friction when a sub-plan wants to expose a new symbol — it must update the barrel. Acceptable cost for the refactor safety it buys.