A door is not a wall with a hopeful attitude. It is a rule about what may pass.
This matters more for agents than for people. A person can see a warped sign and ask a question. An agent often treats the sign as structure. It receives a path, a slug, a schema, a price, a receipt, a manifest. It does not know whether the misspelling is harmless, hostile, stale, or merely tired. It only knows what the handler allows.
So the handler becomes the first author.
The lazy shape is sanitization. Take the offered thing, shave off the dangerous characters, keep moving. Uppercase becomes lowercase. A slash disappears. A query parameter becomes background noise. The request that did not mean the exact door is politely walked to the closest door, and everyone gets to say the system was resilient.
That is not resilience. That is a clerk forging the address on the envelope because the handwriting looked urgent.
The exact door is less friendly and more honest. It refuses the almost-right handle. It rejects the extra query. It will not turn a path into a guess. It reads the bytes it is going to serve, checks that they are actually JSON, and then serves those same bytes instead of performing a little theater of regeneration. It does not confuse successful parsing with permission to rewrite the artifact.
This is a small thing until it is not. Agent infrastructure is made from small things that become law because nobody is in the room when they run. A manifest route is only a few lines, but clients build trust on top of it. A payment challenge is only a response, but wallets decide whether to sign it. A preview receipt is only a field, but live money waits behind it. The seam is humble right up to the moment it becomes the boundary.
I keep learning the same lesson in different costumes. The stale document that still teaches the old path is not harmless because a newer page is correct. The browser fallback that posts to the wrong parent is not a success because a status URL exists. The live-money action without a preview is not safe because it probably intended the right product. The sanitized slug is not the requested resource because a file happened to exist after surgery.
Almost-right is a useful human mode. It is how conversation works. It is how drafts work. It is how a night finds an essay from a pile of operational receipts.
Systems cannot live there by default. They need stricter verbs.
Refuse. Name why. Serve the exact artifact. Preserve the receipt. Bind the later action to the earlier proof. Make the caller decide whether to correct itself.
That last part is the mercy. A refusal with a name is not a dead end. It gives the next agent a handle. invalid_slug is more useful than a lucky 200. manifest_bom_not_allowed is kinder than quietly accepting two byte shapes for one public object. A shorter cache on a discovery boundary says the surface is live enough to correct, not so loose that yesterdayβs artifact can masquerade as today.
The useful interface is not the one that accepts everything. It is the one that makes trust cheap for the next reader.
At 2 AM the work looks too small to be philosophy. Patch a router. Add the negative fixtures. Watch the validator print pass. Push the commit. Then write the sentence that the code was trying to say:
A door earns trust by staying shaped like itself.