You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(cli): os i18n check counts the coverage an app actually owns
`collectExpectedEntries` walks the Studio metadata-form registries
unconditionally, so every stack's expected set carries ~773
`metadataForms.*` keys that `@objectstack/platform-objects` translates and
the runtime serves. `os lint` hides them and says so; `os i18n extract` has
`--no-metadata-forms`; `os i18n check` — the one command that publishes a
PERCENTAGE — carried them in its denominator, so an application with its own
surface fully translated read 38.9% and `--strict` / `--threshold` could not
gate it.
Ownership is now OBSERVED rather than assumed: the baseline counts when the
stack itself ships those translations, and does not when it does not. That
keeps the package which owns the family gated with no flag, which an
unconditional exclusion would not. `--include-platform` (`os lint`'s own
spelling) and `--no-include-platform` force either way.
`os lint` is unchanged: the shared seam still defaults to counting the
baseline, because lint folds it away one seam later and counts what it folded
for its own hint line.
Claude-Session: https://claude.ai/code/session_015QE8qk46e5CHJxyQEUjbf8
Co-authored-by: Claude <noreply@anthropic.com>
description: 'List every missing key (otherwise the first 20 per locale are shown)',
80
120
}),
121
+
// The same flag NAME and the same default as `os lint`, deliberately: this
122
+
// command was the odd one out of three, and a third vocabulary for one
123
+
// decision is what made an author go read the source to find out whether
124
+
// the platform bucket counts. `os i18n extract` spells its half
125
+
// `--no-metadata-forms`, which selects an emitted FILE SET rather than a
126
+
// gated population — see the table in the module note at the top of this
127
+
// file.
128
+
//
129
+
// `allowNo` gives the third state a percentage gate needs. Absent, the
130
+
// decision is `auto` — observed from the config, so neither an app nor the
131
+
// platform package has to discover a flag to get the right number.
132
+
// `--include-platform` forces the baseline in; `--no-include-platform`
133
+
// forces it out, for a package that ships a partial baseline and does not
134
+
// intend to own the rest of it.
135
+
'include-platform': Flags.boolean({
136
+
allowNo: true,
137
+
description:
138
+
'Count platform built-in metadata forms toward coverage (default: only when this stack ships their translations — the platform packages own them otherwise)',
0 commit comments