pub const STRUCTURAL_GATES: &[StructuralGate];Expand description
Every human-actionable structural gate kopiur’s reconcilers can park an object on.
Adding a gate to a reconciler means adding a row here; the CLI picks it up
with no change, which is the whole point (#359). A condition that merely
reports health (IndexBlobHealth, BackendReachable,
SecurityContextCompatible) is NOT a gate — it blocks nothing — and a
time-bounded wait (SourceStaged, PreflightFailed) is not one either,
because it resolves itself into a terminal phase on its own.
Most rows are phase-INVISIBLE parks (the object sits at phase: Pending
looking unremarkable), which is what makes the registry load-bearing. One
row — REPOSITORY_READ_ONLY_GATE — is phase-visible and registered
anyway, for the explanation it adds to an already-visible failure.
Each row is also a named const so a reconciler can write its condition
FROM the row (io::upsert_gate) instead of restating the triple at the call
site. A row nobody writes, or a writer nobody registered, is caught by the
controller’s every_registered_gate_has_a_writer drift test.