Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions .changeset/6778-per-chunk-baseline-provenance.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
---
---

Build tooling only — the `PER_CHUNK_BASELINE` doc comment in
`scripts/check-eager-closure-budget.mjs`. No constant, no verdict and no test
changed; nothing ships from this change.

The paragraph argued from a reading three aggregate re-baselines old. It said
`BASELINE` "still carries `4c1623c0c`" (it carries `3d257c85a`), did its
arithmetic against the retired 4,005,911 figure, and concluded that the
aggregate ceiling sat far above the payload and that the per-chunk ceilings were
therefore the only lines still holding the three biggest chunks in place. That
conclusion was the reverse of what the same script prints in the same run: a
full console build on `e33b44796` reports the aggregate at 3149.2 KB measured /
3191.4 KB ceiling, headroom 42.2 KB = 0.47x the 89.0 KB regression — in range,
and doing work. An author sizing a re-baseline off the comment would have read
"this half is decorative" at the moment the tool was saying "this half is
working".

Rewritten against that live run. The provenance direction is now stated as
unstable by construction — which side is the later reading flips every time
either is re-baselined, so the comment tells the reader to read the commit names
rather than trusting a direction written in prose. The aggregate-versus-per-chunk
relationship is re-derived and narrowed to what is true: all four ceilings are
inside one regression, and the per-chunk ceilings are the TIGHTER half
(0.21x / 0.08x / 0.04x against the aggregate's 0.47x) that also says WHERE, not
the only half that works. The quoted figures are labelled as one dated run, with
the gate's own printed table named as the answer in force.
64 changes: 52 additions & 12 deletions scripts/check-eager-closure-budget.mjs
Original file line numberDiff line numberDiff line change
Expand Up@@ -387,18 +387,58 @@ export const PER_CHUNK_GZIP_CEILINGS = Object.freeze({
* Exported so the ceilings are CHECKED against it instead of merely asserted
* in this comment.
*
* ⚠️ This is a DIFFERENT and LATER reading than {@link BASELINE} above, which
* still carries `4c1623c0c`. On `2c8474c04` the same build measures the closure
* at 3,298,620 bytes — 707,291 BELOW that recorded aggregate baseline, almost
* all of it in `vendor-objectstack` (1,493 KB in the objectui#5490 card, 926 KB
* here). The aggregate ceiling and its baseline were deliberately NOT touched
* by objectui#5490: objectui#5468 ruled that the aggregate line "stays as
* shipped", and moving it — in either direction — is the maintainer's call, not
* this card's. The consequence is recorded rather than quietly fixed: the
* aggregate ceiling now sits ~787 KB above today's payload, which is far more
* than the {@link REGRESSION_THIS_GATE_MUST_CATCH_BYTES} it was sized to catch,
* and until that is re-decided these per-chunk ceilings are what actually holds
* the three biggest chunks in place.
* ⚠️ These readings are on DIFFERENT commits from {@link BASELINE} above, and
* WHICH ONE IS LATER flips every time either side is re-baselined — so read the
* commit names, never a direction asserted here. As of objectui#6776 the
* AGGREGATE is the later reading: BASELINE's `3d257c85a` is dated 2026-08-30
* against `2c8474c04` on 2026-08-25 here, and `a64e96ca8` was recorded by
* objectui#6759, which landed 2026-08-29. This paragraph asserted the reverse,
* in the present tense, from objectui#5490 until objectui#6778 — true when it
* was written, then left standing while three aggregate re-baselines moved
* {@link BASELINE} out from under it.
*
* ⚠️ Do not expect `git show` to answer for all of these. Squash-merge keeps the
* landing commit and drops the PR branch, so of the three named above only
* `2c8474c04` is an ancestor of `main`; `3d257c85a` still resolves as an object
* but is not on `main` (it landed as `350509b53`), and `a64e96ca8` is not an
* object in this repository at all. That is why every hash here is cited WITH
* its issue: the issue outlives the hash.
*
* The aggregate ceiling and its baseline were deliberately NOT touched by
* objectui#5490: objectui#5468 had ruled that the aggregate line "stays as
* shipped", and moving it — in either direction — is the maintainer's call. That
* is why the provenance splits in the first place.
*
* ⛔ The stale direction is the cheap half. The expensive half is the CONCLUSION
* this paragraph used to draw from it: that the aggregate ceiling sat far above
* the payload — 4,086,000 over the 3,298,620 reading, 787,380 bytes of headroom,
* 8.64x {@link REGRESSION_THIS_GATE_MUST_CATCH_BYTES} — and that these per-chunk
* ceilings were therefore the only lines holding the three biggest chunks in
* place. That was accurate for objectui#5490 and is now false: objectui#5924,
* objectui#6683 and objectui#6776 lowered the aggregate ceiling three times,
* onto 3,268,000, and it is back in range and doing work.
*
* Checked rather than argued, which is the rule everywhere else in this file. A
* full console build on `e33b44796` and `pnpm check:eager-closure` printed:
*
* ✅ aggregate closure 3149.2 KB measured / 3191.4 KB ceiling (headroom 42.2 KB = 0.47x)
* ✅ chunk `vendor-objectstack` 925.7 KB measured / 944.3 KB ceiling (headroom 18.6 KB = 0.21x)
* ✅ chunk `framework` 492.9 KB measured / 500.0 KB ceiling (headroom 7.1 KB = 0.08x)
* ✅ chunk `ui-components` 386.2 KB measured / 389.6 KB ceiling (headroom 3.4 KB = 0.04x)
*
* All four sit inside one regression, which is the whole of what "in range"
* means here — {@link evaluateHeadroomSensitivity} calls 1.00x an error. So the
* relationship these ceilings have to the aggregate is no longer "we are the
* half that still works". It is narrower, and still worth having: they are the
* TIGHTER half — 0.21x, 0.08x, 0.04x against the aggregate's 0.47x — so growth
* in these three chunks reds the gate well before the aggregate would, and they
* say WHERE, which one total never can.
*
* ⛔ Do not size a re-baseline off the figures above. They are ONE dated run,
* recorded so this paragraph rests on a measurement instead of an argument; the
* answer in force is the table the gate prints on YOUR build. That this prose
* went three re-baselines stale while the numbers beside it could not
* (objectui#6778) is the reason to distrust the prose first.
*
* Keys must match {@link PER_CHUNK_GZIP_CEILINGS} exactly (a test enforces it):
* a ceiling with no measurement behind it is a number someone guessed, and a
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions .changeset/6778-per-chunk-baseline-provenance.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
---
---

Build tooling only — the `PER_CHUNK_BASELINE` doc comment in
`scripts/check-eager-closure-budget.mjs`. No constant, no verdict and no test
changed; nothing ships from this change.

The paragraph argued from a reading three aggregate re-baselines old. It said
`BASELINE` "still carries `4c1623c0c`" (it carries `3d257c85a`), did its
arithmetic against the retired 4,005,911 figure, and concluded that the
aggregate ceiling sat far above the payload and that the per-chunk ceilings were
therefore the only lines still holding the three biggest chunks in place. That
conclusion was the reverse of what the same script prints in the same run: a
full console build on `e33b44796` reports the aggregate at 3149.2 KB measured /
3191.4 KB ceiling, headroom 42.2 KB = 0.47x the 89.0 KB regression — in range,
and doing work. An author sizing a re-baseline off the comment would have read
"this half is decorative" at the moment the tool was saying "this half is
working".

Rewritten against that live run. The provenance direction is now stated as
unstable by construction — which side is the later reading flips every time
either is re-baselined, so the comment tells the reader to read the commit names
rather than trusting a direction written in prose. The aggregate-versus-per-chunk
relationship is re-derived and narrowed to what is true: all four ceilings are
inside one regression, and the per-chunk ceilings are the TIGHTER half
(0.21x / 0.08x / 0.04x against the aggregate's 0.47x) that also says WHERE, not
the only half that works. The quoted figures are labelled as one dated run, with
the gate's own printed table named as the answer in force.
64 changes: 52 additions & 12 deletions scripts/check-eager-closure-budget.mjs
Original file line numberDiff line numberDiff line change
Expand Up@@ -387,18 +387,58 @@ export const PER_CHUNK_GZIP_CEILINGS = Object.freeze({
* Exported so the ceilings are CHECKED against it instead of merely asserted
* in this comment.
*
* ⚠️ This is a DIFFERENT and LATER reading than {@link BASELINE} above, which
* still carries `4c1623c0c`. On `2c8474c04` the same build measures the closure
* at 3,298,620 bytes — 707,291 BELOW that recorded aggregate baseline, almost
* all of it in `vendor-objectstack` (1,493 KB in the objectui#5490 card, 926 KB
* here). The aggregate ceiling and its baseline were deliberately NOT touched
* by objectui#5490: objectui#5468 ruled that the aggregate line "stays as
* shipped", and moving it — in either direction — is the maintainer's call, not
* this card's. The consequence is recorded rather than quietly fixed: the
* aggregate ceiling now sits ~787 KB above today's payload, which is far more
* than the {@link REGRESSION_THIS_GATE_MUST_CATCH_BYTES} it was sized to catch,
* and until that is re-decided these per-chunk ceilings are what actually holds
* the three biggest chunks in place.
* ⚠️ These readings are on DIFFERENT commits from {@link BASELINE} above, and
* WHICH ONE IS LATER flips every time either side is re-baselined — so read the
* commit names, never a direction asserted here. As of objectui#6776 the
* AGGREGATE is the later reading: BASELINE's `3d257c85a` is dated 2026-08-30
* against `2c8474c04` on 2026-08-25 here, and `a64e96ca8` was recorded by
* objectui#6759, which landed 2026-08-29. This paragraph asserted the reverse,
* in the present tense, from objectui#5490 until objectui#6778 — true when it
* was written, then left standing while three aggregate re-baselines moved
* {@link BASELINE} out from under it.
*
* ⚠️ Do not expect `git show` to answer for all of these. Squash-merge keeps the
* landing commit and drops the PR branch, so of the three named above only
* `2c8474c04` is an ancestor of `main`; `3d257c85a` still resolves as an object
* but is not on `main` (it landed as `350509b53`), and `a64e96ca8` is not an
* object in this repository at all. That is why every hash here is cited WITH
* its issue: the issue outlives the hash.
*
* The aggregate ceiling and its baseline were deliberately NOT touched by
* objectui#5490: objectui#5468 had ruled that the aggregate line "stays as
* shipped", and moving it — in either direction — is the maintainer's call. That
* is why the provenance splits in the first place.
*
* ⛔ The stale direction is the cheap half. The expensive half is the CONCLUSION
* this paragraph used to draw from it: that the aggregate ceiling sat far above
* the payload — 4,086,000 over the 3,298,620 reading, 787,380 bytes of headroom,
* 8.64x {@link REGRESSION_THIS_GATE_MUST_CATCH_BYTES} — and that these per-chunk
* ceilings were therefore the only lines holding the three biggest chunks in
* place. That was accurate for objectui#5490 and is now false: objectui#5924,
* objectui#6683 and objectui#6776 lowered the aggregate ceiling three times,
* onto 3,268,000, and it is back in range and doing work.
*
* Checked rather than argued, which is the rule everywhere else in this file. A
* full console build on `e33b44796` and `pnpm check:eager-closure` printed:
*
* ✅ aggregate closure 3149.2 KB measured / 3191.4 KB ceiling (headroom 42.2 KB = 0.47x)
* ✅ chunk `vendor-objectstack` 925.7 KB measured / 944.3 KB ceiling (headroom 18.6 KB = 0.21x)
* ✅ chunk `framework` 492.9 KB measured / 500.0 KB ceiling (headroom 7.1 KB = 0.08x)
* ✅ chunk `ui-components` 386.2 KB measured / 389.6 KB ceiling (headroom 3.4 KB = 0.04x)
*
* All four sit inside one regression, which is the whole of what "in range"
* means here — {@link evaluateHeadroomSensitivity} calls 1.00x an error. So the
* relationship these ceilings have to the aggregate is no longer "we are the
* half that still works". It is narrower, and still worth having: they are the
* TIGHTER half — 0.21x, 0.08x, 0.04x against the aggregate's 0.47x — so growth
* in these three chunks reds the gate well before the aggregate would, and they
* say WHERE, which one total never can.
*
* ⛔ Do not size a re-baseline off the figures above. They are ONE dated run,
* recorded so this paragraph rests on a measurement instead of an argument; the
* answer in force is the table the gate prints on YOUR build. That this prose
* went three re-baselines stale while the numbers beside it could not
* (objectui#6778) is the reason to distrust the prose first.
*
* Keys must match {@link PER_CHUNK_GZIP_CEILINGS} exactly (a test enforces it):
* a ceiling with no measurement behind it is a number someone guessed, and a
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions .changeset/6778-per-chunk-baseline-provenance.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
---
---

Build tooling only — the `PER_CHUNK_BASELINE` doc comment in
`scripts/check-eager-closure-budget.mjs`. No constant, no verdict and no test
changed; nothing ships from this change.

The paragraph argued from a reading three aggregate re-baselines old. It said
`BASELINE` "still carries `4c1623c0c`" (it carries `3d257c85a`), did its
arithmetic against the retired 4,005,911 figure, and concluded that the
aggregate ceiling sat far above the payload and that the per-chunk ceilings were
therefore the only lines still holding the three biggest chunks in place. That
conclusion was the reverse of what the same script prints in the same run: a
full console build on `e33b44796` reports the aggregate at 3149.2 KB measured /
3191.4 KB ceiling, headroom 42.2 KB = 0.47x the 89.0 KB regression — in range,
and doing work. An author sizing a re-baseline off the comment would have read
"this half is decorative" at the moment the tool was saying "this half is
working".

Rewritten against that live run. The provenance direction is now stated as
unstable by construction — which side is the later reading flips every time
either is re-baselined, so the comment tells the reader to read the commit names
rather than trusting a direction written in prose. The aggregate-versus-per-chunk
relationship is re-derived and narrowed to what is true: all four ceilings are
inside one regression, and the per-chunk ceilings are the TIGHTER half
(0.21x / 0.08x / 0.04x against the aggregate's 0.47x) that also says WHERE, not
the only half that works. The quoted figures are labelled as one dated run, with
the gate's own printed table named as the answer in force.
64 changes: 52 additions & 12 deletions scripts/check-eager-closure-budget.mjs
Original file line numberDiff line numberDiff line change
Expand Up@@ -387,18 +387,58 @@ export const PER_CHUNK_GZIP_CEILINGS = Object.freeze({
* Exported so the ceilings are CHECKED against it instead of merely asserted
* in this comment.
*
* ⚠️ This is a DIFFERENT and LATER reading than {@link BASELINE} above, which
* still carries `4c1623c0c`. On `2c8474c04` the same build measures the closure
* at 3,298,620 bytes — 707,291 BELOW that recorded aggregate baseline, almost
* all of it in `vendor-objectstack` (1,493 KB in the objectui#5490 card, 926 KB
* here). The aggregate ceiling and its baseline were deliberately NOT touched
* by objectui#5490: objectui#5468 ruled that the aggregate line "stays as
* shipped", and moving it — in either direction — is the maintainer's call, not
* this card's. The consequence is recorded rather than quietly fixed: the
* aggregate ceiling now sits ~787 KB above today's payload, which is far more
* than the {@link REGRESSION_THIS_GATE_MUST_CATCH_BYTES} it was sized to catch,
* and until that is re-decided these per-chunk ceilings are what actually holds
* the three biggest chunks in place.
* ⚠️ These readings are on DIFFERENT commits from {@link BASELINE} above, and
* WHICH ONE IS LATER flips every time either side is re-baselined — so read the
* commit names, never a direction asserted here. As of objectui#6776 the
* AGGREGATE is the later reading: BASELINE's `3d257c85a` is dated 2026-08-30
* against `2c8474c04` on 2026-08-25 here, and `a64e96ca8` was recorded by
* objectui#6759, which landed 2026-08-29. This paragraph asserted the reverse,
* in the present tense, from objectui#5490 until objectui#6778 — true when it
* was written, then left standing while three aggregate re-baselines moved
* {@link BASELINE} out from under it.
*
* ⚠️ Do not expect `git show` to answer for all of these. Squash-merge keeps the
* landing commit and drops the PR branch, so of the three named above only
* `2c8474c04` is an ancestor of `main`; `3d257c85a` still resolves as an object
* but is not on `main` (it landed as `350509b53`), and `a64e96ca8` is not an
* object in this repository at all. That is why every hash here is cited WITH
* its issue: the issue outlives the hash.
*
* The aggregate ceiling and its baseline were deliberately NOT touched by
* objectui#5490: objectui#5468 had ruled that the aggregate line "stays as
* shipped", and moving it — in either direction — is the maintainer's call. That
* is why the provenance splits in the first place.
*
* ⛔ The stale direction is the cheap half. The expensive half is the CONCLUSION
* this paragraph used to draw from it: that the aggregate ceiling sat far above
* the payload — 4,086,000 over the 3,298,620 reading, 787,380 bytes of headroom,
* 8.64x {@link REGRESSION_THIS_GATE_MUST_CATCH_BYTES} — and that these per-chunk
* ceilings were therefore the only lines holding the three biggest chunks in
* place. That was accurate for objectui#5490 and is now false: objectui#5924,
* objectui#6683 and objectui#6776 lowered the aggregate ceiling three times,
* onto 3,268,000, and it is back in range and doing work.
*
* Checked rather than argued, which is the rule everywhere else in this file. A
* full console build on `e33b44796` and `pnpm check:eager-closure` printed:
*
* ✅ aggregate closure 3149.2 KB measured / 3191.4 KB ceiling (headroom 42.2 KB = 0.47x)
* ✅ chunk `vendor-objectstack` 925.7 KB measured / 944.3 KB ceiling (headroom 18.6 KB = 0.21x)
* ✅ chunk `framework` 492.9 KB measured / 500.0 KB ceiling (headroom 7.1 KB = 0.08x)
* ✅ chunk `ui-components` 386.2 KB measured / 389.6 KB ceiling (headroom 3.4 KB = 0.04x)
*
* All four sit inside one regression, which is the whole of what "in range"
* means here — {@link evaluateHeadroomSensitivity} calls 1.00x an error. So the
* relationship these ceilings have to the aggregate is no longer "we are the
* half that still works". It is narrower, and still worth having: they are the
* TIGHTER half — 0.21x, 0.08x, 0.04x against the aggregate's 0.47x — so growth
* in these three chunks reds the gate well before the aggregate would, and they
* say WHERE, which one total never can.
*
* ⛔ Do not size a re-baseline off the figures above. They are ONE dated run,
* recorded so this paragraph rests on a measurement instead of an argument; the
* answer in force is the table the gate prints on YOUR build. That this prose
* went three re-baselines stale while the numbers beside it could not
* (objectui#6778) is the reason to distrust the prose first.
*
* Keys must match {@link PER_CHUNK_GZIP_CEILINGS} exactly (a test enforces it):
* a ceiling with no measurement behind it is a number someone guessed, and a
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions .changeset/6778-per-chunk-baseline-provenance.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
---
---

Build tooling only — the `PER_CHUNK_BASELINE` doc comment in
`scripts/check-eager-closure-budget.mjs`. No constant, no verdict and no test
changed; nothing ships from this change.

The paragraph argued from a reading three aggregate re-baselines old. It said
`BASELINE` "still carries `4c1623c0c`" (it carries `3d257c85a`), did its
arithmetic against the retired 4,005,911 figure, and concluded that the
aggregate ceiling sat far above the payload and that the per-chunk ceilings were
therefore the only lines still holding the three biggest chunks in place. That
conclusion was the reverse of what the same script prints in the same run: a
full console build on `e33b44796` reports the aggregate at 3149.2 KB measured /
3191.4 KB ceiling, headroom 42.2 KB = 0.47x the 89.0 KB regression — in range,
and doing work. An author sizing a re-baseline off the comment would have read
"this half is decorative" at the moment the tool was saying "this half is
working".

Rewritten against that live run. The provenance direction is now stated as
unstable by construction — which side is the later reading flips every time
either is re-baselined, so the comment tells the reader to read the commit names
rather than trusting a direction written in prose. The aggregate-versus-per-chunk
relationship is re-derived and narrowed to what is true: all four ceilings are
inside one regression, and the per-chunk ceilings are the TIGHTER half
(0.21x / 0.08x / 0.04x against the aggregate's 0.47x) that also says WHERE, not
the only half that works. The quoted figures are labelled as one dated run, with
the gate's own printed table named as the answer in force.
64 changes: 52 additions & 12 deletions scripts/check-eager-closure-budget.mjs
Original file line numberDiff line numberDiff line change
Expand Up@@ -387,18 +387,58 @@ export const PER_CHUNK_GZIP_CEILINGS = Object.freeze({
* Exported so the ceilings are CHECKED against it instead of merely asserted
* in this comment.
*
* ⚠️ This is a DIFFERENT and LATER reading than {@link BASELINE} above, which
* still carries `4c1623c0c`. On `2c8474c04` the same build measures the closure
* at 3,298,620 bytes — 707,291 BELOW that recorded aggregate baseline, almost
* all of it in `vendor-objectstack` (1,493 KB in the objectui#5490 card, 926 KB
* here). The aggregate ceiling and its baseline were deliberately NOT touched
* by objectui#5490: objectui#5468 ruled that the aggregate line "stays as
* shipped", and moving it — in either direction — is the maintainer's call, not
* this card's. The consequence is recorded rather than quietly fixed: the
* aggregate ceiling now sits ~787 KB above today's payload, which is far more
* than the {@link REGRESSION_THIS_GATE_MUST_CATCH_BYTES} it was sized to catch,
* and until that is re-decided these per-chunk ceilings are what actually holds
* the three biggest chunks in place.
* ⚠️ These readings are on DIFFERENT commits from {@link BASELINE} above, and
* WHICH ONE IS LATER flips every time either side is re-baselined — so read the
* commit names, never a direction asserted here. As of objectui#6776 the
* AGGREGATE is the later reading: BASELINE's `3d257c85a` is dated 2026-08-30
* against `2c8474c04` on 2026-08-25 here, and `a64e96ca8` was recorded by
* objectui#6759, which landed 2026-08-29. This paragraph asserted the reverse,
* in the present tense, from objectui#5490 until objectui#6778 — true when it
* was written, then left standing while three aggregate re-baselines moved
* {@link BASELINE} out from under it.
*
* ⚠️ Do not expect `git show` to answer for all of these. Squash-merge keeps the
* landing commit and drops the PR branch, so of the three named above only
* `2c8474c04` is an ancestor of `main`; `3d257c85a` still resolves as an object
* but is not on `main` (it landed as `350509b53`), and `a64e96ca8` is not an
* object in this repository at all. That is why every hash here is cited WITH
* its issue: the issue outlives the hash.
*
* The aggregate ceiling and its baseline were deliberately NOT touched by
* objectui#5490: objectui#5468 had ruled that the aggregate line "stays as
* shipped", and moving it — in either direction — is the maintainer's call. That
* is why the provenance splits in the first place.
*
* ⛔ The stale direction is the cheap half. The expensive half is the CONCLUSION
* this paragraph used to draw from it: that the aggregate ceiling sat far above
* the payload — 4,086,000 over the 3,298,620 reading, 787,380 bytes of headroom,
* 8.64x {@link REGRESSION_THIS_GATE_MUST_CATCH_BYTES} — and that these per-chunk
* ceilings were therefore the only lines holding the three biggest chunks in
* place. That was accurate for objectui#5490 and is now false: objectui#5924,
* objectui#6683 and objectui#6776 lowered the aggregate ceiling three times,
* onto 3,268,000, and it is back in range and doing work.
*
* Checked rather than argued, which is the rule everywhere else in this file. A
* full console build on `e33b44796` and `pnpm check:eager-closure` printed:
*
* ✅ aggregate closure 3149.2 KB measured / 3191.4 KB ceiling (headroom 42.2 KB = 0.47x)
* ✅ chunk `vendor-objectstack` 925.7 KB measured / 944.3 KB ceiling (headroom 18.6 KB = 0.21x)
* ✅ chunk `framework` 492.9 KB measured / 500.0 KB ceiling (headroom 7.1 KB = 0.08x)
* ✅ chunk `ui-components` 386.2 KB measured / 389.6 KB ceiling (headroom 3.4 KB = 0.04x)
*
* All four sit inside one regression, which is the whole of what "in range"
* means here — {@link evaluateHeadroomSensitivity} calls 1.00x an error. So the
* relationship these ceilings have to the aggregate is no longer "we are the
* half that still works". It is narrower, and still worth having: they are the
* TIGHTER half — 0.21x, 0.08x, 0.04x against the aggregate's 0.47x — so growth
* in these three chunks reds the gate well before the aggregate would, and they
* say WHERE, which one total never can.
*
* ⛔ Do not size a re-baseline off the figures above. They are ONE dated run,
* recorded so this paragraph rests on a measurement instead of an argument; the
* answer in force is the table the gate prints on YOUR build. That this prose
* went three re-baselines stale while the numbers beside it could not
* (objectui#6778) is the reason to distrust the prose first.
*
* Keys must match {@link PER_CHUNK_GZIP_CEILINGS} exactly (a test enforces it):
* a ceiling with no measurement behind it is a number someone guessed, and a
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions .changeset/6778-per-chunk-baseline-provenance.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
---
---

Build tooling only — the `PER_CHUNK_BASELINE` doc comment in
`scripts/check-eager-closure-budget.mjs`. No constant, no verdict and no test
changed; nothing ships from this change.

The paragraph argued from a reading three aggregate re-baselines old. It said
`BASELINE` "still carries `4c1623c0c`" (it carries `3d257c85a`), did its
arithmetic against the retired 4,005,911 figure, and concluded that the
aggregate ceiling sat far above the payload and that the per-chunk ceilings were
therefore the only lines still holding the three biggest chunks in place. That
conclusion was the reverse of what the same script prints in the same run: a
full console build on `e33b44796` reports the aggregate at 3149.2 KB measured /
3191.4 KB ceiling, headroom 42.2 KB = 0.47x the 89.0 KB regression — in range,
and doing work. An author sizing a re-baseline off the comment would have read
"this half is decorative" at the moment the tool was saying "this half is
working".

Rewritten against that live run. The provenance direction is now stated as
unstable by construction — which side is the later reading flips every time
either is re-baselined, so the comment tells the reader to read the commit names
rather than trusting a direction written in prose. The aggregate-versus-per-chunk
relationship is re-derived and narrowed to what is true: all four ceilings are
inside one regression, and the per-chunk ceilings are the TIGHTER half
(0.21x / 0.08x / 0.04x against the aggregate's 0.47x) that also says WHERE, not
the only half that works. The quoted figures are labelled as one dated run, with
the gate's own printed table named as the answer in force.
64 changes: 52 additions & 12 deletions scripts/check-eager-closure-budget.mjs
Original file line numberDiff line numberDiff line change
Expand Up@@ -387,18 +387,58 @@ export const PER_CHUNK_GZIP_CEILINGS = Object.freeze({
* Exported so the ceilings are CHECKED against it instead of merely asserted
* in this comment.
*
* ⚠️ This is a DIFFERENT and LATER reading than {@link BASELINE} above, which
* still carries `4c1623c0c`. On `2c8474c04` the same build measures the closure
* at 3,298,620 bytes — 707,291 BELOW that recorded aggregate baseline, almost
* all of it in `vendor-objectstack` (1,493 KB in the objectui#5490 card, 926 KB
* here). The aggregate ceiling and its baseline were deliberately NOT touched
* by objectui#5490: objectui#5468 ruled that the aggregate line "stays as
* shipped", and moving it — in either direction — is the maintainer's call, not
* this card's. The consequence is recorded rather than quietly fixed: the
* aggregate ceiling now sits ~787 KB above today's payload, which is far more
* than the {@link REGRESSION_THIS_GATE_MUST_CATCH_BYTES} it was sized to catch,
* and until that is re-decided these per-chunk ceilings are what actually holds
* the three biggest chunks in place.
* ⚠️ These readings are on DIFFERENT commits from {@link BASELINE} above, and
* WHICH ONE IS LATER flips every time either side is re-baselined — so read the
* commit names, never a direction asserted here. As of objectui#6776 the
* AGGREGATE is the later reading: BASELINE's `3d257c85a` is dated 2026-08-30
* against `2c8474c04` on 2026-08-25 here, and `a64e96ca8` was recorded by
* objectui#6759, which landed 2026-08-29. This paragraph asserted the reverse,
* in the present tense, from objectui#5490 until objectui#6778 — true when it
* was written, then left standing while three aggregate re-baselines moved
* {@link BASELINE} out from under it.
*
* ⚠️ Do not expect `git show` to answer for all of these. Squash-merge keeps the
* landing commit and drops the PR branch, so of the three named above only
* `2c8474c04` is an ancestor of `main`; `3d257c85a` still resolves as an object
* but is not on `main` (it landed as `350509b53`), and `a64e96ca8` is not an
* object in this repository at all. That is why every hash here is cited WITH
* its issue: the issue outlives the hash.
*
* The aggregate ceiling and its baseline were deliberately NOT touched by
* objectui#5490: objectui#5468 had ruled that the aggregate line "stays as
* shipped", and moving it — in either direction — is the maintainer's call. That
* is why the provenance splits in the first place.
*
* ⛔ The stale direction is the cheap half. The expensive half is the CONCLUSION
* this paragraph used to draw from it: that the aggregate ceiling sat far above
* the payload — 4,086,000 over the 3,298,620 reading, 787,380 bytes of headroom,
* 8.64x {@link REGRESSION_THIS_GATE_MUST_CATCH_BYTES} — and that these per-chunk
* ceilings were therefore the only lines holding the three biggest chunks in
* place. That was accurate for objectui#5490 and is now false: objectui#5924,
* objectui#6683 and objectui#6776 lowered the aggregate ceiling three times,
* onto 3,268,000, and it is back in range and doing work.
*
* Checked rather than argued, which is the rule everywhere else in this file. A
* full console build on `e33b44796` and `pnpm check:eager-closure` printed:
*
* ✅ aggregate closure 3149.2 KB measured / 3191.4 KB ceiling (headroom 42.2 KB = 0.47x)
* ✅ chunk `vendor-objectstack` 925.7 KB measured / 944.3 KB ceiling (headroom 18.6 KB = 0.21x)
* ✅ chunk `framework` 492.9 KB measured / 500.0 KB ceiling (headroom 7.1 KB = 0.08x)
* ✅ chunk `ui-components` 386.2 KB measured / 389.6 KB ceiling (headroom 3.4 KB = 0.04x)
*
* All four sit inside one regression, which is the whole of what "in range"
* means here — {@link evaluateHeadroomSensitivity} calls 1.00x an error. So the
* relationship these ceilings have to the aggregate is no longer "we are the
* half that still works". It is narrower, and still worth having: they are the
* TIGHTER half — 0.21x, 0.08x, 0.04x against the aggregate's 0.47x — so growth
* in these three chunks reds the gate well before the aggregate would, and they
* say WHERE, which one total never can.
*
* ⛔ Do not size a re-baseline off the figures above. They are ONE dated run,
* recorded so this paragraph rests on a measurement instead of an argument; the
* answer in force is the table the gate prints on YOUR build. That this prose
* went three re-baselines stale while the numbers beside it could not
* (objectui#6778) is the reason to distrust the prose first.
*
* Keys must match {@link PER_CHUNK_GZIP_CEILINGS} exactly (a test enforces it):
* a ceiling with no measurement behind it is a number someone guessed, and a
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions .changeset/6778-per-chunk-baseline-provenance.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
---
---

Build tooling only — the `PER_CHUNK_BASELINE` doc comment in
`scripts/check-eager-closure-budget.mjs`. No constant, no verdict and no test
changed; nothing ships from this change.

The paragraph argued from a reading three aggregate re-baselines old. It said
`BASELINE` "still carries `4c1623c0c`" (it carries `3d257c85a`), did its
arithmetic against the retired 4,005,911 figure, and concluded that the
aggregate ceiling sat far above the payload and that the per-chunk ceilings were
therefore the only lines still holding the three biggest chunks in place. That
conclusion was the reverse of what the same script prints in the same run: a
full console build on `e33b44796` reports the aggregate at 3149.2 KB measured /
3191.4 KB ceiling, headroom 42.2 KB = 0.47x the 89.0 KB regression — in range,
and doing work. An author sizing a re-baseline off the comment would have read
"this half is decorative" at the moment the tool was saying "this half is
working".

Rewritten against that live run. The provenance direction is now stated as
unstable by construction — which side is the later reading flips every time
either is re-baselined, so the comment tells the reader to read the commit names
rather than trusting a direction written in prose. The aggregate-versus-per-chunk
relationship is re-derived and narrowed to what is true: all four ceilings are
inside one regression, and the per-chunk ceilings are the TIGHTER half
(0.21x / 0.08x / 0.04x against the aggregate's 0.47x) that also says WHERE, not
the only half that works. The quoted figures are labelled as one dated run, with
the gate's own printed table named as the answer in force.
64 changes: 52 additions & 12 deletions scripts/check-eager-closure-budget.mjs
Original file line numberDiff line numberDiff line change
Expand Up@@ -387,18 +387,58 @@ export const PER_CHUNK_GZIP_CEILINGS = Object.freeze({
* Exported so the ceilings are CHECKED against it instead of merely asserted
* in this comment.
*
* ⚠️ This is a DIFFERENT and LATER reading than {@link BASELINE} above, which
* still carries `4c1623c0c`. On `2c8474c04` the same build measures the closure
* at 3,298,620 bytes — 707,291 BELOW that recorded aggregate baseline, almost
* all of it in `vendor-objectstack` (1,493 KB in the objectui#5490 card, 926 KB
* here). The aggregate ceiling and its baseline were deliberately NOT touched
* by objectui#5490: objectui#5468 ruled that the aggregate line "stays as
* shipped", and moving it — in either direction — is the maintainer's call, not
* this card's. The consequence is recorded rather than quietly fixed: the
* aggregate ceiling now sits ~787 KB above today's payload, which is far more
* than the {@link REGRESSION_THIS_GATE_MUST_CATCH_BYTES} it was sized to catch,
* and until that is re-decided these per-chunk ceilings are what actually holds
* the three biggest chunks in place.
* ⚠️ These readings are on DIFFERENT commits from {@link BASELINE} above, and
* WHICH ONE IS LATER flips every time either side is re-baselined — so read the
* commit names, never a direction asserted here. As of objectui#6776 the
* AGGREGATE is the later reading: BASELINE's `3d257c85a` is dated 2026-08-30
* against `2c8474c04` on 2026-08-25 here, and `a64e96ca8` was recorded by
* objectui#6759, which landed 2026-08-29. This paragraph asserted the reverse,
* in the present tense, from objectui#5490 until objectui#6778 — true when it
* was written, then left standing while three aggregate re-baselines moved
* {@link BASELINE} out from under it.
*
* ⚠️ Do not expect `git show` to answer for all of these. Squash-merge keeps the
* landing commit and drops the PR branch, so of the three named above only
* `2c8474c04` is an ancestor of `main`; `3d257c85a` still resolves as an object
* but is not on `main` (it landed as `350509b53`), and `a64e96ca8` is not an
* object in this repository at all. That is why every hash here is cited WITH
* its issue: the issue outlives the hash.
*
* The aggregate ceiling and its baseline were deliberately NOT touched by
* objectui#5490: objectui#5468 had ruled that the aggregate line "stays as
* shipped", and moving it — in either direction — is the maintainer's call. That
* is why the provenance splits in the first place.
*
* ⛔ The stale direction is the cheap half. The expensive half is the CONCLUSION
* this paragraph used to draw from it: that the aggregate ceiling sat far above
* the payload — 4,086,000 over the 3,298,620 reading, 787,380 bytes of headroom,
* 8.64x {@link REGRESSION_THIS_GATE_MUST_CATCH_BYTES} — and that these per-chunk
* ceilings were therefore the only lines holding the three biggest chunks in
* place. That was accurate for objectui#5490 and is now false: objectui#5924,
* objectui#6683 and objectui#6776 lowered the aggregate ceiling three times,
* onto 3,268,000, and it is back in range and doing work.
*
* Checked rather than argued, which is the rule everywhere else in this file. A
* full console build on `e33b44796` and `pnpm check:eager-closure` printed:
*
* ✅ aggregate closure 3149.2 KB measured / 3191.4 KB ceiling (headroom 42.2 KB = 0.47x)
* ✅ chunk `vendor-objectstack` 925.7 KB measured / 944.3 KB ceiling (headroom 18.6 KB = 0.21x)
* ✅ chunk `framework` 492.9 KB measured / 500.0 KB ceiling (headroom 7.1 KB = 0.08x)
* ✅ chunk `ui-components` 386.2 KB measured / 389.6 KB ceiling (headroom 3.4 KB = 0.04x)
*
* All four sit inside one regression, which is the whole of what "in range"
* means here — {@link evaluateHeadroomSensitivity} calls 1.00x an error. So the
* relationship these ceilings have to the aggregate is no longer "we are the
* half that still works". It is narrower, and still worth having: they are the
* TIGHTER half — 0.21x, 0.08x, 0.04x against the aggregate's 0.47x — so growth
* in these three chunks reds the gate well before the aggregate would, and they
* say WHERE, which one total never can.
*
* ⛔ Do not size a re-baseline off the figures above. They are ONE dated run,
* recorded so this paragraph rests on a measurement instead of an argument; the
* answer in force is the table the gate prints on YOUR build. That this prose
* went three re-baselines stale while the numbers beside it could not
* (objectui#6778) is the reason to distrust the prose first.
*
* Keys must match {@link PER_CHUNK_GZIP_CEILINGS} exactly (a test enforces it):
* a ceiling with no measurement behind it is a number someone guessed, and a
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions .changeset/6778-per-chunk-baseline-provenance.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
---
---

Build tooling only — the `PER_CHUNK_BASELINE` doc comment in
`scripts/check-eager-closure-budget.mjs`. No constant, no verdict and no test
changed; nothing ships from this change.

The paragraph argued from a reading three aggregate re-baselines old. It said
`BASELINE` "still carries `4c1623c0c`" (it carries `3d257c85a`), did its
arithmetic against the retired 4,005,911 figure, and concluded that the
aggregate ceiling sat far above the payload and that the per-chunk ceilings were
therefore the only lines still holding the three biggest chunks in place. That
conclusion was the reverse of what the same script prints in the same run: a
full console build on `e33b44796` reports the aggregate at 3149.2 KB measured /
3191.4 KB ceiling, headroom 42.2 KB = 0.47x the 89.0 KB regression — in range,
and doing work. An author sizing a re-baseline off the comment would have read
"this half is decorative" at the moment the tool was saying "this half is
working".

Rewritten against that live run. The provenance direction is now stated as
unstable by construction — which side is the later reading flips every time
either is re-baselined, so the comment tells the reader to read the commit names
rather than trusting a direction written in prose. The aggregate-versus-per-chunk
relationship is re-derived and narrowed to what is true: all four ceilings are
inside one regression, and the per-chunk ceilings are the TIGHTER half
(0.21x / 0.08x / 0.04x against the aggregate's 0.47x) that also says WHERE, not
the only half that works. The quoted figures are labelled as one dated run, with
the gate's own printed table named as the answer in force.
64 changes: 52 additions & 12 deletions scripts/check-eager-closure-budget.mjs
Original file line numberDiff line numberDiff line change
Expand Up@@ -387,18 +387,58 @@ export const PER_CHUNK_GZIP_CEILINGS = Object.freeze({
* Exported so the ceilings are CHECKED against it instead of merely asserted
* in this comment.
*
* ⚠️ This is a DIFFERENT and LATER reading than {@link BASELINE} above, which
* still carries `4c1623c0c`. On `2c8474c04` the same build measures the closure
* at 3,298,620 bytes — 707,291 BELOW that recorded aggregate baseline, almost
* all of it in `vendor-objectstack` (1,493 KB in the objectui#5490 card, 926 KB
* here). The aggregate ceiling and its baseline were deliberately NOT touched
* by objectui#5490: objectui#5468 ruled that the aggregate line "stays as
* shipped", and moving it — in either direction — is the maintainer's call, not
* this card's. The consequence is recorded rather than quietly fixed: the
* aggregate ceiling now sits ~787 KB above today's payload, which is far more
* than the {@link REGRESSION_THIS_GATE_MUST_CATCH_BYTES} it was sized to catch,
* and until that is re-decided these per-chunk ceilings are what actually holds
* the three biggest chunks in place.
* ⚠️ These readings are on DIFFERENT commits from {@link BASELINE} above, and
* WHICH ONE IS LATER flips every time either side is re-baselined — so read the
* commit names, never a direction asserted here. As of objectui#6776 the
* AGGREGATE is the later reading: BASELINE's `3d257c85a` is dated 2026-08-30
* against `2c8474c04` on 2026-08-25 here, and `a64e96ca8` was recorded by
* objectui#6759, which landed 2026-08-29. This paragraph asserted the reverse,
* in the present tense, from objectui#5490 until objectui#6778 — true when it
* was written, then left standing while three aggregate re-baselines moved
* {@link BASELINE} out from under it.
*
* ⚠️ Do not expect `git show` to answer for all of these. Squash-merge keeps the
* landing commit and drops the PR branch, so of the three named above only
* `2c8474c04` is an ancestor of `main`; `3d257c85a` still resolves as an object
* but is not on `main` (it landed as `350509b53`), and `a64e96ca8` is not an
* object in this repository at all. That is why every hash here is cited WITH
* its issue: the issue outlives the hash.
*
* The aggregate ceiling and its baseline were deliberately NOT touched by
* objectui#5490: objectui#5468 had ruled that the aggregate line "stays as
* shipped", and moving it — in either direction — is the maintainer's call. That
* is why the provenance splits in the first place.
*
* ⛔ The stale direction is the cheap half. The expensive half is the CONCLUSION
* this paragraph used to draw from it: that the aggregate ceiling sat far above
* the payload — 4,086,000 over the 3,298,620 reading, 787,380 bytes of headroom,
* 8.64x {@link REGRESSION_THIS_GATE_MUST_CATCH_BYTES} — and that these per-chunk
* ceilings were therefore the only lines holding the three biggest chunks in
* place. That was accurate for objectui#5490 and is now false: objectui#5924,
* objectui#6683 and objectui#6776 lowered the aggregate ceiling three times,
* onto 3,268,000, and it is back in range and doing work.
*
* Checked rather than argued, which is the rule everywhere else in this file. A
* full console build on `e33b44796` and `pnpm check:eager-closure` printed:
*
* ✅ aggregate closure 3149.2 KB measured / 3191.4 KB ceiling (headroom 42.2 KB = 0.47x)
* ✅ chunk `vendor-objectstack` 925.7 KB measured / 944.3 KB ceiling (headroom 18.6 KB = 0.21x)
* ✅ chunk `framework` 492.9 KB measured / 500.0 KB ceiling (headroom 7.1 KB = 0.08x)
* ✅ chunk `ui-components` 386.2 KB measured / 389.6 KB ceiling (headroom 3.4 KB = 0.04x)
*
* All four sit inside one regression, which is the whole of what "in range"
* means here — {@link evaluateHeadroomSensitivity} calls 1.00x an error. So the
* relationship these ceilings have to the aggregate is no longer "we are the
* half that still works". It is narrower, and still worth having: they are the
* TIGHTER half — 0.21x, 0.08x, 0.04x against the aggregate's 0.47x — so growth
* in these three chunks reds the gate well before the aggregate would, and they
* say WHERE, which one total never can.
*
* ⛔ Do not size a re-baseline off the figures above. They are ONE dated run,
* recorded so this paragraph rests on a measurement instead of an argument; the
* answer in force is the table the gate prints on YOUR build. That this prose
* went three re-baselines stale while the numbers beside it could not
* (objectui#6778) is the reason to distrust the prose first.
*
* Keys must match {@link PER_CHUNK_GZIP_CEILINGS} exactly (a test enforces it):
* a ceiling with no measurement behind it is a number someone guessed, and a
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions .changeset/6778-per-chunk-baseline-provenance.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
---
---

Build tooling only — the `PER_CHUNK_BASELINE` doc comment in
`scripts/check-eager-closure-budget.mjs`. No constant, no verdict and no test
changed; nothing ships from this change.

The paragraph argued from a reading three aggregate re-baselines old. It said
`BASELINE` "still carries `4c1623c0c`" (it carries `3d257c85a`), did its
arithmetic against the retired 4,005,911 figure, and concluded that the
aggregate ceiling sat far above the payload and that the per-chunk ceilings were
therefore the only lines still holding the three biggest chunks in place. That
conclusion was the reverse of what the same script prints in the same run: a
full console build on `e33b44796` reports the aggregate at 3149.2 KB measured /
3191.4 KB ceiling, headroom 42.2 KB = 0.47x the 89.0 KB regression — in range,
and doing work. An author sizing a re-baseline off the comment would have read
"this half is decorative" at the moment the tool was saying "this half is
working".

Rewritten against that live run. The provenance direction is now stated as
unstable by construction — which side is the later reading flips every time
either is re-baselined, so the comment tells the reader to read the commit names
rather than trusting a direction written in prose. The aggregate-versus-per-chunk
relationship is re-derived and narrowed to what is true: all four ceilings are
inside one regression, and the per-chunk ceilings are the TIGHTER half
(0.21x / 0.08x / 0.04x against the aggregate's 0.47x) that also says WHERE, not
the only half that works. The quoted figures are labelled as one dated run, with
the gate's own printed table named as the answer in force.
64 changes: 52 additions & 12 deletions scripts/check-eager-closure-budget.mjs
Original file line numberDiff line numberDiff line change
Expand Up@@ -387,18 +387,58 @@ export const PER_CHUNK_GZIP_CEILINGS = Object.freeze({
* Exported so the ceilings are CHECKED against it instead of merely asserted
* in this comment.
*
* ⚠️ This is a DIFFERENT and LATER reading than {@link BASELINE} above, which
* still carries `4c1623c0c`. On `2c8474c04` the same build measures the closure
* at 3,298,620 bytes — 707,291 BELOW that recorded aggregate baseline, almost
* all of it in `vendor-objectstack` (1,493 KB in the objectui#5490 card, 926 KB
* here). The aggregate ceiling and its baseline were deliberately NOT touched
* by objectui#5490: objectui#5468 ruled that the aggregate line "stays as
* shipped", and moving it — in either direction — is the maintainer's call, not
* this card's. The consequence is recorded rather than quietly fixed: the
* aggregate ceiling now sits ~787 KB above today's payload, which is far more
* than the {@link REGRESSION_THIS_GATE_MUST_CATCH_BYTES} it was sized to catch,
* and until that is re-decided these per-chunk ceilings are what actually holds
* the three biggest chunks in place.
* ⚠️ These readings are on DIFFERENT commits from {@link BASELINE} above, and
* WHICH ONE IS LATER flips every time either side is re-baselined — so read the
* commit names, never a direction asserted here. As of objectui#6776 the
* AGGREGATE is the later reading: BASELINE's `3d257c85a` is dated 2026-08-30
* against `2c8474c04` on 2026-08-25 here, and `a64e96ca8` was recorded by
* objectui#6759, which landed 2026-08-29. This paragraph asserted the reverse,
* in the present tense, from objectui#5490 until objectui#6778 — true when it
* was written, then left standing while three aggregate re-baselines moved
* {@link BASELINE} out from under it.
*
* ⚠️ Do not expect `git show` to answer for all of these. Squash-merge keeps the
* landing commit and drops the PR branch, so of the three named above only
* `2c8474c04` is an ancestor of `main`; `3d257c85a` still resolves as an object
* but is not on `main` (it landed as `350509b53`), and `a64e96ca8` is not an
* object in this repository at all. That is why every hash here is cited WITH
* its issue: the issue outlives the hash.
*
* The aggregate ceiling and its baseline were deliberately NOT touched by
* objectui#5490: objectui#5468 had ruled that the aggregate line "stays as
* shipped", and moving it — in either direction — is the maintainer's call. That
* is why the provenance splits in the first place.
*
* ⛔ The stale direction is the cheap half. The expensive half is the CONCLUSION
* this paragraph used to draw from it: that the aggregate ceiling sat far above
* the payload — 4,086,000 over the 3,298,620 reading, 787,380 bytes of headroom,
* 8.64x {@link REGRESSION_THIS_GATE_MUST_CATCH_BYTES} — and that these per-chunk
* ceilings were therefore the only lines holding the three biggest chunks in
* place. That was accurate for objectui#5490 and is now false: objectui#5924,
* objectui#6683 and objectui#6776 lowered the aggregate ceiling three times,
* onto 3,268,000, and it is back in range and doing work.
*
* Checked rather than argued, which is the rule everywhere else in this file. A
* full console build on `e33b44796` and `pnpm check:eager-closure` printed:
*
* ✅ aggregate closure 3149.2 KB measured / 3191.4 KB ceiling (headroom 42.2 KB = 0.47x)
* ✅ chunk `vendor-objectstack` 925.7 KB measured / 944.3 KB ceiling (headroom 18.6 KB = 0.21x)
* ✅ chunk `framework` 492.9 KB measured / 500.0 KB ceiling (headroom 7.1 KB = 0.08x)
* ✅ chunk `ui-components` 386.2 KB measured / 389.6 KB ceiling (headroom 3.4 KB = 0.04x)
*
* All four sit inside one regression, which is the whole of what "in range"
* means here — {@link evaluateHeadroomSensitivity} calls 1.00x an error. So the
* relationship these ceilings have to the aggregate is no longer "we are the
* half that still works". It is narrower, and still worth having: they are the
* TIGHTER half — 0.21x, 0.08x, 0.04x against the aggregate's 0.47x — so growth
* in these three chunks reds the gate well before the aggregate would, and they
* say WHERE, which one total never can.
*
* ⛔ Do not size a re-baseline off the figures above. They are ONE dated run,
* recorded so this paragraph rests on a measurement instead of an argument; the
* answer in force is the table the gate prints on YOUR build. That this prose
* went three re-baselines stale while the numbers beside it could not
* (objectui#6778) is the reason to distrust the prose first.
*
* Keys must match {@link PER_CHUNK_GZIP_CEILINGS} exactly (a test enforces it):
* a ceiling with no measurement behind it is a number someone guessed, and a
Expand Down
Loading