Repository navigation
docs(north-star): the road grades a wrong-result run by Priority rule 2; rule 3 does not hold the p2 pm:blocking card that unblocks the lane's P0/P1 - #33279
Conversation
… 2; rule 3 does not hold the p2 pm:blocking card that unblocks the lane's P0/P1 The road still said a step that runs through but gives a wrong result is P2, while Priority rule 2 now grades data silently wrong or lost as P1. The road now points at rule 2 instead of restating a grade. Rule 3's hold on p2/p3 tooling cards gains one exemption: a p2 pm:blocking card that the open P0/P1 names on its Blocked-by: line is not held. execution-duties.md's take precondition points at the exemption. Claude-Session: https://claude.ai/code/session_01FEkQ5mgwViR8HMJPT3pTVT Co-Authored-By: Claude <noreply@anthropic.com>
|
domain:skills#1 · os-project-manager · session_01FEkQ5pjSPT7ui2EUcunaVb Contract reviewServed-tier: Inputs read: card #33163 (body and both comments: the claim and the os-dev-report), PR #33279 (body, file list, net diff, +3/-3 over 2 files), and the check-runs on this head. The merge base is ① Derived judgments
② Semver level
Clause-②: no — matches the claim on the card and the PR body; the diff declares no narrowing and changes no published schema. ③ Boundary flags
④ Design judgment
No must-fix. One should-fix (a), which earns a delta review of its fix or a follow-up card; two nits (b), (c). Check-runs on this head: every run is completed; none failed, none pending. The skipped runs are path-filtered or opt-in jobs. Implemented-by: VERDICT: PASS Adopted by the seat 2026-11-14T15:43Z · isolated sub-agent at CONTRACT_REVIEW_TIER · Ruling-ref: Leehom card cmsg_01TenzsRopZj4jMbvjX8uz1XFhuiZmTH8VFgMmHRmpiGAb, option A, tapped 2026-11-14T15:37Z |
…n; execution-duties keeps 队列 triage-duties.md line 63 is the second reader of Priority rule 3's hold: it closes a p2/p3 tooling card with none of the three doors while the lane's P0/P1 is undispatched, and it would close the very card the exemption lets through. It now names the exemption as a pointer, within 120 bytes, paid by folding its parenthesised definition into 未派. execution-duties.md line 50 keeps 队列, consistent with triage-duties. Claude-Session: https://claude.ai/code/session_01FEkQ5mgwViR8HMJPT3pTVT Co-Authored-By: Claude <noreply@anthropic.com>
|
domain:skills#1 · os-project-manager · session_01FEkQ5pjSPT7ui2EUcunaVb Contract reviewServed-tier: Delta review of rework round 1. Inputs read: card #33163 (body and all three comments, the round-1 os-dev-report included), PR #33279 (file list, the delta ① Derived judgments
② Semver level
Clause-②: no — unchanged from round 0 and still right; the delta declares no narrowing and touches no published schema. ③ Boundary flags
④ Design judgment
Carried and new, neither blocking:
No must-fix and no should-fix on this head. Nits alone: the round ends. Check-runs on this head: all 48 are completed; none failed, none pending. Every run is success or skipped (the skipped ones are path-filtered, label-skipped or opt-in jobs). Implemented-by: VERDICT: PASS Adopted by the seat 2026-11-14T15:58Z · delta review by the same isolated sub-agent at CONTRACT_REVIEW_TIER · Ruling-ref: Leehom card cmsg_01TenzsRopZj4jMbvjX8uz1XFhuiZmTH8VFgMmHRmpiGAb, option A, tapped 2026-11-14T15:37Z |
|
domain:skills#1 · os-project-manager · session_01FEkQ5pjSPT7ui2EUcunaVb 维护者速读
席位核对Verdict: ACCEPT, held for the maintainer · head
|
Requested by Leehom · project thread
Fixes #33163
domain:skills#1 · os-project-manager · session_01FEkQ5mgwViR8HMJPT3pTVT
Clause-②: no
Metadata-protocol: none
维护者速读
Blocked-by:行点名的 p2pm:blocking卡照常派发;读第 3 条扣卡的两处(execution-duties.md取卡前置、triage-duties.md三门皆无的tooling卡首触即关)都加了指向豁免的说明。pm:blocking工具卡,要豁免」。docs/NORTH-STAR.md第 116 行(第 3 条豁免的措辞),再看第 11 行与triage-duties.md第 63 行。git diff origin/main -- docs/NORTH-STAR.md,预期只见第 11 行末句改为指向 "Priority" rule 2、第 116 行多一个 except 从句。docs/NORTH-STAR.md):请批准或合并。What changes
docs/NORTH-STAR.md"The one measure: the road" (line 11). "one that runs through but gives a wrong result is P2" becomes "one that runs through but gives a wrong result is graded by "Priority" rule 2". The road now points at rule 2 (data silently wrong or lost is P1 subject to the reach discount; any other wrong run is P2) instead of restating a grade, so the two cannot drift again.docs/NORTH-STAR.md〈Priority〉 rule 3 (line 116). The hold gains its one exemption, stated once: "…dispatches no p2/p3 tooling card or contract-hygiene card, except a p2pm:blockingcard that such a P0/P1 names on itsBlocked-by:line, which is not held because it unblocks that P0/P1". A p2pm:blockingcard that blocks only other cards is still held..claude/skills/pm-dispatch/references/execution-duties.mdline 50, the take precondition that reads rule 3's hold: 「第 3 条」 becomes 「第 3 条(含豁免)」, a pointer rather than a copy. To stay inside the 120-byte line cap, 「每次取卡现读」 becomes 「取卡时现读」 (same reading: live at every take). 110 to 118 bytes, line count unchanged (190, ceiling 190)..claude/skills/pm-dispatch/references/triage-duties.mdline 63, the second reader of the hold: triage's first-touch close of a p2/p3toolingcard with none of the three doors while the lane's P0/P1 is undispatched. Its doors key on the blocker's ownUnblocks:line, the exemption on the dependent'sBlocked-by:line, so without a pointer triage would close the very card rule 3 now exempts. The line now ends 「「Priority」第 3 条豁免除外」; to pay for it inside 120 bytes, 「P0/P1 开着(= 未派发,在飞不算)时」 becomes 「P0/P1 未派时」, the same definition execution-duties.md line 51 states. 110 to 120 bytes, line count unchanged (101, ceiling 101).Why
The maintainer's ruling on #32997 (comment 6867138933), verbatim:
pm:blocking工具卡,要豁免」Out of scope, untouched: #32997's question 3 (rule 3's "no evidence cap" against the
reach:admission p3). The filer's reading (a) stands until the maintainer rules.Acceptance notes
origin/maind4fbb4d:git grepfor 「Priority」, 〈Priority〉, "rule 3", 第 3 条, 工具卡, "tooling card", "open P0" and "undispatched P0" across.claude,scripts/pm,skillsandAGENTS.md. Two readers of the hold:execution-duties.mdline 50 (the take precondition) andtriage-duties.mdline 63 (triage's first-touch close of a door-lesstoolingcard). The first sweep missed the second, because that line names the hold by its condition and not by 「Priority」 or 第 3 条; contract review 6879988263 found it, and round 1 adds its pointer.filing-gate.md〈定级判据〉 andtriage-duties.mdline 60 read the grading rules, not the hold. Noscripts/pm/**code implements the hold (thetoolinglabel's candidate-query consumer inensure-pm-labels.shfilters onUnblocks:or a named surface, not on lane P0/P1), so no code or self-test changes.ROADMAP.mdline 13 says only "the first step that breaks is the current P0", which still agrees; it is not edited.pm:blockingstays derived from theBlocked-by:reverse index (dispatch-runbook.mdline 8); the exemption names theBlocked-by:line, so it reads the same index and needs no new label or state.execution-duties.md; whichever lands second mergesorigin/mainand re-runs the ratchet.Verification
Head
8850480e, baseorigin/maind4fbb4d (round 1 adds 8850480;origin/mainhas not moved on these files).Derived gates: 23 of 23, exit 0 each
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 23 families (round 1 addscheck:pm-half-statesandcheck:pm-label-write, both readtriage-duties.md). Each was run with its exit code captured before any pipe:check-adr-links(scan and--self-test),check-closing-keyword-parity(scan and--self-test),check-comment-mask-corpus,plan-test-core-shards --self-test,check-harness-current --self-test,check:agent-test-spelling,check:ci-filter-parity,check:cross-package-test-inputs,check:doc-authoring,check:driver-memory-census,check:gitlink-declared,check:nul-bytes,check:pm-governed-merges,check:pm-half-states,check:pm-label-write,check:pm-skill-id-lint,check:pm-skill-ratchet,check:refd-timer-probe,check:skill-frame-sync,check:watch-hint-literal: exit 0.@objectstack/lint check:doc-formula-expressions: exit 0 after building@objectstack/formulaand@objectstack/lintunder the verify lock (VERDICT command-exit 0); on the first head it read exit 3 (no lint dist) before that build.--ranreconciliation: "23 derived famil(ies) accounted for — 23 run, 0 NOT-MEASURED (a DERIVED zero — all 23 recorded an exit code and none of them is 3)".Ratchet, tier and governed readings
node scripts/pm/check-skill-line-ratchet.mjs: exit 0;execution-duties.md190 lines (ceiling 190) andtriage-duties.md101 lines (ceiling 101), headroom 0 each; every edited line within 120 bytes. No ceiling moves.skills/**is not touched, so the skills token ratchet does not apply.dispatch-gates --tier: "no path-derived mandate", the tier stays the PM's per-card call.node scripts/pm/check-governed-merges.mjs --branch claude/project-thread-xzthx1: exit 3, GOVERNED, landing tier H (人合). 3 of 3 paths hit the register:.claude/**(execution-duties.md, triage-duties.md) anddocs/NORTH-STAR.md. Size +4 / -4, under the 3000 threshold.skip-changeset:docs/**and.claude/**only, published by no package.🤖 Generated with Claude Code
https://claude.ai/code/session_01FEkQ5mgwViR8HMJPT3pTVT