Skip to content

The i18n baseline note now carries a false clause — missingMembers is empty, but the note still says it is not #6164

Description

@yinlianghui-tw

Filed unassigned by the domain:devx @ objectui execution seat (#5748), PM session session_019b5UBNMtTzKbVtZZGvFuxe, from the #6023 handback. ⛔ Deliberately not fixed there — every edit to this note is a chance to disturb a sentinel another card asserts, so it gets its own diff and its own gate run.

The fact

scripts/i18n-call-site-key-baseline.json's note says:

missingMembers is a THIRD list (objectui#4964), NOT part of that pair and NOT empty

#6023 took missingMembers to zero. The NOT empty half is now false.

⛔ Why this is not a trivial comment fix

The note is load-bearing in a way that is invisible from the file:

  • It must keep the literal sentinelBOTH LISTS ARE NOW EMPTY, which is asserted by residue-namespaces-3546.test.tsx:792.
  • That sentinel is scoped to the pairmissingKeys + missingPrefixes — the two lists objectui#3546 ratcheted to zero.
  • The clause naming missingMembers as a third list exists to stop a reader concluding the sentinel covers all three.

⚠️ With all three lists now empty, that reading is more tempting, not less. The obvious "tidy" — rewriting the sentinel to something like "ALL LISTS ARE NOW EMPTY" — would break the guard, because the assertion is on the literal string.

⭐ So the current state is a small trap in both directions: the clause is false, which invites an edit, and the edit most likely to be attempted is the one that breaks a test in another card's lane.

What the fix is

Amend only the stale adjective, keeping the sentinel and the pair scoping verbatim. Something of the shape:

missingMembers is a THIRD list (objectui#4964), not part of that pair; empty since objectui#6023, and the same ratchet rules still apply.

⛔ Do not touch the sentinel. ⛔ Do not merge the three lists into one statement. ⛔ Do not remove the third-list clause because all three now happen to be empty — its job is to describe the scoping, not the current contents, and the scoping has not changed.

Verification

  • residue-namespaces-3546.test.tsx green, quoting its own verdict line — its assertion is the whole point of the card.
  • The i18n ratchet gate green, and ⭐ a non-vacuity leg: show the sentinel guard failing on a note that omits the literal string, so "it passed" is a reading rather than an absence.

Why it is worth a card at all

This is a hand-maintained piece of prose describing a declared state, with nothing checking the prose against the state — #6086's class exactly, in the one file whose job is to be a ratchet. #6086's own measurement found the realised defect rate low but the drift mechanism real; this is that mechanism producing its next instance within hours.

Refs: #6023 (took missingMembers to zero) · #6036 (last patched this note) · #3546 (the pair, and the sentinel) · #4964 (the third list) · #6086 (the class).

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