mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-09 13:01:00 +00:00
docs(planning): record phase C4 completion in STATE.md + report
i18n coverage audit: 0 gaps closed (locale files already in perfect parity by the time C4 ran sequentially after Batch 2). Audit converted to a quality-assurance sweep — extended i18n-locale-integrity.test.ts with 5 new assertions (empty values, key-equals-value-in-both-locales, TODO/FIXME markers). Detailed report: .planning/phase-C4-report.md Audit deep-dive: docs/audit/v1415-i18n-coverage.md Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
01a10de5d8
commit
81137f9011
2 files changed
+123
-3
No files matched your search
+41
-3
@@ -679,10 +679,48 @@ Deferred items (out of C3 scope):
|
||||
|
||||
### C4 — i18n coverage audit
|
||||
|
||||
- [ ] `admin.section.<slug>.*` fully populated EN+DE
|
||||
- [ ] Other namespaces audited
|
||||
- [ ] Test guards parity AND non-empty
|
||||
- [x] `admin.section.<slug>.*` fully populated EN+DE
|
||||
- [x] Other namespaces audited
|
||||
- [x] Test guards parity AND non-empty
|
||||
- Detailed report: `.planning/phase-C4-report.md`
|
||||
- Audit deep-dive: `docs/audit/v1415-i18n-coverage.md`
|
||||
|
||||
#### C4 status block — 2026-05-09T21:45+02:00 — done
|
||||
|
||||
0 gaps closed. EN/DE locale files already in perfect parity (1817
|
||||
keys each, 0 drift, 0 empty values, 0 TODO/FIXME placeholders) by
|
||||
the time C4 ran sequentially after Batch 2 — the five B-agents and
|
||||
C2/C3 each shipped their own translations inline. Audit converted to
|
||||
a quality-assurance sweep instead of a back-fill.
|
||||
|
||||
One commit on `origin/main`:
|
||||
|
||||
- `01a10de` `test(i18n): non-empty + non-placeholder parity
|
||||
assertion` — extends `i18n-locale-integrity.test.ts` with three new
|
||||
assertion blocks (5 new test cases): no empty values per locale,
|
||||
no placeholder values where EN==DE==key.lastSegment (with explicit
|
||||
5-entry allow-list for legitimate brand-name / identical-term
|
||||
cases), no TODO/FIXME/XXX/TBD markers per locale. EN-only key=value
|
||||
matches (e.g. `"of": "of"` where DE = `"von"`) deliberately NOT
|
||||
flagged — those are natural for keys named after EN words.
|
||||
|
||||
All v1.4.15 namespaces verified populated EN+DE: `admin.section.backups.*`
|
||||
(35), `achievements.*` (106), `onboarding.tour.*` (18),
|
||||
`admin.overview.*` (16), `settings.notificationStatus.*` (13),
|
||||
`settings.integrationStatus.*` (6), `doctorReport.*` (90). New
|
||||
B-agent keys follow established conventions — no flat-namespace
|
||||
violations introduced; `admin.section.<slug>.*` Phase 4b pattern
|
||||
honoured everywhere.
|
||||
|
||||
Tests: 977 / 977 unit pass (was 977 — +5 new test cases inside the
|
||||
existing i18n-integrity file, no new files). Typecheck has 3
|
||||
pre-existing errors in `dashboard-layout.test.ts` (owned by A4,
|
||||
untouched). Lint clean for C4 files.
|
||||
|
||||
Cross-agent: NO race this round. Batch 2 had finished before C4
|
||||
started; `git add <pathspec>` + commit + push landed cleanly on
|
||||
first attempt. v1.4.16 should still adopt
|
||||
`superpowers:using-git-worktrees` per the recurring recommendation.
|
||||
|
||||
### C5 — Empty-states audit
|
||||
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
# Phase C4 — i18n coverage audit (v1.4.15)
|
||||
|
||||
**Status**: done
|
||||
**Date**: 2026-05-09T21:45+02:00
|
||||
**Commit**: `01a10de` `test(i18n): non-empty + non-placeholder parity assertion`
|
||||
**Audit doc**: [`docs/audit/v1415-i18n-coverage.md`](../docs/audit/v1415-i18n-coverage.md)
|
||||
|
||||
## Result — 0 gaps closed
|
||||
|
||||
The five parallel B-agents and the C2/C3 phases each shipped their own
|
||||
EN+DE translations as part of their own commits. By the time C4 ran
|
||||
sequentially after Batch 2, both locale files were already in perfect
|
||||
parity:
|
||||
|
||||
| Check | Count |
|
||||
| ---------------------------------- | ----: |
|
||||
| Total keys (EN) | 1817 |
|
||||
| Total keys (DE) | 1817 |
|
||||
| Keys only in EN | 0 |
|
||||
| Keys only in DE | 0 |
|
||||
| Empty values | 0 |
|
||||
| TODO/FIXME placeholders | 0 |
|
||||
| Used in `src/` but missing in EN | 0 (after JSDoc/dynamic-prefix/test-fixture allow-list) |
|
||||
|
||||
All v1.4.15-introduced namespaces (`admin.section.backups.*`,
|
||||
`achievements.*`, `onboarding.tour.*`, `admin.overview.*`,
|
||||
`settings.notificationStatus.*`, `settings.integrationStatus.*`,
|
||||
`doctorReport.*`) are fully populated in both locales. New B-agent
|
||||
keys all follow the established conventions — no flat-namespace
|
||||
inconsistencies introduced; the `admin.section.<slug>.*` Phase 4b
|
||||
pattern is honoured by every new admin section (B1 backups in
|
||||
particular).
|
||||
|
||||
## What this commit changes
|
||||
|
||||
`src/lib/__tests__/i18n-locale-integrity.test.ts` — extended with
|
||||
three new assertion blocks (5 new test cases):
|
||||
|
||||
1. **No empty values** — fails on `"key": ""` in either locale.
|
||||
2. **No placeholder values** — fails when `value === keyLastSegment` in
|
||||
BOTH locales simultaneously, with an explicit `PLACEHOLDER_ALLOWLIST`
|
||||
covering the 5 legitimate cases (`settings.ntfy`,
|
||||
`classifications.bp.Optimal`, etc — brand names + identical EN/DE
|
||||
technical terms). EN-only matches like `"of": "of"` (where DE has
|
||||
`"von"`) are deliberately NOT flagged because they're natural for
|
||||
keys named after EN words.
|
||||
3. **No TODO/FIXME/XXX/TBD markers** — fails on those four words as
|
||||
whole-word matches inside any value.
|
||||
|
||||
8 tests pass (was 3; +5 new). Full unit suite 977/977 green.
|
||||
Typecheck has 3 pre-existing errors in `dashboard-layout.test.ts`
|
||||
(owned by A4, untouched). Lint clean for C4 files (11 pre-existing
|
||||
warnings, none new).
|
||||
|
||||
## What this commit does NOT change
|
||||
|
||||
- `messages/en.json` + `messages/de.json` are untouched — no
|
||||
back-fill needed.
|
||||
- No source-component renaming for naming-consistency; no offending
|
||||
flat keys found to fix.
|
||||
- The 25 EN==key cases where DE has a real translation
|
||||
(e.g. `"insights.taken": "taken"` / `"genommen"`) are left as-is —
|
||||
they're correct.
|
||||
|
||||
## Cross-agent observations
|
||||
|
||||
The shared-cwd race documented under A2 / A4 / B-mobile / B1 / B2 / B3 /
|
||||
B4 / B5 / B6 / C2 was avoided this round: C4's diff was small (2
|
||||
files: 1 new audit doc, 1 test file edit) and Batch 2 had finished
|
||||
before C4 started, so `git add <pathspec>` + `git commit` + `git push`
|
||||
landed cleanly on first attempt — no rebase, no force-push.
|
||||
|
||||
v1.4.16 should still adopt `superpowers:using-git-worktrees` per agent
|
||||
to eliminate the race for future marathons.
|
||||
|
||||
## Verification commands
|
||||
|
||||
```bash
|
||||
pnpm test src/lib/__tests__/i18n-locale-integrity.test.ts # 8/8
|
||||
pnpm test # 977/977
|
||||
pnpm lint # 0 errors, 11 warnings (pre-existing)
|
||||
```
|
||||
Reference in new issue
Block a user