docs(04): plan-phase closure — 3 cosmetic advisories from checker iter-2 resolved

Plan-checker iter-2 returned VERIFICATION PASSED with 3 cosmetic advisories:
- Dim 11: RESEARCH.md "## Open Questions" missing "(RESOLVED)" suffix → fixed
- Dim 12: PATTERNS.md:886 stale dispatchSaveArchiveForA33 example → added
  DEPRECATED banner citing Plan 04-04 REVISION iter-2 Option B canonical pattern
- VALIDATION.md frontmatter "4 revised tasks" mismatched per-task map (5 rows) → fixed

All 4 BLOCKER+WARNING issues from iter-1 verified resolved by iter-2 plan-checker
(VERIFICATION PASSED). 3 cosmetic items now resolved as well. 2 advisory items
left as-is per iter-1 (W2 scope-sanity at 04-06; W3 conservative 04-03 dep).

Phase 4 plans cleared for execution:
- 7 plans across 6 waves (Wave 1: 04-01+04-02 parallel; Waves 2-6 single-plan)
- Plan-checker iter-2 VERIFICATION PASSED
- Test baselines preserved: vitest 171/171 · UAT harness 33/33 · Tier-1 12

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-21 10:21:03 +02:00
parent 76fffb35b9
commit 3c1280ed2d
3 changed files with 11 additions and 2 deletions

View File

@@ -881,6 +881,15 @@ export async function driveA33(
await new Promise((res) => setTimeout(res, A33_NEW_SW_BOOT_MS)); await new Promise((res) => setTimeout(res, A33_NEW_SW_BOOT_MS));
// Step 5: dispatch SAVE_ARCHIVE — wakes SW back up as an event // Step 5: dispatch SAVE_ARCHIVE — wakes SW back up as an event
// ⚠ DEPRECATED iter-2 (2026-05-21) — `__mokoshHarness.dispatchSaveArchiveForA33` does NOT exist
// on the harness surface (verified: grep extension-page-harness.ts:4018 confirms
// __mokoshHarness.{assertA1..A31, getManifestVersion} only). Per Plan 04-04 REVISION
// iter-2 (Option B), dispatch SAVE_ARCHIVE inline via:
// const saveResult = await page.evaluate(() => new Promise((resolve) => {
// chrome.runtime.sendMessage({ type: 'SAVE_ARCHIVE' }, (ack) => resolve(ack));
// }));
// Matches 9 existing assertA* methods (A5/A11/A12/A13/A26/A28/A29/A30/A31).
// See 04-04-PLAN.md <interfaces> for the canonical pattern.
const saveResult = await page.evaluate(() => { const saveResult = await page.evaluate(() => {
const harness = (window as any).__mokoshHarness; const harness = (window as any).__mokoshHarness;
return harness.dispatchSaveArchiveForA33(); return harness.dispatchSaveArchiveForA33();

View File

@@ -729,7 +729,7 @@ export async function driveA33(
(Table is not empty; A1-A6 should be acknowledged by the planner. A1 + A2 in particular have post-fix grep + UAT-green verification gates that catch them quickly.) (Table is not empty; A1-A6 should be acknowledged by the planner. A1 + A2 in particular have post-fix grep + UAT-green verification gates that catch them quickly.)
## Open Questions ## Open Questions (RESOLVED)
1. **Will the offscreen document actually survive 5 minutes of SW idle?** 1. **Will the offscreen document actually survive 5 minutes of SW idle?**
- What we know: Chrome docs say offscreen has its own lifecycle independent of SW; recorder.ts MediaRecorder is the "compelling reason" to keep offscreen alive. - What we know: Chrome docs say offscreen has its own lifecycle independent of SW; recorder.ts MediaRecorder is the "compelling reason" to keep offscreen alive.

View File

@@ -6,7 +6,7 @@ nyquist_compliant: false
wave_0_complete: false wave_0_complete: false
created: 2026-05-21 created: 2026-05-21
revised: 2026-05-21 revised: 2026-05-21
revision_notes: "iter-2 revision — per-task map updated for 4 revised tasks (04-02 T2 UAT grep gate; 04-04 T1 Option B chrome.runtime.sendMessage; 04-06 T4 canonical SW chunk glob; 04-07 T1 ack-grep gate)" revision_notes: "iter-2 revision — per-task map updated for 5 revised tasks (04-02 T2 UAT grep gate; 04-04 T1 + T2 Option B chrome.runtime.sendMessage; 04-06 T4 canonical SW chunk glob; 04-07 T1 ack-grep gate)"
--- ---
# Phase 04 — Validation Strategy # Phase 04 — Validation Strategy