A provisioned pointer is witnessed at both ends by observation, and the ratio it yields is a reading — never a gate
Accepted
Context
MEASURED 2026-08-06/08, closing precondition 1 of mode:generate-case-file over the incident held in refs/sessions/2026-08-06-el-disparador-que-nadie-obedecio/.
· THE CASE WAS FILED AGAINST THE WRONG MECHANISM. It was captured as "a trigger that fires and is not obeyed". Measured against the mechanism, that title is unfair to it: the header of ~/.claude/hooks/onre-prompt-orient.nu declares, verbatim, that it does NOT bind — "it injects a pointer, and a pointer is advice"— and that what it does is turn "I did not know it existed" into "I knew and I chose". The hook did exactly what it says. There was no malfunction.
The gap is one plane in: it converts ignorance into a choice AND THEN DROPS THE CHOICE ON THE FLOOR. Nothing distinguished "I read it and judged it did not apply" from "I walked straight over it". For eleven hours both produced the same record: none.
· A COMPLETE MECHANISM, ACCEPTED AND EMPTY. adr-037 accepted; the InteractionRecord schema shipped, with `interaction-schema-shipped` as a Hard constraint; seven verbs exported; migration 0028 landed; the default log path declared at interaction.nu:40. Records emitted: ZERO — the file did not exist. An accepted ADR, a Hard-constrained schema, seven verbs and a migration, with nothing anywhere that would ever call them. That is the same disease as the incident being documented, one plane below it.
· THE ONTOLOGY ALREADY DECLARED THE HOLE, IN ITS OWN WORDS. The enforcement-vs-emergence node names two existing measurable proxies (adr-069 `--warrant`; the Hard constraint count of adr-070) and then states the structural absence outright: "no witness for the moment friction became gravity (internalization), only a human judgment or an as-yet-unbuilt metric".
· WHAT IT READS TODAY, now that both ends emit: 39 served · 20 consumed · 19 ignored, over 101 records, plus 9 receipts excluded because nobody served the pointer they close. The exclusion is printed rather than hidden — a receipt without a service is a fact about the sensor, not about the reader.
Decision
A pointer provisioned into a session is witnessed AT BOTH ENDS, and both ends OBSERVE — neither of them self-reports.
serving surface emits 'Read target=<id> status='pending consumed surface emits 'Read target=<id> status='ok when it EXECUTES
THE ABSENCE OF THE RECEIPT IS THE FINDING, which is what makes this cheap enough to exist. Nobody has to record disobedience, and no mechanism has to detect it: an unclosed 'pending IS the choice, accredited. The vocabulary is not new — adr-037's `interaction.ncl` already declares 'Read and a status of 'pending | 'ok. A provisioned pointer is exactly a pending 'Read; consuming it closes it.
CONSUMPTION IS OBSERVED, NEVER DECLARED. The receipt is written by `qa show` at the moment it runs, not by an agent stating that it read something. A self-report that contradicts the record is unfalsifiable, and adr-066 already refuses precisely this in the governed-delivery executor.
THE RATIO IS A READING, NEVER A GATE. served : consumed over time is a direction of motion. No gate consumes it, no promotion membrane reads it, and the serving surface stays advisory. This is the load-bearing half of the decision and the one most likely to be reversed by a well-meaning successor: the reflex on first seeing "19 ignored" is to make the hook blocking, and that reflex is what this ADR exists to refuse.
Constraints
- Hard A provisioned pointer produces a record at BOTH ends — served and consumed. One end emitting alone is not a witness.
- Hard The consumption receipt is written by the consumed surface when it executes, never by an agent declaring that it read something.
- Hard No gate and no promotion membrane consumes the served:consumed ratio. It reports direction of motion and nothing blocks on it.
- Soft An unconsumed pointer is retrievable by target, not merely counted. The finding is the specific pointer that was declined, not a percentage.
Alternatives considered
- Make the orientation hook blocking — refuse the prompt until the pointer is consumed — rejected: Yang capture over an instrument that deliberately chose the emergence pole and declared it in its own header, and `ceremony-capture` (adr-029) over an advice surface. It also destroys the measurement: a pointer nobody may decline produces a ratio that measures the gate, not the reader.
- Have the agent report that it read the pointer — rejected: A self-report cannot be contradicted by anything, which is exactly what adr-066 refuses in the governed-delivery executor. The mechanism must observe the act, not collect a claim about it.
- Declare a new record kind and new fields for provisioned pointers — rejected: interaction.ncl already carries 'Read with 'pending and 'ok. A pointer served is a pending 'Read; consuming it closes it. A second vocabulary for the same fact is the duplication adr-070 names, and it would have cost a migration to say nothing new.
- Record it as an amendment to adr-037 rather than a new ADR — rejected: An amendment records that a factual assertion inside a standing decision moved (adr-078). Nothing inside adr-037 moved: it declares the record format and its custody and never considered whether a provisioned pointer owes a receipt, nor whether the resulting ratio may be gated. The rejected alternative here — the blocking hook — is a decision adr-037 never took.
- Do nothing and wait for bl-036's phase-transition witness to generalise — rejected: bl-036 will not build its primitive until a second bespoke instance exists, and this is the kind of instance that produces one. Waiting means the choice keeps being made and keeps not being accredited.
Anti-patterns
- Provisioning context and keeping no record of whether it was consumed — A surface injects a pointer, a mode, a howto or a discipline into a session and nothing observes whether it was reached. It converts ignorance into a choice and then discards the choice, so 'I read it and judged it did not apply' and 'I walked over it' leave the identical trace: none. Measured over eleven hours on 2026-08-06.
- Turning the pointer into a wall because the ratio looked bad — The reflex on reading the consumption ratio: make the serving surface blocking so the number improves. It is ceremony over an advice surface (adr-029 `ceremony-capture`), it contradicts the instrument's own declared design, and it destroys the reading — a pointer nobody may decline yields a ratio of 1 that measures the gate rather than the reader.
- Asking the reader to declare that it read — Closing the receipt from the consumer's own statement instead of from the execution of the consumed surface. The claim cannot be contradicted by anything, so the record measures willingness to answer rather than the act. adr-066 refuses the same shape in the governed-delivery executor.
- A mechanism accepted, constrained, migrated — and never called — An ADR accepted, a schema shipped under a Hard constraint, verbs exported and a migration landed, with no producer anywhere. Every gate reports green because every gate measures the declaration. adr-037 stood in this state with zero records emitted; the incident it would have documented is an instance of the same disease one plane up.
Related ADRs
ADR-029 · ADR-037 · ADR-066 · ADR-069 · ADR-070 · ADR-071 · ADR-072 · ADR-074 · ADR-078 · ADR-080