Wiki · Evidence & Verdicts
Lab-team review — hunt motor reachability fix: MERGED VERDICT **REJECT** (2026-07-19)
How to read this page
Three ways to read this page. Precise is the document itself, exactly as it is written in the repository. Plain and Clear were written for this website to help you meet that document — they are about it. They are not it, and they are not evidence.
Eighty-seven dated pages: receipts, pre-registrations, handoffs, validation records and review verdicts. A receipt is written at the moment a piece of work was checked. It names what was claimed, the commit and the seed, what was actually run, and the outcome in one of a small set of controlled words. Then it names what the work did not achieve. That last part is what makes it a receipt rather than an announcement. A pre-registration is the same discipline run in advance: the conditions that would count as a pass and the conditions that would falsify the claim are written down before the run, so neither can be adjusted once the numbers arrive.
That is why so many small dated stubs are an audit trail rather than noise. No one of them is meant to be a good read. The value is in the sequence and in the dates, because you can watch a prediction be registered, then the run happen, then the verdict land — sometimes against the prediction. Pages here record a falsified result, a rejected fix, a retracted overclaim, and a green receipt that turned out not to be reproducible from the commit that carried it. A record that carried only successes would be worth a good deal less than this one.
A gentle way in is to read a pre-registration first, so the shape becomes familiar, then a result page, then one of the corrections. This section sits off the main navigation on purpose: it is the record you check the rest of the site against, not the place to begin.
What it is not: documentation, and not a summary. Nothing here has been tidied in hindsight. Every entry reads as of its date, a later entry may overturn an earlier one, and the presence of a page is not a claim that its result stood.
Your browser cannot switch reading levels, so the document itself is shown.
Precise — the source document
This is the document. Rendered from the repository at the commit above, with nothing rewritten for the web. A gate re-renders it on every deploy and fails the build if a single byte differs.
Protocol: ~/.claude/skills/lab-team-review.md (fork → break → repair → vote → RED).
Step 1 halt rule invoked: Math-Breaker returned REJECT ⇒ MERGED VERDICT = REJECT, no matter what;
the remaining four personas were not run, per the protocol's own instruction.
Ship gate held: NO code was changed. viewer/body.js is untouched.
MERGED VERDICT: REJECT
Both candidate fixes rejected:
- Fix 1 (bound
huntTarget()to pursuit range) — fails the sign check. Under the measured world state (nearest prey 24.7–46.2 blocks) the bound returnsnullon every hunt, and theentityAtCrosshair(p, 4, …)fallback needs prey within 4 blocks. The outcome kernelp(o | s, :attack)stays a point mass on null. It cannot satisfy its own registered PASS condition (kills > 0). - Fix 2 (raise pursuit ceiling + step budget) — the food-hack in motor clothing. Pursuing 46
blocks puts search, approach, target-selection, pursuit, strike and collect inside JavaScript,
reducing the brain's contribution to emitting one token when
prey ≠ 0. SincepreyDiris itself unbounded,prey ≠ 0is nearly always true, so the learned policy collapses to one bit. That trips the proposal's own NO-GO clause and the FOOD-HACK precedent this project already withdrew a survival claim over.
The proposal's central causal claim was FALSE — and the repo falsifies it
The packet (written by me, the studio agent) asserted that unbounded selection and the d > 11
pursuit abort "were introduced together in ff57a5a". They were not. Independently re-verified
against the repo after the review:
| commit | time | what it contained |
|---|---|---|
ff57a5a |
2026-07-11 20:32 | huntTarget() unbounded; approach loop i < 6; strike cap 4 swings; no d > 11 |
11013f7 |
2026-07-11 22:22 | introduced both for (step < 14) and if (d > 11) break |
The lab-side forage RED (2026-07-12, ~uni/.claude-evidence/forage_red/) records struck=10,
struck=11, struck=14. Those counts are arithmetically impossible under ff57a5a's 4-swing
cap, so that evidence was produced by 11013f7 — the version that already contained d > 11 —
which also produced 19 confirmed killed=true.
Therefore the guard blamed as root cause was present in the code that hunted successfully. Unbounded-selection-plus-bounded-pursuit is demonstrably compatible with kills. It is not a sufficient explanation for the 2449/2449 zero-strike regression seven days later.
The real signal is the distance floor: across 2449 hunts bot.nearestEntity never once found an
animal inside 24.7 blocks. That is an ecology/placement signature, not a code signature — prey
density collapsed, animals despawned or wandered, the populator is not running, or the UNIs' own
locomotion parked them off any prey-bearing biome. Shipping a motor fix against an unmeasured world
variable would have violated LAB_PROTOCOL rule 1 (one cure at a time) before the first tick.
The finding neither the proposer nor the packet reasoned to
B is Dirichlet. For the prey-context state under u = :attack, with n consecutive null outcomes:
E[p(o = null | s, :attack)] = (α_null + n) / (Σα + n) → 1
deviation from certainty = (Σα − α_null) / (Σα + n) = O(1/n)
At n = 2449 the posterior is within O(1/2449) of a degenerate point mass on "attack yields
nothing." And by hard invariant 4 (monotonic decay), parameter-novelty W^attack → 0 over the same
counts. So all three EFE terms now agree on never attacking again: pragmatic says null, epistemic
says null is well-known, novelty has decayed to zero.
Consequence, and it is a trap: any RED run on this colony's inherited counts will false-FAIL arm B
regardless of how correct the motor fix is. Recovery would need ~10³ food outcomes, which cannot
accumulate because :attack is exactly what the poisoned posterior suppresses. A paired RED must
start from fresh Dirichlet counts and must report :attack selection rate alongside kills.
Other defects the review surfaced
- The
killedobservable is corrupt.!bot.entities[tid] || !bot.entities[tid].isValidconflates death with despawn and with exit from client entity-tracking. A cow wandering out of range scoreskilled=truewithstruck=0. The registered PASS condition is gameable by the measurement itself. LAB_PROTOCOL requires independent confirmation — RCON server-side kills and inventory delta, not a body-side flag. - The FALSIFIES clause was not decidable — "struck counts implying no real pursuit" is a vibe, not a numeric predicate stated before the run.
- Model-expressiveness gap the packet's "no model change needed" framing missed:
preyDiris fed bynearestAnimal(), also unbounded. So the brain has bearing without range and cannot represent "prey near" vs "prey far" at all. Bounding only the selection would leaveB^attackmarginalising over an unobserved confounder. - Lockstep hazard: a 46-block pursuit is ~12 s inside one action, against a
STEP_MStick — it would stall the strict 1:1 σ/α lockstep and corrupt timing-sensitive telemetry.
What the Math-Breaker said would earn SIGN (recorded, NOT implemented)
- Bound the SENSE and the SELECTION to the same radius R —
maxDistance: Ron bothnearestAnimal()andhuntTarget()— sopreyDircomes to mean "prey within R" and the contingency becomes learnable. Note this changes the live observation stream, invalidating priorB^preylearning; the RED must start fresh regardless. - Derive R from the measured closure rate, don't assert it: 14 steps × ~1.1 blocks ≈ 15 blocks, minus ~5 steps spent striking ⇒ ~10–11 blocks achievable. R must sit below the demonstrated closable distance, not at the abort threshold.
- Measure the world before measuring the motor — prey density within R on both dates. Until the 24.7-block floor is explained, no motor result is attributable.
- Scope the claim to a terminal motor competence plus learned consummation — not emergent
foraging, since at 25+ blocks
preyDiris 0 and there is no prey signal to search under.
Follow-on artifacts
Per the ship gate, a REJECT produces none of the three (typed spec / paired RED / ship-gate
checklist) and no code may merge. None was written. viewer/body.js is unchanged.
sha256 051168f333206d8c — of the original file, so what was ingested stays checkable.
Plain — written for this website, not the source document
A design review that says no, and stops early because the protocol says one reviewer's rejection ends it. No code was changed. Both proposed fixes are rejected. One cannot satisfy its own pass condition under the measured state of the world. The other would move nearly all the work into hand-written code, and leave the learned decision with about one bit to contribute. Then the review does something rarer: it falsifies the proposal's own causal story using the repository's history, and finds the real signal is about where the animals are.
Plain · written 2026-08-01 by claude-opus-5 · not yet checked by a person · about the document whose sha256 is 051168f333206d8c
Clear — written for this website, not the source document
A review whose merged verdict is a rejection, with a procedural note that matters: the protocol halts once the first reviewer rejects, so the other four were not run, and no code was changed.
Two candidate fixes are rejected for different reasons. The first fails a sign check, because under the measured state of the world everything it would select is out of range, so it returns nothing on every attempt and cannot meet its own registered pass condition. The second is called a food hack in motor clothing. It would put search, approach, selection, pursuit, strike and collection inside hand-written code, leaving the learned policy with about one bit to contribute. That trips the proposal's own stop clause, and a precedent the project already withdrew a claim over.
The review then turns on the proposal's central causal claim, written by the same agent, and shows it false against the repository. Two commits are compared, and a count recorded in the lab evidence is arithmetically impossible under the earlier one, which places the successful hunting in the version that already contained the guard being blamed. So the guard was present in code that hunted successfully, and it is not a sufficient explanation for the later collapse.
The real signal is named instead. Across thousands of attempts no animal was ever found within close range, which is a signature about the world rather than about the code. Shipping a motor fix against an unmeasured world variable would have broken the one-cure-at-a-time rule before the first tick.
The finding neither side had reasoned to is then derived. With thousands of consecutive empty outcomes, the belief about what attacking yields converges towards a point mass on nothing, while the drive to try the unfamiliar decays over the same counts. All the terms therefore agree on never attempting it again. The trap is spelled out: any run on these inherited counts would fail regardless of how correct the fix is, so a paired comparison has to start from fresh counts and must report the selection rate alongside the outcome.
Other defects are listed. The observable being counted conflates a kill with an animal wandering out of tracking range, so the pass condition is gameable by the measurement itself and needs independent confirmation. The stated condition for showing it wrong was not decidable. The sense feeding the brain gives bearing without range, so the brain cannot represent near against far at all. And a long pursuit inside one action would stall the timing the rest of the system depends on.
The review closes constructively without conceding anything, listing what would earn a signature. Bound the sense and the selection to the same radius, so the signal comes to mean something learnable. Derive that radius from a measured closure rate rather than asserting it, and measure the world before measuring the motor. And scope any eventual claim to a narrow competence rather than to emergent foraging.
Clear · written 2026-08-01 by claude-opus-5 · not yet checked by a person · about the document whose sha256 is 051168f333206d8c