Ports, adapters, command handlers, domain events and aggregate invariants: a task-tracking slice built the way a framework-free core should be.