Repository navigation
docs(scripts): record the eager-closure cause as a standing baseline - #8293
Merged
os-justin merged 2 commits intoSep 7, 2026
Merged
Conversation
The note on MAX_EAGER_CLOSURE_GZIP_BYTES told the next author to wait for objectstack#16063 to land and then bring the ceiling and BASELINE back down together. That upstream card was ruled against — maintainer verbatim "16063 c", director-seat decision batch #59 recorded on objectui#7122 on 2026-09-06 — so the growth is accepted upstream permanently and the condition can never fire. Left as it was, the note mislabels a standing baseline as a temporary exception awaiting reversal. The objectstack#16063 citation stays, because the gate's own header requires a re-baseline to carry a visible, justified cause; what changes is that it reads as the recorded ruling rather than a pending condition, and the authorising decision (objectui#7122 decision batch 1 item 1 = "B + A", landed by objectui#7685 as 639114c) is named so the next reader need not reconstruct it. Prose and provenance only. MAX_EAGER_CLOSURE_GZIP_BYTES, BASELINE, every per-chunk ceiling and REGRESSION_THIS_GATE_MUST_CATCH_BYTES are byte-identical across this commit. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YBWFb5YgMU5dw8p2VKj16S
…er-closure-void-restore-condition
Contributor
✅ Console Performance Budget
The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it. 📦 Bundle Size Report
Size Limits
|
os-justin
marked this pull request as ready for review
September 7, 2026 09:40
os-justin
deleted the
claude/issue-8283-eager-closure-void-restore-condition
branch
September 7, 2026 09:56
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #8283
Prose and provenance only — no executable line in the file changed (proof below).
The eager-closure budget's cause note pointed the next author at an upstream fix that is not coming:
RESTORE CONDITION: when that lands, re-measure and bring this ceiling and BASELINE back down together, conditioned onobjectstack#16063. That upstream fix was ruled against — maintainer verbatim 「16063 c」, director-seat decision batch #59, recorded on objectui#7122 on 2026-09-06. The condition could therefore never fire, and the numbers read as a temporary exception awaiting reversal when they are the standing baseline.The note now says so. It keeps the
objectstack#16063citation — the provenance the gate's own header requires — while stating that its sense changed from a condition to wait out into the recorded cause the ceiling rests on, forbids writing a fresh condition in its place, and names where the authorisation and figures landed (objectui#7122 decision batch 1 item 1 = "B + A"; objectui#7685,639114c4d).Verdict on the second sentence,
:575The card required a verdict on a second, similarly-shaped sentence —
re-measure and lower both numbers together, at:559before this change and:575after. It is a different note, it is correct as written, and it is deliberately left untouched.Four reasons, each re-derived rather than pattern-matched:
:575closes the docblock attached toPER_CHUNK_GZIP_CEILINGS— heading## Raising oneat:564, declaration at:577. Its "both numbers" are a per-chunk ceiling and its measurement inPER_CHUNK_BASELINE(:681), which the same paragraph names at:568. The note corrected here governs the aggregate pair,MAX_EAGER_CLOSURE_GZIP_BYTESandBASELINE.objectstack#16063appears nowhere in that block — its only three occurrences in the file are:328,:329and:334, all inside the aggregate note this PR rewrites.@objectstack/specbrowser build. It says nothing about this repo shrinking its own eager closure, and the same docblock already names a concrete local candidate at:561— taking the i18n catalogues out of the eager closure. If anything the ruling makes local shrink work the only remaining route, so this condition is more live, not less.:570is a ratchet guardrail:Do not LOWER one below the measured figure to express an aspiration. The trailing clause is its counterpart — it names the one legitimate route to lowering (do the real work, re-measure, move ceiling and baseline together). It makes no claim that today's numbers are temporary, which was the entire defect in the aggregate note. Rewriting it in this PR's idiom ("nothing is coming") would be false and would delete a correct rule.Sweep for completeness rather than fixing only what was pointed at: grepping
re-measure|RESTORE CONDITION|when that lands|when it lands|awaiting|back down together|lower bothreturns exactly two condition-shaped sentences in the file — the one rewritten here and:574-:575. The remaining hit at:1067isevaluateHeadroomSensitivity's docblock describing when drift is detected, not a condition.The frozen numbers are byte-identical
The card's safety argument for touching this file at all. Verified two ways against the current
origin/main, not asserted:^[+-] \*. The set of changed lines that are not docblock continuations is empty.//line from both revisions and hashing the remainder gives970db2bea4494c394f3ccb2562f93da7aa0e4423f5ba7d7ec0825ad456c8bf75on bothorigin/mainand this branch;diffof the two stripped files is empty.The four frozen values as they now stand, all unmoved:
MAX_EAGER_CLOSURE_GZIP_BYTES3_597_000:349(was:333)BASELINE.gzipBytes3_551_191:378(was:362)REGRESSION_THIS_GATE_MUST_CATCH_BYTES89 * 1024:390(was:374)PER_CHUNK_GZIP_CEILINGS1_254_000/455_000/71_000/399_000:582-:585Sensitivity re-derived rather than trusted, reading
89 * 1024as the expression it is:3,597,000 - 3,551,191 = 45,809, and45,809 / 91,136 = 0.503x— against the docblock's ownH = REGRESSION / 2requirement at:90. It holds.Gates
Exit codes captured before any pipe; verdict lines quoted from each gate's own output. All run after merging
origin/main.attached-docshelper the two of them importTest Files 5 passed (5)/Tests 219 passed (219)node scripts/check-control-bytes.mjscheck-control-bytes: OK (scanned 6596 tracked text file(s); skipped 85 binary)node scripts/check-changeset-presence.mjsNo source or published contract of a released package changed in this range, so no changeset is owed.node scripts/check-governed-queue-guard.mjs --self-testOK check-governed-queue-guard self-test: 132 cases passnode scripts/check-governed-queue-guard.mjs --test scripts/check-eager-closure-budget.mjsNOT GOVERNED — 1 path(s) checked against 5 governed surface(s); none matched.No changeset is added: the gate's own verdict line above says none is owed, this file being tooling rather than published source of a released package.
A pin does read docblock prose — reported, as the card asked
The card asked whether any pin reads the note's text. One class does, and a phrase-grep does not find it:
scripts/__tests__/check-eager-closure-budget.test.tspins attached prose structurally, throughattachedDocs()inscripts/__tests__/helpers/attached-docs.ts, which locates the JSDoc block preceding anexport constwithout using line numbers.What saves this change is not that no pin reads prose, but that those pins are scoped to other constants' blocks. They read
BASELINEandPER_CHUNK_BASELINEonly, and assert:BASELINEcarries exactly one commit,PER_CHUNK_BASELINEcarries none);expect(perChunk.prose).not.toContain('## Raising one'), which pins that the locator does not over-capture into the neighbouringPER_CHUNK_GZIP_CEILINGSblock.This PR rewrites the block attached to
MAX_EAGER_CLOSURE_GZIP_BYTES, and leaves the block attached toPER_CHUNK_GZIP_CEILINGSalone. Neither is among the pinned pair, and the## Raising oneheading the boundary assertion names is untouched. The suite is green.🤖 Generated with Claude Code
https://claude.ai/code/session_01YBWFb5YgMU5dw8p2VKj16S
Generated by Claude Code