Symptom

LogicGate nodes had no way to set their digital inputs in the editor; the new LogicGateMetaData.inputs field (krill-sdk 0.0.29) was unused by the UI.

Root cause

Feature work, not a bug: the first item in migrating LogicGate off the node-executes-node model toward the executionSource pattern. The editor only exposed legacy positional sources/targets.

Fix

Added an Inputs section to the LogicGate Settings tab (EditLogicGate.kt) under the Truth Table: one or two clickable input slots (driven by gateType.requiresTwoInputs()) beside a large gate icon, and a picker dialog listing swarm nodes where Node.isDigital is true, grouped by type. Selections persist into LogicGateMetaData.inputs via the editor’s existing edited() path. Pure helpers digitalInputCandidates, withInput, clearInput are unit-tested; the composables are QA/manual-verified.

Gotchas discovered

Prevention

Keep input-selection state policy in pure helpers (tested) and out of composables. The legacy sources/targets display still shows — later work items remove it and wire inputs into server evaluation + executionSource; track that so the two models don’t drift while both are visible.