Commit dbf1152
fix(cli): walk bulkActions, validation messages and datasets in i18n extract, so the coverage ratchet can see them (#14651)
* feat(cli): walk bulkActions, validation messages and datasets in i18n extract
#14253 gave three authored display surfaces their first bundle keys and a
resolver for each; the extractor walked none of them, so `os i18n extract`
scaffolded nothing and `check:i18n-coverage` — which measures against that
walk — was blind to all three.
- `objects.<o>._views.<v>.bulkActions.<def>.*` from a list view's authored
`bulkActionDefs[]`, keyed under the same `_views` root the view's own label
uses (`translateView` overlays it with `viewTranslationKey`).
- `objects.<o>._validations.<rule>.message`, with a `conditional` wrapper
contributing no key of its own — its branch supplies the violation.
- `datasets.<n>.{label,description,dimensions.<d>.label,measures.<m>.label}`,
top level because a dataset is bound by reference from N presentations.
`dataset` gets its own coverage bucket (`i18n/missing-dataset`); bulk-action
copy reports under `view` and a rule message under `object`.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016yfqQh2dBgPAymYd7xipza
* fix(cli): ratchet the i18n coverage baseline for the three new families
The three families the extract walk now visits are authored by the example
apps and untranslated for the locales those apps claim to support, so the
ratchet moves — and only there. Every unit is accounted for:
examples/app-crm 89 -> 102 (+13: 5 _validations, 8 datasets)
examples/app-showcase 393 -> 454 (+61: 18 bulkActions, 11 _validations,
32 datasets)
examples/app-todo 120 -> 146 (+26: 4 _validations, 22 datasets)
Every other line is byte-identical, including app-multi-package and all nine
packages that own an `i18n-extract.config.ts` — no package authors a
bulkActionDef, a validations[].message or a dataset, so platform bundles move
zero and `check:i18n` stays in sync across all nine.
The pre-existing per-config counts are unchanged (89 / 393 / 120 / 0 measured
again after the change), so nothing already gated was dropped: the movement is
new coverage, not a loosened gate.
Also corrects the bulk-action pin's expected key list: `pushOptional` records
an optional key with no seed, exactly as `_views.<v>.description` does, so a
def that authors no confirm copy still contributes those two keys.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016yfqQh2dBgPAymYd7xipza
* fix(cli): give the three i18n pins their `.js` import extensions
`check:type-check-debt` measured @objectstack/cli's TEST_DEBT at 171 against a
recorded 144 (+27) — the pins' own errors. Cause is the one the ledger entry
already names twice: under `moduleResolution: NodeNext` an extension-less
relative import does not resolve, so every symbol it names becomes `any` and
each file grows a TS2835 plus a TS7006 per untyped binding.
One extension per file, and the layer is back to its frozen number:
`--re-measure` now reports 22 entries re-measured, none above its recorded
number. The same one-import repair collapsed 35 -> 0 and 7 -> 0 in this very
file family before; `platform-page-i18n-parity.test.ts` already carries it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016yfqQh2dBgPAymYd7xipza
* fix(cli): re-derive the i18n coverage baseline against a main carrying #14517
PR #14517 (the New Project wizard) landed on `main` after this branch measured,
and it touched two of the showcase files these numbers are computed from. The
collision is exactly on the family this branch introduces, so the number could
not stand: `examples/app-showcase` re-derives 454 -> 450.
The move is DOWNWARD and fully attributed. #14517 added a `_validations` block
to the showcase bundle carrying zh-CN for four rule messages —
`project_status_flow`, `project_health_progression`, `end_after_start`,
`spent_within_budget` — and those are exactly the four findings that disappear:
showcase `_validations` findings 11 -> 7 (-4, no key added)
showcase bulkActions / datasets 18 / 32 (unchanged)
pre-existing count 393 (unchanged)
No new key appeared. `project_status_flow` already existed as a rule, so
#14517's rewritten message text moved its content, not its address.
Those four are the first real consumers of the key shape #14253 declared and
this branch scaffolds: an author-written refusal that now reaches a zh-CN caller
in Chinese, which the coverage gate can only see because the walk visits the
family.
Re-derived with `node scripts/check-i18n-coverage.mjs --update`, never by hand.
Every other line is byte-identical.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016yfqQh2dBgPAymYd7xipza
* fix(cli): re-derive the i18n coverage baseline against a main carrying #14709
#14709 put the remaining eight authored validation messages on the showcase's
translation channel, moving the `objects.OBJECT._validations.RULE.message`
population this branch is the first to walk. Re-derived with the repo's own
tooling (`node scripts/check-i18n-coverage.mjs --update`), never by hand.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016yfqQh2dBgPAymYd7xipza
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 4d0d944 commit dbf1152
7 files changed
Lines changed: 944 additions & 3 deletions
File tree
- .changeset
- packages/cli
- src/utils
- test
- scripts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
| 58 | + | |
58 | 59 | | |
59 | 60 | | |
60 | 61 | | |
| |||
205 | 206 | | |
206 | 207 | | |
207 | 208 | | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
208 | 218 | | |
209 | 219 | | |
210 | 220 | | |
| |||
231 | 241 | | |
232 | 242 | | |
233 | 243 | | |
| 244 | + | |
234 | 245 | | |
235 | 246 | | |
236 | 247 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
37 | 44 | | |
38 | 45 | | |
39 | 46 | | |
| |||
48 | 55 | | |
49 | 56 | | |
50 | 57 | | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
51 | 61 | | |
52 | 62 | | |
53 | 63 | | |
| |||
125 | 135 | | |
126 | 136 | | |
127 | 137 | | |
| 138 | + | |
128 | 139 | | |
129 | 140 | | |
130 | 141 | | |
| |||
274 | 285 | | |
275 | 286 | | |
276 | 287 | | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
277 | 363 | | |
278 | 364 | | |
279 | 365 | | |
| |||
424 | 510 | | |
425 | 511 | | |
426 | 512 | | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
427 | 572 | | |
428 | 573 | | |
429 | 574 | | |
| |||
862 | 1007 | | |
863 | 1008 | | |
864 | 1009 | | |
| 1010 | + | |
| 1011 | + | |
| 1012 | + | |
865 | 1013 | | |
866 | 1014 | | |
867 | 1015 | | |
| |||
974 | 1122 | | |
975 | 1123 | | |
976 | 1124 | | |
| 1125 | + | |
| 1126 | + | |
| 1127 | + | |
977 | 1128 | | |
978 | 1129 | | |
979 | 1130 | | |
| |||
1041 | 1192 | | |
1042 | 1193 | | |
1043 | 1194 | | |
| 1195 | + | |
| 1196 | + | |
| 1197 | + | |
| 1198 | + | |
| 1199 | + | |
| 1200 | + | |
| 1201 | + | |
| 1202 | + | |
| 1203 | + | |
| 1204 | + | |
| 1205 | + | |
| 1206 | + | |
| 1207 | + | |
| 1208 | + | |
| 1209 | + | |
| 1210 | + | |
| 1211 | + | |
| 1212 | + | |
| 1213 | + | |
| 1214 | + | |
| 1215 | + | |
| 1216 | + | |
| 1217 | + | |
| 1218 | + | |
| 1219 | + | |
| 1220 | + | |
| 1221 | + | |
| 1222 | + | |
| 1223 | + | |
| 1224 | + | |
| 1225 | + | |
| 1226 | + | |
| 1227 | + | |
| 1228 | + | |
| 1229 | + | |
| 1230 | + | |
| 1231 | + | |
| 1232 | + | |
| 1233 | + | |
| 1234 | + | |
| 1235 | + | |
| 1236 | + | |
| 1237 | + | |
| 1238 | + | |
| 1239 | + | |
| 1240 | + | |
| 1241 | + | |
| 1242 | + | |
| 1243 | + | |
| 1244 | + | |
| 1245 | + | |
| 1246 | + | |
| 1247 | + | |
| 1248 | + | |
| 1249 | + | |
| 1250 | + | |
| 1251 | + | |
1044 | 1252 | | |
1045 | 1253 | | |
1046 | 1254 | | |
| |||
0 commit comments