docs(08-10): record the checkpoint decision and carry the Playwright UI matrix gap forward

scripts/check-phase8.sh's final gate ran once with every stage green except
stage_ui_harness's Playwright browser matrix, a deliberate fatal() never
authored by 08-05. The user approved closing Phase 8 with this gap carried
forward; 08-VALIDATION.md flips 08-W0-07 green, marks 08-W0-08 partially
verified, and sets nyquist_compliant: false honestly. deferred-items.md
records what the follow-up spec needs to do.
This commit is contained in:
Jakub Zych
2026-09-24 00:56:20 +02:00
parent e562bf6f5b
commit 2d551c09d7
2 changed files with 85 additions and 13 deletions

View File

@@ -66,3 +66,59 @@ gate on two of three full runs, so it was fixed in `summercms.go` commit
`test(fetchguard): widen streaming-cap ceiling to stop flake under parallel
runs`. The ceiling moved from 64 KiB to 1 MiB; the assertion still proves the
client does not buffer an unbounded body (the handler would reach 8 MiB).
## Follow-up: Playwright UI matrix for scripts/check-phase8-ui.mjs --final-gate
**Found during:** 08-10 Task 3, the sole real execution of
`scripts/check-phase8.sh` (2026-09-24).
**What is missing:** `scripts/check-phase8-ui.mjs`'s `--final-gate` mode
(`runFinalGate()`, `scripts/check-phase8-ui.mjs:436-459`) runs
`verify:oauth-return-path` and `verify:oauth-i18n` for real, then reaches a
deliberate `fatal('--final-gate Playwright matrix wiring is 08-10's
responsibility; not implemented in 08-05.')` at line 458. The 32-scenario
`SCENARIOS` catalog (08-UI-SPEC.md's complete state/accessibility/
responsive/i18n matrix) is fully authored and self-tested for completeness
by `--contract-self-test`, but no Playwright spec file consumes it and no
Playwright config exists to run one. Specifically still needed:
- A Playwright config and spec file living outside the `vue-fonoteka-app`
Nuxt checkout (08-UI-SPEC.md's Non-Redesign Rule: this harness must never
write inside the Nuxt checkout or add a registry component there), that
imports/consumes the versioned `SCENARIOS` catalog already in
`check-phase8-ui.mjs` so the spec and the scenario data cannot drift apart.
- `NUXT_DEV_BACKEND_ORIGIN` (or an equivalent env var) wired from the spec's
Playwright config to the ephemeral Go app `scripts/check-phase8.sh` boots
for the gate run, so the real Nuxt dev/preview server the Playwright
browser drives talks to the disposable gate backend instead of a
developer's local backend.
- A real login through the assembled Go backend (not a mocked network
response) for every scenario that is not explicitly declared
network-intercepted in the `SCENARIOS` catalog (see the catalog's own
`no-request` / `redirect-to-login-with-return` scenarios, which assert the
*absence* of a network call and must stay mocked).
- DOM assertions against `app/pages/connect.vue`,
`app/components/fonoteka/ConsentScopePicker.vue`, and
`app/components/fonoteka/ConnectedAppsManager.vue` (the three guarded Nuxt
source files `check-phase8-ui.mjs` hashes at
`scripts/check-phase8-ui.mjs:57-59`), selected via their existing
`data-testid` attributes, matching each scenario's expected state.
**Failing identifier:** `scripts/check-phase8-ui.mjs --final-gate` ->
stage `stage_ui_harness` (`scripts/check-phase8.sh:426-431`) -> fatal message
`--final-gate Playwright matrix wiring is 08-10's responsibility; not
implemented in 08-05.` (`scripts/check-phase8-ui.mjs:458`).
**Disposition:** the user approved closing Phase 8 on 2026-09-24 with this
gap carried forward as a named follow-up ("Approve, carry gap forward" —
08-10 Task 3 checkpoint decision). Every other `scripts/check-phase8.sh`
stage ran green in that same gate execution: docker preflight, Postgres,
app boot, the real unchanged `fonoteka-mcp` lifecycle (discovery, DCR, PKCE
authorize, JWT consent, token, tool call, refresh, replay, revoke), both
repositories' vet/test/race, the 169/169 parity corpus, the secret scan, the
6/6 OAuth return-path checks, the 74-key i18n check, the unchanged-client
diff, and the security review (11/11 threats closed, 0 open). The gate script
must keep failing closed on `stage_ui_harness` until the Playwright spec
above exists -- do not weaken, skip, or stub that stage to close this gap.
Whichever future plan authors the spec should also flip 08-VALIDATION.md's
08-W0-08 row and `nyquist_compliant` back to fully green.