Agents are architecturally blind
As agents write more of the code, the layers we design erode quietly: a database call here, an HTTP request there. Put side effects into the types, and the compiler enforces the architecture for agents and people alike, for the whole life of the project.
Illustrative code-- The signature is the architecture. summarise :: (LLM :> es, Docs :> es) => DocId -> Eff es Summary -- An agent that slips an outbound HTTP call in here -- gets a type error, not a review comment weeks later.