---
phase: 06.2-gap-closure-d-50-d-53-uat-2026-05-13
verified_at: 2026-05-13
operator: decidel
verdict: not-approved
next_phase: 06.3
deploy_sha: 688d334
staging_url: https://rebno-staging.fly.dev/
---

<!-- [doc->REQ-CLI-04] [doc->REQ-CLI-06] [doc->REQ-CLI-08] [doc->REQ-SRV-03] [doc->REQ-SRV-14] -->

# Phase 06.2 — Verification (cycle-4 UAT, 2026-05-13)

> Cycle-4 operator UAT of staging build `688d334` (W1 spike + 6 W2 fixes merged
> after cycle-3 findings). **Verdict: NOT APPROVED.** Three cycle-3 fixes
> regressed, one fix invisible to operator, one new visual class (collision
> grid extent), plus two new findings (teleport anim, chat readability).
> Findings carry to Phase 06.3.

## Per-test results

| Test ID | Description                                  | Result | Note                                                                                     |
| ------- | -------------------------------------------- | :----: | ---------------------------------------------------------------------------------------- |
| 1       | Alpha-keyed sprites (D-39 carry)             |  N/A   | Not re-verified — no Phase 06.2 changes to alpha pipeline                                |
| 2.1     | Ghost player after logout (D-50)             |  PASS  | Disappears ~10-15 s after tab close (matches onLeave grace window contract)              |
| 2.2     | Floor tiles + TSides visible (D-40)          |  PART  | Tiles render in a region but only LEFT EDGE blocks player; gray border tiles outside region; other edges either don't stop player or stop at wrong point — see D-40-FAIL |
| 2.3     | Background animation                         |  PASS  | No regression                                                                            |
| 2.4     | Duplicate-account login refused (D-51)       |  FAIL  | Login PERMITTED. Game freezes + WS-disconnect on BOTH tabs. Tab close → no auto-reconnect. Refresh after → floor tiles gone — see D-51-REG |
| 2.5     | Local sprite animates under WASD (D-41)      |  PASS  | Run frames cycle correctly                                                               |
| 2.6     | Position resets to spawn (D-52)              |  PASS  | No resets observed during UAT — D-52 remains spike-only carry per CONTEXT §D-52          |
| 2.7     | Chat round-trip                              |  PASS  | But chat box is very small / hard to read — see D-56-NEW                                 |
| 3       | Anim rate local + remote                     |  PASS  | Both 30 Hz consistent                                                                    |
| 4       | Nameplate Y offset (D-45)                    |  FAIL  | Overshot — nameplates now TOO HIGH. Remote nameplates flicker vertically during movement. Depth wrong — overlapped by player sprites and floor tiles — see D-45-REG |
| 5       | Walkable-edge block + bg                     |  FAIL  | See 2.2 — only left edge of tiled region blocks; collision grid extent mismatches visible floor extent |
| D-53    | Spawn-in 1 s hold visible                    |  FAIL  | Not observed operator-visible — spawnDelayTicks counter may not be initializing on operator flow path — see D-53-REG |

## D-52 follow-up data

No D-52 reproductions during 2026-05-13 cycle-4 UAT. Diagnostic surface (`window.__rebno.lastReconcileX/Y/Reason/Seq/At` from 06.2-03) remains live on staging. Carry to Phase 06.3 sub-task — operator captures a snap-back episode and reads literal.

## Playwright e2e gates

| Gate                                       | Result | Note                                                                                       |
| ------------------------------------------ | :----: | ------------------------------------------------------------------------------------------ |
| cli-08-nameplate-offset.e2e                |  PASS  | Asserts current (overshot) Y offset — gate caught nothing because expectation matches code |
| cli-08-local-anim.e2e                      |  FAIL  | 1 distinct frame observed (all NaviStandD); D-53 spawn delay overlapped 1 s sample window — fix wait-1200 ms pushed at `b34e053`, awaiting redeploy |
| cli-08-floor-collision.e2e                 |  FAIL  | finalY > 850 px after KeyS hold — confirms 2.2 visual issue; collision grid extent doesn't match render extent |
| camera-follow.e2e (pre-existing)           |  FAIL  | Camera scroll flat — cascade of frozen sprite during spawn delay window                     |
| cli-08-camera.e2e (Wave 4 carry)           |  FAIL  | Same cascade as camera-follow                                                              |
| cli-08-anim.e2e (Wave 4 carry)             |  FAIL  | Same D-53 boundary issue as cli-08-local-anim                                              |

