Repository navigation
platform-readings: gh-readonly-queue ref NAMES embed the stacked-on sha, so git ls-remote alone reconstructs the merge-queue order (dropped vs merely waiting) #18458
Description
Activity
Claim: PM loop round 1
Session:session_01Gqi43smmqjJ5sUrhfoPeKu
Branch:claude/issue-18426-platform-readings-batch
Worktree:objectstack-issue-18426
Domain:domain:skills
Seat:domain:skills#1
File surface:.claude/skills/pm-dispatch/references/platform-readings.mdonly (the governed FACT table, 466 / 466 at zero headroom, ≤120 B per row; ONE PR carries the readings of five cards — the carrier card #18426 (three readings: zod v4 per-instancesafeParseso prototype spying throws; the REST write identity is per-TOKEN not per-channel;os-verify-lock.shis objectstack's and absent in objectui) and the four sibling cards #18446 (a label write re-triggers the label-sensitive checks ⇒ landing pre-check ③ read AFTER the carrier strip), #18458 (gh-readonly-queue/*ref names embed the stacked-on sha ⇒ queue ORDER fromgit ls-remote, still positive-only), #18467 (a full---+ footer BLOCK through bare REST issue-bodyPATCHis re-anchored, not doubled — one newline moves, net zero bytes), #18498 (row 1 only:grep -zwith a literal newline is an OR — the working spelling isgrep -Pzwith\\n; row 2 withdrawn as duplicate on the card); each reading ADOPTED OR REJECTED one at a time with the reason on the PR, every adopted row paid by compression or deletion in the same file, ⛔ never a raise; ⛔ keep off rows :10–:12 and :431 (#18469 PR-A, awaiting the maintainer's hand) and :212 (PR #18666, awaiting approval); ⛔ #18461 is NOT in this batch — its row ② conflicts with #18421's reading and waits on that decision; #18446's landing-sequence half (「③ read after the strip」) lands incontract-review.md:41–:46 only if line-neutral there (60 / 60), else stays a row); governedreferences/**= the FACT layer ⇒ draft, lands on the seat's in-seat contract-tier review of record through the queue (ruling #17950), ⛔ no four-piece
Container & model:L(受管事实表五卡合一,逐条采纳,零余量支付),mode:subagent,model: claude-opus-5—node scripts/pm/dispatch-gates.mjs --tier --repo objectstack-ai/objectstack .claude/skills/pm-dispatch/references/platform-readings.mdat 2026-09-17T14:27Z on the fast-forwarded tree (f32f4805b): 「Model tier — no path-derived mandate … floor sonnet · default opus · ceiling fable」; default tier taken; the seat's contract-tier review at delivery
Clause-②: no
Thread-read: 5713977871
Serial constraints cleared: ONE PR for the five-card batch — this card is a SIBLING card folded into the carrier #18426's PR (its ownFixes #18458line lands it; if its reading is REJECTED the PR carriesPart of #18458and the seat re-queues it);platform-readings.mdopen-PR overlap at 2026-09-17T14:27Z: PR #18666 (:212, awaiting approval) only — keep off :212, mergeorigin/mainbefore enqueue;os-verify-lock.sh --statusat 2026-09-17T14:25Z: free; shared checkout atorigin/mainf32f4805b. Slot freed by #18456's delivery (PR #18681). Total order: the p2 Tasks of the 11:59Z–12:07Z routing, in card age, with the p3 rows (#18458 · #18467) folded because they share the one file; #18461 excluded (decision pending on #18421); #18664 · #18665 stay queued.
Ruling-ref: 5713977871
Generated by Claude Code
Batched onto PR #18689 (draft, governed FACT layer) — this card's reading is REJECTED, and the reason is that it is already recorded:
platform-readings.md:70–:73carry the name form, that the embedded sha is the previous entry's tip, the parent-tip walk rooted at currentorigin/main, that lexicalls-remoteorder is meaningless, that the read is zero-quota and that it answers the position the timeline cannot — plus a caution this card does not have (:72: the embedded parent is a presumed base, measured to reachmainten-plus minutes later).:61keeps the positive-only rule. No row was added; the PR carriesPart of #18458rather than a closing line, so the card stays open for the seat to confirm that reading before retiring it. Four-axis reasoning is on the PR.
Generated by Claude Code
LANDED (reading already recorded) — PR #18689 (the seven-card platform-readings batch, carrier #18426) merged through the queue at 2026-09-17T15:59:40Z (
merged_at), squash72dd95fa5(single parente75cc3c2f, an ancestor oforigin/main;platform-readings.md466 / 466 onmain, +17 / −17). Fact-layer landing on the seat's review of record —## Contract review5716694216 on the carrier card and 5717108355 on the PR thread (the Governed Surface Guard's merge_group leg reads the PR thread alone, so the first queue entry at 2026-09-17T15:14:52Z was dequeuedCI_FAILUREat 2026-09-17T15:36:18Z; re-queued 2026-09-17T15:38:54Z after the PR-thread record; #18701 filed). Landing criterion per the seat's publication register: MERGED through the queue, read frommerged_at.This card's reading —
gh-readonly-queue/*ref names embed the stacked-on sha ⇒ queue ORDER fromls-remote— was REJECTED as already recorded: :70 gives the name form 「名形…/pr-<PR>-<PARENT>的<PARENT>是前一条目的 tip」, :71 the parent-tip walk and 「ls-remote的字典序无意义」, :73 the caution the card lacks (the embedded parent is a presumed base, measured to reachmainten-plus minutes later) — the seat read those lines on the head (record 5716694216). The card's premise 「no carrier」 was false when filed. Retired by hand ascompleted;pm:dispatchedis stripped in the same act.
Generated by Claude Code
- added a commit that references this issue
on Sep 28, 2026
⛔ Filed bare and ungraded by the
domain:specexecution seat, sessionsession_01KB5PFtxuy1x3dcR5gxudx6, 2026-09-16T11:5xZ.domain:*, type and priority are triage's. ⛔ Not claimed, ⛔ not dispatched. Routes to whichever lane owns.claude/skills/pm-dispatch/references/platform-readings.md.Dedupe keywords:
gh-readonly-queue,merge queue order,queue ref parent sha,PR sitting in queue,dropped vs queued behind.The refinement
The existing fact-table row says the
gh-readonly-queue/*refs are positive-only — they answer BUILD, not membership, and an absent ref is only corroborating evidence. That stays true. ⭐ What is not recorded is that when the refs ARE present they carry more than presence: each ref name embeds the sha of the commit it is stacked on, so the whole queue ORDER is reconstructable fromgit ls-remotealone.Measured 2026-09-16T11:51Z,
git ls-remote --heads origin 'gh-readonly-queue/*':Pair each ref's own sha against the sha inside the NEXT ref's name and the stack falls out, with
origin/mainat66abef3fdeas its root:Why a seat needs this
Without it, a PR that sits in the queue is ambiguous: dropped, or simply behind others? The
pull_requestobject does not say — measured on #18433 at 11:51Z it readsstate=open merged=false mergeable=null mergeable_state=unknown auto_merge=false, which is the same shape a dropped PR would show.auto_mergeis false because it clears on enqueue (already in the fact table), so it discriminates nothing here either.This reading answers it in one command: #18433 had been queued 19 minutes with
origin/mainunmoved, and the refs show it second of four, behind #18444. ⇒ nothing was wrong, and no re-queue was owed. Guessing the other way — re-enqueueing a PR that is merely waiting — is the expensive mistake this prevents.⛔ What this does NOT change
Absence still proves nothing (the standing row). The
pull_request.enqueuedwebhook remains the instrument that answers membership affirmatively. This adds one thing only: when the refs are there, read the names, and you get the order for free.Shape, ⛔ offered not specified
One row beside the existing queue-ref row, with the pairing recipe and the caution that it is still positive-only.
Generated by Claude Code