The MODULE_CONTAINERS set holds a list of node types that the layout system knows how to place. Its contents are consulted every time the graph renders. Its contents had not been audited in approximately two years.
Intelligence ran the audit. The Tribunal reviewed the findings. Two more cases were already in the queue. All three were heard in the same session.
MODULE_CONTAINERS contained INTERFACE. INTERFACE was a placeable type in the layout system until April 2026, when layout_types.rs was updated and INTERFACE lost its placeable status. The set was not updated at the same time. INTERFACE continued to reside in MODULE_CONTAINERS — consulted on every render, never matching anything, serving no purpose except to take up a slot in a data structure that should represent reality.
Intelligence confirmed: INTERFACE is not placeable. TRAIT was also reviewed — TRAIT remains correct and stays. The evidence was sufficient for a verdict.
INTERFACE deleted from MODULE_CONTAINERS. The set now reflects the actual state of the layout system. Technical debt: minus one phantom type that had been accumulating dust since the April 2026 layout refactor.
The countEdgesByType function returns a count of edges grouped by type. When a requested type had zero edges, the function returned {} — an empty object — instead of {EDGE_TYPE: 0}. Code downstream that expected a zero received undefined. Code that tested for the presence of a key found nothing. The bug was not large. It was precise. It is the kind of bug that hides in normal operation and surfaces when someone adds a new edge type and wonders why their counter starts at undefined instead of zero.
Zero-seed initialization added: the result object is pre-populated with {EDGE_TYPE: 0} for each requested type before counting begins. When no edges exist, the caller receives a typed zero rather than an absent key. The fix is one line. The trap it closes had been open for some time.
Two plugins were brought before the Tribunal on the same question: are they candidates for Datalog rewrite? Both currently iterate over graph nodes in JavaScript and issue IPC calls to the server per node — the same pattern that sprint v0.2 eliminated in three other plugins. The question was whether the same treatment would apply.
Intelligence conducted separate investigations for each. The Tribunal reviewed both dossiers.
Three cases. Three verdicts. One dead type that had been quietly wrong since April 2026, removed. One zero that had been arriving without a label, fixed. One plugin that looked like a candidate but was not, acquitted. One plugin that was a candidate and knew it, approved.
The shape-tracker rewrite begins. The Tribunal does not predict timelines. It renders verdicts and moves on.
Три дела. Три приговора. Трибунал закрыт.
Антонина Карповна Приговорова filed this report without commentary. She rarely does.