docs(m011): record approved MVP playtest evidence

This commit is contained in:
2026-09-08 21:15:16 +03:00
parent cf187bdd1c
commit a2a8f4a59d
3 changed files with 124 additions and 24 deletions
+108 -6
View File
@@ -984,7 +984,7 @@ the ESP32-C6 Flash, RAM, socket, and network limits.
## Milestone 011 — Gameplay tuning and MVP acceptance
**Status:** `IN_PROGRESS`
**Status:** `COMPLETE`
### Objective
@@ -1024,8 +1024,6 @@ Implementation is in progress. `docs/BALANCE_REPORT.md` locks the current MVP
gameplay configuration and records the deterministic maze metrics. The
playtest procedure and result table are in `docs/PLAYTEST_REPORT.md`, and the
criterion-by-criterion evidence register is in `docs/MVP_ACCEPTANCE.md`.
Representative completed-match timings and the final release build record are
still required before this milestone can be marked `COMPLETE`.
- On 2026-09-08, `bash scripts/run_host_tests.sh` passed its health, Wi-Fi,
NVS, provisioning, lobby/protocol, maze, game, disconnect-recovery, browser,
and web-asset suites. The locked 1,024-seed sweep reported cycles `133..133`,
@@ -1035,6 +1033,110 @@ still required before this milestone can be marked `COMPLETE`.
RAM bytes and 1,028,956 of 2,097,152 application bytes. The matching
`buildfs` command passed using 2,031,616 of 2,031,616 LittleFS bytes.
`docs/MVP_ACCEPTANCE.md` records version `0.10.0`, build hashes, and the
19,253-byte reproducible web payload. Human playtest evidence for the
approximately five-minute target remains pending, so Milestone 011 is
`IN_PROGRESS` and Milestone 012 has not started.
19,253-byte reproducible web payload.
- On 2026-09-08, the project owner confirmed the representative physical
two-player playtests worked as expected with no gameplay defects or balance
issues. The owner explicitly approved an evidence deviation for acceptance
criterion 2: no match count or elapsed-time statistics are required. The
approval, its scope, and the absence of a hard timer are recorded in
`docs/PLAYTEST_REPORT.md`; criterion 12 of `MVP.md` is mapped as passing by
that approved deviation in `docs/MVP_ACCEPTANCE.md`. Together with the
deterministic balance evidence, complete mapped MVP evidence, and matching
release-candidate images, this satisfies every Milestone 011 acceptance
criterion. Milestone 011 is `COMPLETE`; Milestone 012 remains `NOT_STARTED`.
## Milestone 012 — Combinatorial humorous name suggestions
**Status:** `NOT_STARTED`
### Objective
Replace the small fixed set of humorous player-name suggestions with a
deterministic, varied generator that combines a Russian adjective and noun in
the manner of Docker's random container names.
### Scope
- Define bounded Russian adjective and noun vocabularies suitable for the
player-facing lobby.
- Generate valid UTF-8 name suggestions by combining one adjective and one
noun, with a hyphen between them.
- Cycle through the available combinations deterministically before repeating.
- Skip combinations already assigned to a player session.
- Retain the existing bounded response size, protocol shape, and Russian
player-facing error behavior.
- Add deterministic host-side coverage for combination count, cycling,
uniqueness, occupied-name skipping, and valid output bounds.
### Deliverables
- Combinatorial humorous-name generator in the authoritative web gateway.
- Portable host tests covering the generator's selection rules.
- Updated protocol/lobby test evidence.
### Acceptance criteria
1. Each name suggestion has the form `adjective-noun`, uses valid UTF-8, and
satisfies the lobby name-validation limits.
2. The generator provides substantially more combinations than the previous
five fixed suggestions and does not repeat one until its configured
combination set has been traversed.
3. A currently occupied player name is never suggested.
4. Exhaustion returns the existing bounded Russian `no_suggestion` error.
5. All existing host tests and the targeted generator tests pass.
6. The firmware builds and remains within the factory partition budget.
### Evidence
Completion evidence is not yet available. Expected evidence includes the
targeted host-test output, `bash scripts/run_host_tests.sh`, and
`/home/sasa/.platformio/penv/bin/pio run -e esp32-c6-devkitm-1` output with
the final application-size report.
## Milestone 013 — Random humorous login headlines
**Status:** `NOT_STARTED`
### Objective
Make the login screen feel more lively by selecting a humorous Russian
headline at random whenever a player opens the page.
### Scope
- Expand the login screen's bounded set of player-facing Russian humorous
headlines.
- Select one headline using browser-provided randomness when the login page is
initialized.
- Provide a safe fallback when strong browser randomness is unavailable.
- Preserve the existing responsive layout, accessibility semantics, and static
asset-size constraints.
- Add deterministic browser tests by injecting or stubbing the random source.
### Deliverables
- Expanded login-headline vocabulary in the browser application.
- Random headline selection with a bounded fallback.
- Browser tests for selection, fallback behavior, and visible Russian copy.
### Acceptance criteria
1. The login screen has a substantially expanded set of humorous Russian
headlines, all appropriate for player-facing UI.
2. On separate page initializations, the application selects a headline from
the configured set using browser-provided randomness rather than a fixed
sequence.
3. If the preferred random source is unavailable or fails, the login screen
still displays a valid configured headline.
4. The selected headline remains readable and does not break the login layout
at the responsive sizes defined in `docs/UI_STYLE.md`.
5. Targeted browser tests and `bash scripts/run_host_tests.sh` pass.
6. The regenerated web asset is deterministic for a given source tree and
remains within the LittleFS payload budget.
### Evidence
Completion evidence is not yet available. Expected evidence includes targeted
browser-test output, `bash scripts/run_host_tests.sh`, and the reproducible
web-asset size and hash report from
`/home/sasa/.platformio/penv/bin/pio run -e esp32-c6-devkitm-1 --target buildfs`.