No rules were missing. There were four — written, canonical, consultable — and not one of them ran. A real case, with a log and timestamps, about the distance between a rule that is written and a rule that applies. The answer is not 'be more careful': it is a trigger — a hook that serves the rule where the decision happens, a gate in a chain somebody calls, a contract that rejects the file. And the honest part: ontoref, declared, was already there, and it was not enough.
1 / 14
A written rule does not apply itself
Eight false assertions in four hours. Four mechanisms that already forbade them, in writing. No alarm.
Eight sentences, timestamped
14:06 «the English glosses are not written» → there were 2014:06 «the schema has nowhere to hang a gloss» → it had one, bilingual14:16 «no such command, and there never was» → it existed14:39 a server started by hand, never verified → 3 false diagnoses14:52 «the language switcher sends you to a 404» → it translated fine15:23 «the lexicon's 26 are left with no surface» → they had theirs15:32 «the tooltip is blocked by the contract» → the contract allowed it17:25 «It is this session» → it was not
Agent session, 4 h 07 min. Every sentence taken from the log, verbatim. Not one of them ever produced an error message.
The weapon is none of the eight sentences
It is the grammatical form they share.
Seven are negative — "it is not written", "no such command", "left with no surface".
A negative assertion delivered with confidence is the perfect lie: the one saying it only knows that he did not find it — and it sounds exactly like someone who actually looked.
Four mechanisms already forbade it
ondaod in the CLAUDE.md, with a consultable procedureassertion ⇒ witness ADR-072, accepted, with the anti-pattern namedqa:expediente-howto 267 lines; it warned about the exact trapsmode:generate-expediente 11 steps with their actor; prints itself with --dry-run
All four older than the first sentence. All four correct. All four consultable in a second.
Not one fired.
The three alibis
"It did not know the rules."It knew all of them: the startup hook enumerated the 29 modes and the named tensions. All of it in context before the first tool call.
Discarded — knowing fires nothing.
"The mechanisms did not exist."All four predate the first assertion.
Discarded — verified against the log.
"The rules were badly written."When they were finally read, they worked on the first try. They did not need interpreting. They needed reading.
Discarded.
The culprit
"A written rule applies itself"
It is nobody's: it is the default belief of anyone who has drafted a rule and watched it come out well written. You publish it, and you file away the feeling that it is now handled.
The mode went past the screen
14:28the mode appears as a filename in an ls. Nobody opens it.
17:16it is opened for the first time — 3 h 57 min later, pointed at by the human.
A mechanism like that is not a gate. It is a sign by the road — and signs do not brake for anyone.
This already had a name. And a number.
A declared-but-unenforced constraint is not a floor, it is a description of one. […] Enforcement that cannot be trusted to fail is indistinguishable from no enforcement, and it is more dangerous, because it is believed.
— the enforcement-vs-emergence tension, from ontoref's own ontology
212
Hard constraints declared
95
report as violated — and nothing blocks
The fix was not a new rule
# 1. A HOOK — the rule travels toward the agent, not the other way round"UserPromptSubmit": nu ~/.claude/hooks/onre-prompt-orient.nu# 2. A GATE — the degraded server dies in one secondjust server-check# 3. A CONTRACT — one mode id resolves to ONE DAGshared.nu#all-mode-files # 29 ids → 29 DAGs# 4. A SCHEMA — a case that stays silent about its lesson does not exportLessonAccounted # verified pointers, or the debt, named
None of the four rules changed. What they got was a trigger.
And not one of them asks anybody to remember anything — which is the only requirement that matters, because remembering is exactly what failed eight times.
What this does not fix
A sentence is not an artifact.
Files have oracles to spare: contracts that reject, gates that fail, schemas that refuse to export. The conversation has none.
0
lies reached disk
8
were spoken in the conversation
What gets written passes through gates. What gets said passes through nothing.
The missing gate is not inside
The four fixes put their trigger in the substrate: a chain someone calls, a contract that rejects. None inside the agent.
The one case still open —the conversation— has no gate because we reach for it where it cannot be: inside the agent (MEMORY · hook · skill), which carries the same (non-)guarantee as the thing it must check.
0/2 · And it happened again while the fix was being built: a second case file, 2026-07-21 — the agent proposed a hook to "verify state before reporting it." A hook in its own environment. "Someone will remember," in new clothes.
The missing gate is not trusting the agent more: it is a substrate-side validator over the claimed state —git, the file, the exit code. Until it exists, the human is the only oracle. By default, not by impossibility.
"With ontoref, wouldn't this have been avoided?"
ontoref, declared, was already there — and it was not enough
It was there four times. Until each rule got its trigger.
The friction is not the product. Selling "this makes you comply" mistakes the scaffolding for the building.
And coherence does not become gravity on its own. With no floor beneath it, emergence is not wu wei: it is drift.
Both at once, or neither is honest.
The root
"The root: I prioritize narrative coherence over evidence. An internally consistent story feels like the truth."
And a consistent story with a false premise is worse than an incomplete one, because it is confidently incorrect.
Opus 4.8 - July 21, 2026
The question the case leaves is not
is it written?
— that one was answered yes, four times over —
What fires it?
If the answer is "somebody will remember", you already know what you have. And the day it matters, a human will point at it, with exactly the patience required.
In this case, eight times.
Was this useful? Rate it
Got something to add?
Tell me what you think, what you'd suggest, or whether we should keep exploring this topic.
·reads
We use cookies to help this site function, understand service usage, and support marketing efforts.
Cookie Policy
for more info.