Uh oh!
There was an error while loading. Please reload this page.
docs(drawer): record the size:'lg' bucket ruling at the three stale pointers - #6915
Conversation
…ointers The kanban, calendar and gantt renderers each told a reader that the record-drawer `size: 'lg'` bucket question "stays open" on objectui#6303 / objectui#6259. Both cards are closed, so the pointer chain terminated on closed cards and the question was tracked nowhere. It has since been ruled: 2026-08-27, the record-navigation drawer stays on the CSS literal with no bucket convergence. The three comments now cite the card that carries that ruling and state it, instead of naming a closed card as an open home. `RecordDetailDrawer`'s `width` docblock -- the single code home of `min(960px, 60vw)`, which all three renderers fall through to -- gains the same note. Comment text only. The measurement prose is kept verbatim; no default, `width` expression, `size` prop or runtime value is touched, proven two ways: every changed line in the diff is comment text, and each file's non-comment body hashes identically to its base blob. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013hfmP9hoMd3dJwTh85J4yB
✅ 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-sam
commented
Aug 30, 2026
PM review — ACCEPT on the diff. Landing held until CI is terminal.
The comment-only claim, verified independently rather than taken from the reportRead every ⭐ The dev's second proof is the one that actually carries this: hashing each file's non-comment ⭐ It refused the red-first claim, correctly and in its own words
That is the honest answer, and it is what the dispatch required. A comment edit has no failing state Three things it got right that a weaker pass would have missed1. It found six more 2. The fourth-pointer zero carries a control on the join. Three independent sweeps (issue-number 3. It reported the line-number discrepancy as NOT MEASURED instead of resolving it in its own The |
Uh oh!
There was an error while loading. Please reload this page.
Fixes#6584
Comment text only. Records the 2026-08-27 maintainer ruling at the three in-code
pointers that still named a card in the closed state as the open home of the
size: 'lg'bucket question, plus the single code home of the literal.This change cannot be red first, and no red-first is claimed for it. It is
comment text: it alters no default, no
widthexpression, nosizeprop and noruntime value, so there is no failing state for it to start from. The bar is
therefore (a) type-check / lint / suite staying green, and (b) the textual
re-location being measured rather than assumed. Both are below.
What was verified rather than assumed
Line numbers found vs. the card's table. The card's numbers were measured on
2026-08-26. Each pointer was re-located by its text:
mainObjectKanban.tsx— "stays open on #6303 for a human ruling."ObjectCalendar.tsx— "stays open on #6303 for a human ruling."ObjectGantt.tsx— "to the bucket is open (#6259) … as one decision (#6303)"Whether the two discrepancies are drift or transcription cannot be settled from
this checkout: its history begins 2026-08-30T07:26Z, so the 2026-08-26 tree is
not reconstructible here. That cell is NOT MEASURED, not "the card was
wrong".
Is there a fourth pointer? No — and that zero carries a positive control.
Three independent sweeps were run, each of which had to hit the three known
pointers in the same query for its zero to count:
min(960px, 60vw)is a four-site house default, not one renderer's choice — thewidth/sizequestion on #6259 decides all of them #6303 or ObjectGantt's default navigation config is spelled with the deprecatedwidthrather than thesizebucket that replaced it #6259 in tracked files;bucket is open,stays open on,human ruling,as one decision,undecided,not ruled);53% wider,1600px).All three hit the three known pointers, and none surfaced a fourth. Sweep 3's
other hits are
useNavigationOverlay.tsandrecordSurface.test.ts, which carrythe unrelated
fullbucket'smin(92vw, 1600px)— a different literal, not apointer.
Other #6303 citations exist and are deliberately left alone. Six more sites
name #6303:
ObjectKanban.tsx:696,ObjectCalendar.tsx:466("No width isspelled here on purpose…"),
ObjectKanban.tsx:1017,ObjectCalendar.tsx:799("See the
navConfigcomment above…"), and the twonavWidthDefaulttestdocblocks. Every one of those cites #6303 as provenance — the card that did
in fact remove the
widthspelling — which stays accurate no matter what statethat card is in. The defect this card names is narrower: a comment presenting a
card in the closed state as the open home of an undecided question. Only three
sites did that, and only those three were touched.
What the corrected comments now say
Each of the three (a) stops presenting a card in the closed state as the open
home, (b) cites #6584, and (c) states the ruling and its date, so a future reader
does not re-open a decided question. The existing measurement prose
(
min(92vw, 960px)vsmin(960px, 60vw), the 53% figure, the 1600px crossover)is kept verbatim — it is still true, and it is the reason the ruling went the way
it did. The gantt comment keeps #6259 / #6303 as the history of where the
question was asked, which is honest, while no longer pointing at either as its
home.
Why
RecordDetailDrawer.tsxgot the note tooIt is inside the ruling's four surfaces and it is the single code home of
min(960px, 60vw)repo-wide — the exact value the ruling preserved, and the linea future editor would actually change. All three renderer comments point at
this default ("which is what RecordDetailDrawer's own
widthdefault is for"),so before this change the drawer was the hub of the pointer chain and the only
node in it with no record of the decision. Recording the ruling in three
renderers but not at the place it governs would reproduce, in miniature, the
homeless-decision failure this card exists to fix. The note is four sentences in
the existing
widthdocblock; it adds no prop, no default and no behaviour.Verification
Run against the pushed head
bf8c469b4unless noted.pnpm --workspace-concurrency=2 --filter '…^...' buildfor the four packagespnpm --filter× 4run type-checktype-check: Done;Scope: 4 of 47 workspace projectsconfirms it was not a zero-match filter. Each package runstsc --noEmit && tsc -p tsconfig.test.json, so test files are covered toovitest runfrom the repo root against 11 explicit pathseslint --format jsonon the four files, then again with the base blobs checked out in placepnpm check:control-bytescheck-control-bytes: OK (scanned 5760 tracked text file(s))node scripts/check-changeset-presence.mjsThe lint A/B is the reading the dispatch asked for. Blob ids were verified in
both directions: the base blobs were confirmed on disk after the swap, the
restore was pinned to
HEAD(not a baregit checkout --, which would haverestored from the index the swap had already written), and the restore was
proven by
git statusbeing empty for all four rather than by an exit code. Theline numbers behave exactly as a comment-only edit predicts: messages above
each insertion point are unshifted, and messages below shift by exactly the
lines added (+5 kanban, +5 calendar, +6 gantt, +9 drawer).
Declared narrowing. Lint covered the 4 edited files, not the repo — the
repo-scale run is CI's. That narrowing is measured, not skipped: eslint reports
4files linted from its own--format jsonoutput; no eslint config file is inthe diff;
eslint.config.jsenables no type-aware program (noparserOptions.project/projectService), so a file's verdict is a function ofits own bytes plus the config and this diff cannot move an untouched file; and no
added line is an inline directive (
eslint-disable/eslint-env/globals),checked with a live control. The affected population is therefore exactly the
four files, and all four were linted.
One NOT MEASURED, resolved. A first combined type-check-plus-vitest run was
killed at the container's ~10 minute foreground ceiling (
exit 143) afterspending ~570s queued behind a sibling agent's lock hold. That is "I could not
run", neither red nor green. Type-check had already completed green inside it;
vitest was re-run on its own against the same head and reported the 11/81 above.
Deliberately out of scope
The ruling's own recorded fallback — that bucket-vocabulary unification, if it
ever becomes a product direction, needs a fresh ruling with visual-regression
evidence across all four surfaces in one stroke — is a future card. It is quoted
inside the new comments as part of the record, and nothing here acts on it.
Generated by Claude Code