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

Merged
os-elon-musk merged 3 commits into
mainfrom
claude/issue-18536-lane-keyed-contract-review
Sep 19, 2026
Merged

os-elon-musk merged 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

@os-elon-musk
os-elon-musk marked this pull request as ready for review September 18, 2026 23:50
@os-elon-musk
os-elon-musk added this pull request to the merge queue Sep 18, 2026
Merged via the queue into main with commit e15870f Sep 19, 2026
44 checks passed
@os-elon-musk
os-elon-musk deleted the claude/issue-18536-lane-keyed-contract-review branch September 19, 2026 00:09
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 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