A typed model↔lint↔code↔proof↔registry graph whose edges are derived, symbol-anchored, re-checked.

Symbol-anchored traceability graph (derived edges)

Intent — Link every model to its lint, its code entry-point, its proof, its related models, and its registry as a *typed graph whose every edge is a derived obligation a lint re-checks — each edge terminating on a resolvable symbol*, never a line number — so when the code moves and breaks an edge, the model↔code drift becomes mechanically visible at scan time. The governing principle: derived edges defend; snapshotted ones drift.

SummaryA typed model↔lint↔code↔proof↔registry graph whose edges are derived, symbol-anchored, re-checked.
TargetBridge · System models
Formtyped-ir
EnforcementHard (deterministic) — a derived meta-lint re-resolves every edge's anchor and reddens on a broken one; runs at DoD/audit cadence because symbol resolution is costly. Lands audit-only, then promotes to blocking

Motivation — the failure it kills

The executable models that let a context-bounded agent operate a context-exceeding codebase are only useful while the map equals the territory. But a model states more than facts about itself: it names the lint that enforces it, the code root it governs, the test that verifies it, the registry it reconciles against. Those cross-references are the joins an agent walks to jump between levels of abstraction — and they rot the moment the code moves without them.

The failure is silent traceability rot. A model's reference to a code symbol goes stale when the symbol is deleted, renamed, or moved, and nothing notices — the model still looks authoritative while pointing at a ghost. It recurs on every refactor that touches a referenced symbol: a deleted enforcement routine, a checker that was made stricter without a matching edge to the producer it now rejects, a "which implementation is live" pointer left aimed at a retired one. Each stale edge is a lie the fleet reads as truth, and the blow-up lands days later in a downstream gate instead of at the change that caused it.

The design was not guessed. The models were left deliberately ungoverned after creation and the fleet allowed to drift them, so the mechanisms could be designed from real observed drift instead of a hypothesis. An exhaustive audit of recently-closed work — each with a green definition-of-done at close — harvested roughly two dozen drift instances at a signal-to-noise ratio near one and zero false positives: a checker made stricter than the producer it now rejects, a subsystem retired from the code but still present-tense in the model, a fully typed function wired to zero production consumers, a reconciliation lint gone red the moment its Epic closed. That corpus is what "derived defends, snapshotted drifts" was read off of, not asserted into — the clean cases all had a mechanism that read the source of truth at check time; the drifted ones all had a parallel hand-maintained list that rotted.

Why it's not just a drift gate, a manifest, or codegen

Mechanism

A sharp by-product: a model that wants to reference a symbol for which no clean anchor exists — the logic is buried inline in a god-function — surfaces that absence as a finding. The missing anchor is an abstraction-completeness probe: the model needs a seam the code hasn't factored out, so the unresolved anchor routes to a refactoring target, not an error.

Prerequisites

Consequences & costs

Known uses

Related mechanisms