Designing Agentic Systems
Treating a model as an external dependency that is non-deterministic, fallible and costly — and keeping the invariants in code the moment they have to hold.
The design question is not how to prompt. It is which decisions you are delegating to a component that will answer differently tomorrow, and which ones you are keeping in code.
Non-deterministic, fallible, mutable under you, priced per call and slow. Four of those five you already know how to design around; the fifth is the only genuinely new thing.
A rule that exists only in prompt text is hard to test, hard to enforce, hard to audit, and changes silently when someone edits a sentence or upgrades a model.
An API whose caller will not read the documentation carefully, will pass malformed arguments, and will invent plausible parameters that do not exist. Design for that caller.
Four boundaries — workflow, permission, output and fallback — and the argument that each one must be a thing in the code rather than an understanding in someone's head.