Gate: nav-annotated
Every navigation call — back and reset included — carries @navigates: naming the screen it leads to, or @no-nav: <reason>.
| Property | Value |
|---|---|
| Checker | nav-annotated |
| Confronts | code |
| Blocking by default — new project | yes |
| Blocking by default — existing project | no — informs |
How it measures
Section titled “How it measures”A screen spec declares its route and its navigation tables, and nothing tied its Out table to the navigation calls of its code, nor one screen’s Out to the other’s In: a screen could lead where its spec did not say, with every gate green, and the app had no navigation map. This unit confronts the navigation flags the agent writes beside each call with the code and with the specs (DESIGN-dependencies-and-navigation.md):
nav-annotated— every navigation call, back and reset included, carries the navigation flag naming the screen it leads to, or a waiver with its reason;nav-matches-spec— a screen’s Out table and its code’s flags name the same screens;nav-symmetric— a screen’s Out leads to another exactly when that one’s In comes from it;nav-reachable— every screen is reachable from the app’s entry routes.
A call is read by a pattern — the dialect’s navigation_call, its destination in the group
route, or the family’s —, a screen by its spec’s stem and its declared route.
Declaring it
Section titled “Declaring it”gates: - name: nav-annotated on: [code] check: nav-annotated