Skip to content
EN · PT

Gate: route-declared

A screen spec declares its route and names its neighbour screens.

Property Value
Checker route-declared
Confronts spec
Blocking by default — new project yes
Blocking by default — existing project no — informs

Confronts a SCREEN spec against the navigation graph it belongs to: is there a named route that reaches this screen, and do its edges point at concrete screens?

It is the navigation traceability ruler. Without the route the screen is a loose node — something exists that nobody can reach. With generic terms in the navigation tables (“Next screen”, “Main menu”) the edge points nowhere: it reads like a link and connects to no node at all, which is worse than an absent edge, because an absent edge is visible and a vague one passes for a declared one.

Jurisdiction is the whole design. Only layer: screen is charged. Hooks, business logic, stores and DAOs have no route, and charging them was the vice of the legacy validator this gate replaces — it knew only screen and component, so it treated every non-component as a screen and produced a false positive for every unit that legitimately has no route. A gate that cries over what cannot be fixed teaches the team to ignore it.

That is also why the Skip carries a stated REASON. A bare indeterminate count leaves the reader wondering whether the silence is their problem; saying “this is not a screen” closes the question in one line.

gates:
- name: route-declared
on: [spec]
check: route-declared

Source: checker · its spec