docs(android): record M20 as built

Android-app#58 implements M20: the string split, the core rewording, the
StringVocabularyTest guard and weapon names. It also records three things
beyond the plan:
- Moderation and the support queue are gated on the shard capability now
  (org lead's decision, 2026-10-23);
- the guard declares src/main/res as a Test input, so Gradle can't skip it;
- an open finding: every 503 renders as "the game server is offline",
  including core's maintenance-mode 503.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
2026-10-23 01:48:36 -05:00
parent 3af919be2c
commit 8c10b5ecdb

View File

@@ -1716,6 +1716,24 @@ push, and Play (M6–M8) follow the designed app.
`PlayerNotifications.jsx`, `coreTriggers.js`, `templateSeeds.js`), which belong to `website/`,
not the app.
**Built 2026-10-23, Android-app#58 into `edge`.** 578 strings, split as 253 core / 189 UO /
136 Rust, with the 14 core strings reworded as the table above says. Three outcomes beyond the
plan:
- **Moderation and the support queue are now gated on the shard capability** (org lead,
2026-10-23). The trace found that both drawer rows carried no capability, yet both call
`/admin/shard/*`, which is module-uo's admin mount. So a moderator on a Rust-only site saw
a UO form whose every action failed. They are UO screens now, and their strings are in
`strings_uo.xml`.
- **The guard declares `src/main/res` as a Test input** in `app/build.gradle.kts`. A
reworded string changes no class, so without that input Gradle left `testDebugUnitTest`
UP-TO-DATE and the guard did not run again.
- **Found, not fixed: every 503 is "the game server is offline".** `ErrorKind.SHARD_OFFLINE`
takes every 503, and core's `siteMode` middleware also answers 503 (body
`mode: "maintenance"`) to signed-out content reads. So during maintenance, News says
*The game server is offline right now*. It said *The shard is offline* before, which was
just as wrong. A maintenance error kind, read from that body, is the likely fix. It is
outside M20 and waits for a decision.
### Deferred (not a milestone)
- **Platform Teams in the app** — **deferred 2026-08-17, no app work scheduled.** The website is