Symptom

Kraken’s nightly architectural scan flagged ServerBoss.kt and ClientNodeManager.kt in shared/commonMain as having upward dependencies on server-specific types (ServerNodeManager, ServerIdentity), claiming krill.zone.shared.krillapp.server.* was a server-module import violating the shared ← server dependency direction.

Root cause

False positive. The package name krill.zone.shared.krillapp.server is a sub-package within shared/commonMain/kotlin/krill/zone/shared/krillapp/server/, containing shared domain abstractions like the ServerTask fun interface. Kraken’s structural scanner confused this with the :server Gradle module’s package krill.zone.server.*, which is a completely separate namespace. No import of krill.zone.server.* exists anywhere in shared/.

Fix

No code change was needed. The architecture was already correct:

Prevention

If Kraken files a module-layering lead involving krill.zone.shared.krillapp.* sub-packages, verify that the flagged import prefix is krill.zone.server.* (the server module) before treating it as a violation. The krill.zone.shared.krillapp.server.* sub-package is a legitimate shared abstraction layer containing processor interfaces and domain types that are server-side in concept but shared in placement.