## Phase 06.2 finding closure

| Finding | Status                       | Carry plan                                                                                                                                   | Reference                  |
| ------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- |
| D-40    | partial — H1 fix landed      | Server room_layout delivers `tiles[]` on join (06.2-05). But collision grid extent + gray-border tiles outside region carry as D-54 to 06.3 | [06.2-05-SUMMARY](./06.2-05-SUMMARY.md) |
| D-41    | closed                       | Axis-held wiring landed (06.2-06); cycle-4 UAT confirms run frames cycle                                                                     | [06.2-06-SUMMARY](./06.2-06-SUMMARY.md) |
| D-45    | regressed — overshot         | Y offset overshot, remote vertical flicker, depth z-order wrong — carry to 06.3                                                              | [06.2-07-SUMMARY](./06.2-07-SUMMARY.md) |
| D-50    | closed                       | BL-05 evict on persist failure landed (06.2-08); cycle-4 UAT confirms ghost cleanup in 10-15 s                                                | [06.2-08-SUMMARY](./06.2-08-SUMMARY.md) |
| D-51    | regressed — both-tabs crash  | Replace-session evict broke onJoin path for the new session — eviction-state delete also kills the surviving session — carry to 06.3         | [06.2-09-SUMMARY](./06.2-09-SUMMARY.md) |
| D-52    | spike-only, deferred         | Diagnostics live; no reproductions during cycle-4 UAT — operator capture pending in 06.3                                                     | [06.2-03-SUMMARY](./06.2-03-SUMMARY.md) |
| D-53    | not-visible regression       | spawnDelayTicks landed in code (06.2-10) but no operator-visible 1 s hold — investigate gate condition + verify telemetry on `window.__rebno` | [06.2-10-SUMMARY](./06.2-10-SUMMARY.md) |
| D-54-NEW | partial-floor + bad collision | Collision grid extent mismatches visible floor extent; gray-border tiles render outside region. Investigate room_layout collision payload    | NEW                        |
| D-55-NEW | teleport in/out anim missing | Legacy BNO had spawn/leave teleport anim — currently absent. Plan 7 candidate; flag for 06.3 scope discussion                                | NEW                        |
| D-56-NEW | chat box readability         | Chat input + history font + height too small to read comfortably. Quick UI polish in 06.3 or defer                                           | NEW                        |
| D-57-NEW | client movement micro-freeze + jump | Local sprite movement (not anim) freezes every few seconds then jumps to new position ~500-1000 ms later. Likely periodic reconciler snap (related-but-distinct from D-52 perfect-spawn-reset). Read `window.__rebno.lastReconcileReason` + `lastReconcileSeq` at each freeze in 06.3 | NEW                        |

## Operator approval

**NOT APPROVED.** Phase 06.2 closes with verdict `uat-fail` per plan 06.2-11 task-2 resume-signal. Three cycle-3 fixes regressed (D-45/D-51/D-53), one new collision-extent class (D-54), two new findings (D-55/D-56). D-40 partial (H1 server payload landed but collision extent + outer gray tiles outstanding). D-52 carries spike-only.

Phase 06.3 gap-closure to address: D-54 collision extent, D-45 overshoot/flicker/depth, D-51 eviction crash, D-53 visibility, plus operator capture of D-52 reproduction, plus scoping discussion for D-55 (teleport anim) and D-56 (chat readability).

CLI-08 milestone video DEFERRED to Phase 06.3 close.

---

*Verified by decidel on 2026-05-13. staging build `688d334`. Cycle-4 of CLI-08 milestone gate.*
