# Layering and dead surface Neither entry breaks anything today. Both make a later change cost more than it should, which is why they are low and not medium. ## Domain packages depend on store and IPC types [#685] {#dtos} Costs: dialogue exposes `store.DialogueSessionRow` in its port, the pure morning planner takes a `store.Fact`, and auth policy imports IPC method and caller types. There is no Go import cycle. A schema change reaches further than it should. Revisit when: the dialogue or fact schema changes, or a second transport appears beside IPC. Workaround: none needed. It compiles and it is correct. ## Eleven symbols are unreachable [#686] {#deadcode} Costs: extra API and test surface, and comments that claim callers which no longer exist. Three of the eleven must not be deleted. `HisGender` is a documented seam tied to V-399. `AudioDuration` duplicates `internal/audio` and should call it. `CountWord` is a one-line alias nobody uses and can go. Revisit when: `deadcode` is wired into the audit gate, which needs the allowlist this entry describes. **An unannotated list invites deleting the three above.** Workaround: none needed.