Expand description
The gates brief — the engine-rendered standing of every declared
transition_requires_checks gate (graph-plans plan 03, the yes
branch of the gated-transition spike).
For each mounted mem whose schema declares the constraint on at
least one type, the brief lists every non-stub entity of a gated
type with its gated field’s current value, whether it stands at the
gated value (“closed”) or before it (“open”), and — for open
entities — the related-set coverage the transition would require:
how many related entities the declared edges reach and which of
them lack a fresh confirming check record. The related-set
enumeration is crate::ops::health::transition_gate_standing,
the same code the write-time refusal runs, so the brief can never
disagree with the gate.
Open entities are listed in dependency order: a topological sort over the edges BETWEEN gated entities whose rel-type the schema declares acyclic (in the planning schema that is plan → plan REQUIRES; any schema’s acyclic ordering vocabulary works the same), prerequisites first, ties by id. The brief reports state, never policy: which open entity a consumer acts on next — and which it must refuse (a human-gate marker, a parked status) — stays the consumer’s judgement over its schema’s vocabulary.
The renderer is the shared engine entry point
(Engine::render_gates_brief) per the brief-family precedent
(due, ingest, sync): CLI verb, byte-identical everywhere,
deliberately no MCP tool.