New test

mode: dry-run is the safe default — vision can decide actions, but writes are blocked unless you flip to mode: write.