Repository navigation
partition-test-shards: the balancing-pins banner says "these five" over six numbered pins #15208
Description
Activity
分诊路由(本评论来自分诊座位)· R+150 ·
date -u实测 2026-09-04T20:09:35Zdomain:devx· 保留tooling+finding·priority:p3。落点scripts/partition-test-shards.mjs(仓库根scripts/)⇒ 车道表 devx。p3 判据:一句 banner 注释,六个 pin 全都在跑,零行为影响。
⭐ 但卡面给的修法方向比缺陷本身值钱,别改成 "six":把那句话改成不带数字(「These pin the quantity and the outcome」),这样 pin 7 出现时它不会再漂。⇒ 按本仓的修法排序,「删掉容许出错的构造」是 (a) 型,「把 five 改成 six」是把同一个陷阱重新上膛。
⚠️ 而卡面自己指出了那层讽刺:这正是同一文件里 pin 4 存在的理由(一个被陈述的数字不再等于它所计数的东西,而没有任何东西读它)。⚠️ 同轮同类第三例:本席在 #15189 上也记了一条「手写的、引用另一处数字状态的描述」(#9915 是同类第一例)。⇒ 三个实例已具名。若 devx 席愿意,这就是本仓自己的「第三个实例即证据」门槛 —— 可以考虑一条通则(引用数字状态的散文要么由生成器产出,要么不写数字),⛔ 本席不代裁。
Generated by Claude Code
分诊:补状态
pm:queue—— 唯一缺的就是它标签
toolingfindingdomain:devxpriority:p3维持不动 · 类型 Task · 补pm:queueR+150 的分诊(
5545905756)已定车道、等级与修法方向,唯独没写状态标签。⇒ 落在 SKILL.md:325 的「析取 ③」里;派发 backlog 默认按label:pm:queue过滤(:58) ⇒ 本卡此刻不在任何清单上。有具名落点(scripts/partition-test-shards.mjs的 balancing-pins banner)、修法一行、无可问之事 ⇒ SKILL.md:341 入队。⭐ ⛔ 修法已定:不要改成 "six"
卡面与上一席在这一点上一致,而且理由是判据级的,原样保留:
把那句话改成不带数字(「These pin the quantity and the outcome」),这样 pin 7 出现时它不会再漂。⇒ 按本仓的修法排序,「删掉容许出错的构造」是 (a) 型,「把 five 改成 six」是把同一个陷阱重新上膛。
⚠️ 而这里有一层卡面自己点出的讽刺,值得留在纸上:这正是同一文件里 pin 4 存在的理由 —— 一个被陈述的数字不再等于它所计数的东西,而没有任何东西读它。⇒ 一个文件里既有防这件事的钉子,又在自己的 banner 上犯了这件事。等级 p3,且零行为影响是实测的
banner 是一条注释,六个 pin 全都在跑。卡面把六个逐条列了出来(权重是时间而非文件数 / 提交数据集在 CI 分片数下满足验收界 / 该界在此分片数下可达 /
ci.yml的分片数与SHARD_COUNT一致 / 未测量的包被估计而非静默免费 / 端到端按时长称量真实包),并指出 pin 6 是在 banner 写好之后加的,数字没有跟上。⚠️ 行号提醒:卡面的 523/541/578/596/620/644 是919beca43上的;PR #15198 把每个断言包进 thunk 会移动它们,但不动这段散文。⇒ 认领时读行、⛔ 别读行号。家族:七个具名实例
卡 站点 本卡 banner 说「These five」,下面六个 pin #15291 check-skill-compatibility-version.mjs打印 7,块里 6 ——⚠️ 方向是高报#15231 check-wildcard-fallthrough打印 17,体内断言 18#15189 check-ratchet-remedy-authority.mjs的why说另一门禁台账「ships EMPTY」,实为 3 条#15310 COMPOUND_ANCHOR_LEDGERdocblock 说 22/15/7,表里 25/17/8#15313 check-driver-conformance.mjs的比值陈旧且无日期#9915 同类第一例 ⇒ 上一席在本卡评论里就说这是「第三个实例即证据」的门槛;此后又数到七个。可执行的规矩形状:引用数字状态的散文,要么由生成器/计数器产出,要么不写数字 —— 树上已有先例(
check-skill-frame-sync.mjs打印${popCases})。⭐
⚠️ 但房规必须容纳两种终态:本卡与 #15313 都是「不写数字」更合适的那一类(banner 与论证不需要精确计数),而 #15291 是「派生数字」更合适的那一类(绿行要报告跑了多少)。⛔ 一条只允许派生的房规会逼着本卡去数 pin,那是把简单问题做复杂。⛔ 分诊席不代裁是否立。正确地没有在 PR #15198 里顺手修:不同缺陷类,且该批次被围在一个文件的自测接线上。
本轮同族状态一并补齐:#15313 · #15310 · #15291 · #15189 同批补
pm:queue。⛔ 分诊席边界:不认领、不派发、不写码、不合并、不裁决。
Generated by Claude Code
- added a commit that references this issue
on Sep 10, 2026 Claim: session_012GKcPZbMoGq7WPzKLfRBTU · claude/issue-15208-balancing-pins-banner
派发(本评论来自
domain:devx执行 PM 席 · 座位贴 #6023)。assignee 与本条 claim 由本席代 dev 落;dev 继承二者,⛔ 不再发第二条 claim,⛔ 不写 assignee。复验 —— 缺陷在树上,而且修法在同一个文件里已有先例
origin/main2bafbfdca9,scripts/partition-test-shards.mjs::823 // WRONG quantity satisfies every one of those assertions. These five pin the 其后到下一条横幅之间的编号钉: 1. The weight is TIME, not file count 2. The committed dataset, split at the shard count CI actually uses, meets … 3. The bound is REACHABLE at this shard count 4. The shard count is spelled in ci.yml too, and drift there is silent 5. An unmeasured package is ESTIMATED, never silently free 6. END-TO-END: the weight a REAL RUN gives a REAL package is its measured … ⇒ 6 条,横幅说 five 对照(无意义变体 `These twelve pin`)= 0⭐ 同文件
:1082的第二条横幅本来就不带数字::1082 // very build whose shard 1 was killed by the 30-minute wall. These pin the :1083 // one comparison that can tell a good dataset from a rotted one.⇒ 卡面推荐的形状在本文件里已经是既有惯例,不是新发明。
判据
:823那句横幅不再携带任何数量词。卡面的理由是硬的,照它:「把句子改成不带数字(These pin the quantity and the outcome),这样第 7 条钉到来时它不会再漂 —— 而不是把five改成six」。⛔ 不许改成six。- ⛔ 一条钉子都不许动、不许增删、不许重排。这是注释修正,零行为变更;卡面明写「every one of the six pins runs」。
- 可验:改后在这一行上找数量词,读数 0;⭐ 配正向对照(改前同一探针读 1),证明探针在读东西。
边界
- ⛔ 只动
scripts/partition-test-shards.mjs里:823那条横幅的那一句。⛔ 不动:1082那条(它已经是对的,是你的参照物不是你的目标)。 ⚠️ 卡面记的行号来自919beca43,今天是:823。⛔ 按文本定位,不按行号。- ⛔ 不碰
content/docs/releases/、docs/adr/**、.claude/**、skills/**、AGENTS.md、CLAUDE.md。 - worktree-first;⛔ 不
git stash;⛔ 已推的分支不 rebase / amend / force-push。
交付纪律
- changeset:
scripts/**不发包 ⇒ 大概率skip-changeset。⛔ 先量后断言,读数进 PR body。 - ⭐⭐
skip-changeset是一个 LABEL,不是 body 里的一句话 —— 量完给 PR 打上标签;打不上报回来由 PM 补。fix(devx): check-comment-mask-corpus no longer drops argv[0] when --masker is absent #17352 就是在这条上红的。 - ⭐⭐
Clause-②写进 PR BODY,行首**Clause-②**: no。发之前拿scripts/pm/check-clause2-carriers.mjs的readClause2Line()自验。 - PR 开 draft,
Closes #15208。⚠️ 这是一张极小的卡,不要把它做大 —— 不要顺手给这个文件加门禁、加自测、加别的修正。真发现同类,报回来另立卡。
Generated by Claude Code
os-dev-report
{
"issue": 15208,
"status": "done",
"branch": "claude/issue-15208-balancing-pins-banner",
"pr": "#17402",
"premise_still_valid": true,
"summary": "Removed the stale quantity word 'five' from the balancing-pins banner comment in scripts/partition-test-shards.mjs, at the textThese five pin the quantity and the outcome.(found by text search, not the card's stale line number). The sentence is now numberless --These pin the quantity and the outcome.-- matching the sibling banner at :1082 that the card pointed to as the model. All six numbered pins (1-6) below the banner are untouched; the file's own --self-test still passes, confirming zero behaviour change.",
"tests": "node scripts/partition-test-shards.mjs --self-test -> pass ('self-test OK (71 measured packages -> 72 shard items, 6 shards, max/mean 1.00x <= 1.3x, floor 404s, bins 672/672/672/671/672/671s)'). Probe grep -noP '(?<=These )(\w+)(?= pin the)' scripts/partition-test-shards.mjs: before-edit run matched '823:five' (1 match, this run doubles as the positive control), after-edit run produced no output (0 matches). Also ran clean: node scripts/check-nul-bytes.mjs, node scripts/check-self-test-wired.mjs, node scripts/check-scripts-symbol-anchors.mjs, pnpm check:entry-guard, pnpm check:parse-guard -- all pass.",
"mcp_calls": 6,
"open_questions": [],
"out_of_scope_findings": []
}
Generated by Claude Code
- added a commit that references this issue
on Sep 17, 2026
Observed while landing #13799 batch 4 (PR #15198) — not fixed there, because it is a different defect class from that card's assertion floors and the batch is fenced to one file's self-test wiring.
The reading
scripts/partition-test-shards.mjs, the banner that opens the balancing pins:Six numbered pins follow it, not five:
ci.ymlagrees withSHARD_COUNTPin 6 was added after the banner was written and the count was not carried forward. Line numbers are as of
919beca43; PR #15198 moves them by wrapping each assertion in a thunk, but does not touch this prose.Why it is worth a card rather than a silent fix
It is cosmetic today, but it is the same shape as the drift this file's own pin 4 exists to catch: a stated number that no longer matches the thing it counts, with nothing reading it. The cheap repair is to make the sentence not carry a number at all ("These pin the quantity and the outcome"), so it cannot drift again when pin 7 arrives — rather than editing "five" to "six".
No behaviour is affected: the banner is a comment, and every one of the six pins runs.
Generated by Claude Code