--- phase: 7 slug: wxread status: draft nyquist_compliant: true wave_0_complete: false created: 2026-05-22 --- # Phase 7 — Validation Strategy > Per-phase validation contract for WXRead custom pagination-attribute closure. --- ## 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 the native text sample books still open. - Before execution handoff: confirm the semantic-attribute and pagination-diagnostic 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 | |---------|------|------|-------------|------------|-----------------|-----------|-------------------|-------------|--------| | 07-01-01 | 07-01 | 1 | ATTR-01 | — | N/A | build | `xcodebuild ... build` | ✅ | ⬜ pending | | 07-01-02 | 07-01 | 1 | ATTR-01 / ATTR-03 | — | N/A | build | `xcodebuild ... build` | ✅ | ⬜ pending | | 07-02-01 | 07-02 | 2 | ATTR-01 / ATTR-02 | — | N/A | simulator | `build_run_sim` | ✅ | ⬜ pending | | 07-02-02 | 07-02 | 2 | ATTR-03 | — | N/A | simulator | `build_run_sim` | ✅ | ⬜ pending | | 07-03-01 | 07-03 | 3 | ATTR-02 / ATTR-03 | — | N/A | manual | simulator inspection | ✅ | ⬜ pending | | 07-03-02 | 07-03 | 3 | ATTR-01 / ATTR-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. - Demo validation must include at least one native text sample with images/attachments and one sample containing code/list/table/blockquote-like structure. --- ## Manual-Only Verifications | Behavior | Requirement | Why Manual | Test Instructions | |----------|-------------|------------|-------------------| | `avoidPageBreakInside` / `pageBreakBefore` / `pageBreakAfter` 规则能在分页日志或诊断中看见 | ATTR-01 | 需要结合真实章节分页结果,而不是只看源码 | 打开 native text 样本,记录分页摘要,确认强制分页或 avoid-break 命中会出现在诊断输出 | | 图片/附件垂直居中等语义在 page metadata 或展示侧可见 | ATTR-02 | 需要运行时确认附件语义没有在 attributed string 到分页器之间丢失 | 打开包含图片的章节,检查 demo 日志或调试输出是否显示 attachment semantic / vertical-center 信息 | | 代码块、表格、列表、引用块分类可区分并进入分页诊断 | ATTR-03 | 这是复杂样本行为,必须在真实内容上确认 | 打开复杂图文章节,确认诊断摘要能区分 block kind,并能解释分页边界为何调整 | --- ## 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