Symptom

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.

Root cause

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.

Fix

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.

Prevention

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.