Skip to content

The eager-closure budget's RESTORE CONDITION is void — objectstack#16063 was ruled accepted, so the note tells the next author to wait for something that will never happen #8283

Description

@os-justin

Filed and claimed by the domain:ui PM seat (session_01YBWFb5YgMU5dw8p2VKj16S) as the recording half of a maintainer decision — see Authorisation below.

The defect

scripts/check-eager-closure-budget.mjs:328, landed with objectui#7685 (639114c4d):

objectstack#16063. RESTORE CONDITION: when that lands, re-measure and bring [ceiling and baseline back down together]

That condition can never fire. objectstack-ai/objectstack#16063 was ruled 「16063 c」 by the director seat (decision batch #59, recorded on objectui#7122 at 2026-09-06T15:02Z): the +292.2 KB gzip growth of @objectstack/spec's browser dist at 17.3.0 is accepted upstream permanently — no prose stripping and no short-describe convention will land.

⇒ two things are wrong with the note as it stands:

  1. It points the next author at an upstream fix that is not coming, so the numbers look like a temporary exception awaiting reversal.
  2. They are not temporary. They are the standing baseline — which is the whole content of the decision below.

⚠️ :559 carries a second, similarly-shaped sentence (re-measure and lower both numbers together). Whether it is the same note or a different one was not determined here — re-derive both rather than fixing only :328.

Authorisation — recorded, because a ceiling is a gate weakening

The maintainer was asked directly, with three options and the trade stated each way, and chose: 「A|重设基线」 — re-baseline, restore headroom to 0.50x, and record the cause.

This card is that last clause. The re-baseline itself is already done and needs nothing: objectui#7685 landed carrying MAX_EAGER_CLOSURE_GZIP_BYTES = 3_597_000 over BASELINE.gzipBytes = 3_551_191.

Verified independently on main fc32921aa rather than taken from that PR:

value
ceiling 3,597,000
baseline 3,551,191
headroom 45,809
REGRESSION_THIS_GATE_MUST_CATCH_BYTES 89 × 1024 = 91,136
sensitivity 0.503x

The gate's own docblock at :90 says H = REGRESSION / 2 is the only value, so 0.50x is not a preference — it is the constraint, and the landed numbers satisfy it.

⇒ what remains is only that the cause note describes those numbers correctly.

What the note has to say instead

  • The growth is @objectstack/spec 17.3.0's browser dist, accepted upstream (objectstack#16063, ruled 「c」), so this is the standing baseline, not an exception.
  • ⛔ Do not delete the cause. The gate's own header treats a re-baseline as a visible, justified decision, and the next bump must be measured against this number knowing why it moved.
  • Name the authorising decision so the next reader does not have to reconstruct it.

⛔ Out of scope

⛔ Do not move MAX_EAGER_CLOSURE_GZIP_BYTES, BASELINE, or any per-chunk ceiling. They are correct and maintainer-authorised. This card is prose and provenance only — if a number needs changing, that is a different card and a different authorisation.

⛔ Do not touch REGRESSION_THIS_GATE_MUST_CATCH_BYTES. objectui#7685's own body records that it deliberately did not move.

Note for the dev

scripts/__tests__/check-eager-closure-budget.test.ts pins constants from this file. A prose-only change should not move it — verify that rather than assuming it, and if a pin does read the note's text, say so and report what it asserts.

Refs: objectui#7685 (639114c4d, where the note landed) · objectui#7122 (where the 「16063 c」 ruling is recorded) · objectstack#16063 · objectui#6776 (the original 0.50x sizing) · objectui#8272 (the PR whose red surfaced the exhausted headroom).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatfindingpm:dispatchedpriority:p2tests

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions