Skip to content

docs(pm-skill): retire the last three ref-absence dequeue readings - #12988

Merged
os-litant merged 1 commit into
mainfrom
claude/issue-12888-ref-absence-positive-probes
Aug 28, 2026
Merged

docs(pm-skill): retire the last three ref-absence dequeue readings#12988
os-litant merged 1 commit into
mainfrom
claude/issue-12888-ref-absence-positive-probes

Conversation

@os-litant

Copy link
Copy Markdown
Collaborator

Fixes#12888

Three sites still read queue-ref ABSENCE as proof a PR left the merge queue, outliving the corrected membership reading (queue refs answer about BUILDS, meaningful only when PRESENT — landed this morning with PR #12889). This PR retrofits the three residual sites: dequeue is now verified by the POSITIVE probes, and ref absence is downgraded to corroboration that never carries the conclusion. Net 0 lines on both zero-headroom files. Governed surface (.claude/**): draft-only, human landing per the ACCEPT fork — do not queue, arm, or flip ready.

Per-site before / after

Site 1 — references/platform-readings.md, draft-flip dequeue-remedy row (5 lines, net 0).
Before, the remedy verification was negative: 「验队列 ref 与未落地(拼写见「零成本等价物」),⛔ 不据单读数报补救。」 After: 「出队按下方「队列 ref」条阳性探针答不在队向,加未落地;ref 缺席只作旁证,⛔ 永不承载结论、不据单读数报补救。」 The conclusion now comes from the probes' not-queued direction (the merge-call answering the merge-commits-not-allowed 405; update-branch no longer refusing with the queued-branch text) plus the non-landing content read; absence corroborates only.

Site 2 — same file, arming-effect row (5 lines, net 0).
The closed enumeration 「效果读数只有队列分支、timeline 入队事件、最终落地三种」 reopens as 「效果读数 = 下条探针①②、timeline 入队事件、最终落地,队列分支仅在场时算」 — the two positive probes join as effect readings, and the queue-branch entry survives only as a positive. The stale pointer 「按下条序列以队列分支/timeline 入队事件确认」 becomes 「按下条阳性探针确认」 (the row after it IS the corrected queue-ref rule).

Site 3 — SKILL.md, governed-surface ACCEPT fork (line-in-place, net 0).
「转 draft 与 disable 都做再验队列 ref(转 draft 单独不可靠,两向相反实测住 platform-readings)」 becomes 「转 draft 与 disable 都做,出队以阳性探针答、ref 缺席只旁证不承载结论(探针与两向相反实测住 platform-readings)」. The general rule keeps its single home in platform-readings; SKILL.md carries only the pointer.

Collapse-candidate measurement (per the grading's binding instruction)

The draft-flip row's two-way narration was measured, not assumed: keeping it verbatim plus the probe correction wraps to 6 lines under the ratchet's own canonical wrapper (wrapLine, 120-byte cap), one over. The meaning-preserving compression below brings the row to 562 bytes = 5 lines. Net 0 achieved; no shortfall.

Cut ledger (every cut with its surviving home)

references/platform-readings.md (314/314 before and after):

  • 「测得」x3 and 「两向都有实测 … 测得相反」 → the header now reads 「两向相反实测」; the measured register survives in the same header.
  • 「彼时 disable_pr_auto_merge 已拒绝」 (narration) deduplicated with the remedy parenthetical 「objectui 彼时径直拒绝」 — the fact appeared twice in one row; one copy survives, now carrying the full API name.
  • 「共同支持的补救」 → 「补救」; the supported-by-both nuance survives in the two-way narration immediately before it.
  • 「仓别/时机差异未分辨」 → 「仓别/时机未分辨」; 「转 draft 后条目保位」 → 「转 draft 条目保位」; 「重新挂」 → 「重挂」 (wording only).
  • 「(拼写见「零成本等价物」)」 pointer dropped: the ls-remote and landed-grep spellings still live in the 「零成本等价物」 rows of this same file, and the landing read stays governed by the 二义读数 row's 按内容读 rule; with ref absence downgraded to corroboration the spelling pointer stopped being load-bearing at this site.
  • 「一次「成功」后」 → 「「成功」后」; the single-episode reading survives in the row's own 2.5-hour narration.
  • The closed count 「三种」 dropped — the enumeration is deliberately no longer closed.

SKILL.md (1005/1005 before and after; widest-table-row pin 765 untouched):

  • 「转 draft 单独不可靠」 dropped from the ACCEPT-fork sentence — surviving home is the sentence's own pointer target: the platform-readings draft-flip row, whose header states the unreliability and whose remedy carries the do-both rule.
  • The corrected sentence costs +29 bytes, absorbed on the line that opens the 2026-08-26 verbatim ruling quote (structurally exempt from the 120-byte cap); every ruling quote and date is untouched, no line added.

Gate verdicts — union re-run at final commit 29a300f6e (this head)

  • pnpm check:pm-skill-ratchet exit 0 — 「✓ check-skill-line-ratchet: .claude/skills/pm-dispatch/references/platform-readings.md is 314 lines (ceiling 314; headroom 0).」「✓ … SKILL.md is 1005 lines (ceiling 1005; headroom 0).」「✓ … SKILL.md: widest table row is 765 bytes (pin 765; headroom 0).」「✓ … platform-readings.md: widest table row is 0 bytes (pin 0; headroom 0).」
  • pnpm check:pm-skill-id-lint exit 0 — 「✓ check-skill-id-lint: 23 file(s) clean (pattern /#[0-9]{3,}/g).」 (no issue ids in protocol prose)
  • pnpm check:pm-governed-prose exit 0 — 「✓ check-governed-prose: 2 instruction surface(s) name all 5 registered governed surfaces … and claim no others.」
  • pnpm check:skill-frame-sync exit 0 — 「✓ check-skill-frame-sync: 4 copies of the decision frame are structurally isomorphic across 3 files」
  • pnpm check:skill-frame-freshness exit 0 — 「✓ check-skill-frame-freshness: the decision frame in this tree is current with origin/main (fetched just now).」
  • pnpm check:pm-governed-merges exit 0 (self-test 206 assertions + live generator certification)
  • pnpm check:agent-test-spelling exit 0 — 「✓ check-agent-test-spelling: 0 violations」
  • pnpm check:doc-authoring exit 0; pnpm --filter @objectstack/lint run check:doc-formula-expressions exit 0 (first run was PREREQUISITE NOT MET — dependency not built ⇒ not a measurement; measured green after building @objectstack/formula and @objectstack/lint)
  • node scripts/pm/check-governed-queue-guard.mjs --self-test exit 0; the bare gate exits 1 locally by design (it reads the merge_group event payload, absent outside CI) — locally NOT MEASURED, enforced at queue time.
  • pnpm check:nul-bytes exit 0 — 「check-nul-bytes: OK (scanned 7197 text file(s) …)」

Gate union derived mechanically: node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack (answer taken from this checkout at 2b4178a; the --repo assertion holds). Docs-only .claude/** diff — no changeset; skip-changeset label applied at PR-open.

Generated by Claude Code


Generated by Claude Code

Three sites still read queue-ref ABSENCE as proof a PR left the queue,
outliving the corrected membership reading (refs answer about queue BUILDS,
meaningful only when present):
- platform-readings, draft-flip dequeue-remedy row: the remedy check now
reads the positive probes' not-queued direction plus the non-landing
content read; ref absence is corroboration only and never carries the
conclusion. The two-way narration is compressed to fund it (net 0).
- platform-readings, arming-effect row: the closed enumeration reopens —
effect readings are the two probes, the timeline enqueue event and the
final landing, with the queue branch counting only when present (net 0).
- SKILL.md ACCEPT fork: the already-queued remedy now answers the dequeue
with the positive probes, same downgrade of ref absence (net 0).
Both files stay at their ceilings (314/314; 1005/1005, row pin 765).
Claude-Session: https://claude.ai/code/session_01MnijPVVDakqK2J335JoJtq
Co-authored-by: Claude <noreply@anthropic.com>
@github-actionsgithub-actionsBot added size/s documentation Improvements or additions to documentation labels Aug 28, 2026
@os-litantos-litant added skip-changeset PR has no user-facing published change; bypasses the changeset gate and removed documentation Improvements or additions to documentation size/s labels Aug 28, 2026 — with Claude
@os-litant
os-litant marked this pull request as ready for review August 28, 2026 12:33
@os-litant
os-litant enabled auto-merge August 28, 2026 12:33
@os-litant
os-litant added this pull request to the merge queueAug 28, 2026
Merged via the queue into main with commit 4a4287dAug 28, 2026
35 checks passed
@os-litant
os-litant deleted the claude/issue-12888-ref-absence-positive-probes branch August 28, 2026 13:01
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip-changesetPR has no user-facing published change; bypasses the changeset gate

Projects

None yet

3 participants

@os-litant@os-zhuang@claude