Skip to content

A third hand-maintained integer in prose — sharing-coverage.test.ts says "the other 14 zh-Hans doc pages" where 21 use the word, and 0 use the spelling it contrasts against #1310

Description

@hotlong

Filed by the repo:hotcrm PM seat on behalf of the #1188 dev, which found it and could not file it: that seat gets HTTP 403 from api.github.com and its dispatch contract forbids the MCP issue tools for the dedupe read that must precede filing. It reported instead of filing blind or withholding, which was the right call. Dedupe search run here before filing: no existing card covers it (#1188 and #1282 are the two siblings, both closed by this round's PRs).

The drift

test/sharing-coverage.test.ts:580-583, in the comment above the crm_campaign row of the object-label table:

// zh-Hans is 「营销活动」, the label the locale pack ships (`zh-CN.ts`
// `objects.crm_campaign.label`) and the word the other 14 zh-Hans doc pages
// already used. This row read 「市场活动」 until #830, which left the master
// spelled one way and the detail below spelled the other on the same page.
crm_campaign: { en: 'Campaign', 'zh-Hans': '营销活动', 'zh-Hant': '行銷活動' },

Measured on origin/main @ cd198f10, independently by the dev and re-run by this seat:

67  total .zh-Hans.mdx pages under content/docs   ← control term: the search reached the corpus
21  of them contain 营销活动
 0  contain 市场活动 (the pre-#830 spelling the sentence contrasts against)

The comment says 14. It is 21. Same class as #1188 (the "15 lookups on sys_user" figure) and #1282 (the "eight authored records" figure) — a counted fact stated in prose with no producer and nothing checking it.

⚠️ This one differs from its two siblings in the way that matters

#1188's integer was correct on the day it was found (15, by coincidence — #1181 removing crm_account.renewal_owner happened to bring it back). #1282's was wrong by one and the file contradicted itself two hundred lines later.

This one is wrong by seven and nothing in the file disagrees with it. There is no internal contradiction to trip over, so it reads as a measurement to every subsequent reader — which is exactly the failure mode the class produces. It is the strongest of the three arguments that the number itself is the defect, not its current value.

Fix direction — same ruling as #1188 and #1282: delete the numeral, do not pin it

The sentence's load-bearing claim is:

「营销活动」 is the label the locale pack ships (zh-CN.ts objects.crm_campaign.label) and the word the zh-Hans doc pages already use.

That is complete and correct without any count, and it is stronger: a universal cannot be falsified by the next page someone writes. Both halves of it have real producers — the locale pack is a file, and "the docs already use it" is checkable by grep at any time.

⛔ Do not add a guard that counts the pages and asserts the integer. That creates one more hand-maintained number and merely puts a lock on it; ADR-0049 axis ③ is against it — an author editing that integer changes nothing a user sees, and the guard would only convert silent drift into red on every new zh-Hans page.

⚠️ The second half of the comment ("This row read 「市场活动」 until #830, which left the master spelled one way and the detail below spelled the other on the same page") is history with a producer — the #830 PR — and should stay. The measurement above confirms it discharged cleanly: 0 pages still carry the old spelling.

Scope

One file, one sentence: test/sharing-coverage.test.ts ~:581, the numeral only. The table row itself, the assertions, and the #810 comment below it are all out of scope.

⚠️ Fence note for whoever picks this up: test/sharing-coverage.test.ts is not in #1307's six-file list, so it is free once that card lands. It is also the 6th-largest file in the scanned trees (66,068 B, 64.5% of the byte cap) — see the sibling card filed alongside this one; ⛔ do not grow it.

Related

Activity

  1. added
    documentationImprovements or additions to documentation
    pm:queueReady for the PM dispatch loop
    on Aug 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationpm:dispatchedDispatched to a dev agent by /pm-dispatch

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions