Uh oh!
There was an error while loading. Please reload this page.
docs(pm): add pm:retriage — the awaiting-regrade label coexisting with the standing pm:* state - #10089
Merged
Merged
Conversation
…e standing pm:* state Fixes#10081 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AeA3nU1B5Q2pgxqxgUrexd
os-zhuang
marked this pull request as ready for review
August 20, 2026 00:57
os-zhuang
enabled auto-merge
August 20, 2026 00:57
This was referenced Aug 20, 2026
Closed
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Aug 20, 2026
os-warren added a commit
that referenced
this pull request
Aug 20, 2026
The script header claims "the label set IS the PM state machine": every label the state model names is created here across the four triaged repos. The pm:retriage row landed in SKILL.md (#10089) without a matching entry, so the identity claim drifted — a first application on a repo where the object does not exist yet depended on the applying seat remembering to create it, and a rerun of this script could never repair the gap. Description is 96 characters, inside the header's documented 100-character hard cap (over-cap descriptions 422 and the idempotency `|| true` swallows the failure silently). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AeA3nU1B5Q2pgxqxgUrexd
This was referenced Aug 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes#10081
What
Adds the
pm:retriageawaiting-regrade state to the PM dispatch skill's state model (maintainer ruling 2026-08-19/20, quoted verbatim in the row: 「同意 并存」), as one table row carrying the ruled four parts, plus the matching selection carve-outs and the triage-seat duty sentence.pm:retriage— the four parts, in the file's table idiom:pm:*label, never removes it; the standing grade stays authoritative until triage re-rules; coexistence is what makes "queued but contested" visible on a list.pm:queuecard also carryingpm:retriageis skipped by selection (contested grades are not dispatched).pm:retriage.pm:retriage) — that line is the filter execution seats actually run.pm:retriagere-ruling is high-priority each fire; the triage seat removes the label in the same stroke as the re-ruling.Line budget (ratchet)
Ceiling 682. Before: 681 (headroom 1). After: 681 (headroom 1) — net 0.
Payment audit: +2 lines (the new table row; the triage-duty sentence) paid by a genuine dedup of −2 lines: the standalone 「一次性建标签」 paragraph duplicated the 机械守卫索引 row for
scripts/pm/ensure-pm-labels.sh. Each cut fact's surviving home: the script pointer and idempotence → the index row; "retired lanes deliberately absent, never re-add, rationale in the script header" → folded into that same index row. No re-wrap: no prose lines were merged to fund lines.Gates (all run at head 4c41ff2, after the final commit; exit codes captured via redirect-then-
$?, never through a pipe)node scripts/pm/dispatch-gates.mjs(no args, real diff from merge base): 1 path, 7 local families derived; tier line "Model tier — MANDATORY: claude-fable-5" (clause ①, honored).pnpm check:pm-skill-ratchet— exit 0 — "✓ check-skill-line-ratchet: .claude/skills/pm-dispatch/SKILL.md is 681 lines (ceiling 682; headroom 1)."pnpm check:pm-skill-id-lint— exit 0 — "✓ check-skill-id-lint: 15 file(s) clean (pattern /#[0-9]{3,}/g)."pnpm check:pm-governed-prose— exit 0 — "✓ check-governed-prose: 2 instruction surface(s) name all 5 registered governed surfaces (docs/adr/** · .claude/** · skills/** · AGENTS.md · CLAUDE.md) and claim no others."pnpm check:pm-governed-merges— exit 0 — "✓ check-governed-merges --self-test: 81 assertions …" (self-test + run).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:doc-authoring— exit 0 — "✓ doc authoring guard: 379 files clean — no bare metadata literals."pnpm --filter @objectstack/lint run check:doc-formula-expressions— exit 0 — "✓ check:doc-formula-expressions: 22 record-scoped formula example(s) across 404 files / 1414 TS blocks judged clean by @objectstack/formula." (Required building the dependency closure first:pnpm --workspace-concurrency=2 --filter '@objectstack/lint^...' build.)node scripts/check-nul-bytes.mjs— exit 0 — "check-nul-bytes: OK (scanned 6367 text file(s) … no raw ASCII control bytes)."node scripts/check-skill-compatibility-version.mjs— exit 0 — "11 pinned major(s) all match the workspace" (named as-applicable; population unaffected by this diff).Reverse verification (direction predicted in writing before running)
Predicted: appending 2 filler lines (681 → 683, over ceiling 682) turns
check-skill-line-ratchetRED with a verdict line naming this file; restoring from the committed branch is byte-identical and turns it green. Observed exactly that: "✗ check-skill-line-ratchet: .claude/skills/pm-dispatch/SKILL.md is 683 lines; the ratchet ceiling is 682. …" (exit 1); sha256 identical before mutation and after restore (82b74df4a42b5966…); green at 681 (exit 0).check:pm-skill-id-lintstayed green throughout. The gate reads the .md directly via readFileSync — no dist/export resolution is involved, so no rebuild leg applies to this ablation.Housekeeping
Docs/protocol-only change to a
.claude/internal skill — nothing user-visible is published, soskip-changesetis applied (union label write with read-back). GOVERNED surface: draft PR, review requested from os-zhuang, left visibly hanging for a human merge — never flipped ready, never queued, never auto-merged.Known CI flake note:
Lint & Repo Gatesintermittently dies parsing packages/spec/src/migrations/registry.ts on unrelated PRs today; local dispatch-gates families do not run eslint over spec and are unaffected. If that job reds here with the same signature, it is the known flake, not this diff.Generated by Claude Code