feat(01-13-A14-invert): A14 — invert to assert continuous-recording post-SAVE

Plan 01-09 Amendment 3 (2026-05-19) end-to-end lock. Inverted A14 to
match the reversed charter (SAVE creates zip, recording continues).

Page-side (tests/uat/extension-page-harness.ts):
- assertA14: assert badge==='REC' (was ''), popup endsWith
  'src/popup/index.html' (was ''), no-new-recovery-notif (unchanged).
- A14 name + check labels updated to reflect continuous-recording semantic.
- New constant A14_POPUP_HTML_SUFFIX for the popup endsWith check
  (ext-id-agnostic via suffix match).
- A13 docstring + diag strings refreshed: setupFreshRecording is now
  defensive (orthogonal to A12 ordering) rather than a workaround for
  the prior auto-stop. 11s settle preserved (same wall-clock cost).

Host-side (tests/uat/lib/harness-page-driver.ts):
- driveA14 docstring refreshed to mention Amendment 3 + the inverted
  contract; mechanical wrapper unchanged.

Verification:
- npm run test:uat: 15/15 GREEN
- A14 actual output:
    badge='REC'
    popup='chrome-extension://<ext-id>/src/popup/index.html'
    recoveryDelta=0

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-19 17:33:53 +02:00
parent 7645765401
commit 1baaf45702
2 changed files with 78 additions and 76 deletions

View File

@@ -968,15 +968,18 @@ export async function getManifestVersion(page: Page): Promise<string> {
}) as string;
}
/* ─── Plan 01-13 Task 9 — driveA14 ─────────────────────────────────── */
/* ─── Plan 01-09 Amendment 3 — driveA14 (INVERTED 2026-05-19) ──────── */
/**
* Drive A14 (post-SAVE auto-stop state check). Plan 01-13 Task 9 closure
* for debug session 01-09-save-stops-recording. Standard page.evaluate
* wrapper — A14 is a read-only assertion of the SW state machine left
* by A13's SAVE_ARCHIVE: badge='', popup='', no new mokosh-recovery-*
* notification. All work happens page-side; host side just triggers +
* reads the result.
* Drive A14 (post-SAVE continuous-recording state check). Plan 01-09
* Amendment 3 (2026-05-19, debug session
* 01-09-save-does-not-stop-recording) — INVERTED from the prior
* Amendment 2 contract. Standard page.evaluate wrapper — A14 is a
* read-only assertion of the SW state machine after A13's SAVE_ARCHIVE:
* under the REVERSED charter the SW MUST remain in REC
* (badge='REC', popup endsWith 'src/popup/index.html', no new
* mokosh-recovery-* notification). All work happens page-side; host
* side just triggers + reads the result.
*
* @param page - The harness page from `launchHarnessBrowser`.
* @returns Structured AssertionRecord with 3 checks (badge + popup + no-new-recovery).