LLMs Propose, Deterministic Rules Dispose
A build-note on inverting the usual order: language models advise and veto, mechanical rules decide and execute. The discipline behind the autonomy.

The most useful design decision I have made this year is also the least glamorous: in the systems that matter, the language model does not get the final word. It proposes. Deterministic rules dispose.
The instinct, when a model is fluent, is to hand it the wheel. But fluency is not the same as reliability, and a confident wrong answer is more expensive than an obvious one. So the architecture inverts: the model is allowed to request an action and to veto a bad one, never to commit on its own. The mechanical layer — pre-registered, auditable, dumb in the good way — is what actually executes.
In the trading system this looks like an advisory loop that can ask for a position and a rules engine that can refuse it, but never the reverse. In the captioning system it looks like a model that polishes and flags, and a deterministic pass that respects the spelling and pronunciation of a name no autocomplete should be allowed to overwrite. Different domains, same spine.
The payoff is trust you can inspect. When the model is merely an advisor, every consequential action has a deterministic reason behind it — something you can read, replay, and defend. Autonomy is not the absence of rules. It is rules good enough that the autonomy is safe.