Skip to content

The eager-closure budget has 4.0 KB of live headroom (0.05x the regression it must catch) where its own design argument assumes 45.7 KB #7848

Description

@claude

Measured while working objectui#7528 (prose-only card, no constant touched). Filing
rather than riding it in: this is a decision about bytes, not a comment fix.

The live margin is 4.0 KB, and the design argument assumes 45.7 KB

Measured on 52cac3886 — a full pnpm turbo run build --filter='./packages/*'
plus pnpm --filter @object-ui/console build, then pnpm check:eager-closure:

✅ Console eager closure is 3187.4 KB gzipped across 50 of 518 chunks (budget: 3191.4 KB, headroom: 4.0 KB).
✅ Ceiling sensitivity (5 ceilings, each weighed against the report just read):
  ✅ aggregate closure   3187.4 KB measured / 3191.4 KB ceiling (headroom 4.0 KB = 0.05x the 89.0 KB regression)  [MAX_EAGER_CLOSURE_GZIP_BYTES]

Raw, from apps/console/dist/eager-closure.json: eagerGzipBytes 3,263,896
against MAX_EAGER_CLOSURE_GZIP_BYTES 3,268,000 — 4,104 bytes of headroom.

The header of scripts/check-eager-closure-budget.mjs states what the ceiling was
chosen to be: "today's measured payload plus half the 89 KiB regression the gate
exists to catch". Against BASELINE.gzipBytes (3,222,314, commit 3d257c85a)
that is 45,686 bytes, 0.50x the regression — the figure objectui#7518 confirmed as
the file's own current reading. The live payload has since grown 41,582 bytes, so
the margin actually in force is 9% of the one the design argues for.

Why this is worth a card

  • Bundle Analysis is a required context. Any change adding ~4 KB to the
    eager closure lands red on main, not on the PR that discusses it.
  • The per-chunk ceilings are in the same state: ui-components 4.0 KB (0.04x),
    i18n-locales 5.7 KB (0.06x), framework 2.4 KB (0.03x). Only
    vendor-objectstack (18.2 KB, 0.20x) has real room.
  • The gate is not broken — it is reporting this itself, in the sensitivity half
    objectui#5924 added. Nothing else says it out loud.

⛔ What this is NOT a request for

Not a ceiling raise. The file rules on that in its own words: "Silently bumping
the number to make CI green reproduces the gate this file replaced", and
re-baselining "is a DECISION, so make it visible". Two honest routes:

  1. Find the bytes. objectui#7486 is a live candidate already filed — the
    console eagerly fetches all ten locale catalogues, ~476 KB gzipped, where a
    viewer uses one.
  2. A declared re-baseline, with what the added bytes buy written in the PR,
    which is the procedure the header already sets out.

Choosing between them is the maintainer's call, which is why this is filed
unassigned rather than fixed.

Not covered elsewhere

objectui#7518 (closed) was about two prose sentences disagreeing about the
headroom, both computed against the frozen baseline; this is the live margin,
which neither sentence describes. objectui#7528 is prose-only and ⛔ ruled out
touching any constant or verdict.


Generated by Claude Code

Activity

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions