Correct 17 false behavioral claims in skills/objectstack-i18n — sweep flight ⑧ - #13833
Conversation
…implementation Flight 8 of the published-skills factual sweep (#13658). Every correction is settled against the implementing code plus an executed probe; net -1 line. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EnE7G31tqbxN1rqpQmzurT
…en ratchet The corrections in the previous commit were factually right but grew SKILL.md by 124 tokens against a ceiling that only ever shrinks. Same facts, fewer bytes: enumerations point at the authority instead of transcribing it, and duplicated prose around the retired o.* dialect is stated once. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EnE7G31tqbxN1rqpQmzurT
Contract review — PASS at head
|
Fixes #13815
Part of #13658
Flight ⑧ of the published-skills factual sweep:
skills/objectstack-i18n/**(3 files, 807 lines at branch point). Every claim was settled against the implementing code plus an executed probe — never against another document. 17 distinct false facts across 20 landing sites; net −8 lines, −2 tokens (SKILL.md 6337/6338, evals/README.md 410/411 — both shrink, no ceiling touched).references/_index.mdis generator-owned and was not hand-edited;check:skill-refsis green against it.Where the truth was read
packages/spec/src/system/translation.zod.tspackages/spec/src/contracts/i18n-service.tspackages/services/service-i18n/src/{file-i18n-adapter,i18n-service-plugin}.ts·packages/core/src/fallbacks/memory-i18n.tspackages/core/src/fallbacks/authored-translation-sync.tspackages/cli/src/commands/i18n/{check,extract}.ts·packages/cli/src/utils/i18n-{coverage,extract}.tspackages/lint/src/validate-translation-references.tsexamples/app-crm/src/translations/·examples/app-todo/src/translations/Per-item corrections
labelis required)"label: z.string().optional(), with a schema comment arguing partial translation is the normal state_tabsrow_tabs.{tab_name}— a live authorable surface (resolveTabLabel), extracted and coverage-gated_actionsholdslabel,confirmText,successMessage,params,resultDialogdescriptionadded — declared on the action translation shape_sectionsholds "Form section / tablabel"label" — tabs are their own group, now row 2 aboveobjects"apps,messages,globalActions,dashboards,settings,metadataForms,settingsCommonpagesandflowsadded — 10 groups on the shape, not 8settingsCommon, and object content omits tabs[i18n] … — skippedwarning naming the row. Not silento.*dialect"reports,notifications,errors,namespace), so "naming the group to use instead" was false for themo.*Shape"defineTranslationBundlethrows on a file bundle. The file door was closed at the same time as the item dooros i18n check{locale}.objects.generated.ts… Other flags:--default-locale,--filter,--dry-run,--json"{locale}.metadata-forms.generated.tscompanion is written by default; four more flags exist (--no-merge,--no-objects-only,--metadata-forms,--source-hashes), so the list now points at--helpinstead of claiming to be completegetLocales()/getDefaultLocale()/setDefaultLocale()setSupportedLocales()added — on the contract and implemented by both shipped adaptersgetCoverage,suggestTranslations— no shipped implementation provides"getFieldLabelsadded — same class exactly: declared optional, probed by both serving surfaces, implemented by no shipped providerTranslationDiffItem=key,status,locale,sourceHash, AI fieldsobjectNameaddedflows.{name}.screens.{node}too{en,zh-CN}.ts+index.ts)"examples/app-todoalone, and it ships three localessrc/translations/index.ts… Locale files:{en,zh-CN,ja-JP,es-ES}.ts"examples/app-crmhas one file,crm.translation.ts, holdingen+zh-CN. Noindex.ts, no per-locale files, noja-JP/es-ESobjects.account.fields.*crm_accountos i18n check"extract --checksection says so. Now points at the gate that canobjects.*vs secondaryo.*format"o.*is rejected" — a grader taught the retired dialect is a live secondary format fails correct answersmessageFormatknob was removed and nothing evaluates ICU stringsRows 4, 6, 19 are the second landing sites of facts 2, 5 and 18; 17 distinct facts, 20 sites, plus 2 rubric rows.
Executed evidence
Two probe scripts (temporary, removed before commit — this diff is 2 markdown files). Built first:
@objectstack/service-i18n...,@objectstack/lint...,@objectstack/platform-objects...(exit 0 each), so every read is against rebuiltdist, not stale declarations.Schema/adapter probe, run from
packages/services/service-i18n:CLI probe (
tsx,packages/cli), driving the real walker and coverage detector:The non-vacuity control is satisfied many times over: facts 1, 2, 3, 5, 8, 9, 10, 13, 14 were each decided by a run, not a read.
Gates — all run at
5d16fd477(the final commit)Families derived from the real diff with
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack(exit 0; 14 families, re-derived unchanged on the final commit), plus the skill-specific gates the derivation scores silent because they compute their own population:check-ci-filter-parity·check-cross-package-test-inputs·check-shard-attestationcheck-skills-token-ratchetcheck:doc-formula-expressions·check:agent-test-spelling·check:corpus-claim-driftcheck:cross-package-test-inputs·check:doc-authoring·check:pm-governed-mergescheck:role-word·check:skill-compatibility·check:skill-frame-synccheck:nul-bytes·check:pm-skill-ratchet·check:pm-skill-id-lint·check:skill-frame-freshness@objectstack/spec check:skill-examplesos:checkfences)@objectstack/spec check:skill-refs·check:skill-docspnpm lint(repo-wideeslint . --no-inline-config)check-test-completenessturbo run testlog and none exists locally; its own text says exit 3 "is not a red, and there is nothing here to fix"ESLint was run whole rather than narrowed, and separately measured: both changed files report
File ignored because no matching configuration was supplied— markdown is outside the linted population entirely (nofilesblock ineslint.config.mjsnames.md).Pure
skills/**diff, nothing published from any package —skip-changesetapplies, matching flights ③/④/⑤ which landed the same shape with no changeset.Governed surface
Published
skills/**: this PR stays draft and is for the maintainer to merge.needs:contract-reviewis attached to this PR and to card #13815 in the same stroke (批 #12 clause ② CONTENT limb) and is never self-cleared.Generated by Claude Code
Generated by Claude Code