---
phase: 06.7-network-model-client-trust-fall-trigger
plan: 04
subsystem: doctrine-and-uat
tags: [docs, uat, trust-boundary]
requirements: [REQ-CLI-08, REQ-SRV-03, REQ-SRV-04, REQ-CLI-04]
status: pending-human-uat
completed: 2026-05-17
---

# Phase 06.7 Plan 04: Doctrine and UAT Summary

## Accomplishments

- Updated `CLAUDE.md` Hard Rule 1 to document the narrow movement carve-out and anchor it with `[doc->REQ-SRV-04]`.
- Created `06.7-HUMAN-UAT.md` with six sections: diagonal-stop drift, dropped-packet hitching, two-player smoke, protocol-v4 handshake automated coverage, rollback drill, and idle-cadence observation.
- Left the sign-off fields blank because Task 3 is a blocking operator UAT gate.

## Final Hard Rule 1 Text

1. **Server-authoritative (with narrow movement carve-out).** Clients send intent for everything EXCEPT player movement. Server emits state. Never trust client identity, chat origin, inventory, room transitions, or persistence — these are server-authoritative. **Movement (position, velocity, facing, anim_state) is CLIENT-AUTHORITATIVE as of Phase 06.7 — server stores client-reported state and broadcasts to peers.** Anti-cheat (illegal-position fall trigger) is deferred to Phase 06.8. [doc->REQ-SRV-04]

## Operator UAT Outcome

- Test 1 diagonal-stop drift: pending operator.
- Test 2 dropped-packet hitching: pending operator.
- Test 3 two-player smoke: pending operator.
- Test 4 protocol-v4 handshake automated coverage: pending latest operator-recorded exit code.
- Test 5 rollback drill: pending operator.
- Test 6 idle-cadence frame count: pending operator.

## Rollback Target

- Plan 01: `1ba1fe6` - protocol movement surface.
- Plan 01 summary: `086bf71` - protocol summary.
- Plan 02: `f9b02e3` - server position update handling.
- Plan 03: `8ba0f9b` - client position dispatcher.
- Plan 04 docs: this docs commit - doctrine and UAT gate.

## Deferred Items

- Candidate Phase 06.8: illegal-position fall trigger, speed cap, walkable-grid sanity, and fall reset.
- Candidate Phase 06.9 cleanup: vestigial `c2s.input`, held input buffers, and `axis_x_held` / `axis_y_held` PlayerState fields.

## Codex Review Fold

Concern #1 landed in Plan 02, #2 in Plans 02 and 03, #3 in Plan 02, #4 in Plans 02 and 03, #5 in Plan 01, #6 in Plan 02, #7 in Plan 01, and #8 in this Plan 04 UAT design.

## Recommendation

Not ready for `/gsd-verify-work 06.7` until the operator completes `06.7-HUMAN-UAT.md`, records pass/fail results, and approves the checkpoint.
