Uh oh!
There was an error while loading. Please reload this page.
docs(pm-dispatch): state-machine rows for the pm-state ONE-OF, queue rot horizon and contract-review dual carrier - #11928
Merged
Conversation
…e rot horizon and the contract-review dual carrier Paid by consolidation inside the file's 43-line ceiling (headroom 0, no raise). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RMTpSRF5CjMmQBFfPtPCwJ
hotlong
marked this pull request as ready for review
August 25, 2026 01:38
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Aug 25, 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#11889
Seat-facing reference rows for the three invariants
scripts/pm/check-half-states.mjsnow enforces (H29/H30/H31, both source PRs merged and on
main). The rows are composedBY POINTER — a new
## 通则section whose heading namescheck-half-states.mjsH29/H30/H31 as the judging authority, so no rule mechanics are duplicated into the doc.
Each row was derived from the shipped block on
main, not from memory:PM_EXCLUSIVE_STATE_LABELS(fivepm:*positions +
needs-user-decision); the row states the exclusivity and the measuredorigin of every pair, a transition written as an ADD instead of a REPLACE, and
prescribes the single replace write.
pm:queuerot horizon — 3 days, H30'sQUEUE_ROT_STALE_DAYS; the row carries whythe queue is the one state where waiting is not a state, and that the remedy is ONE
explicit transition (dispatch / convert to
needs-user-decision/ park / withdraw /rewrite the premise), never a re-ranking.
needs:contract-reviewdual carrier — card AND delivering PR, hung in one stroke,cleared in one stroke, read back each way, plus H31's deliberate silence: card-side
first with no PR yet is a legal intermediate state, not a half-write.
The line arithmetic — paid by consolidation, ceiling untouched at 43/43
The file sits at the ratchet ceiling with headroom 0, and the ratchet's raise clause
requires a maintainer ruling quoted in the raising PR. No such ruling exists for these
rows, so the ceiling is NOT raised and
scripts/pm/check-skill-line-ratchet.mjsis nottouched. The nine new lines are paid for in full:
## 通则section (heading + blank + 6 bullet lines + separator)pm:on-holdbullets 12 → 9pm:awaiting-maintainer+pm:retriagemerged into one section, 12 → 7What the consolidation actually did, so a reviewer can check that nothing was silently
dropped:
pm:awaiting-maintainerrow's exclusivity clause enumerated the five labels itexcludes. That clause IS the general ONE-OF row — it was consolidated into it rather
than deleted, and the awaiting entry now carries only its exit (no machine exit, by
construction; parked inventory in the in-flight view).
inside the
pm:on-holdsection; it now stands once, on theRestart-touch:bulletthat names all three canonical lines.
dated four-spelling census on
Blocked-by:(the rule 「指令是行,提及是散文」 stays),the parser-tolerance aside on
Restart-touch:, and the rationale parenthetical on thesecond release check. This follows the ratchet's own doctrine — "provenance is one
line; stories live on cards, not in operational text".
Everything else is byte-identical in substance; the re-wrap keeps every line inside the
file's 83-column convention.
Gates
Derived, not recalled:
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack(no path args — the script takes the change set from the merge base itself) reports
7 matched families for the one changed path. All seven were run at the final commit
2285fac4, each verdict quoted from the gate's own output, exit codes captured beforeany pipe:
Docs-only: no changeset,
skip-changesetlabel applied. Governed surface — draft PR,human merge; auto-merge NOT enabled.
Generated by Claude Code
Generated by Claude Code