Gate: dep-declared
Every import of a governed file carries @dep: with the code of the file it uses, or @no-dep: <reason>.
| Property | Value |
|---|---|
| Checker | dep-declared |
| Confronts | code test |
| Blocking by default — new project | yes |
| Blocking by default — existing project | no — informs |
How it measures
Section titled “How it measures”Every import is a dependency, and the map knew only the ones somebody wrote in a spec’s Dependencies table: a project imported its tokens, a toast hook and its components without declaring them, and every gate stayed green. This unit closes the chain in both directions, with flags the agent writes beside the code and Anchors confronts with the code (DESIGN-dependencies-and-navigation.md):
dep-declared— every import of a governed file carries the dependency flag naming the code of the file it uses, or a waiver with its reason;dep-honored— every dependency flag names the code of the file its import resolves to;used-by-declared— every symbol another file imports carries the used-by flag with exactly the codes of who imports it.
Anchors does not parse the language: it reads the import’s path with a pattern — the
dialect’s import_pattern with the path in the group path, or the family’s (ts, go) —
and resolves it with import_resolve (relative paths, the project’s aliases, the extensions).
An import that resolves to no file of the map — a package of the ecosystem — is no link of
the chain. A test takes no part: it is tied to its unit by its ref:.
Declaring it
Section titled “Declaring it”gates: - name: dep-declared on: [code, test] check: dep-declared