From af828a8a2a9f5fc9427d47f5b040ab90a76546e0 Mon Sep 17 00:00:00 2001 From: Erik Date: Wed, 5 Aug 2026 10:09:12 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20close=20gate=204=20=E2=80=94=20cause=3D?= =?UTF-8?q?cellless=20was=20a=20probe-label=20artifact,=20not=20a=20covera?= =?UTF-8?q?ge=20gap?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .../2026-08-05-c4-closeout-handoff.md | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/docs/research/2026-08-05-c4-closeout-handoff.md b/docs/research/2026-08-05-c4-closeout-handoff.md index 57f7a86a..67719dbc 100644 --- a/docs/research/2026-08-05-c4-closeout-handoff.md +++ b/docs/research/2026-08-05-c4-closeout-handoff.md @@ -439,3 +439,48 @@ trigger was invalidated by route 7 and the replacement is UNESTABLISHED. exercised it either way. - Per both round-2 reviewers' condition, **this session is explicitly NOT 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.