Uh oh!
There was an error while loading. Please reload this page.
docs(pm): label writes re-read current labels in the same action — stale snapshots are invalid snapshots (#9226) - #9238
Merged
Conversation
… — stale snapshots are invalid (#9226) In-place, line-neutral rewrite of the issue_write labels whole-set-replace trap line in platform-readings.md: the freshness of the read is now pinned (re-read current values within the same action; a reading from an earlier round/hour is an invalid snapshot). Piggyback per the scope-addendum comment: SKILL.md review section now states that the review seat for clause-1 skill-surface PRs must itself run at the contract-review tier, referenced via the dispatch-gates CONTRACT_REVIEW_TIER constant (no model name). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017TNzEetykdh7ceZGwuAPLq
This was referenced Aug 17, 2026
os-zhuang
marked this pull request as ready for review
August 17, 2026 11:50
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Aug 17, 2026
os-zhuang pushed a commit
that referenced
this pull request
Aug 17, 2026
…9395) Implements the maintainer ruling on #9319 decision 2 (2026-08-17): the `ADR maintainer approval` gate's path predicate extends to `.claude/skills/**`, so Prime Directive #14's human-merge reservation is machine-enforced on the lane's own protocol surface rather than declared. - the single ADR prefix becomes a GOVERNED_SURFACES table: identical pass conditions (an APPROVED standing + no armed auto-merge), distinct failure wording, each surface naming its own rule; - the #8012 armed-auto-merge clause reaches the new path class identically, with its own emptiness proof (identical reviews, opposite verdicts); - one path hit governs the whole PR -- a mixed diff is never judged by proportion, pinned by comparing a 1-of-4 verdict with a 1-of-1 one; - the report renderer is pure, so the "each surface names its own rule" requirement is asserted on the text an operator actually reads; - PR #9238 -- the skills-only PR the merge queue landed with zero reviews -- joins the historical replay fixtures as a real capture, pinned RED. The workflow needed no trigger change: it carries no `paths` filter (a path filter would skip the whole workflow and hang the queue on a required context that never reports), and #9238 already produced a completed `ADR maintainer approval` check run through the clean path. No existing check is weakened: every prior assertion still runs, and the self-test goes from 66 to 96 assertions. Fixes#9395
This was referenced Aug 17, 2026
Merged
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#9226
Main deliverable —
references/platform-readings.md(in-place, line-neutral)The
issue_writelabels whole-set-replace trap line is rewritten in place (no new lines). Core increment per the card: 写标签前同一动作内重读现值合并 —— 隔轮/隔小时的旧读数视为无效快照. All pre-existing elements are preserved: whole-set replace (not append), the silent-stripping consequence, true append via RESTPOST /issues/{n}/labels, and the post-write read-back. Rationale (from the card): the old wording pinned read-then-union but not the freshness of the read — a reading taken early in a round plus a write 80 minutes later satisfied it literally while bypassing it semantically; post-write read-back cannot catch this class, so the only effective defense is compressing the read-write window to seconds.Piggyback (scope-addendum comment on #9226) — landed, not dropped
SKILL.md review section (the skill-surface ACCEPT 三件套, item ①) now states that the review seat for clause-① skill-surface PRs must itself run at the contract-review tier, referenced via the dispatch-gates constant
CONTRACT_REVIEW_TIER— no model name written, single source preserved. Funded line-neutrally by extending the existing line (long-line precedent in the file: lines up to 492 chars); no re-wrap, no new line.Line budget (ratchet, read on the spot)
.claude/skills/pm-dispatch/references/platform-readings.md.claude/skills/pm-dispatch/SKILL.mdTier derivation (verbatim,
node scripts/pm/dispatch-gates.mjs --tieron the changed paths)Verification — gate union re-run after the final commit, at
0627eed38Gate families re-derived from the actual changed paths (
node scripts/pm/dispatch-gates.mjson the two files): the five families above, matching the dispatch expectation; no additions beyond the derived set..claude/-only change — releases nothing;skip-changesetapplied.This is a skill-surface PR (
.claude/skills/**): draft, awaiting a human merge — never ready/queue/auto-merge.Generated by Claude Code