A one-line fact-table refinement, measured today. Not a defect in anyone's code — a gap between what mergeable_state: unstable means and what the reading the seats actually take can see.
What is recorded today
.claude/skills/pm-dispatch/references/platform-readings.md:27:
ready 翻转实测两序列 clean→blocked→clean 与 blocked→unstable→clean;unstable 瞬态非失败。
True, and it saved a false alarm today. What it does not say is where the unstable comes from, and that matters because the landing pre-check's condition ③ ("every check green") is normally taken by enumerating GET /repos/{o}/{r}/commits/{sha}/check-runs and judging the latest run per check NAME.
The measurement
PR #18486, head 750aa5b0954a31434d6c6df428478fad8b6035ed, read 2026-09-16T18:54:56Z, after the ready flip and after the PR entered the merge queue:
| reading |
value |
GET /commits/{sha}/check-runs, latest run per NAME |
35 names — 29 success, 6 skipped, 0 failed, 0 in progress |
GET /pulls/18486 |
mergeable: true, mergeable_state: **unstable** |
GET /commits/{sha}/status |
state: **pending**, contexts [('Vercel', 'pending')] |
⇒ the unstable is produced by a commit STATUS, which is a different API surface from check-runs and is invisible to the /check-runs enumeration. Here it is a third-party deploy preview (Vercel), it gates nothing, and the PR sat in the queue with it pending — so the existing line's verdict ("not a failure") holds. But a seat reading only check-runs cannot tell that story; it sees a clean roster and an unexplained unstable, and the honest options are to guess or to look somewhere it was never told to look.
Suggested line (one line, to sit beside :27)
unstable 的来源可能是 commit STATUS(如 Vercel 预览)而非 check-run:/check-runs 枚举看不见它,判因走 GET /commits/{sha}/status 的 state 与 statuses[]。
Why it is worth a line rather than nothing
Condition ③ of the landing pre-check is one of exactly three things standing between a reviewed PR and main. A condition whose instrument cannot see one of the inputs to the state it is judging is the shape that produces a confident wrong reading — today it produced a correct one only because the existing :27 line happened to cover the symptom.
Dedupe words: mergeable_state unstable, commit status vs check-runs, Vercel pending context, landing pre-check condition 3, combined status endpoint.
Generated by Claude Code
A one-line fact-table refinement, measured today. Not a defect in anyone's code — a gap between what
mergeable_state: unstablemeans and what the reading the seats actually take can see.What is recorded today
.claude/skills/pm-dispatch/references/platform-readings.md:27:True, and it saved a false alarm today. What it does not say is where the
unstablecomes from, and that matters because the landing pre-check's condition ③ ("every check green") is normally taken by enumeratingGET /repos/{o}/{r}/commits/{sha}/check-runsand judging the latest run per check NAME.The measurement
PR #18486, head
750aa5b0954a31434d6c6df428478fad8b6035ed, read 2026-09-16T18:54:56Z, after the ready flip and after the PR entered the merge queue:GET /commits/{sha}/check-runs, latest run per NAMEGET /pulls/18486mergeable: true,mergeable_state: **unstable**GET /commits/{sha}/statusstate: **pending**, contexts[('Vercel', 'pending')]⇒ the
unstableis produced by a commit STATUS, which is a different API surface from check-runs and is invisible to the/check-runsenumeration. Here it is a third-party deploy preview (Vercel), it gates nothing, and the PR sat in the queue with it pending — so the existing line's verdict ("not a failure") holds. But a seat reading only check-runs cannot tell that story; it sees a clean roster and an unexplainedunstable, and the honest options are to guess or to look somewhere it was never told to look.Suggested line (one line, to sit beside
:27)unstable的来源可能是 commit STATUS(如Vercel预览)而非 check-run:/check-runs枚举看不见它,判因走GET /commits/{sha}/status的state与statuses[]。Why it is worth a line rather than nothing
Condition ③ of the landing pre-check is one of exactly three things standing between a reviewed PR and
main. A condition whose instrument cannot see one of the inputs to the state it is judging is the shape that produces a confident wrong reading — today it produced a correct one only because the existing:27line happened to cover the symptom.Dedupe words:
mergeable_state unstable,commit status vs check-runs,Vercel pending context,landing pre-check condition 3,combined status endpoint.Generated by Claude Code