Skip to content

[finding] Two more statements in the i18n baseline went stale with missingMembers — both outside #6164's one-clause scope #6179

Description

@yinlianghui-tw

Filed unassigned from the #6164 implementation round (branch claude/issue-6164-baseline-note-clause). #6164's dispatch order scoped that PR to one clause — the NOT empty assertion — and explicitly forbade touching anything else in the file. These two are the rest of what the same merge falsified. Reported, not fixed.

The two statements

Both in scripts/i18n-call-site-key-baseline.json, both made false when #6023 / PR #6163 took missingMembers to zero, and both still present after #6164's fix.

1. note, last sentence (elements 13-14, joined):

the sentence above counts missingKeys and missingPrefixes only, never all three. It holds debt the exact-member check MEASURED on its first run, not debt this repo took on.

It holds debt is present tense about a list that is now {}. The point of the sentence — that whatever the list held was measured by the check rather than taken on by this repo — is still worth saying; only the tense is wrong.

2. //missingMembers, last element:

Both entries below were measured by the check's first run, not created by it.

There are now zero entries below, so Both entries below names things that are not there.

Why they were left

#6164 exists precisely because every edit to this note risks a sentinel another card asserts. Its order reads SCOPE — one clause and git diff should be one clause, and the PR's own claim is "the sentinel still works" — a claim that gets weaker, not stronger, the more prose moves in the same diff. Widening scope on my own judgement would have spent that card's whole safety margin on prose that is not load-bearing.

Constraints for whoever picks this up

Same trap as #6164, and it has two literal sentinels, not one. packages/i18n/src/__tests__/residue-namespaces-3546.test.tsx:792-793 asserts on the joined note array:

expect(baseline.note.join(' ')).toContain('BOTH LISTS ARE NOW EMPTY');
expect(baseline.note.join(' ')).toContain('fails the build');
  • Statement 1 is inside note, so it is under both assertions. fails the build occurs twice in note (elements 1 and 11) and once in //missingMembers; only the two in note count toward the assertion. Verified by ablation on The i18n baseline note now carries a false clause — missingMembers is empty, but the note still says it is not #6164's branch: mutating just those two reddens the guard while the sentinel is still present.
  • Because the assertion is on the joined array, it is insensitive to how prose splits across elements but sensitive to the join spaces — merging or splitting elements mid-phrase breaks it silently.
  • Statement 2 is in //missingMembers, which no test asserts on (grep for baseline.note finds only those two lines; organization-namespace-3546.test.tsx reads missingKeys/missingPrefixes only). It is the lower-risk of the two.

Worth a card at all?

Same class as #6086 and #6164 itself: hand-maintained prose describing a declared state, with nothing checking the prose against the state, in the one file whose job is to be a ratchet. This is the third instance from a single merge, which is the argument for the class rather than for any one instance. A PM may reasonably decide the tense of a comment is below the line — that decision is the point of filing rather than fixing.

Refs: #6164 (the one-clause fix, this finding's parent context) · #6023 / PR #6163 (the merge that falsified all three) · #6036 (last edit before that) · #3546 (the guard and both its assertions) · #4964 (the third list) · #6086 (the class).


Generated by Claude Code

Metadata

Metadata

Labels

domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repofindingpm:dispatched

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions