Skip to content

skills(pm-dispatch): key the clause-② contract review by lane — spec and skills owe it on every round, other lanes owe none - #18903

Draft
os-elon-musk wants to merge 3 commits into
mainfrom
claude/issue-18536-lane-keyed-contract-review
Draft

os-elon-musk wants to merge 3 commits into
mainfrom
claude/issue-18536-lane-keyed-contract-review

Conversation

@os-elon-musk

Copy link
Copy Markdown
Collaborator

Fixes #18536

Clause-②: no

What this lands

The maintainer's lane rule, restated by the director record on the card (comment 5717169811), quoted verbatim and untranslated:

「曾经要求只有 spec 和 skills 需要 fable,其他 opus 就够了,理论上其他车道不需要契约复审」「即使项目经理跑在 opus 上,也可以支持起 fable 子 agent 复审,这样最快。除非子 agent 用 fable 启动失败,也就是没有 fable」

carried into the governed text and the two machine readers:

  1. Spec and skills lanes — every delivered round gets the contract review at CONTRACT_REVIEW_TIER: in-seat when the seat's served tier is that tier, otherwise by the at-tier review subagent the seat spawns (the 09-17 route stays). The record is the same-shape comment with Served-tier:, on the PR or the card.
  2. Every other lane — no contract review. The clause-② limbs (path packages/spec/src/**, declaration Clause-②: yes) survive unchanged and now answer the LANE question: a limb hit is spec-lane work and moves there; a Clause-②: no PR outside the contract surface lands on the three pre-checks and the gates. No default-tier self-review record is demanded, and no other lane spawns the at-tier subagent.
  3. Tier unavailable (the at-tier subagent cannot start) — the review cannot be produced: the PR stays draft and out of the queue, and the maintainer's own review is the only bypass, by their word each time.

The lane key is the 2026-09-10 key restored (PR #17294) with the 2026-09-17 subagent route kept (PR #18511); the 2026-09-16 tier key (PR #18363) is superseded. Not a byte-revert: both spec AND skills owe the review, and 「余席默认档自审加门禁」 is gone — other lanes owe nothing.

Charter (commit 1) — net 0 lines per file

file before → after ratchet ceiling
.claude/skills/pm-dispatch/SKILL.md 812 → 812 812
references/contract-review.md 60 → 60 60
references/core-rules.md 151 → 151 151

Every edited line is at most 120 bytes; check:pm-skill-ratchet is green on bc0c2ec41. Rule text carries no issue numbers (check:pm-skill-id-lint green); the four-axis frame block is untouched (check:skill-frame-sync / -freshness green).

SKILL.md — five in-place rewrites, one added line, one retired line:

  • :512 强制条款② — 「达档复核归派发席席内」 → 「命中即 spec 车道的活」.
  • :522 席位档策略 — 「按实测档:达档席内审;未达档席 ⛔ 不自审,起隔离达档子代理转录核档采信」 → 「按车道:spec 与 skills 席达档席内审;未达档 ⛔ 不自审,起隔离达档子代理」 (the transcript-verified tier of the subagent stays stated in contract-review.md :54).
  • :636 入队闸门 — 「无席内条款②复核 PASS 在案」 → 「无达档条款②复核 PASS 在案」; the limbs at :637 / :638 are untouched.
  • :639 交付后复核 — 「归派发席:达档席内审,未达档循保险丝起子代理;记录 = 同形评论落 PR 或卡」 → 「只 spec 与 skills 车道欠,每轮达档:席内审或起子代理;双肢命中即 spec 车道」 (the record's shape lives in contract-review.md :27–:29).
  • :640 ADDED (rule 3, where the enqueue gate lives) — 「子代理起不来 ⇒ 复核缺席,PR 留 draft 队列外等档;唯一旁路是维护者亲审,逐次为准。」
  • :646 pointer — 「席内复核的适用面」 → 「契约复核的适用面」.
  • RETIRED, paying for :640 — the former :672 「报告席记条款②默认档 FAIL 率入复审清单;超改制前达档史值 ⇒ 决策卡交维护者定回退。」 Reason: it meters the FAIL rate of DEFAULT-TIER clause-② reviews, and under rules 1–2 no lane performs one (spec and skills review at tier; other lanes review nothing), so the metric's population is empty. It sits outside the claim's declared SKILL.md bands; it is the one tier-keyed line in the file the ruling empties, and paying in-file required it. Re-wrap is not currency: no line was re-flowed.

contract-review.md — thirteen in-place rewrites:

  • Title and :23 — 「(席内)」 → 「(按车道)」.
  • :9, :11, :12, :14 — 「席内契约复核 / 席内复核」 → 「达档契约复核 / 达档复核」: the review is at tier wherever it happens, and "in-seat" was the 09-16 key.
  • :25 — 「交付后收集复核当轮席内完成;借复核不移卡,新 spec 工作恒归 spec 席」 → 「交付后收集复核当轮完成;只 spec 与 skills 车道欠,新 spec 工作恒归 spec 席」. The "borrow the isolated review" route is what rule 2 closes for other lanes.
  • :26 — 「按档位:达档席内审契约增量;未达档 ⛔ 不自审,走保险丝路;豁免仅独立性件与保险丝」 → 「按车道:spec 与 skills 席审契约增量;达档席内审,未达档 ⛔ 不自审,起达档子代理」.
  • :27 — 「达档与默认档同形」 → 「席内与子代理同形」: there is no default-tier record any more; one shape holds between in-seat and subagent (the two scripts' quotations of this line are updated in the same PR).
  • :32 — the independence case → 「独立性件(契约真分叉、dev 挂旗)与保险丝只免席内审,不免复核:起隔离达档子代理」. This is the 「豁免仅独立性件与保险丝」 rewrite the ruling asked for: the independence case and the fuse exempt the seat from IN-SEAT review only, never from the review's existence. The former third trigger 「派发后的跨车道面(含 spec)」 is lane routing now (:25).
  • :40 landing pre-check ① — 「席内条款②复核 PASS 在案 …(档位按实测)」 → 「达档条款②复核 PASS 在案 …(spec、skills 每轮)」.
  • :50 the fuse — 「管每个出条款②裁决的席 … 未达档 ⛔ 不自审」 → 「只管 spec 与 skills 席的条款②复核」 (the 不自审 clause stays at :26).
  • :52 — 「至席内复核完成」 → 「至达档复核完成」.
  • :53 — 「标签原样留置,队列外等待是安全态」 → 「起不来即无复核,标签原样、队列外等档」 (rule 3 on the fuse side).

core-rules.md — one rewrite: :112 「契约卡达档复核归派发席」 → 「契约复核只 spec、skills 欠」. Trace by REST GET /pulls/N/files: PR #18363 (09-16) touched SKILL.md, contract-review.md and platform-readings.md only, so the 09-16 re-key never landed in core-rules.md; :112's tier key came with PR #18511 (09-17), replacing PR #17294's 「归 spec 席」. :122 「references/ 席内达档复核后入队」 is left as the mirror of SKILL.md :625 (see acceptance notes).

Machine side

commit 2 — scripts/pm/dispatch-gates.mjs. The clause-② note and the suspect tail that --tier prints (quoted into claim comments) said 「spec seat; default-tier build」 and 「in the spec seat」 — the 09-10 seat key, which PR #18363 never re-keyed. They now name the spec and skills lanes, the in-seat-or-subagent route, and 「a hit outside those lanes is spec-lane work and moves there」; the docblock above MANDATORY_TIER_GLOBS carries the rule. Four self-test pins hold both renderings to the lane key and refuse the two retired spellings. --self-test: 1852 cases pass (baseline on 0b31d90: 1848).

commit 3 — scripts/pm/check-clause2-carriers.mjs. needsRecordRead — C6's population gate and the sweep's read budget — owed a record only in the completed state (a cleared yes), so a spec-lane Clause-②: no round read 0 with no record on its head: exactly PRs #18530 / #18529, the card's measured pair. Now:

  • LANES_OWING_REVIEW (domain:spec, domain:skills, frozen) and laneOwesReview(pair), read off the CARD's domain:* labels; unreadable labels stay UNJUDGED through the existing labels gap.
  • Population: the completed state (unchanged) OR a declared no on a spec/skills card (new). A no anywhere else still owes nothing — pinned.
  • C6's row on a spec/skills no round with no record: exit 4; remedy = the lane's review at tier (in-seat or by the at-tier subagent), with the unavailable-tier state and its one bypass named.
  • A cleared yes OUTSIDE the two lanes keeps its row and its exit 4 (the yes is a limb hit, and limb-hit work is owed), but its remedy is lane ROUTING: re-lane the item to domain:spec (pm:retriage, or split the contract work to a spec-lane card or PR per 「新 packages/spec 工作恒由 domain:spec 席收口」), or correct a false yes with a Clause-②-correction: comment — never a default-tier self-review, never an at-tier subagent from that lane.
  • The C6-RECORD note prescribes the clear-citation only where a clear exists; on a spec/skills no round with its record it says the lane owes the record and it exists.
  • New floored battery, 34 cases (floor 30); roster floor 32 → 33. --self-test: 977 cases pass (baseline 941).

Deviation from the dispatch's suggested case (c) — a yes pair on a domain:cli card as 「not owed as a record, plus a note」 at exit 0 — implemented instead as owed at exit 4 with the routing remedy. Reasons: contract-review.md :42 promises 「0 = … head 上有记录」; a cli seat clearing a yes pair and landing it from that lane is never a legal workflow under rule 2 (the work 「moves there」), so an exit-0 note would be the 0-with-a-message the file's own header bans; and the row's exit is unchanged from today (only the remedy text moves), so no legal workflow is re-blocked. The four-axis reading is in the report's open_questions; the PR is draft for the maintainer's word either way.

Gates (run on bc0c2ec41, the final commit)

node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 46 families. 45 ran with exit 0 (each captured redirect-then-$?), among them check:pm-skill-ratchet, check:pm-skill-id-lint, check:skill-frame-sync, check:pm-governed-prose, check:pm-clause2-carriers, check:declared-population-live, check:pm-half-states, check:nul-bytes. check:doc-formula-expressions first exited 3 — PREREQUISITE NOT MET (@objectstack/formula / @objectstack/lint not built; nothing measured) — and reruns green after turbo run build --filter=@objectstack/formula --filter=@objectstack/lint under the verify lock (22 + 9 + 14 examples judged clean). check:pm-dispatch-gates (430–450 s) was still running detached when this body was written; its verdict and the --ran reconciliation are in the os-dev-report comment on #18536. Both edited scripts' own --self-test pass (above). The four package tests that mention dispatch-gates.mjs do so in docblocks only and read nothing from it, so they are not owed. The derivation printed a STALE TREE warning (the tree is behind an origin/main that moved during the run); the PM's re-derivation after the report reads the true list.

skip-changeset: nothing published moves — .claude/** and scripts/pm/** ship in no package's files[].

Acceptance notes

Lines outside this card's declared file surface that carry seat or tier wording — reported, not edited (承接者: the skills seat's next SKILL.md round; the hot-file queue behind this card holds #18743 · #18755 · #18665 · #18469 PR-B · #18489):

  • SKILL.md :231 「派发后发现的跨车道面(含 spec)不移卡,认领席借契约复审档隔离复核」 and core-rules.md :62 (its mirror). The "borrow the isolated at-tier review" route is what rule 2 closes for other lanes (no other lane spawns the at-tier subagent). The ruling's 「moves there」 and SKILL.md :234 「已派发卡 ⛔ 不因触 spec 转席」 reconcile as "the contract WORK moves to the spec lane; the card is not re-seated", which is how contract-review.md :25 now reads. Suggested rewrite of :231, same byte budget: 「认领即跟到 MERGED:派发后发现的跨车道面(含 spec)不移卡,契约面工作交 spec 车道达档复核。」
  • SKILL.md :608 「技能面 hunk 须由契约复审档的席复核,档外席先交 skills 席」, :623 「由本席按达档自审」, :625 「经席内达档复核后 ready → 入队」 and core-rules.md :122 「references/ 席内达档复核后入队」: consistent with rule 1 read as "the skills lane's review at tier, in-seat or by subagent"; the word 席内 there is the 09-16 spelling and could be read as in-seat-only.
  • references/lanes/spec.md :19–:33 and references/lanes/skills.md: no contradiction found; lanes/skills.md :13 「契约复核归派发席席内」 is ownership wording (the seat owns the record it adopts) and stays true.
  • The follow-up the ruling assigns to the lane seats after this lands, not to this card: re-read the needs:contract-review carriers hung outside the spec/skills lanes (the director's ledger ⑫) and re-lane or strip each.
  • Sweep-mode cost: check-clause2-carriers.mjs without --pair now buys the PR thread for every spec/skills-lane no pair too (one read per PR, cached per PR); the budget paragraph in the file's header is unchanged in shape.

维护者速读(草稿)

改了什么:把契约复核的归属重新按「车道」写回章程:只有 spec 与 skills 两条车道的每一轮交付都要过契约复审档的复核——席位达档就席内审,不达档就起达档子代理;其余车道零契约复核,条款②命中即 spec 车道的活;达档子代理起不来时 PR 留 draft、队列外等档,唯一旁路是您亲审。三份章程文本行数不变(812 / 60 / 151),两个机读脚本(--tier 的提示行、--pair 的复核记录人口)同步改成按车道判。

为什么改:9-16 那次把「只在 spec 席」改成了「按席位实测档」,席位名单没了,于是同一张 Clause-②: no 的 spec 车道 PR 在两条细则下答案相反(#18536 的两种读法),而账号级 429 让「等档位」在两种读法里含义完全不同。您 9-17 的裁决把车道规则说回来了,本 PR 只是把它落到文本和脚本上。

风险与代价(含回滚):--pair 从此对 spec/skills 车道的 no 轮也要求 head 上有复核记录,没有就退 4——这正是 #18530 / #18529 该有的读数,但意味着这两条车道的 no 轮在记录落下前都不能入队;其它车道不受影响,yes 挂在别的车道上的旧读数(退 4)不变,只是补救措施从「自审」改成「改道 spec」。回滚 = revert 这三个 commit,文本与脚本一起回到 0b31d90

席位意见:(留空)

你要做的:确认本 PR 是否如实落了您的车道规则,是则合并;合并后各车道席按裁决去清理挂在 spec/skills 之外的 needs:contract-review 载体。


Generated by Claude Code

… spec and skills owe it on every round, other lanes owe none

The maintainer's lane rule, restated on the card: the contract review at
CONTRACT_REVIEW_TIER is owed in the spec and skills lanes only, on every
delivered round (in-seat when the seat is served at that tier, otherwise by
the at-tier review subagent the seat spawns — the 09-17 route stays); every
other lane lands on the three pre-checks and the gates with no contract
review, and a clause-② limb hit outside those lanes is lane routing (spec-lane
work) rather than a self-review demand. When the subagent cannot start the
review is unavailable: the PR stays draft, out of the queue, and the
maintainer's own review is the only bypass.

Net 0 lines per file (812 / 60 / 151). The one added SKILL.md line (the
unavailable-tier state) is paid by retiring the default-tier clause-② FAIL
rate line, whose population the rule empties.

Claude-Session: https://claude.ai/code/session_01BTeBejoPUvRHN8WdAJC6oF
Co-authored-by: Claude <noreply@anthropic.com>
… not a seat

The clause-② note and the suspect tail printed by `--tier` (quoted into
claim comments) said "spec seat; default-tier build" and "in the spec seat" —
the 2026-09-10 seat key, never re-keyed by the 09-16 tier PR. They now say
what the charter says: the review is owed in the spec and skills lanes,
in-seat at tier or by the at-tier subagent, and a contract-surface hit
outside those lanes is spec-lane work that moves there. The docblock above
MANDATORY_TIER_GLOBS carries the same rule; four self-test pins hold both
renderings to the lane key and refuse the two retired spellings.

Claude-Session: https://claude.ai/code/session_01BTeBejoPUvRHN8WdAJC6oF
Co-authored-by: Claude <noreply@anthropic.com>
`needsRecordRead` — C6's population gate, and the sweep's read budget — owed
a record only in the completed state (a cleared `Clause-②: yes`). Under the
lane rule the spec and skills lanes owe the contract review on EVERY round
they deliver, `no` included, and a `no` round hangs no carrier to mark its
review pending: PRs #18530 / #18529 (spec-lane `no` rounds) read 0 here with
no record on either head. The population now adds the `no` rounds of the two
lanes, read off the card's `domain:*` labels (`LANES_OWING_REVIEW`,
`laneOwesReview`; unreadable labels stay UNJUDGED). A `no` elsewhere still
owes nothing. A cleared `yes` outside the two lanes keeps its row and its
exit — the `yes` is a limb hit and limb-hit work is owed — but its remedy is
lane routing (re-lane to spec, or correct a false `yes`), never a
default-tier self-review and never an at-tier subagent from that lane. The
C6-RECORD note prescribes the clear-citation only where a clear exists. New
floored battery, 34 cases; roster floor 32 → 33.

Claude-Session: https://claude.ai/code/session_01BTeBejoPUvRHN8WdAJC6oF
Co-authored-by: Claude <noreply@anthropic.com>
@os-elon-musk os-elon-musk added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Sep 18, 2026 — with Claude
@github-actions github-actions Bot added size/m documentation Improvements or additions to documentation labels Sep 18, 2026

Copy link
Copy Markdown
Collaborator Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: bc0c2ec41e8c93f6ef1a9eefa33a72d393292264

① Derived judgments

  • Surface: .claude/skills/pm-dispatch/SKILL.md (+6 / −6, 812 / 812), references/contract-review.md (+14 / −14, 60 / 60), references/core-rules.md (+1 / −1, 151 / 151), scripts/pm/dispatch-gates.mjs (+34 / −14), scripts/pm/check-clause2-carriers.mjs (+225 / −41). No published package moves; no contract's accept/reject set moves; the public surface is unchanged.
  • Rule 1 (spec and skills owe the at-tier review every round, in-seat or by the at-tier subagent): SKILL.md 「条款②复核按车道:spec 与 skills 席达档席内审;未达档 ⛔ 不自审,起隔离达档子代理。」 and 「交付后复核只 spec 与 skills 车道欠,每轮达档:席内审或起子代理;双肢命中即 spec 车道。」; contract-review.md 「按车道:spec 与 skills 席审契约增量;达档席内审,未达档 ⛔ 不自审,起达档子代理。」 — correct; the transcript-verified tier of the subagent (the finding(pm-dispatch): SKILL.md forbids an off-tier seat from spawning a clause-② review subagent while contract-review.md prescribes exactly that — so a default-tier lane has no legal route to a Clause-② yes verdict at all #18434 guard) stays on contract-review.md's 「子代理档只取其转录 harness 逐请求 model 盖章」 line, unchanged.
  • Rule 2 (other lanes owe none; a limb hit is spec-lane work): SKILL.md 「强制条款②:… 命中即 spec 车道的活。」, the limbs untouched; contract-review.md 「只 spec 与 skills 车道欠」 and 「独立性件(契约真分叉、dev 挂旗)与保险丝只免席内审,不免复核:起隔离达档子代理。」 — the 「豁免仅独立性件与保险丝」 rewrite the ruling asked for, now saying what is exempted from what; core-rules 「契约复核只 spec、skills 欠」 — correct.
  • Rule 3 (tier unavailable ⇒ no review, draft and out of the queue, the maintainer's own review the only bypass): SKILL.md added line 「子代理起不来 ⇒ 复核缺席,PR 留 draft 队列外等档;唯一旁路是维护者亲审,逐次为准。」 and contract-review.md 「起不来即无复核,标签原样、队列外等档」 — correct.
  • Payment: the added SKILL.md line is paid by retiring 「报告席记条款②默认档 FAIL 率入复审清单;超改制前达档史值 ⇒ 决策卡交维护者定回退。」 — provenance read by the seat: PR skills(pm-dispatch): clause-② cards build at the default tier and are gated by the contract review at CONTRACT_REVIEW_TIER (#16905) #16915 (skills(pm-dispatch): 强制条款② mandates CONTRACT_REVIEW_TIER for IMPLEMENTATION of clause-② cards — drop it to TIER_DEFAULT and let the existing contract review be the gate (maintainer-authorised trial already running) #16905, 2026-09-09, the reform that put clause-② builds at the default tier); it metered the FAIL rate of default-tier clause-② reviews as that reform's rollback trigger. Under rules 1–2 no lane performs a default-tier clause-② review, so the metric's population is empty; the retirement is sound, and it is named to the maintainer in the 速读 because it removes a reform-era rollback trigger, not a mere restatement.
  • Machine side: dispatch-gates.mjs tierLines and the suspect tail now key the review by lane (spec and skills, in-seat at tier or by the at-tier subagent; a hit outside is spec-lane work and moves there), with four pins refusing the two retired spellings. check-clause2-carriers.mjs: LANES_OWING_REVIEW frozen at exactly the two lanes; laneOwesReview reads the CARD's domain:* labels and answers null on unreadable labels (already UNJUDGED); needsRecordRead = the completed state OR a declared no on a spec/skills card; C6 carries three remedies keyed by where the pair sits, the exit unchanged (4) in all three; the C6-RECORD note distinguishes the owed-by-lane case; the sweep buys the PR thread for the two lanes' no pairs (cost declared). The seat's spot-check on a scratch worktree at this head: check-clause2-carriers.mjs --self-test exit 0, 977 cases (baseline 941); check-skill-line-ratchet exit 0 at 812 / 60 / 151 / 403; check-skill-id-lint exit 0 (27 files clean); dispatch-gates.mjs --self-test exceeded the seat's 540 s timeout (exit 124, 0 ✗ before the cut) — NOT MEASURED by the seat, the dev's detached run reads 1852 pass, and CI's Lint & Repo Gates measures it on this head.
  • The dev's question (a cleared yes on a card outside the two lanes with no record: exit 4 with a lane-routing remedy, or exit 0 with a note): A, as implemented. Rule 2 says the work moves to the spec lane; an exit 0 would read as landable from the lane that cleared it, the 0-with-a-message the file's own header bans; the exit is what it is today, only the remedy moved, so no legal workflow is newly blocked. Not a maintainer question: gate strength is kept, not weakened, and no accept set moves.
  • Residue outside the card's declared bands, carried as riders on the SKILL.md serial's next card (⛔ not this PR's): SKILL.md 「认领即跟到 MERGED:派发后发现的跨车道面(含 spec)不移卡,认领席借契约复审档隔离复核」 and core-rules' mirror still name the borrowed isolated review for any lane; 「references/ 席内达档复核后入队」 (SKILL.md and core-rules) keeps the 09-16 word 席内. Both reconcile with the ruling as "the contract WORK moves, the card is not re-seated; the skills lane reviews at tier in-seat or by subagent", but the words predate it.

② Semver level

  • skip-changeset is correct: .claude/** and scripts/pm/** ship in no package's files[]. Clause-②: no on the claim and in the body; PM_SWEEP_REPO=objectstack-ai/objectstack node scripts/pm/check-clause2-carriers.mjs --pair 18903 at 2026-09-18T05:18Z: exit 0, one live claim, no widening tell.

③ Boundary flags

  • Dev flags: one open_questions entry, answered A above. Deviations accepted: the payment line lies outside the four declared SKILL.md bands (declared in the body, reason sound); contract-review.md 「达档与默认档同形」 → 「席内与子代理同形」 with both script quotations updated in the same PR; check:pm-dispatch-gates run detached past the foreground cap with the verdict line read (the standing platform fact); one Bash call moved to the background by the harness with no work lost.
  • CI on this head at 2026-09-18T05:18Z: 22 success · 12 skipped · 1 in_progress (Lint & Repo Gates) — nothing red; the landing check reads it again on the landing act.

Implemented-by: claude/issue-18536-lane-keyed-contract-review
Reviewed-by: session_01BTeBejoPUvRHN8WdAJC6oF

VERDICT: PASS


Generated by Claude Code

Copy link
Copy Markdown
Collaborator Author

维护者速读(终稿)— PR #18903 · 席位定稿 2026-09-18T05:30Z(草稿在正文,以本评论为准)

改了什么:把你 9-17 说的车道规则写回章程与两个机读脚本:只有 spec 与 skills 两条车道的每一轮交付(不论 Clause-② 是 yes 还是 no)都要过契约复审档的复核——席位达档就席内审,不达档就起达档子代理;其余车道零契约复核,条款②命中即 spec 车道的活;子代理起不来时 PR 留 draft、队列外等档,唯一旁路是你亲审。三份章程行数不变(812 / 60 / 151);--tier 的提示行与 --pair 的复核记录人口同步改成按车道判。

为什么改:9-16 那次把「只在 spec 席」改成「按席位实测档」,席位名单没了,同一张 spec 车道 no PR 在两条细则下答案相反(#18536 的两种读法);你的裁决把车道规则说回来,本 PR 落到文本和脚本上。

风险与代价(含回滚):① spec 与 skills 车道的 no 轮从此也要 head 上有复核记录,没有就 --pair 退 4——这两条车道现在在飞的 no PR 入队前都要补记录(这正是 #18530 / #18529 该有的读数);其它车道不受影响。② 为了付新增那一行,退掉了 SKILL.md 里「报告席记条款②默认档 FAIL 率…超改制前达档史值 ⇒ 决策卡交维护者定回退」这一行——它是 9-09 改制(PR #16915)留的回退触发器,量的是"默认档自审"的失败率;按新规则没有任何车道再做默认档自审,这个指标没有人口了。请你知道这是删掉一个回退触发器,不只是改措辞。③ 机器侧一处取舍(dev 提问、席位裁 A):别的车道上被清标的 yes 配对仍退 4,但补救从「自审」改为「改道 spec」,退出码与今天相同。回滚 = revert 三个 commit,文本与脚本一起回到 0b31d90

席位意见:建议批准。三条规则逐字落地,车道键与子代理路线同存;唯一值得你多看一眼的是第②条那行退役。留在下一张 SKILL.md 卡上的两处旧措辞(「借契约复审档隔离复核」与 references/ 落地行的「席内」)已记在 ACCEPT 里,不在本 PR。

你要做的:确认本 PR 如实落了你的车道规则,并接受第②条那行的退役,是则 APPROVE(GOVERNED_APPROVERS 账户);之后由本席按裁决 C 落地,再由各车道席清理挂在 spec/skills 之外的 needs:contract-review 载体。


Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation needs-user-decision size/m skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

charter conflict: does a Clause-②: no PR that touches no contract surface still owe an in-seat review before it can land?

2 participants