docs(scripts): record the measured framework attribution the ceiling raise could not (objectui#8542) - #8579
Merged
Conversation
…g raise could not (objectui#8542) `fa9e76ccd` raised `PER_CHUNK_GZIP_CEILINGS.framework` to 100,000 and recorded, honestly, that it could not say what the bytes bought: "the commits in that window have never been bisected — this checker is a two-build predicate over them and no one has run it." That is the one sentence this change replaces. The bisect has now been run — one `apps/console` build per point, each from the repo ROOT, `framework` read out of the `apps/console/dist/eager-closure.json` the build itself writes: | build | landed by | `framework` gzip | moved by | | `40a7c538a` | #8503 | 70,999 | last GREEN, 1 byte under | | `512c84b16` | #8519 | 70,999 | 0 | | `f76f43628` | #8512 | 71,261 | +262 | | `e76634cc8` | #8529 | 72,245 | +984 | | `e411c3e58` | #8562 | 72,248 | +3 | Two commits own the overage, not one, and the LARGER one is outside the window every card bounded its reasoning to: `e76634cc8` landed after the red had already started and carries 984 of the 1,246 bytes the pair added. A repair scoped to that window would have left `main` red. `512c84b16` emitted a byte-identical chunk to `40a7c538a` — the same `framework-nDOJv2Ij.js` content hash — so the three commits between them moved this chunk by zero, and `270f2825b` touches no file under `packages/(core|react|types)` at all. What the bytes buy is therefore sayable, which is what the gate's own failure message asks of a raise: both contributors are silent-wrong-answer fixes on one file's filter path. `f76f43628` stopped an unrecognised `$` operator adding no constraint and matching every row; `e76634cc8` stopped an array comparand and a `{ $field }` reference being compared by reference, which selected every row under `$ne` and no rows under `$eq` without saying so. No constant moves. The prose that records what the raise COSTS is kept intact, including that the attribution arrived after the ceiling did. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YBWFb5YgMU5dw8p2VKj16S
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 8, 2026 13:28
os-justin
enabled auto-merge
September 8, 2026 13:28
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.
Part of #8542
⛔ Deliberately
Part of, not a closing keyword — see "Why this does not close the card" at the bottom. This PR was opened with a closing keyword and corrected within the hour, on a card amendment posted after it.⭐
mainis already GREEN —fa9e76ccdlanded the repair while this card was in flightThe card, its triage, and my dispatch brief all describe a red trunk: "every PR whose diff adds a byte to
packages/core,packages/reactorpackages/typesnow fails a required check it cannot fix within its own appetite." Measured one411c3e58(themaintip this branch is cut from), that is no longer true:fa9e76ccd(PR ci(budget): raise theframeworkper-chunk ceiling to 100,000 by maintainer ruling #8550, merged 12:05:35Z) raisedPER_CHUNK_GZIP_CEILINGS.framework71,000 → 100,000 withPER_CHUNK_BASELINE.framework61,465 → 72,245.pnpm check:eager-closureon a full console build of this branch exits 0, every leg green:framework 70.6 KB / 97.7 KB ceiling (headroom 27.1 KB).532316884. PR feat(types)!: redirect the node recursion point at AnyComponentSchema (#8344) #8501 measured 71,007 against the old 71,000 ceiling; against 100,000 it clears by 28,993 bytes. Both pass. Neither needed this PR.⇒ There is no byte to trim, and both actions the dispatch forbade (raise the ceiling, revert
f76f43628) are moot: one already happened above my floor, the other never will.What IS left, and it is the thing the card was filed for
fa9e76ccdmoved a ratchet 29,000 bytes and recorded, honestly, that it could not say what the bytes bought:That paragraph is still in the tree, and it is what this PR replaces. The bisect has been run. This PR is prose only — ⛔ no constant moves, and that is proved mechanically below, not asserted.
⭐ The attribution — one
apps/consolebuild per pointframeworkgzip40a7c538aframework-nDOJv2Ij.js512c84b16framework-nDOJv2Ij.jsf76f43628framework-DGfxffQ7.jse76634cc8framework-Dzpi76rg.jse411c3e58framework-Go_72ibC.js70,999 + 262 + 984 = 72,245, and thee76634cc8row reproduces the card's CI reading —framework 70.6 KB / 69.3 KB ceiling (OVER by 1.2 KB)— to the byte.Method, stated because bundle readings in this repo are CWD-sensitive: one detached worktree,
pnpm installonce (pnpm-lock.yamlis identical across all five points, verified), then at each pointpnpm turbo run build --filter='./packages/*' --concurrency=2followed bypnpm --filter @object-ui/console build, both from the worktree ROOT, andframeworkread out of theapps/console/dist/eager-closure.jsonthe build itself writes (reportVersion2). Identical command, identical CWD, at every point. Every build went through the shared verify lock; each printedVERDICT command-exit 0.e76634cc8(#8529) landed after the red had already started and carries 984 of the 1,246 bytes the pair added — 79% — against 262 for the commit the red first appeared on. ⛔ A repair scoped to the four-commit window, which is what this card, objectui#8541 and my own dispatch brief all specified, would have leftmainred. The two-build bisect that triage adopted as its handover instruction answers a question narrower than the defect.512c84b16emits a byte-identical chunk to40a7c538a— the sameframework-nDOJv2Ij.jscontent hash — sod65b2baa4,270f2825band512c84b16together moved this chunk by zero. Corroborated structurally:git show --name-only 270f2825btouches 13 files and not one underpackages/(core|react|types)(grep exit 1, control: 13 files present), so it has no path into this chunk at all.⭐ What the bytes buy, which is what the gate's failure message asks for
Both contributors are silent-wrong-answer repairs on ONE file's filter path,
packages/core'sValueDataSource:f76f43628(fix(core): execute the declared$operators in ValueDataSource, refuse the rest #8512) —matchesFilterended its operator switch ondefault: break, which adds no constraint, so an unrecognised$operator matched EVERY row, silently.e76634cc8(fix(core): ValueDataSource reads its array and{ $field }comparands instead of comparing them by reference #8529) — an array comparand and a{ $field }reference were compared by reference:$neagainst an array was always true and selected every row, while$eqand the{ $field }orderings answered no rows. Fail-open and fail-closed, neither saying anything.The bytes ARE the refusals and the prescriptions that replaced that silence.
⛔ What this PR deliberately does not do
PER_CHUNK_GZIP_CEILINGS, notPER_CHUNK_BASELINE, notREGRESSION_THIS_GATE_MUST_CATCH_BYTES, not the aggregate.f76f43628ande76634cc8are ruled correctness repairs.issuecomment-5584083163; I did not re-measure it, and the prose says so in as many words.Evidence
The diff cannot move the gate's verdict — proved, not argued
origin/main's: both 25,505 characters,==true, with the control that the raw files do differ.Per-chunk numbers before and after — all four budgeted chunks, not just
frameworkbeforeis a build oforigin/mainate411c3e58;afteris a build of this branch. Same command, same CWD.frameworkframework-Go_72ibC.js(identical hash)vendor-objectstackvendor-objectstack-TSYB5b1r.js(identical)i18n-localesi18n-locales-hFYzG_D0.js(identical)ui-componentsui-components-B372jD9I.js(identical)⇒ ⭐ Nothing was pushed into a chunk that happened to have headroom. Every content hash is the same one
origin/mainemits.Gates, exit codes captured by redirect before any pipe
pnpm exec vitest run scripts/__tests__/check-eager-closure-budget.test.tspnpm check:eager-closureon a full console build of this branchnode scripts/check-control-bytes.mjsnode scripts/check-changeset-fixed.mjsnode scripts/check-changeset-no-major.mjsnode scripts/check-changeset-presence.mjspnpm exec eslint .(repo-wide, ⛔ never--no-inline-config)pnpm exec tsc -p tsconfig.scripts.json --noEmitnode scripts/check-governed-queue-guard.mjs --teston both changed pathsAGENTS.mdreturns exit 3, GOVERNED)I injected an unanchored chunk count (
which weighs 50 of 518 chunks) into the new prose to test whether the objectui#7528 pin reads this region. It does not fire. The mutation demonstrably reached disk — anchor line count 1 → 0, injected string 0 → 1, blob hash1e108dfd…→7e07c1cc…— and the suite still passed 104/104. ⇒ The honest reading is that a backticked commit hash elsewhere in the same JSDoc block anchors the whole block, so this narrative region carries no mechanical pin; the review is the guard on it. Restored by state, not by exit code: blob hash back to1e108dfdbe3d385f1c5fd04e0f6db0ed0a2582b7, equal togit rev-parse HEAD:scripts/check-eager-closure-budget.mjs, andgit diff HEAD --statempty. The trap onEXIT INT TERMused absolute paths andgit checkout HEAD --, never a bare restore.⛔ Why this does not close the card
The card amendment at
issuecomment-5585168282puts objectui#8542 into two live branches, and this PR satisfies neither of them on its own:⇒
Part of, not a closing keyword. This PR is the tree-side half of the attribution: it removes a sentence that is now false whichever way the maintainer answers.Draft, and staying draft
⛔ Not flipped ready, ⛔ no auto-merge armed.
check-governed-queue-guardsays this diff is not on a governed surface, so that posture is my dispatch's instruction rather than the repo's requirement.🤖 Generated with Claude Code
https://claude.ai/code/session_01YBWFb5YgMU5dw8p2VKj16S