@@ -561,6 +561,46 @@ export const REGRESSION_THIS_GATE_MUST_CATCH_BYTES = 89 * 1024;
561561 * constraint to live is the argument for taking the catalogues out of the eager
562562 * closure rather than for raising anything.
563563 *
564+ * ## Why `framework` moved UP — the maintainer ruling of 2026-09-08
565+ *
566+ * From 71,000 over a 61,465 payload to 100,000 over 72,245, the latter measured
567+ * on `3f775eeb8`. ⛔ The number is the MAINTAINER'S, taken after the trade-off
568+ * was put to them; it is not derived here, and nothing in this section should be
569+ * read as a derivation of it. What is recorded here is what the raise COSTS,
570+ * because that is the half a later reader cannot recover from the constant.
571+ *
572+ * ⛔ What the bytes buy: NOTHING IDENTIFIABLE, and that is the finding, not an
573+ * omission. The failure message this raise silences asks the author to "say in
574+ * the PR what the bytes buy". Nobody can: `Bundle Analysis` went red on `main`
575+ * at `f76f43628` with `40a7c538a` the last green, and the commits in that window
576+ * have never been bisected — this checker is a two-build predicate over them and
577+ * no one has run it. ⚠️ So this raise does not answer the attribution question,
578+ * it makes it HARDER TO ASK: the line that was holding the unexplained bytes in
579+ * view now passes over them. objectui#8542 owns that attribution and stays open;
580+ * objectui#8541 recorded the same red first and is closed as its duplicate.
581+ *
582+ * ⚠️ This also makes `framework` the LOOSEST ceiling in this object, measured
583+ * rather than asserted. All four were read from the one `3f775eeb8` console
584+ * build, against {@link REGRESSION_THIS_GATE_MUST_CATCH_BYTES}:
585+ *
586+ * | ceiling | headroom | multiple |
587+ * | `framework` | 27,755 | 0.30x |
588+ * | `vendor-objectstack` | 18,848 | 0.21x |
589+ * | `ui-components` | 5,729 | 0.06x |
590+ * | `i18n-locales` | 2,900 | 0.03x |
591+ *
592+ * ⇒ it carries more slack than the next loosest and an order of magnitude more
593+ * than the tightest, and it abandons the 0.10x convention objectui#7399 re-pinned
594+ * this key and `i18n-locales` to. It is still inside one regression — 1.00x is
595+ * where {@link evaluateHeadroomSensitivity} calls a line blind — but "not blind"
596+ * is the floor this file refuses to fall through, not a standard it aims at.
597+ *
598+ * ⛔ {@link REGRESSION_THIS_GATE_MUST_CATCH_BYTES} did NOT move, and this is the
599+ * exact case the rule under {@link MAX_EAGER_CLOSURE_GZIP_BYTES} was written for:
600+ * a ceiling that rises while the sensitivity relaxes is a gate quietly retiring
601+ * itself. Nothing else moved either — not the other three ceilings, not the
602+ * aggregate, not {@link BASELINE}. One ceiling and its baseline, in one commit.
603+ *
564604 * ## Raising one
565605 *
566606 * Same discipline as {@link MAX_EAGER_CLOSURE_GZIP_BYTES}, and the same two
@@ -581,7 +621,12 @@ export const PER_CHUNK_GZIP_CEILINGS = Object.freeze({
581621 // proportion the retiring pair carried (18,539 = 0.20x).
582622 'vendor-objectstack' : 1_254_000 ,
583623 'i18n-locales' : 455_000 ,
584- framework : 71_000 ,
624+ // Raised by the maintainer ruling of 2026-09-08, ⛔ not by a measurement here:
625+ // `main` had been red on this line since `f76f43628` and the bytes that put it
626+ // there are UNATTRIBUTED. Headroom 27,755 bytes = 0.30x
627+ // REGRESSION_THIS_GATE_MUST_CATCH_BYTES on `3f775eeb8` — the loosest of the
628+ // four. See "Why `framework` moved UP" above for what that costs.
629+ framework : 100_000 ,
585630 'ui-components' : 399_000 ,
586631} ) ;
587632
@@ -596,22 +641,33 @@ export const PER_CHUNK_GZIP_CEILINGS = Object.freeze({
596641 * was raised with the aggregate. Same build as {@link BASELINE}, so the
597642 * two are directly comparable; it superseded `2c8474c04` (objectui#5490).
598643 * - `ui-components` — `2c8474c04` (objectui#5490).
599- * - `framework`, `i18n-locales` — `e307c9896` plus objectui#7399's own
600- * re-attribution diff; see "Why `framework` moved DOWN" above. Both were
601- * read from ONE console build, so they are directly comparable to each
602- * other and to the 523,959 the same tree measured with the groups still
603- * tied. This `framework` reading supersedes objectui#7173's, whose
604- * three-build attribution the paragraph above that one still explains, and
605- * objectui#6759's `a64e96ca8` before it.
606- *
607- * ⚠️ Unlike every other entry here, these two are NOT a reading of an
608- * unmodified tree: the chunks they name do not exist without the diff that
609- * recorded them, because that diff is what creates the second one. The
644+ * - `framework` — `3f775eeb8`, the `main` tip this raise's branch was cut
645+ * from, read out of the `apps/console/dist/eager-closure.json` written by
646+ * `pnpm turbo run build --filter='./packages/*'` followed by
647+ * `pnpm --filter @object-ui/console build`, run on that tree with NO diff of
648+ * its own applied. See "Why `framework` moved UP" above for the ruling it
649+ * was measured for and what that raise costs. It supersedes objectui#7399's
650+ * `e307c9896` reading, objectui#7173's before that, and objectui#6759's
651+ * `a64e96ca8` before that. ⚠️ Unlike the entry below it, this one IS a
652+ * reading of an unmodified tree — the change it pins lives entirely in this
653+ * file, and `scripts/check-*.mjs` is not a console build input — so the
654+ * {@link BASELINE} argument DOES cover it, and it is ⛔ NOT comparable to
655+ * the `i18n-locales` figure below, which is an older build on another commit.
656+ * - `i18n-locales` — `e307c9896` plus objectui#7399's own re-attribution
657+ * diff; see "Why `framework` moved DOWN" above. It was read from ONE console
658+ * build together with the `framework` figure objectui#7399 recorded, so it
659+ * is directly comparable to the 523,959 that same tree measured with the
660+ * groups still tied — ⚠️ and, since objectui#8541's raise, ⛔ no longer to
661+ * the `framework` entry above it.
662+ *
663+ * ⚠️ Unlike every other entry here, this one is NOT a reading of an
664+ * unmodified tree: the chunk it names does not exist without the diff that
665+ * recorded it, because that diff is what creates it. The
610666 * `scripts/vite-*.ts`-versus-`scripts/check-*.mjs` argument {@link BASELINE}
611- * makes about its own commit does NOT cover them — `apps/console/vite.config.ts`
667+ * makes about its own commit does NOT cover it — `apps/console/vite.config.ts`
612668 * IS a build input, deliberately, and moving it is the change. What keeps
613- * them honest instead is that the gate re-reads them on every CI build of
614- * the branch that carries the diff.
669+ * it honest instead is that the gate re-reads it on every CI build of the
670+ * branch that carries the diff.
615671 *
616672 * Exported so the ceilings are CHECKED against it instead of merely asserted
617673 * in this comment.
@@ -682,7 +738,10 @@ export const PER_CHUNK_BASELINE = Object.freeze({
682738 // `34a1578ef`, the same build as BASELINE above (objectui#7122).
683739 'vendor-objectstack' : 1_235_029 ,
684740 'i18n-locales' : 446_076 ,
685- framework : 61_465 ,
741+ // `3f775eeb8`, its OWN console build — ⛔ not the one above it and not
742+ // BASELINE's. Moved with the ceiling in the same commit, per the maintainer
743+ // ruling of 2026-09-08 and the rule stated under "Raising one".
744+ framework : 72_245 ,
686745 'ui-components' : 391_095 ,
687746} ) ;
688747
0 commit comments