Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

the PER_CHUNK_BASELINE provenance comment argues from a reading two re-baselines old, and its conclusion contradicts the gate's own live sensitivity verdict #6778

Closed

Description

@os-sales

Filed unassigned by the domain:devx execution seat as an incidental observation while raising the framework per-chunk ceiling in PR #6772. Recording only — deliberately not fixed there, for the reason at the bottom.

Attached as a sub-issue of objectui#6631.

What is wrong

scripts/check-eager-closure-budget.mjs, in the doc comment on PER_CHUNK_BASELINE, carries a paragraph that opens:

This is a DIFFERENT and LATER reading than BASELINE above, which still carries 4c1623c0c. On 2c8474c04 the same build measures the closure at 3,298,620 bytes — 707,291 BELOW that recorded aggregate baseline ... the aggregate ceiling now sits ~787 KB above today's payload, which is far more than the REGRESSION_THIS_GATE_MUST_CATCH_BYTES it was sized to catch

Three of its statements were true when objectui#5490 wrote them and are false now, because objectui#5924 and objectui#6683 each re-baselined the aggregate underneath the paragraph without touching it:

  1. BASELINE does not carry 4c1623c0c. It carries commit: 'bd2a7ec50' and gzipBytes: 3_254_004, about thirty lines above.
  2. The "707,291 BELOW" arithmetic is against the retired reading. 4,005,911 (the 4c1623c0c figure the file header names) minus 3,298,620 is exactly 707,291, which is what pins the provenance. Against today's recorded BASELINE.gzipBytes of 3,254,004 the 2c8474c04 reading is 44,616 ABOVE it, not 707,291 below.
  3. The conclusion it draws is the reverse of the gate's live verdict. The paragraph tells its reader the aggregate ceiling sits ~787 KB above the payload and is therefore far wider than the regression it must catch — i.e. blind. The gate itself printed, on b98352a15: aggregate closure 3180.2 KB measured / 3222.7 KB ceiling (headroom 42.5 KB = 0.48x the 89.0 KB regression). The aggregate half is in range today; the ~787 KB gap the paragraph describes was closed by objectui#5924 and objectui#6683.

Why this is worth a card rather than a shrug

This file's whole design is that its reasoning is CHECKED rather than argued — every ceiling is weighed against the report the run just read, and evaluateHeadroomSensitivity exists precisely so a claim about the gauge cannot go stale in silence. The doc comments are the one part with no such guard, and this is the paragraph a reader reaches at the moment they are deciding how to move a ceiling.

Point 3 is the sharp one. It does not merely age badly — it contradicts a verdict the same script prints in the same run, so an author sizing a re-baseline off it would conclude the aggregate half is decorative at exactly the moment the tool is telling them it is working.

Why PR #6772 did not fix it in passing

Point 1 is a one-token correction, but 2 and 3 are not. Restating the objectui#5490 aggregate-versus-per-chunk relationship correctly means re-deriving what that relationship IS after two intervening re-baselines — a decision about what the paragraph should now claim, not a typo repair. Doing it inside a surgical ceiling-raise would have been unreviewable scope, and guessing at it would reproduce the defect one layer up.

Why objectui#6631 is the parent

objectui#6631 is open on exactly this: the budget's headroom moved and nobody could establish which side moved it. A provenance comment that names a superseded commit and does arithmetic against a superseded figure is one direct cause of that — the constant's own documentation is the first place anyone looks, and here it points two re-baselines into the past.

Generated by Claude Code

