Drives in a real browser the reader workflows v1 proved only through the API
or the component suite, including an export that leaves the browser as a
file. Final run: 91 checks (the 38 existing M11 checks plus 53 new), 0 failed,
0 skipped, on the production build over trusted-LAN HTTPS.
- tools/m11_browser.py: scenarios for Retry and takes, Save Point create /
restore / Redo, state correction (accepted, and a refused correction with
its reason), narration length reaching each turn's prompt, failed
generation (an unserved model blocked up front; a listed model that cannot
narrate failing in the open) and recovery, and export download from the
library and from campaign settings, imported into a fresh application.
Rows are tagged M11 / WP-C and counted separately; --only for development.
The M11 checks now wait on conditions instead of sleeping.
- tools/m11_webdriver.py: Firefox download preferences, a $HOME-only
download folder, a download wait that ignores partial, empty, pre-existing
and still-growing files, centred real clicks, tabs, and condition waits.
- tests/test_v11_c_browser_helpers.py: the download wait, prefs and $HOME
guard, without a browser.
- frontend: a correction the story refused was presented as "Generation
failed" with a Retry offer and a typed-input claim. It is now "That
correction was not applied", not retryable, with the reason kept
(errors.js, FailureNotice.jsx; 3 regression tests).
- DEVELOPMENT.md: the harness command, download profile and $HOME rule,
what counts as a finished download, and the no-sleep rule.
- docs: V1.1-PLAN, VERSION v4.4, planning README,
reports/v1.1/V1.1-WP-C-REPORT.md.
Open for the owner: "Correct" on an Important Facts row is always refused
(K1), and a partly refused correction is not reachable from the reader UI.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VvegagkhuCZoFPdv4M1egY