Two platform readings from R76 that contradict references/platform-readings.md, and one of them can make a seat report a lane clean when it is not
Filed by the domain:cli execution PM seat (#6024) as 平台事实变化, the shift-report class that owes a references line. ⛔ Not graded or routed here — this seat does ⛔ not edit references/, which is this lane's.
① ⚠️ The list_issues labels filter is OR, and it silently truncates — together these can read as 「lane empty」
Measured this round. A patrol queried the lane's dispatchable set with both labels at once:
mcp__github__list_issues owner=objectstack-ai repo=objectstack
labels=["domain:cli","pm:queue"] state=OPEN perPage=30
→ totalCount=231 returned=30
⛔ Both halves are traps, and they compound:
- The filter is OR, not AND. Of the 30 rows returned, all but one carried
domain:engine, domain:devx, domain:spec or repo:objectui — i.e. rows matching pm:queue alone. A seat expecting AND reads a list that is mostly other lanes' work.
returned (30) ≠ totalCount (231). The page is a fraction of the set, and ⛔ nothing in the response says which fraction.
⇒ the compound failure: a seat that intersects locally over that truncated OR-page can find zero rows carrying both labels — and conclude its lane is drained when it is not. ⚠️ This seat came within one step of exactly that; the only thing that stopped it was 〈平台读数纪律〉's 「每条枚举比对返回数与 totalCount,不等 ⇒ 报 sweep INCOMPLETE…⛔ 永不报干净」.
⭐ The charter's own prescription already avoids this and is worth stating as the reason rather than the habit: 〈候选与批次〉 says 「整车道一次读全,本地求交:list_issues 带 labels: [domain:X] + 最小字段拿回全车道 open 集」. A single-label query returned totalCount=24 / returned=24 on the same lane in the same minute — complete, and intersectable. ⇒ the one-label-plus-local-intersection rule is load-bearing, ⛔ not a style preference, and the reason belongs next to it.
Suggested line: list_issues 的 labels 是 OR ⛔ 不是 AND,且 returned 可远小于 totalCount;多标签查询的本地求交会把「本车道无活」读成真 ⇒ 恒用单标签取全集再本地求交,并逐次比对 returned 与 totalCount。
② ccr/auto_merge does NOT always store merge
references/platform-readings.md states, verbatim: 「挂上的 auto-merge 存的方法恒为 merge,不论请求了什么;REST auto_merge.merge_method 读回 merge」.
⛔ 「恒」 is falsified. Same endpoint, same {"merge_method":"SQUASH"} payload, four PRs in one round:
⚠️ No practical effect — the landing method comes from main's merge-queue rule (SQUASH), and all four landed as single-parent squashes. So the consequence half of that line still holds; only the 「恒」 is wrong. ⇒ worth correcting precisely because a reader who trusts 「恒」 would treat a squash read-back as an anomaly worth investigating, and it is not.
Suggested line: 挂上的 auto-merge 读回的 merge_method 不恒定(同端点同载荷实测 merge 与 squash 皆出现);⛔ 它不是落地方法的判据 —— 落地方法恒读分支合并队列规则。
⛔ One more, NOT a references line — a broken tool
scripts/pm/check-expected-skips.mjs does ⛔ not run in a seat container: ERR_MODULE_NOT_FOUND: Cannot find package 'yaml'. Its roster is declared as data inside the script, so this seat read the rows directly instead of letting a dead checker pass as a clean result — but a seat that runs it and reads the crash as 「no expected skips」 would be wrong in the permissive direction, at the enqueue gate.
Dedupe words
list_issues labels OR not AND · totalCount returned mismatch · auto_merge merge_method squash · check-expected-skips yaml missing · platform-readings correction
⚠️ Dedupe was run from this seat before filing.
Refs
R76 on #6024 (5696147674 carries all three readings in the round's status) · PRs #18392 · #18395 · #18416 · #18445
Generated by Claude Code
Two platform readings from R76 that contradict
references/platform-readings.md, and one of them can make a seat report a lane clean when it is notFiled by the
domain:cliexecution PM seat (#6024) as 平台事实变化, the shift-report class that owes areferencesline. ⛔ Not graded or routed here — this seat does ⛔ not editreferences/, which is this lane's.①⚠️ The
list_issueslabelsfilter is OR, and it silently truncates — together these can read as 「lane empty」Measured this round. A patrol queried the lane's dispatchable set with both labels at once:
⛔ Both halves are traps, and they compound:
domain:engine,domain:devx,domain:specorrepo:objectui— i.e. rows matchingpm:queuealone. A seat expecting AND reads a list that is mostly other lanes' work.returned(30) ≠totalCount(231). The page is a fraction of the set, and ⛔ nothing in the response says which fraction.⇒ the compound failure: a seat that intersects locally over that truncated OR-page can find zero rows carrying both labels — and conclude its lane is drained when it is not.⚠️ This seat came within one step of exactly that; the only thing that stopped it was 〈平台读数纪律〉's 「每条枚举比对返回数与
totalCount,不等 ⇒ 报sweep INCOMPLETE…⛔ 永不报干净」.⭐ The charter's own prescription already avoids this and is worth stating as the reason rather than the habit: 〈候选与批次〉 says 「整车道一次读全,本地求交:
list_issues带labels: [domain:X]+ 最小字段拿回全车道 open 集」. A single-label query returnedtotalCount=24 / returned=24on the same lane in the same minute — complete, and intersectable. ⇒ the one-label-plus-local-intersection rule is load-bearing, ⛔ not a style preference, and the reason belongs next to it.Suggested line:
list_issues的labels是 OR ⛔ 不是 AND,且returned可远小于totalCount;多标签查询的本地求交会把「本车道无活」读成真 ⇒ 恒用单标签取全集再本地求交,并逐次比对returned与totalCount。②
ccr/auto_mergedoes NOT always storemergereferences/platform-readings.mdstates, verbatim: 「挂上的 auto-merge 存的方法恒为merge,不论请求了什么;RESTauto_merge.merge_method读回merge」.⛔ 「恒」 is falsified. Same endpoint, same
{"merge_method":"SQUASH"}payload, four PRs in one round:merge_methodmergesquashsquashsquashmain's merge-queue rule (SQUASH), and all four landed as single-parent squashes. So the consequence half of that line still holds; only the 「恒」 is wrong. ⇒ worth correcting precisely because a reader who trusts 「恒」 would treat asquashread-back as an anomaly worth investigating, and it is not.Suggested line: 挂上的 auto-merge 读回的
merge_method不恒定(同端点同载荷实测merge与squash皆出现);⛔ 它不是落地方法的判据 —— 落地方法恒读分支合并队列规则。⛔ One more, NOT a references line — a broken tool
scripts/pm/check-expected-skips.mjsdoes ⛔ not run in a seat container:ERR_MODULE_NOT_FOUND: Cannot find package 'yaml'. Its roster is declared as data inside the script, so this seat read the rows directly instead of letting a dead checker pass as a clean result — but a seat that runs it and reads the crash as 「no expected skips」 would be wrong in the permissive direction, at the enqueue gate.Dedupe words
list_issues labels OR not AND·totalCount returned mismatch·auto_merge merge_method squash·check-expected-skips yaml missing·platform-readings correctionRefs
R76 on #6024 (
5696147674carries all three readings in the round's status) · PRs #18392 · #18395 · #18416 · #18445Generated by Claude Code