Not a bug — phases F (foreman) and C (Swarm Work UI) of swarm-llm-workloads. Two structural findings surfaced while building them.
SwarmWatchTask skipped work
hosted on its own server, so a lone server’s LLM could never claim its
own OPEN work — which would also have broken foreman subtasks (host-local
OPEN children) and made single-box validation runs dead on arrival.SourceMetaData wiring whens in NodeMetaDataSourceWiring
(an unenumerated subtype makes wiring silently uneditable) and the
composeApp face/row/title tables.SwarmPlan as
publicly-auctioned sub-children (budget inherited, depth decremented),
assembles via CONCAT (host) or a SYNTHESIZE child (foreman). Malformed
plan → whole-execution fallback recorded on the work node; failed subtask
→ plan discarded, siblings cancelled, parent requeued. Child ids are
attempt-scoped ({id}-p{attempt}-…) so a requeue can never collide.SwarmWatchTask claims local OPEN work via nodeManager.invoke (plus a
nodeUpdates collector for local events); registerClaim dedupes one
bid per claimant per window.ScreenCore.showSwarmScreen → a rail-anchored
full-screen short-circuit in KrillScreenContent (the first node-less
full screen — it must render before the (nodeType, command) routing).
Fleet cards, submission form with client-side payload validation,
Row/Edit faces for Work/Batch, and the EditLLM swarm section.When a design doc says “server X creates state on node Y,” check Y’s host
first — under Krill’s single-writer model the host is the only legal
writer, and reshaping the flow around that early avoids a protocol change
later. When adding a node type, grep for unenumeratedSourceMetaData and
the face/row/title whens in one sweep; the wiring trio logs rather than
crashes, so a missed arm ships silently.