docs: close gate 4 — cause=cellless was a probe-label artifact, not a coverage gap

The handoff carried gate 4 as unexercised with an UNESTABLISHED trigger after
route 7 invalidated the unwield-to-3D recipe. That was wrong, and the evidence
was already in the captured logs.

c5-gates.log shows the pickup-then-drop test reaching the teleport arm five
times for the exact guids in the [B.5] pickup lines, every one committed — all
labelled cause=teleport-ts. The classifier predicate is a short-circuit OR
(RuntimeAuthoritativePositionRouteClassifier.cs:391): TryApplyPickup zeroes the
item's cell so `cellless` is genuinely true at the drop, but ACE also advances
TELEPORT_TS, the first operand matches, and the probe reports teleport-ts. The
condition occurs, classifies, and commits correctly; only the label is
shadowed.

So the cell-less path has been exercised in both gate sessions all along. Gate
4 is closed rather than owed, and the successor is no longer sent hunting a
trigger that cannot produce the label.

The general rule is worth more than the finding: a probe that reports which
branch matched inside a short-circuit expression cannot distinguish "this
condition did not occur" from "it occurred but another matched first." A
load-bearing cause label must be computed from the conditions independently,
not from the winning branch. Same family as #319's unfalsifiable gate criterion
filed the same day — both are gates that cannot report the state they exist to
report.

Emitting both operands (cause=teleport-ts+cellless) retires the question, but
that is a probe change and belongs with the probe-family work in C5c.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-08-05 10:09:12 +02:00
parent 2687d89363
commit af828a8a2a

View file

@ -439,3 +439,48 @@ trigger was invalidated by route 7 and the replacement is UNESTABLISHED.
exercised it either way. exercised it either way.
- Per both round-2 reviewers' condition, **this session is explicitly NOT - Per both round-2 reviewers' condition, **this session is explicitly NOT
scored as covering #318** (the end-to-end presentation composition test). scored as covering #318** (the end-to-end presentation composition test).
---
## Gate 4 (`cause=cellless`) — RESOLVED 2026-08-05: it was never a coverage gap
The handoff previously carried gate 4 as "the cell-less half is unexercised,
and route 7 invalidated its recorded trigger, so the replacement is
UNESTABLISHED." **That framing was wrong, and the evidence to settle it was
already in the captured logs.**
`c5-gates.log` shows the user's pickup-then-drop test reaching the teleport arm
five times, for the exact item guids in the `[B.5] pickup` lines
(`0x800013B7`, `0x8000A6C6`), every one `hookRan=True placement=Committed`
but all labelled `cause=teleport-ts`.
The classifier predicate is a SHORT-CIRCUIT OR
(`RuntimeAuthoritativePositionRouteClassifier.cs:391`):
```
if (request.Authority.TeleportAdvanced || cellless)
```
`TryApplyPickup` zeroes the item's cell, so at the drop's classification
`cellless` is genuinely TRUE — but ACE also advances TELEPORT_TS on the drop,
so the FIRST operand matches and the probe reports `teleport-ts`. The
cell-less condition occurs, classifies correctly, and commits correctly; only
the probe's cause LABEL is shadowed by operand order.
**Consequence: the cell-less path has been exercised in both gate sessions all
along.** Gate 4 is closed, not owed. What was actually missing was never
coverage — it was a probe whose label can be pre-empted by a co-occurring
condition.
**The general rule, worth more than the finding:** a probe that reports WHICH
BRANCH MATCHED inside a short-circuit expression cannot distinguish "this
condition did not occur" from "this condition occurred but another matched
first." If a cause label is load-bearing for a gate, it must be computed from
the conditions independently, not from the branch that won. Same family as
#319's unfalsifiable criterion filed the same day: both are gates that cannot
report the state they exist to report.
To label it honestly, the probe would evaluate and emit both operands (e.g.
`cause=teleport-ts+cellless`). Cheap, and it retires this whole question —
but it is a probe change, so it belongs with the probe-family work in C5c, not
as an urgent fix.