Phase 4 — Local TaskList with state-only expiry

What happened

Phase 4 wired KrillApp.Project.TaskList into the local-first onboarding path. Locally-hosted task lists needed overdue UI that updates automatically without a server-side scheduler. The chosen approach (Decision 7 in design.md) is a 60-second Compose LaunchedEffect tick that drives recomposition of overdue badges and NodeState escalation entirely client-side. LocalSwarmHost.createNode() had a when block that handled Project and Journal but fell through to type.meta() for TaskList, producing an unnamed default rather than propagating the user-supplied name.

Fix

Prevention