You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Eager-closure budget: raise every byte ceiling by 20% on the maintainer's ruling, and move the regression the gate must catch with it #12653
Filing gate ③: a task the maintainer directed. Filed by the domain:ui seat 4 (session_01SJn1GEkrbbBQkhGC26wEDw) on the maintainer's words in that session's chat, verbatim: 「上限同统一调高 20% ,避免类似的问题。」 (2026-10-16, about 11:00Z, answering #12648's vendor-objectstack overrun).
Why
scripts/check-eager-closure-budget.mjs sat with almost no headroom on main8a8bcf3d:
vendor-objectstack: 1,536,365 measured against 1,536,409, a headroom of 44 gzipped bytes;
the aggregate: 3,114.8 KB against 3,119.4 KB.
So every @objectstack/* bump reds Bundle Analysis and needs a measured raise round. #12648 (the next.2 bump) spent a round on exactly that. The ruling is to give every ceiling 20% room, so that a bump of normal size passes.
Target
Every byte ceiling in scripts/check-eager-closure-budget.mjs × 1.20, rounded up to the nearest 1,000 bytes:
MAX_EAGER_CLOSURE_GZIP_BYTES;
each entry of PER_CHUNK_GZIP_CEILINGS (vendor-objectstack, ui-components, framework, i18n-locale-en, and any other row).
REGRESSION_THIS_GATE_MUST_CATCH_BYTES moves too, or the gate reds itself.
The ceiling-sensitivity half (evaluateHeadroomSensitivity) fails any ceiling whose headroom is at least that regression ("blind").
Today it is 89 KiB. A 20% raise leaves roughly 640 KB of headroom on the aggregate and roughly 290 KB on vendor-objectstack.
Set it to the smallest round value that keeps every ceiling non-blind on the measured build. Say in the docblock that the gate now catches only regressions of that size and above. That is the trade the ruling accepts.
The unit test's constant-vs-constant guard moves with it.
Measurements are not ceilings.BASELINE and PER_CHUNK_BASELINE stay what was measured. Nothing is made lazy and no exemption is added. The entry-chunk budget (350 KB in the workflow) is far from its limit and is not part of this card.
A dated docblock paragraph in the file's precedent shape: the maintainer's words, the before and after table for every constant, and what the gate no longer catches.
Acceptance
pnpm check:eager-closure exits 0 on a fresh console build of the PR head.
Claim: PM loop round 3 (filed and claimed by this seat on the maintainer's direction, verbatim 「上限同统一调高 20% ,避免类似的问题。」)
Session: session_01SJn1GEkrbbBQkhGC26wEDw
Account: os-sales (the seat's linked user as GET /user answers it; the card's assignee)
Branch: claude/issue-12653-budget-headroom-20
Worktree: objectui-issue-12653 (in the cloud session's own container)
Domain: domain:ui
Seat: domain:ui#4
File surface: scripts/check-eager-closure-budget.mjs (the byte ceilings, REGRESSION_THIS_GATE_MUST_CATCH_BYTES and the docblock), scripts/__tests__/check-eager-closure-budget.test.ts (stop on breach; explain in the report)
Container & model: S, mode:cloud, model: opus (cloud on the maintainer's stance 「可以的话,ui 后续开发尽量用云 session,并且要求截图给我看」; batch 5 on 「上限提到 5,提速」; slots refilled on 「补」)
Clause-②: no
Responsibility: n/a — a maintainer-directed budget change in a repo script
Thread-read: none
Serial constraints cleared: #12648 (this seat's objectui#12626) raises vendor-objectstack in the same file by its measured +19,296. This card builds now and computes the 20% over the values in force after that PR merges; its PR merges main after #12648 lands and before it queues. No other open objectui PR touches this file.
{
"issue": 12653,
"status": "done",
"branch": "claude/issue-12653-budget-headroom-20",
"pr": 12699,
"session": "session_01US8TwEXjyjVP6rvVtukGFE",
"premise_still_valid": true,
"summary": "The maintainer authorized the change in this session (「同意给你授权」), which cleared the earlier block. I merged origin/main efa9cb4 (fast-forward, no rebase); it already carries #12648, with vendor-objectstack at 1,555,705. Every byte ceiling is ×1.20, rounded up to 1,000. REGRESSION_THIS_GATE_MUST_CATCH_BYTES is now 695 * 1024 (PM ruling A). The dated docblock is in the precedent shape: the maintainer's words, the before/after table, and what the gate no longer catches. BASELINE and PER_CHUNK_BASELINE are untouched. Three test cases needed more than the ruled constant-guard edit and are listed under open_questions.",
"tests": "At HEAD 0d8b834: `pnpm exec vitest run scripts/__tests__/check-eager-closure-budget.test.ts` exit 0, 180/180. Before the three test fixes it was 3 red / 177 passed. Ablation: REGRESSION 695 → 694 * 1024 written with sed; the on-disk check grep-counted 1 copy of the new text and 0 of the old. Result: vitest exit 1, 16 red, including 'would have failed on the regression it exists to catch'. Restored with `git checkout HEAD --`; the hash-object matches the HEAD blob; `git diff HEAD` is 0 lines.",
"gates": "Fresh console build `CI=true pnpm --filter @object-ui/console exec vite build` exit 0, on efa9cb4 plus this diff. `pnpm check:eager-closure` exit 0 at 0d8b834. aggregate 3118.1 KB / 3744.1 KB (headroom 626.0 KB = 0.90x); vendor-objectstack 1519.2/1823.2 (0.44x); ui-components 282.0/338.9 (0.08x); framework 74.5/117.2 (0.06x); i18n-locale-en 45.7/58.6 (0.02x). Ceiling sensitivity is green for all five lines. `node scripts/check-changeset-presence.mjs` exit 0: 'No source or published contract of a released package changed in this range, so no changeset is owed' — the AGENTS.md rule that only released-package source or a contract-field move owes a changeset, and scripts/ is neither. Every exit code was captured before any pipe. CI check-runs do not exist yet: there is no PR.",
"mcp_calls": "5 — all read-only (issue_read ×2, pull_request_read ×3), all from the first round. Zero write tools.",
"api_writes": "0 — git push only (the empty branch at 8614705, then 0d8b834).",
"open_questions": [
{
"question": "Three test cases in scripts/__tests__/check-eager-closure-budget.test.ts reddened beyond the constant-vs-constant guard the ruling named. The claim marks this file 'stop on breach; explain in the report'. I fixed them under the maintainer's direct authorization and record them here. (1) 'reds on the drift objectui#5924 recorded' now passes the regression of its own day (REGRESSION_AT_5924 = 89 * 1024) and `ceilings: {}`, because that incident was the aggregate line's alone. (2) 'the demonstrated regression' keeps its historical leg on 89 KiB and now pins the trade: the 158,006-byte injection passes under today's ceiling. The test title was updated to match. (3) 'reports the GAUGE verdict when one ceiling is blind and another is over' had a hard-coded -200_000 delta sized for 89 KiB. It is now derived from the constants, so the aggregate stays blind as they move.",
"options": [
"A keep as pushed",
"B revert (2) to assert red against a historical ceiling instead of pinning the trade"
],
"recommendation": "A, because (2) makes the accepted trade visible, and it reds correctly once the ceiling comes back down."
},
{
"question": "os-dev.md wants a draft PR plus an issue-comment report; the dispatch ordered the degraded channel (push only). The PM ruled that the degraded channel stands.",
"options": [
"A degraded channel"
],
"recommendation": "A, per the PM's ruling."
}
],
"out_of_scope_findings": [
"carrier: none · noted, not filed — an early `pnpm install --frozen-lockfile` ran once in the primary checkout before the worktree existed. That checkout is now detached at 8614705, because the branch had been checked out there and had to move to the worktree."
],
"pr_title_draft": "chore(scripts): raise every eager-closure ceiling by 20% and move the regression the gate must catch to 695 KiB (objectui#12653)",
"pr_body_draft": "(elided: it is the body of objectstack-ai/objectui#12699, opened from it verbatim by the seat)"
}
Relayed by seat domain:ui#4 (session_01SJn1GEkrbbBQkhGC26wEDw) from the cloud session's final message (degraded channel: the session pushed and returned pr: null; the seat opened #12699 from pr_title_draft and pr_body_draft, and set pr above).
State change: the card closed as completed through Fixes #12653, and pm:dispatched is removed in this act. The cloud session session_01US8TwEXjyjVP6rvVtukGFE is archived. No contract review was owed (Clause-②: no; scripts/ ships in no package).
The trade the ruling accepted, as the PR states it: the aggregate line now fails only regressions of about 695 KiB gzipped and above, and a test pins that objectui#5924's 158,006-byte injection passes today. The per-chunk lines keep their own smaller headroom.
Activity
objectstack-fleet commentedon Oct 16, 2026
Claim: PM loop round 3 (filed and claimed by this seat on the maintainer's direction, verbatim 「上限同统一调高 20% ,避免类似的问题。」)
Session:
session_01SJn1GEkrbbBQkhGC26wEDwAccount:
os-sales(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/issue-12653-budget-headroom-20Worktree:
objectui-issue-12653(in the cloud session's own container)Domain:
domain:uiSeat:
domain:ui#4File surface:
scripts/check-eager-closure-budget.mjs(the byte ceilings,REGRESSION_THIS_GATE_MUST_CATCH_BYTESand the docblock),scripts/__tests__/check-eager-closure-budget.test.ts(stop on breach; explain in the report)Container & model:
S,mode:cloud,model: opus(cloud on the maintainer's stance 「可以的话,ui 后续开发尽量用云 session,并且要求截图给我看」; batch 5 on 「上限提到 5,提速」; slots refilled on 「补」)Clause-②: no
Responsibility: n/a — a maintainer-directed budget change in a repo script
Thread-read: none
Serial constraints cleared: #12648 (this seat's objectui#12626) raises
vendor-objectstackin the same file by its measured +19,296. This card builds now and computes the 20% over the values in force after that PR merges; its PR mergesmainafter #12648 lands and before it queues. No other open objectui PR touches this file.objectstack-fleet commentedon Oct 16, 2026
os-dev-report
{ "issue": 12653, "status": "done", "branch": "claude/issue-12653-budget-headroom-20", "pr": 12699, "session": "session_01US8TwEXjyjVP6rvVtukGFE", "premise_still_valid": true, "summary": "The maintainer authorized the change in this session (「同意给你授权」), which cleared the earlier block. I merged origin/main efa9cb4 (fast-forward, no rebase); it already carries #12648, with vendor-objectstack at 1,555,705. Every byte ceiling is ×1.20, rounded up to 1,000. REGRESSION_THIS_GATE_MUST_CATCH_BYTES is now 695 * 1024 (PM ruling A). The dated docblock is in the precedent shape: the maintainer's words, the before/after table, and what the gate no longer catches. BASELINE and PER_CHUNK_BASELINE are untouched. Three test cases needed more than the ruled constant-guard edit and are listed under open_questions.", "tests": "At HEAD 0d8b834: `pnpm exec vitest run scripts/__tests__/check-eager-closure-budget.test.ts` exit 0, 180/180. Before the three test fixes it was 3 red / 177 passed. Ablation: REGRESSION 695 → 694 * 1024 written with sed; the on-disk check grep-counted 1 copy of the new text and 0 of the old. Result: vitest exit 1, 16 red, including 'would have failed on the regression it exists to catch'. Restored with `git checkout HEAD --`; the hash-object matches the HEAD blob; `git diff HEAD` is 0 lines.", "gates": "Fresh console build `CI=true pnpm --filter @object-ui/console exec vite build` exit 0, on efa9cb4 plus this diff. `pnpm check:eager-closure` exit 0 at 0d8b834. aggregate 3118.1 KB / 3744.1 KB (headroom 626.0 KB = 0.90x); vendor-objectstack 1519.2/1823.2 (0.44x); ui-components 282.0/338.9 (0.08x); framework 74.5/117.2 (0.06x); i18n-locale-en 45.7/58.6 (0.02x). Ceiling sensitivity is green for all five lines. `node scripts/check-changeset-presence.mjs` exit 0: 'No source or published contract of a released package changed in this range, so no changeset is owed' — the AGENTS.md rule that only released-package source or a contract-field move owes a changeset, and scripts/ is neither. Every exit code was captured before any pipe. CI check-runs do not exist yet: there is no PR.", "mcp_calls": "5 — all read-only (issue_read ×2, pull_request_read ×3), all from the first round. Zero write tools.", "api_writes": "0 — git push only (the empty branch at 8614705, then 0d8b834).", "open_questions": [ { "question": "Three test cases in scripts/__tests__/check-eager-closure-budget.test.ts reddened beyond the constant-vs-constant guard the ruling named. The claim marks this file 'stop on breach; explain in the report'. I fixed them under the maintainer's direct authorization and record them here. (1) 'reds on the drift objectui#5924 recorded' now passes the regression of its own day (REGRESSION_AT_5924 = 89 * 1024) and `ceilings: {}`, because that incident was the aggregate line's alone. (2) 'the demonstrated regression' keeps its historical leg on 89 KiB and now pins the trade: the 158,006-byte injection passes under today's ceiling. The test title was updated to match. (3) 'reports the GAUGE verdict when one ceiling is blind and another is over' had a hard-coded -200_000 delta sized for 89 KiB. It is now derived from the constants, so the aggregate stays blind as they move.", "options": [ "A keep as pushed", "B revert (2) to assert red against a historical ceiling instead of pinning the trade" ], "recommendation": "A, because (2) makes the accepted trade visible, and it reds correctly once the ceiling comes back down." }, { "question": "os-dev.md wants a draft PR plus an issue-comment report; the dispatch ordered the degraded channel (push only). The PM ruled that the degraded channel stands.", "options": [ "A degraded channel" ], "recommendation": "A, per the PM's ruling." } ], "out_of_scope_findings": [ "carrier: none · noted, not filed — an early `pnpm install --frozen-lockfile` ran once in the primary checkout before the worktree existed. That checkout is now detached at 8614705, because the branch had been checked out there and had to move to the worktree." ], "pr_title_draft": "chore(scripts): raise every eager-closure ceiling by 20% and move the regression the gate must catch to 695 KiB (objectui#12653)", "pr_body_draft": "(elided: it is the body of objectstack-ai/objectui#12699, opened from it verbatim by the seat)" }Relayed by seat
domain:ui#4(session_01SJn1GEkrbbBQkhGC26wEDw) from the cloud session's final message (degraded channel: the session pushed and returnedpr: null; the seat opened #12699 frompr_title_draftandpr_body_draft, and setprabove).Generated by Claude Code
objectstack-fleet commentedon Oct 16, 2026
Landed · PR #12699 merged as
e6175b5onmain· read 2026-10-16T14:33Zorigin/maine6175b5,scripts/check-eager-closure-budget.mjsMAX_EAGER_CLOSURE_GZIP_BYTES = 3_834_000'vendor-objectstack': 1_867_000/'i18n-locale-en': 60_000/framework: 120_000/'ui-components': 347_000695 * 1024(the regression the gate must catch)89 * 1024BASELINEState change: the card closed as completed through
Fixes #12653, andpm:dispatchedis removed in this act. The cloud sessionsession_01US8TwEXjyjVP6rvVtukGFEis archived. No contract review was owed (Clause-②: no;scripts/ships in no package).The trade the ruling accepted, as the PR states it: the aggregate line now fails only regressions of about 695 KiB gzipped and above, and a test pins that objectui#5924's 158,006-byte injection passes today. The per-chunk lines keep their own smaller headroom.
Generated by Claude Code