Bumping krill-sdk to 0.0.63 (which added the swarm-llm-workloads contracts:
KrillApp.Swarm + Swarm.Work/Swarm.Batch, DataType.FILE, and
NodeAction.ADVERTISE/CLAIM) broke compilation across shared, server,
and composeApp — nine exhaustive when expressions over the grown sealed
class and enums no longer covered every case. Two drift-guard tests
(DataSourceTypesDriftTest, DataTypeChipLabelTest) also failed, as
designed.
Not a bug — the compile errors are the intended mechanism. Krill deliberately
keeps when (KrillApp) / when (DataType) / when (NodeAction) blocks
exhaustive with no else, so an SDK release that grows a hierarchy is a
compile error at every dispatch site rather than a silent runtime gap. The
SDK phase (krill-oss#217) shipped the types; this PR is the matching
downstream sweep.
Added explicit arms at every failing site: KrillAppEmit.processor() throws
for Swarm types (processors land in phase B), KrillAppMeta.meta() returns
the new SDK metadata, the three server processors (LLM, TaskList,
Timer) no-op on ADVERTISE/CLAIM per the SDK degradation contract,
DataProcessor/DataTypeBaseline treat FILE as a non-empty serialized
FileRef string with "" baseline, and the UI sites (IconManager,
DataPointView, QuickDataEntryDialog, GraphScreen) render placeholders,
with FILE hidden from the DataPoint type picker until the phase-C attach UI
exists. Serializer.kt registers the three KrillApp.Swarm objects and both
swarm metadata classes; DATA_SOURCE_TYPES mirrors the new @DataSource
annotations.
Already in place — the exhaustive-when convention and the two drift-guard
tests caught every affected site at compile/test time with zero runtime
escapes. Keep new whens over SDK-owned sealed types else-free, and when
stabilizing after an SDK bump, register new metadata in Serializer.kt in
the same PR even if nothing instantiates it yet — a missing polymorphic
registration is a runtime crash the compiler cannot catch.