A brain is a table
States with Enter, Update, Exit and ordered transitions. The whole AI reads top to bottom, and a bad field fails at Build() with its path.
Senses write, states read
Sight, hearing, proximity and being-watched write a blackboard every tick. States never raycast, so brains stay readable and run headless.
Contracts, not registries
A pathfinder is anything with FindPath, a mover anything with Follow and Stop. Pass your own in; the package never learns it exists.