--- phase: 6 slug: page-geometry-and-interaction-hit-layer status: draft nyquist_compliant: true wave_0_complete: false created: 2026-05-22 --- # Phase 6 — Validation Strategy > Per-phase validation contract for page geometry and selection overlay work. --- ## Test Infrastructure | Property | Value | |----------|-------| | **Framework** | none — simulator build/run and manual UAT | | **Config file** | none | | **Quick run command** | `xcodebuild -workspace ReadViewDemo/ReadViewDemo.xcworkspace -scheme ReadViewDemo -configuration Debug -destination 'platform=iOS Simulator,name=iPhone 17' build` | | **Full suite command** | `xcodebuild -workspace ReadViewDemo/ReadViewDemo.xcworkspace -scheme ReadViewDemo -configuration Debug -destination 'platform=iOS Simulator,name=iPhone 17' build && build_run_sim` | | **Estimated runtime** | ~180 seconds | --- ## Sampling Rate - After every task commit: run the quick build command. - After every plan wave: run the full simulator build/run path and confirm reader startup. - Before execution handoff: confirm the selection overlay and offset preservation checks below. - Max feedback latency: 180 seconds. --- ## Per-Task Verification Map | Task ID | Plan | Wave | Requirement | Threat Ref | Secure Behavior | Test Type | Automated Command | File Exists | Status | |---------|------|------|-------------|------------|-----------------|-----------|-------------------|-------------|--------| | 06-01-01 | 06-01 | 1 | LAYOUT-01 | — | N/A | build | `xcodebuild ... build` | ✅ | ⬜ pending | | 06-01-02 | 06-01 | 1 | LAYOUT-03 | — | N/A | build | `xcodebuild ... build` | ✅ | ⬜ pending | | 06-02-01 | 06-02 | 2 | LAYOUT-02 | — | N/A | simulator | `build_run_sim` | ✅ | ⬜ pending | | 06-02-02 | 06-02 | 2 | LAYOUT-03 | — | N/A | simulator | `build_run_sim` | ✅ | ⬜ pending | | 06-03-01 | 06-03 | 3 | LAYOUT-01 | — | N/A | manual | simulator inspection | ✅ | ⬜ pending | | 06-03-02 | 06-03 | 3 | LAYOUT-02 | — | N/A | manual | simulator inspection | ✅ | ⬜ pending | | 06-03-03 | 06-03 | 3 | LAYOUT-03 | — | N/A | manual | simulator inspection | ✅ | ⬜ pending | *Status: ⬜ pending · ✅ green · ❌ red · ⚠️ flaky* --- ## Wave 0 Requirements - Existing build path covers the phase requirements; no new test target is required. - Manual checks must be available in the demo app using the native text sample books. --- ## Manual-Only Verifications | Behavior | Requirement | Why Manual | Test Instructions | |----------|-------------|------------|-------------------| | Selection overlay appears and tracks the selected text range | LAYOUT-02 | Overlay geometry is visible behavior, not a source-only assertion | Open a native text sample, select text, verify overlay bounds follow the selected text and not the default `UITextView` selection chrome | | Selection still serializes through `RDEPUBTextOffsetRangeInfo` | LAYOUT-03 | Offset continuity is best verified through persisted selection state and runtime logs | Create a selection, refresh the page, and confirm restored selection points to the same absolute offsets | | Geometry queries do not break page navigation / current location | LAYOUT-01 | Page geometry must be validated through runtime behavior and current-location flow | Move between pages, search, and restore location after repagination; confirm page mapping stays stable | --- ## Validation Sign-Off - [ ] All tasks have `` or manual checks - [ ] Sampling continuity: no 3 consecutive tasks without a build or simulator check - [ ] Wave 0 covers missing infrastructure - [ ] No watch-mode flags - [ ] Feedback latency < 180s - [ ] `nyquist_compliant: true` set in frontmatter **Approval:** pending