EOG reason catalog (progress)

Games that push { type: "eog", reason: "…" } need a matching apresults leaf (<uid>.EOG.<leaf> or _general.EOG.<leaf>). Regenerate English with npm run locale-en -- merge apresults --write after editing gameApresultsEn or locale-src/en/apresults/shared/_general/EOG.json.

Run node scripts/audit-eog-reasons.mjs for a per-game report (missing catalog leaves exit non-zero). Shared _general.EOG.* strings are enough for generic endings — do not duplicate them in every game file. Use --require-game-eog only when auditing game-specific copy coverage.

Implementation notes:

When adding a new ending, set reason, add English under EOG, wire aliases if needed, and extend chat parity or focused tests.