You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Written at the end of a domain:ui dispatch shift (session session_012wwHa4aaFybxXrfmfHioDM, 2026-09-01). Successor to objectui#7089, whose §6 is still the most useful paragraph written about this seat.
⚠️This card is labelled documentation + domain:ui + pm:queue + priority:p1 on purpose, and linked from the seat post #5560. objectui#7089 carried domain:ui and nothing else — no pm:*, no priority:* — so no query a successor runs returned it. I found it by accident, five hours into my shift, in a sweep I was running for an unrelated reason, and by then I had independently re-derived its central lesson four times. That was the single most expensive thing that happened today. If you write a handover, label it.
Ordered by what will cost you, not by topic.
1. ⭐ The one thing to carry forward: put YOUR OWN readings in the premise-verification gate
objectui#7089 §6 says it, and I proved it six more times. Six PM premises of mine were falsified by the lanes I dispatched, every one caught because the dispatch order told the dev to verify the PM's claims, not just the card's:
my premise
what it was
the grid builds $select at one site
two, and each fails alone — a one-site fix ships with a green suite and a broken surface
description was the only read-but-unrelayed key
three of 46 relayed keys; fieldOrder and rowColor too
the grid's paging footer discloses page-scoping
it belongs to plugin-list; a standalone grouped grid renders no footer at all
a gantt issues two requests per load
three — one paged, two unbounded
ZONE 1 RULING: raise the Start/End threshold, the dates survive as a sublabel
the sublabel is display:none above 640px — the "fix" would have deleted the dates
ZONE 1 RULING: gate the column list feeding buildExpandFields
gating the inputwidens the leak, because the helper reads an empty list as "no restriction"; the gate belongs on the output
Two of those were rulings, not mechanism notes. Both were withdrawn on measurement. Write your orders so a lane can overturn you, and say explicitly that a clean stop on a falsified premise is a full success — one lane returned with no PR and no code, and it was the most valuable result of its round.
And the worst one: I filed objectui#7225 asking for work a standing maintainer ruling on #6482 already forbids. I had read #6482's body and not its comments. My stated reason for filing new rather than reopening ("a five-week-old snapshot") was also false — it was six days old. ⇒ Read the comments. Every time. #7089 §1 says the same thing and I still did not do it.
2. Probe discipline — I produced FOUR false zeros in one shift
A probe can fail in two directions and I hit both:
Cannot match anything (reads as "clean"):
wrong path, twice — ObjectStackAdapter.ts does not exist (the class lives in index.ts); a script run from outside the repo
in ERE, (a|b) consumes group 1, so a \1 backreference meant for a later group silently matches nothing and exits 0
Matches BOTH sides (reads as "landed" — the harmful direction):
⇒ Before trusting any landing probe, verify it is 0 on main AND non-zero on the branch. Derive it from the diff; never guess a symbol name. Two names I guessed (periodStartFor, labelPeriodFor) return 0 on both sides — they do not exist, and either would have been a permanent false negative.
Also standing: git grep -c counts LINES, not entries — use grep -o … | wc -l. And probe for the REPLACEMENT's presence, not the removed token's absence: house style states what was wrong before stating what is right, so a removed phrase is systematically still present in the very file that removed it. When the file's own prose quotes the old form, count whole lines.
3. Environment traps, all measured today
⭐ happy-dom / jsdom report clientWidth 0 and therefore NEVER fire container-size effects. A gantt's auto-scroll-to-Today is its whole first-paint reproduction and is unmeasurable in the DOM harness — not unreliable, unmeasurable. They also apply CSS @media rules regardless of innerWidth, so getComputedStyle returns the same value at 500 and 1440. One lane would have concluded "this element is never visible" from that. Use the preinstalled Chromium at /opt/pw-browsers; ⛔ never run playwright install.
enable_pr_auto_merge echoes method: MERGE even when SQUASH is requested and correctly applied. Seven times today. Ignore the echo; verify by parent count after landing (1 parent = squash).
The angle-bracket sanitizer eats issue and PR BODIES — a < followed by a letter is stripped, and if unclosed it takes everything to the end of the body. Backticks do NOT protect it. Comments are safe. Six bodies lost evidence to it today, including two cards' own JSX snippets. Read your posted body back as rendered.
The closing-keyword parser ignores negation. There is no safe way to write "does not close #N" — omit the number.
API rate limit hit three times, recovering in a few minutes each. Git reads cost zero quota — queue state, main, PR diffs and file contents are all readable. ⛔ /rate_limit reporting quota remaining is not evidence the channel is open; a lane proved that while its search was still refusing.
Merge queue: confirm enqueue by git ls-remote origin 'refs/heads/gh-readonly-queue/main/pr-NNNN-*' — positives only, ref-absent proves nothing. Judge landing by git merge-base --is-ancestor QUEUE_BUILD_SHA origin/main, never a branch head.
$expand FLS gate — in the queue as this was written
⚠️#7229 found that objectui#6898 was believed closed and had a LIVE BYPASS: the $select projection gated its columns and then re-added the expand roots unconditionally, justified in-comment as "known-valid because buildExpandFields() derived them from the object schema" — valid, yes; readable, never asked. A denied lookup walked straight back in. If you audit FLS, do not trust #6898 as settled history.
Each has a triage comment with the disposition already argued, so dispatch is short.
7. The unlabelled pool — measure it, do not estimate it
55 of 307 open issues carry no labels, measured repo-wide with a count cross-check (100 + 100 + 100 + 7 = 307, final page hasNextPage: false) and controls in both directions. All 55 are numbered ≥ #6790 — pages 3 and 4, 107 issues over five weeks, are 100% triaged.
⇒ This is filing outrunning triage right now, not chronic debt. Do not plan a burn-down; the failure is that a card can be filed into a state no sweep returns.
I worked ~19. ~36 remain unread. ⛔ Never grade from titles — that shortcut is what #6318 cost a lane.
That pool has already yielded: a red gate on main (#6943), this seat's own handover (#7089), an ordering constraint on a ruled retirement (#7181), and a second build-ready tier-blocked card (#7188). It is the highest-yield thing to do with spare capacity.
8. Two rulings of mine you may want to overturn
① Split a card when one half is invariant to the open question.#7210's footer fix shipped while its unbounded-fetch decision stayed open, because "whichever way it is settled, the footer and the chart should describe the same fetch." Same for #7189. This got work moving without pre-empting a maintainer — but it does leave cards open with a landed PR attached, which reads oddly in a sweep. Make sure the landing note says loudly what is still open.
② File a narrow card rather than reopening a stale one. I did this for #6482 → #7225 and it was wrong (§1). The reopen-vs-file test I would use now: reopen when the original card's asks are undischarged; file new when the tree has moved past its description. I applied the second test without checking whether the first applied.
9. Seat mechanics worth keeping
A claim is assign PLUS a claim comment carrying session ID and branch — all agents share one GitHub identity, so the assignee field alone proves nothing. Re-read comments before writing code.
Dispatch orders in three zones: ZONE 1 ruling (not re-adjudicable) · ZONE 2 the PM's own assumptions, falsify freely · ZONE 3 suggested route. The zone-2 block is where every one of §1's six corrections came from.
File-overlap is a real scheduling constraint. Three queued cards were held today not on priority but because they touch a file a running lane was editing.
Landing verification is by CONTENT with a live control, never by sha (squash makes a new commit). The control is what catches a probe that would pass against a deleted feature.
Good luck. The lanes on this repo are very good — four of them corrected me today, and every correction improved the result. Write your orders so they can.
Written at the end of a
domain:uidispatch shift (sessionsession_012wwHa4aaFybxXrfmfHioDM, 2026-09-01). Successor to objectui#7089, whose §6 is still the most useful paragraph written about this seat.documentation+domain:ui+pm:queue+priority:p1on purpose, and linked from the seat post #5560. objectui#7089 carrieddomain:uiand nothing else — nopm:*, nopriority:*— so no query a successor runs returned it. I found it by accident, five hours into my shift, in a sweep I was running for an unrelated reason, and by then I had independently re-derived its central lesson four times. That was the single most expensive thing that happened today. If you write a handover, label it.Ordered by what will cost you, not by topic.
1. ⭐ The one thing to carry forward: put YOUR OWN readings in the premise-verification gate
objectui#7089 §6 says it, and I proved it six more times. Six PM premises of mine were falsified by the lanes I dispatched, every one caught because the dispatch order told the dev to verify the PM's claims, not just the card's:
$selectat one sitedescriptionwas the only read-but-unrelayed keyfieldOrderandrowColortooplugin-list; a standalone grouped grid renders no footer at alldisplay:noneabove 640px — the "fix" would have deleted the datesbuildExpandFieldsTwo of those were rulings, not mechanism notes. Both were withdrawn on measurement. Write your orders so a lane can overturn you, and say explicitly that a clean stop on a falsified premise is a full success — one lane returned with no PR and no code, and it was the most valuable result of its round.
And the worst one: I filed objectui#7225 asking for work a standing maintainer ruling on #6482 already forbids. I had read #6482's body and not its comments. My stated reason for filing new rather than reopening ("a five-week-old snapshot") was also false — it was six days old. ⇒ Read the comments. Every time. #7089 §1 says the same thing and I still did not do it.
2. Probe discipline — I produced FOUR false zeros in one shift
A probe can fail in two directions and I hit both:
Cannot match anything (reads as "clean"):
ObjectStackAdapter.tsdoes not exist (the class lives inindex.ts); a script run from outside the repo(a|b)consumes group 1, so a\1backreference meant for a later group silently matches nothing and exits 0Matches BOTH sides (reads as "landed" — the harmful direction):
scrollPos/xToDateto check whether PR fix(plugin-gantt): derive the toolbar period label from the visible window, and wire the period steppers #7227 had landed. Both already existed on main — that is precisely why the lane could reuse them. It would have reported a landing that had not happened, and I would have posted a landing note and closed the card against absent code.⇒ Before trusting any landing probe, verify it is 0 on main AND non-zero on the branch. Derive it from the diff; never guess a symbol name. Two names I guessed (
periodStartFor,labelPeriodFor) return 0 on both sides — they do not exist, and either would have been a permanent false negative.Also standing:
git grep -ccounts LINES, not entries — usegrep -o … | wc -l. And probe for the REPLACEMENT's presence, not the removed token's absence: house style states what was wrong before stating what is right, so a removed phrase is systematically still present in the very file that removed it. When the file's own prose quotes the old form, count whole lines.3. Environment traps, all measured today
clientWidth0 and therefore NEVER fire container-size effects. A gantt's auto-scroll-to-Today is its whole first-paint reproduction and is unmeasurable in the DOM harness — not unreliable, unmeasurable. They also apply CSS@mediarules regardless ofinnerWidth, sogetComputedStylereturns the same value at 500 and 1440. One lane would have concluded "this element is never visible" from that. Use the preinstalled Chromium at/opt/pw-browsers; ⛔ never runplaywright install.enable_pr_auto_mergeechoesmethod: MERGEeven when SQUASH is requested and correctly applied. Seven times today. Ignore the echo; verify by parent count after landing (1 parent = squash).<followed by a letter is stripped, and if unclosed it takes everything to the end of the body. Backticks do NOT protect it. Comments are safe. Six bodies lost evidence to it today, including two cards' own JSX snippets. Read your posted body back as rendered.main, PR diffs and file contents are all readable. ⛔/rate_limitreporting quota remaining is not evidence the channel is open; a lane proved that while its search was still refusing.git ls-remote origin 'refs/heads/gh-readonly-queue/main/pr-NNNN-*'— positives only, ref-absent proves nothing. Judge landing bygit merge-base --is-ancestor QUEUE_BUILD_SHA origin/main, never a branch head.mainis ABOUT to become, not only what it is. I caught fix(app-shell,plugin-list): relay and resolve a list view's own description #7220 conflicting with fix(grid,list,core): union a grid's grouping fields into the query projection #7214's queue build before the queue did, and disarmed it — an ejection rebuilds every entry and taxes whoever else is waiting.mainmoved seven times in three hours today.4. Landed this shift
main(check:published-dist), found in the unlabelled sweep$selectblind togrouping.fields[]— both sitesdescriptionrelay + i18n locale map$expandFLS gate — in the queue as this was written$selectprojection gated its columns and then re-added the expand roots unconditionally, justified in-comment as "known-valid becausebuildExpandFields()derived them from the object schema" — valid, yes; readable, never asked. A denied lookup walked straight back in. If you audit FLS, do not trust #6898 as settled history.5. Open on purpose — do NOT close these as done
useServerPagination = !hasInlineData && !isGrouped(ObjectGrid.tsx:3224), so a grouped grid owning its fetch has no server pager at all. Records past the first window are unreachable, not merely undisclosed. Disclosure is a ceiling here, not a floor.columnWidthForContainerbranches on container width and returns 110 from all three arms — the breakpoints it documents do nothing #7228 — three gantt container-width helpers, one decision. plugin-gantt: between 640px and 1023px the task-list rows carry NO dates at all — the Start/End columns are gated off and the date sublabel is display:none from 640px up #7224 is live onmain: between 640px and 1023px a task row shows no dates at all, because one gate reads a container width and the other a viewport media query and neither is the other's complement.dependsOnlookup by the SAVED row, not the staged one — carry the pending record across therenderCellEditorseam (option B of #7165) #7188 + finding(types): 18 schemas narrow inheriteddisabledtobooleanwhile 0 narrow its twinvisible— no ruling says which is intended #7087 — ⛔ both maintainer-ruled AND build-ready, blocked only by the exhaustedCONTRACT_REVIEW_TIER. The analysis is finished on both; only the review gate is missing. This is the seat's binding constraint.bodydialect has PRODUCERS and generic readers outside objectui#6771's population —objectui initscaffolds every new project in it #7181 — an ordering constraint on finding(sdui-parser/components): the manifest tier reportsunknown-proponbody— the one child-list key 10+ registrations actually honour #6771's already-ruled retirement:objectui initemits 53bodynodes, so step 4 cannot land before producers move, or every freshly scaffolded project fails its own firstvalidate.useSettledSchemawas extracted and published with ONE adopter — the convergence #6482 asked for is 1 of 4, and the gantt's ungated double fetch is still live #7225 — answered-by-ruling; the A/B/C amendment question is on [pm:seat] domain:ui @ objectui — 🟢 session_01EMrWaQw3XS5DxTHxp4yRyC · R1 · landed #7349 #7182 #7004 #6810 #7212, closed #7221 · ⚠️ 2 OPEN DECISIONS #7399 #7402 block #7391 + #7400 #5560.6. Queued and ready, rulings already recorded in their triage comments
#7173 · #7096 · #7216 · #7218 · #7217 · #7230 · #7231 · #7232
Each has a triage comment with the disposition already argued, so dispatch is short.
7. The unlabelled pool — measure it, do not estimate it
55 of 307 open issues carry no labels, measured repo-wide with a count cross-check (100 + 100 + 100 + 7 = 307, final page
hasNextPage: false) and controls in both directions. All 55 are numbered ≥ #6790 — pages 3 and 4, 107 issues over five weeks, are 100% triaged.⇒ This is filing outrunning triage right now, not chronic debt. Do not plan a burn-down; the failure is that a card can be filed into a state no sweep returns.
I worked ~19. ~36 remain unread. ⛔ Never grade from titles — that shortcut is what #6318 cost a lane.
That pool has already yielded: a red gate on
main(#6943), this seat's own handover (#7089), an ordering constraint on a ruled retirement (#7181), and a second build-ready tier-blocked card (#7188). It is the highest-yield thing to do with spare capacity.8. Two rulings of mine you may want to overturn
① Split a card when one half is invariant to the open question.#7210's footer fix shipped while its unbounded-fetch decision stayed open, because "whichever way it is settled, the footer and the chart should describe the same fetch." Same for #7189. This got work moving without pre-empting a maintainer — but it does leave cards open with a landed PR attached, which reads oddly in a sweep. Make sure the landing note says loudly what is still open.
② File a narrow card rather than reopening a stale one. I did this for #6482 → #7225 and it was wrong (§1). The reopen-vs-file test I would use now: reopen when the original card's asks are undischarged; file new when the tree has moved past its description. I applied the second test without checking whether the first applied.
9. Seat mechanics worth keeping
Good luck. The lanes on this repo are very good — four of them corrected me today, and every correction improved the result. Write your orders so they can.