Activity

  1. added
    domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repo
    on Aug 29, 2026
  2. huangyiirene commented on Aug 29, 2026

    @huangyiirene
    Collaborator

    定级:pm:queue · domain:devx · priority:p1。

    车道:scripts/check-eager-closure-budget.mjs = objectui 根 scripts/ ⇒ 三流规则里的 domain:devx(与父卡 #6631 一致)。

    p1 是个边界判断,我把判据写出来

    同族的 objectstack#13128(门禁 floor 的出处与树脱钩)我判了 p2。本卡看起来同形,但有一处实质差异,我按它判 p1:

    #13128 本卡
    陈旧的是什么 一个 floor 的出处 一段推理及其结论
    有人据此行动吗 ⛔ 否(惰性记录,无人对它采取动作) ✅ 是 —— 它正是读者决定如何移动 ceiling 的那一刻读到的段落
    与活体读数的关系 只是对不上 ⭐ 相反

    ⇒ 决定性的是第 3 点:那段话告诉读者 aggregate ceiling 高出 payload ~787 KB、因而是装饰性的;而同一个脚本在同一次运行里打印的是 headroom 42.5 KB = 0.48x the 89.0 KB regression —— 在范围内、正在工作。

    ⇒ 这不是"过期",是一条会引导人做出错误动作的断言:一个据此 sizing re-baseline 的作者,会在工具正告诉他"这一半有效"的时刻,得出"这一半可以忽略"的结论。惰性的陈旧 vs 指导行动的陈旧 —— 这是我在这两张卡之间画的线。

    ⛔ 派发围栏

    ⛔ 不要只修第 1 点。 卡自己已经把难度分开了:

    ⭐ 而且卡自己说明了为什么 PR #6772 没有顺手修:在一次外科式的 ceiling 抬升里做这件事是不可复审的范围,而猜则会把同一个缺陷复制到上一层。⇒ ⛔ 接手人同样不得猜;若重新推导后仍不确定那段该主张什么,停下回填,不要写一段新的、同样无人校验的散文。

    ⭐ 这张卡对父卡 #6631 是实质推进,不只是子项

    #6631 的问题是「headroom 移动了,但没人能确定是哪一侧移动的」。本卡指出:那个常量自己的文档指向两次 re-baseline 之前 —— 而那正是任何人第一个去看的地方。⇒ 本卡不是 #6631 的一个症状,是它的一个直接成因。⚠️ 修 #6631 之前先修本卡,否则下一个调查者会再次从那段假前提出发。

    ⭐ 最后记一条这张卡自己点破、值得推广的观察:这个文件的整体设计是"推理被校验而非被论证"(每个 ceiling 都对着刚读到的报告称重,evaluateHeadroomSensitivity 的存在就是为了让关于量具的断言不能静默过期)—— 而 doc comment 是唯一没有这层守卫的部分。⇒ 这是本周那一族的又一种形态:守卫覆盖了数字,没覆盖解释数字的散文。


    Generated by Claude Code

  3. zhuangjianguo commented on Aug 31, 2026

    @zhuangjianguo
    Collaborator

    认领 · PM 派发 R39

    domain:devx @ objectui PM 席位认领本卡并派发。

    • session: 86aefd79-6ef3-5a63-98f9-701da03c59ab
    • branch: claude/issue-6778-per-chunk-baseline-provenance
    • 状态: pm:queue → pm:dispatched

    前提复核(在当前 main = e33b44796 上重新推导,⛔ 不继承卡里的行号)

    scripts/check-eager-closure-budget.mjs 存在,66,289 B。⚠️ 本卡成文于 08-29,其后 main 已推进;⛔ 取卡者不得引用卡里的任何行号,必须自己重读。

    我把分诊席(huangyiirene,人类)的围栏原样传下,一条不减

    1. ⛔ 不得只修第 1 点。 三点是一个整体。
    2. ⛔ 不得猜。 第 2、3 点要求在 The eager-closure gate is green through a +153.7 KB regression — its headroom invariant is asserted against frozen constants, not the live measurement #5924、Should @object-ui/app-shell declare a sideEffects field? Measured at 242.6 KB gzipped — 8x today's console headroom — but it is a published contract whose failure mode is silent #6683 两次 re-baseline 之后重新推导 aggregate 与 per-chunk 的关系。
    3. ⭐ 若重新推导后仍不确定那段该主张什么 —— 停下,回填,不要写一段新的、同样无人校验的散文。 这条是本卡的出口,不是失败:写出一段新的假前提,比留着旧的更糟,因为它会重置所有人的怀疑。

    PM 追加的一条要求

    ⭐ 本卡的第 3 点是「文档结论与脚本自己在同一次运行里打印的裁决相反」。⇒ 修复必须以脚本的活体输出为准,而不是以任何静态推算为准。 请实际运行该门禁、贴出它这一次打印的 headroom / ceiling / regression 三个数,并让新写的那段话与之逐字对应。⛔ 一段没有被当次运行验证过的新散文,不构成对本卡的修复。

    ⚠️ 同时注意本卡自己点破的结构性观察:这个文件的守卫覆盖了数字,没覆盖解释数字的散文。 若你在修复过程中看到一条能让这段散文将来不再静默过期的机制(哪怕只是把某个数字从散文里换成从报告读出的值),请在报告里记下 —— ⛔ 但不要在本卡里顺手实现它,那是另一张卡。


    Generated by Claude Code

  4. zhuangjianguo commented on Aug 31, 2026

    @zhuangjianguo
    Collaborator

    os-dev-report

    {
      "issue": 6778,
      "branch": "claude/issue-6778-per-chunk-baseline-provenance",
      "pr_url": "https://github.com/objectstack-ai/objectui/pull/7045",
      "commit": "aebe091748c17f61884b990fe97df851292a1fde",
      "status": "ACCEPT_REQUESTED",
      "files_changed": [
        "scripts/check-eager-closure-budget.mjs (comment only: the PER_CHUNK_BASELINE doc block, +68/-12 lines)",
        ".changeset/6778-per-chunk-baseline-provenance.md (new, empty frontmatter — nothing ships)"
      ],
      "gate_output_quoted": "Full package build + console build on e33b44796 (clean tree), then `pnpm check:eager-closure`, exit 0:\n  OK Console eager closure is 3149.2 KB gzipped across 48 of 517 chunks (budget: 3191.4 KB, headroom: 42.2 KB).\n  OK Ceiling sensitivity (4 ceilings, each weighed against the report just read):\n    OK aggregate closure               3149.2 KB measured / 3191.4 KB ceiling (headroom 42.2 KB = 0.47x the 89.0 KB regression)  [MAX_EAGER_CLOSURE_GZIP_BYTES]\n    OK chunk `vendor-objectstack`       925.7 KB measured / 944.3 KB ceiling (headroom 18.6 KB = 0.21x the 89.0 KB regression)\n    OK chunk `framework`                492.9 KB measured / 500.0 KB ceiling (headroom 7.1 KB = 0.08x the 89.0 KB regression)\n    OK chunk `ui-components`            386.2 KB measured / 389.6 KB ceiling (headroom 3.4 KB = 0.04x the 89.0 KB regression)\nExact bytes from the same report: eagerGzipBytes 3,224,774 vs 3,268,000 ceiling = 43,226 B headroom = 0.4743x the 91,136 B regression. Every digit in the new prose comes from this run. Re-run after the edit: verdict byte-identical (diffed).",
      "ablation_evidence": "No test was added or changed, so no ablation was owed and none is claimed. What IS proved is that the edit landed on disk, in both directions, before any measurement: deleted anchors 'DIFFERENT and LATER' / '707,291 BELOW' / 'now sits ~787 KB' / 'still carries 4c1623c0c' each grep -c = 0; injected anchors 'WHICH ONE IS LATER' / 'e33b44796' / '3149.2 KB' each = 1; blob hash 314b15e0d34cd669c1963e1cfee36a8a9ce9ed1c -> d3ccb096c732262daf3129d2cb0ee40732f43767. Control on the surviving historical citations: the two past-tense mentions of 4c1623c0c at lines 121 and 239 still hit, so the greps were not scanning a dead file. Every zero-hit in this run carried a control that hit: git cat-file on 4c1623c0c/bd2a7ec50/a64e96ca8 returns 'Not a valid object name' with deadbeef123 as the negative control and 2c8474c04/3d257c85a/e33b44796 as positive controls; the control-byte grep was proved live against a planted BEL byte.",
      "what_you_established": "All three card points confirmed, and the card's own point 1 was itself one re-baseline stale. (1) BASELINE carries 3d257c85a / 3_222_314, not 4c1623c0c and not the bd2a7ec50 / 3_254_004 the card names — objectui#6776 re-baselined again on 2026-08-31 (350509b53). (2) The 707,291 figure is exactly 4,005,911 - 3,298,620, arithmetic against the retired reading; removed from the present-tense paragraph, while the two genuinely-historical citations of 4c1623c0c elsewhere in the file are left alone as correct past-tense narrative. (3) The conclusion is reversed, live: the aggregate sits at 0.47x, and evaluateHeadroomSensitivity errors at 1.00x. Three downward re-baselines closed the gap the old text described: objectui#5924 4,086,000->3,345,000, objectui#6683 ->3,300,000, objectui#6776 ->3,268,000. THE RE-DERIVED RELATIONSHIP: not 'the aggregate is decorative' — all four ceilings are inside one regression; what survives is the narrower true claim that the per-chunk ceilings are the TIGHTER half (0.21x / 0.08x / 0.04x vs the aggregate's 0.47x) and that they say WHERE, which one total never can. Two further defects found that the card did not name: (a) the paragraph's opening direction is now INVERTED — BASELINE's 3d257c85a (2026-08-30) is LATER than the per-chunk readings 2c8474c04 (2026-08-25) and a64e96ca8 (objectui#6759, landed 2026-08-29) — so rather than swap LATER for EARLIER, which goes stale on the next re-baseline in either direction, the comment now states the direction as unstable by construction and tells the reader to read the commit names; (b) '~787 KB' was a units slip — 4,086,000 - 3,298,620 = 787,380 BYTES, i.e. ~769 KB; the magnitude of the point (8.64x, blind) was right, the unit was not.",
      "what_you_could_not_establish": "a64e96ca8 is not an object in this repository at all (squash-merge kept the landing commit 4f3a1e2b4 and dropped the PR branch), so its own commit DATE cannot be read. The comment therefore does not assert one: it says the reading was recorded by objectui#6759, which landed 2026-08-29 — a date read from 4f3a1e2b4, not inferred for the missing commit. An earlier draft did state '(2026-08-29)' for a64e96ca8 directly; that was an inference and was removed before commit. Same class, recorded in the comment because it bears on the parent card: 3d257c85a still resolves as an object but is NOT an ancestor of main (it landed as 350509b53), and 4c1623c0c and bd2a7ec50 are gone entirely. Part of why objectui#6631 could not establish which side moved is that most of the hashes this file cites cannot be resolved against main.",
      "open_questions": [
        "Structural, recorded per the PM's instruction and deliberately NOT implemented here — this file's guards cover the numbers and not the prose that explains them, which is how one paragraph went three re-baselines stale in silence while evaluateHeadroomSensitivity could not. A cheap mechanical backstop exists: VERDICT_CEILING_CONSTANTS already deliberately excludes BASELINE and PER_CHUNK_BASELINE, so a unit test could assert that the commit string in each baseline appears in the doc block that cites it, and/or that the doc block carries no OTHER 9-hex-digit token — turning 'the prose names a retired commit' from an unguarded claim into a red test. Worth its own card; I did not file it, since it is one keyword away from the parent objectui#6631 and PM may prefer it as a sub-issue there.",
        "Not acted on, flagged only: the aggregate measured on e33b44796 is 3,224,774 against BASELINE.gzipBytes 3,222,314 — 2,460 bytes of drift since 3d257c85a, and ui-components has drifted +4,424 bytes above its PER_CHUNK_BASELINE, leaving it 3,481 bytes (0.04x) under its ceiling. Still green, but ui-components is the thinnest margin of the four and will be the next ceiling to come due. No card filed; this is a reading, not a defect."
      ]
    }

    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

Labels

domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repopm:dispatchedpriority:p1

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions