Skip to content

Handover for the next domain:ui execution-seat PM — measured traps, open state, and two rulings you may want to overturn #7089

Description

@os-sam

Written at the end of a domain:ui dispatch shift (session session_013hfmP9hoMd3dJwTh85J4yB, 2026-08-31). Ordered by "what will burn you", not by topic. Everything here is measured on this repo today unless marked otherwise.

1. Things that will actively mislead you

The pm:blockedpm:queue unlock scan is not the real instrument. Its own comment says so: check-half-states.mjs (H19's implementation) is not installed in this repo, so the unlock is triage recomputing the same criterion by API. Both cards it unlocked for me this shift had moved substantially since filing:

Read the type and the code, not the card. A card body is a snapshot of a tree that has since moved.

The zero-quota payload channel drops comments. Measured: reading #6521 returned 2 of 3 comments and the one it dropped was the newest — the PM's own dispatch order. It also showed assignees: [] where REST showed the card assigned. Independently reproduced in a second repo (objectstack#13373). ⇒ Do not assume your dispatch order was seen.

The REST issues-list Link: rel="next" cursor silently truncates102 of 287 open issues (objectstack#13900). Use &page=N and cross-check your total against open_issues_count.
⭐ The part that matters: a known-hit control cannot detect this class. A truncated corpus still returns your known hit. Only a count cross-check does. I made exactly this mistake — ran a control, proved the channel discriminates, and wrote it up as though I had proved the corpus complete. Those are different claims.

2. Merge-queue mechanics

  • Confirm enqueue by prefix match on refs/heads/gh-readonly-queue/main/pr-<n>-*, never from the API return (the return is uninformative).
  • But ref-absent is NOT evidence of not-enqueued. Propagation lag measured 29s / 31s / 29s on three occasions — and then 7.5–14 minutes on a fourth. Prefix match confirms positives only. Confirm a negative only by the queue demonstrably moving past the entry, or by reading the PR's merge-queue state via API. I nearly re-armed a PR that was already queued; not doing so was the single most useful restraint of the shift.
  • Ejection vs merge: a front merge moves main; an ejection rebuilds every entry with a new sha. Happened twice today (once freezing main ~80 minutes).
  • Never publish a queue-build sha as a stable prediction handle. I published one for fix(app-shell,plugin-list,plugin-view): no invented calendar field names, so the refusal screen becomes reachable #7062; a rebuild 20 minutes later made it permanently unfalsifiable. Treat every queue sha as rebuild-fragile and say so when you quote it.
  • Prediction judge: git merge-base --is-ancestor <QUEUE-BUILD sha> origin/main — never a branch head. Squash merges mean branch heads never become ancestors.
  • Conflict pre-check before arming: git merge-tree --write-tree --name-only origin/main <head>; exit 0 = clean. This caught a real conflict earlier in the week that would otherwise have landed in the queue.
  • Queue state, main, branch heads, PR diffs and file contents are all readable over git at ZERO API quota. When the API rate-limits (it did, for ~30 minutes today), you can still read everything and only writes are blocked. Use it.

3. Repo rules that are mechanically enforced

4. Open state you inherit

Awaiting a human #7066#6881's ruling prescribes 走复审链 (needs:contract-review). Green and unarmed on purpose.
Awaiting maintainer ruling #6172 · #4795 · #7023 · #6771 · #4895
Genuinely blocked #6709 — waits on a @objectstack/spec publish that does not exist. The source landed on objectstack main (8c6a7fc0b) but packages/spec/package.json there still reads 17.2.0. Restart-when: is keyed to the publish, not the source landing.
Filed this shift, queued, undispatched #7070 · #7071 · #7072 · #7075 · #7077 · #7080 · #7081 · #7082
Check before dispatching #7072#6810 (a catalog sweep) was never checked as a possible absorber. #6902/#6933 are fold-only, awaiting a carrier.

#7081 is not a docs nit. zod-mirror-parity.test.ts asserts one direction only (the mirror accepts everything TS declares), so a mirror wider than the declaration is invisible to it. It is graded priority:p2 for that reason: the docs rows are consequences, the blind gate is the cause.

5. Two rulings of mine you may want to overturn

① A maintainer ruling discharges the human floor — but only the floor its own text names. I extended #6881's 条款② clause (「PR 建立时挂 needs:contract-review 走复审链」) to #5934, whose ruling instead says 「已发布类型成员的 breaking 删除属人工地板,本裁定即该地板动作的记录」 — the floor is discharged by the ruling itself, with no review-chain clause anywhere in it. I held PR #7065 for a gate that was never prescribed. Read each ruling literally; do not generalise a clause across cards.

assignees is PM-written; devs post claim comments only. All agents share one GitHub identity, so the assignee field cannot prove a claim. A claim is assign plus a claim comment carrying a session ID and branch — and you must re-read the comments before writing code, because an earlier claim with a different session ID means it is taken whatever the assignee says.

6. ⭐ The one pattern worth carrying forward

Every substantive defect this shift was the same shape: a one-directional check.

And it applies to the PM seat itself. I was corrected six times this shift — the patch instruction twice, a type I read as boolean that is boolean | string, a fixture count short by 24 occurrences, a hold placed on a card whose ruling forbade it, and a census whose pathspec returned zero for every query including a literal I knew was present (caught only because I ran a control that also returned zero).

The root of all six is the same: treating "I read a result" as "I measured". My dispatch orders required devs to verify the card's premises. They did not require verifying mine. ⇒ Put your own readings in the premise-verification gate, and tell devs that a clean stop on a falsified PM premise is a full success. Four of five orders this shift came back with a premise corrected, and every one of those corrections improved the result.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpm:queuepriority:p1

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions