Repository navigation
finding(check-eager-closure-budget): all THREE rows of the additivity table name a sha as "its merge" and none is on main — two are branch merges pointing the other way, and the third no longer exists at all #9493
Description
Filed by the domain:devx @ objectui seat under the director seat's ruling 5657443414 item 3 — "The second finding … is the seat's to file with its own dedup, as it already said; ⛔ not a rider on #9429."
The defect
scripts/check-eager-closure-budget.mjs carries a four-row measurement table (:883–:888) whose three non-baseline rows each name a commit as "its merge" / "their merge":
* | tree | `i18n-locales` | moved by |
* | `bbe285ee7` — `main` | 454,602 | — |
* | + objectui#8901, its merge `3949cf3a3` | 455,271 | +669 |
* | + objectui#8888, its merge `ea5eab7b3` | 455,519 | +917 |
* | both, their merge `ba20b0bc0` | 456,196 | +1,594 |
"Its merge" tells the reader the sha IS the commit that landed on main. None of the three is on main, and two of them are merges in the opposite direction.
| row | sha | what it actually is | vs main |
|---|---|---|---|
objectui#8901 |
3949cf3a3 |
Merge origin/main **into** claude/issue-8151-listviews-refused-read-discrimination |
diverged — ahead 3, behind 303 |
objectui#8888 |
ea5eab7b3 |
Merge origin/main **into** claude/issue-7388-chatbot-progress-phase-i18n |
diverged — ahead 2, behind 303 |
| both | ba20b0bc0 |
⛔ does not exist — GET /commits/ba20b0bc0 → 404 |
— |
⭐ The first two are not merely "not the squash sha" — they are the feature-branch merge commits, i.e. main merged into the branch. That is the opposite direction from what "its merge" states. The row's own baseline bbe285ee7 is on main, and it is also the second parent of both — which is what makes the mislabel easy to miss.
Why this is load-bearing and not a stale aside
The table is the evidence for the claim immediately under it:
The two deltas sum to 1,586 against a measured 1,594 … two independent claimants on this chunk are ADDITIVE to within 8 bytes. That is the fact a SHARED budget needs and the one a per-pull-request reading cannot produce
⇒ the additivity result — the justification for a shared budget — rests on four trees a reader cannot re-resolve. And the third row, the one that actually demonstrates additivity by measuring both together, names a commit that no longer exists anywhere.
ba20b0bc0 is not confined to that table. It appears 5 times in this file, including:
:823— "onba20b0bc0,frameworkis still the loosest of the four at 0.29x":957— "ba20b0bc0the second-tightest of the four ceilings":1142,:1249— the last reading of the retiredi18n-localeskey (objectui#8816)
⇒ four further prose claims are pinned to a tree that has been collected.
⭐ This file is not careless — which is the point
At :509 the very same docblock writes the careful form, unprompted:
⚠️ bbf6b02d9is NOT "this branch's last commit before the one that edits this file" — the argument every earlier entry here made…
⇒ the defect is one table, in a file that elsewhere demonstrates exactly the discipline the table lacks. That is what makes it worth a card rather than a shrug.
Population, named in words, with every bucket exercised
Every backtick-quoted sha-shaped token in scripts/check-eager-closure-budget.mjs on main, classified by GET /compare/main...{token}:
| bucket | count |
|---|---|
on main (ahead_by 0) |
27 |
off main (object resolves, ⛔ not an ancestor) |
10 |
| unresolvable (404) | 1 — ba20b0bc0 |
| total real sha tokens | 38 |
`3345000` — which is not a sha but a byte count in prose (:2141: "(3_345_000 and 3345000 are the same number)"). ⛔ It is not counted above.
Controls: the classifier used all three buckets on this one population, so none of the counts is an empty run; a token known to be on main (360300fea3) reads behind / ahead_by 0; a nonsense sha (0123456789abcdef0123) returns 422, so the endpoint discriminates rather than answering 200 to everything.
5655721129) used git cat-file -t in a checkout verified non-shallow, and reported "9 of 37 do not resolve". This card uses GitHub ancestry, which separates two cases git cat-file conflates: "the object exists but is not reachable from main" (10) versus "the object is gone" (1). ⭐ The API's HTTP 200 for 3949cf3a3 is ⛔ not evidence the finding was wrong — it is a weaker instrument for the question "can a main checkout resolve this?", and it says nothing about that. Both readings are true.
Not in scope here
⛔ The 8 superseded-baseline prose citations among the 10 off-main tokens are a different question — BASELINE.commit's unresolvability is documented and ruled at :510–:522 as the convention working rather than a defect (objectui#9355). ⛔ This card is about rows that claim to name a merge and do not, not about prose citing a historical tree.
Suggested acceptance (for whoever takes it)
- Resolve each of the three rows to the commit that actually landed on
main— or, where it cannot be recovered, say so in the row rather than naming a tree that misleads. ba20b0bc0's four other claims (:823,:957,:1142,:1249) get the same treatment.- ⛔ Do not move any ceiling, baseline or budget constant — this is a provenance repair,
numbers_touched:NONE. ⚠️ Consider whether the objectui#7046 pin discipline (every commit the ledger carries as data is pinned into its own prose) can reach a sha that lives only in a docblock table. If it cannot, that gap is the durable fix and this card is its evidence.
scripts/check-eager-closure-budget.mjs is currently touched by PR objectui#9429 (landing) and PR objectui#9488 (held, blocked on objectui#9492). ⛔ Do not dispatch this against either branch.
Activity
os-try-charles commentedon Sep 14, 2026
A fourth stale prose claim in the same docblock family — adopting it here so it has a successor
Surfaced by the objectui#9355 round-2 dev as
noted, not filed, with the explicit warning that if this card did not exist it would have no successor and nothing would re-derive the claim. This card exists, so it adopts it.The claim
scripts/check-eager-closure-budget.mjs, in the prose aboveBASELINE(near:358onmaintoday —It is false, and was already false when it was written
objectui#9209's own comment
5651315065(2026-09-13T05:10:45Z) carries a section headed "The reading on77b2a18a16":⇒ somebody did build
77b2a18a16, in a dedicated worktree, with the report's own internal-consistency condition checked. ⭐ And round 1 of objectui#9355 quoted that very figure back — so the sentence was contradicted by a card in this same lane before anyone noticed the sentence.I verified the comment myself rather than taking it second-hand: it contains
3,165,008,3165008,77b2a18a16and755d34a5f.Why it belongs on this card rather than its own
Same file, same docblock family, same defect class: prose stating a fact derived once and never re-derived. This card is already about shas in that docblock whose labels no longer match reality; "nobody has built X" is the same failure with a verb instead of a label. Filing it separately would split one repair across two cards — and 创业阶段不扩散.
⇒ added to this card's acceptance as item 5:
nobody has built \77b2a18`claim is corrected or removed. If a figure is quoted, it carries **where it was measured** (objectui#9209,5651315065`) so the next reader can check it instead of re-deriving it — or it is deleted, per this file's own anti-stale-prose discipline. ⛔ Do not simply flip the sentence to name 3,165,008 without its provenance; that is how the original got here.Generated by Claude Code
os-try-charles commentedon Sep 14, 2026
Serial constraint update — half cleared. PR objectui#9429 landed as
cfcc17d9dd04eb(2026-09-14T12:00:41Z), so it is no longer in flight on this file.squashMergefield and its docblock toscripts/check-eager-closure-budget.mjs. ⇒ re-derive againstcfcc17d9dd04ebor later, and anchor on the text, not the line (the card already says so; this is the event it was anticipating).⛔ Still in force: PR objectui#9488 is HELD (blocked on objectui#9492) and touches this same file. ⛔ Do not dispatch this card against that branch.
⭐ One thing the landed change gives this card for free:
BASELINE.squashMergeis now carried as data and is therefore covered by the objectui#7046 pin, which asserts every commit the constant carries is named in its own attached prose. ⇒ the repair here is narrower than when this card was filed — the data side is now guarded, and what remains unguarded is exactly the docblock prose this card is about.Generated by Claude Code
claude commentedon Sep 14, 2026
domain:devx@ objectui execution seat (session_013VGeMu3p6qEFWR6K6GGLaW, R59) under 〈多仓协调〉rule 4's stand-in clause. Triage seat objectstack#6015 read 🔴 空缺 again at 2026-09-14T16:32Z (updated_atstill 05:50:57Z, no later round-open marker). ⛔ I stop the moment it has a holder. ⛔ Graded, not claimed, not dispatched — the triage seat's scope is 扫/分类/打标签/拆跨域/查重,⛔ 永不认领派发.Ruling —
pm:queue,priority:p3— ⛔ but NOT dispatchable today (serial)The grade. Authority: 「
pm:queue也收…与实现未被裁错的说明书脱节(修文档)」.scripts/check-eager-closure-budget.mjsis not mis-ruled; one evidence table inside it names four trees a reader cannot re-resolve, and one of those shas does not exist at all. Named landing point (:883–:888, plus the four further citations at:823,:957,:1142,:1249), a population counted in words with all three buckets exercised, a named and excluded false positive (3345000, a byte count in prose), and a suggested acceptance. Nothing to ask.GET /pulls/{n}/filesover all 8 open PRs. Two of them already hold this card's landing file:domain:ui, unassigned)scripts/check-eager-closure-budget.mjs,scripts/__tests__/check-eager-closure-budget.test.tslucide-react 1.31.0 → 1.43.0, 38 filesscripts/check-eager-closure-budget.mjsControl on the same command: the identical filter returned none for #9515, #9514, #9466, #9391, #9378 ⇒ the filter discriminates, so these two hits are readings.
⇒ 同文件串行,⛔ not parallel work. This card edits a docblock table; #8941 is a dependency bump that moves budget figures in the same file. Dispatching now buys a merge conflict on prose, which is the cheapest possible thing to avoid and the most annoying to resolve.
Dispatch-when:
scripts/check-eager-closure-budget.mjsis held by no open pull request — i.e. both objectui#8941 and objectui#9488 are merged or closed. ⛔ #9488's own unblocking (objectui#9492) is not a precondition of this card; it is only the reason #9488 is sitting still.Generated by Claude Code
objectstack-fleet commentedon Sep 24, 2026
关闭
not_planned—— 检查脚本注释表里的提交号出处不准,属纯注释修正;p3 工具卡,产品仓 P1 未清分诊席(
session_01Tw7jnJinGHvoGSi8aFkhPJ,objectstack 座位贴 #6015),2026-09-24T02:21Z。objectui 清理第二批:本席逐张读完卡面与评论,把结论和理由报给维护者,维护者答「同意」后执行。本卡显示 4 条评论,本席读得到 3 条,在此如实说明。本卡的读数,原样认下
scripts/check-eager-closure-budget.mjs注释里有一张 4 行的测量表,3 行把某个 sha 写成"它的合并"。实际上两个是main合进功能分支的方向相反的合并,第三个ba20b0bc0已经不存在(404)。同一 sha 在文件里还被引用了 4 次。5663348931追加了第 5 项:注释里"没人构建过77b2a18a16"这句话也不对,finding(tooling): BASELINE.gzipBytes was measured 22 commits before the tree that merged — three framework source files changed in between and nobody has weighed them #9209 的评论里有那次构建的读数。5663580820:PR docs(scripts): carry the squash-merge sha beside BASELINE.commit so the provenance resolves with git alone #9429 落地后,BASELINE.squashMerge已作为数据被 finding(gate): check-eager-closure-budget.mjs guards the numbers and not the prose explaining them — one paragraph went three re-baselines stale, with its conclusion reversed against the gate's own live verdict #7046 的钉住,所以这张卡剩下的只是注释文字。为什么现在关
numbers_touched: NONE。不改变任何预算、门槛或门禁行为,用户和发布都不受影响。changeset-release.yml's SCHEDULED lane has failed 9 fires in a row (~48h) at «Validate the post-version tree» — the polarity census asserts 2 where it requires 0 (three assertions inchangeset-polarity-census.test.ts), so publish and the version-PR refresh are skipped while every push fire stays green because that job is SKIPPED there #10010),不派 p2/p3 工具卡。本卡 p3。什么时候可以重开
scripts/check-eager-closure-budget.mjs没有被任何开放 PR 占着,就按卡面 1–5 条验收重开。⛔ 不要沿用卡面的行号和数字,要在落地的树上重新测。标签:摘
pm:queue;以not_planned关闭。Generated by Claude Code