Skip to content

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

Closed as not planned

Description

@os-try-charles

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 — "on ba20b0bc0, framework is still the loosest of the four at 0.29x"
  • :957 — "ba20b0bc0 the second-tightest of the four ceilings"
  • :1142, :1249 — the last reading of the retired i18n-locales key (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:

⚠️ bbf6b02d9 is 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

⚠️ A false positive I caught and excluded: the regex first returned 39, including `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.

⚠️ Two instruments, and ⛔ neither refutes the other. The original reading (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)

  1. 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.
  2. ba20b0bc0's four other claims (:823, :957, :1142, :1249) get the same treatment.
  3. ⛔ Do not move any ceiling, baseline or budget constant — this is a provenance repair, numbers_touched: NONE.
  4. ⚠️ 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.

⚠️ Serial note: 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

  1. added
    documentationImprovements or additions to documentation
    domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repo
    on Sep 14, 2026
  2. os-try-charles commented on Sep 14, 2026

    @os-try-charles
    CollaboratorAuthor

    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 above BASELINE (near :358 on main today — ⚠️ anchor on the text, not the line; objectui#9429 is in the merge queue and will shift it):

    ⛔ None of that is weighed by the constant below, and what it costs gzipped is UNMEASURED rather than small — nobody has built 77b2a18a16.

    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 on 77b2a18a16":

    [plugin emit-eager-closure-report] eager closure: 51/528 chunks, 3165008 bytes gzipped (3090.8 KB)
    

    From the JSON directly: eagerGzipBytes 3,165,008, eagerChunkCount 51 of 528, eagerRawBytes 10,915,262, and files[].gzipBytes sums to eagerGzipBytes exactly

    ⇒ 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, 77b2a18a16 and 755d34a5f.

    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:

    1. The 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.

    ⚠️ Serial note, unchanged: this file is touched by PR objectui#9429 (in the merge queue now) and PR objectui#9488 (held, blocked on objectui#9492). ⛔ Do not dispatch this against either branch, and re-derive every line number after objectui#9429 lands.


    Generated by Claude Code

  3. os-try-charles commented on Sep 14, 2026

    @os-try-charles
    CollaboratorAuthor

    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.

    ⚠️ Every line number in this card's body and in my comment above is now STALE — that merge added a squashMerge field and its docblock to scripts/check-eager-closure-budget.mjs. ⇒ re-derive against cfcc17d9dd04eb or 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.squashMerge is 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

  4. claude commented on Sep 14, 2026

    @claude
    Contributor

    ⚠️ STAND-IN TRIAGE, declared. Graded by the 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_at still 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.mjs is 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.

    ⚠️ The serial conflict — measured, and it is why this is not going out this round

    GET /pulls/{n}/files over all 8 open PRs. Two of them already hold this card's landing file:

    PR state files of interest
    #9488 draft — HELD, blocked on objectui#9492 (domain:ui, unassigned) scripts/check-eager-closure-budget.mjs, scripts/__tests__/check-eager-closure-budget.test.ts
    #8941 ready — lucide-react 1.31.0 → 1.43.0, 38 files scripts/check-eager-closure-budget.mjs

    Control 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.mjs is 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.

    ⚠️ Note for whoever eventually takes it: #8941 may itself move the numbers this table reports. Re-derive the table's readings on the tree you actually land on — ⛔ do not carry this card's figures forward unchecked. Re-deriving a figure that was derived once is the entire subject of this card.


    Generated by Claude Code

  5. objectstack-fleet commented on Sep 24, 2026

    @objectstack-fleet
    Contributor

    关闭 not_planned —— 检查脚本注释表里的提交号出处不准,属纯注释修正;p3 工具卡,产品仓 P1 未清

    分诊席(session_01Tw7jnJinGHvoGSi8aFkhPJ,objectstack 座位贴 #6015),2026-09-24T02:21Z。objectui 清理第二批:本席逐张读完卡面与评论,把结论和理由报给维护者,维护者答「同意」后执行。本卡显示 4 条评论,本席读得到 3 条,在此如实说明。

    本卡的读数,原样认下

    为什么现在关

    什么时候可以重开

    • objectui 开放的 P0/P1 清零,且 scripts/check-eager-closure-budget.mjs 没有被任何开放 PR 占着,就按卡面 1–5 条验收重开。⛔ 不要沿用卡面的行号和数字,要在落地的树上重新测。
    • 或者这张表的出处错误误导了一次真实的预算调整决定。

    标签:摘 pm:queue;以 not_planned 关闭。


    Generated by Claude Code

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 documentationdomain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repopriority:p3tooling

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions