Commit 7af4a20
Instruction-text alignment: five governed-protocol clauses restated to measured reality (#12657)
* docs(agents): footer promise restated to the measured edit-path behaviour
The session-URL footer does NOT survive a PR-body edit: measured 2026-08-26
(three REST writes, per-write read-back), every PATCH normalises the session
form DOWN to bare, and the bare footer then survives later edits verbatim —
the inverse of both files' standing promise. Both os-dev.md's byte-discipline
section and AGENTS.md's attribution-footer clause now state the measured
behaviour and the practice: session id is create-only; durable attribution
goes in body prose or a comment. Comment channel unchanged (not re-measured).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MnijPVVDakqK2J335JoJtq
* docs(agents): the assignee field is PM-owned — one deterministic dev action, stated in both protocol files
os-dev.md rule 2 asserted a state (claimed, do not touch the assignee) that
contradicted the repo CLAUDE.md claim-first rule; devs resolved the conflict
differently on the same day, one claiming late and one leaving a dispatched
card unassigned-while-claimed. Ruling: the PM owns the assignee — it is set
in the dispatch atomic pair (SKILL.md claim step 1), so CLAUDE.md's
claim-first is satisfied by the PM's claim before the dev arrives. Rule 2 now
gives one action in every observed state: never write the field, and report
an empty-on-arrival assignee in the summary as a PM-side half-state. SKILL.md's
claim intro states the ownership from the PM side in the same words.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MnijPVVDakqK2J335JoJtq
* docs(agents): the mandated label read-back becomes comparative — diff against union(read, intended)
A whole-set label write erases any label a concurrent actor lands between
your read and your write; the loss is silent and the victim is usually a
label you never meant to touch (measured live: a bot's label survived only
because its write landed before the PUT was composed). A bare read-back
cannot see this. Both the PM-side hard-step rule (SKILL.md) and the dev-side
whole-set fallback (os-dev.md) now require the read-back to be compared
against union(read set, intended change): any label in the union but absent
from the read-back was stripped by your PUT — re-add it and report it. The
comparison detects the loss; it does not prevent it, and the texts say so.
Additive MCP label calls and credential export are platform surfaces, out of
scope here.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MnijPVVDakqK2J335JoJtq
* docs(pm-skill): wrap the comparative read-back mechanism line back under the 120-byte budget
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MnijPVVDakqK2J335JoJtq
* docs(pm-skill): out_of_scope_findings labelling matches the role file's kind split
The skill stated finding-labelling unconditionally while the role file
splits it by kind — observational findings wear the label, concrete defects
stay unlabelled for triage. The two are different triage inputs (the label
routes the card), so every dispatch brief quoting the skill mislabelled
concrete defects and inflated the ungraded-findings health count. The role
file wins by the skill's own conflict rule; the skill line is rewritten in
place to the same kind split, inside the line ratchet, no re-wrap funding.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MnijPVVDakqK2J335JoJtq
* docs(pm-skill): dead-claim recovery rescues the worktree before releasing the claim
A dev that dies mid-edit has, by construction, not committed: its entire
output is uncommitted changes in the dispatch worktree, invisible to every
GitHub-side reading the recovery procedure prescribes. Following the label
steps to the letter discarded-by-omission that work (a live case held 113
changed lines across two instruction files, recovered only because a seat
looked). The reclaim step now starts by checking the dispatch worktree:
uncommitted changes are committed as WIP on the dispatch branch, pushed, the
sha named in the recovery comment and marked INCOMPLETE AND UNREVIEWED, so
the resuming dispatch diffs it rather than building on it unexamined. The
line is paid inside the ratchet by the previous member's in-place shrink.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MnijPVVDakqK2J335JoJtq
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 4bf90ab commit 7af4a20
3 files changed
Lines changed: 37 additions & 37 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
44 | | - | |
45 | | - | |
46 | | - | |
47 | | - | |
48 | | - | |
49 | | - | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
50 | 50 | | |
51 | 51 | | |
52 | 52 | | |
| |||
332 | 332 | | |
333 | 333 | | |
334 | 334 | | |
335 | | - | |
336 | | - | |
337 | | - | |
338 | | - | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
339 | 339 | | |
340 | 340 | | |
341 | 341 | | |
| |||
457 | 457 | | |
458 | 458 | | |
459 | 459 | | |
460 | | - | |
461 | | - | |
| 460 | + | |
462 | 461 | | |
463 | 462 | | |
464 | | - | |
465 | | - | |
| 463 | + | |
| 464 | + | |
466 | 465 | | |
467 | 466 | | |
468 | | - | |
469 | | - | |
470 | | - | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
136 | 136 | | |
137 | 137 | | |
138 | 138 | | |
139 | | - | |
140 | | - | |
141 | | - | |
142 | | - | |
143 | | - | |
144 | | - | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
145 | 145 | | |
146 | 146 | | |
147 | 147 | | |
| |||
543 | 543 | | |
544 | 544 | | |
545 | 545 | | |
546 | | - | |
547 | | - | |
| 546 | + | |
| 547 | + | |
548 | 548 | | |
549 | 549 | | |
550 | 550 | | |
| |||
583 | 583 | | |
584 | 584 | | |
585 | 585 | | |
586 | | - | |
587 | | - | |
588 | | - | |
589 | | - | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
590 | 591 | | |
591 | 592 | | |
592 | 593 | | |
| |||
984 | 985 | | |
985 | 986 | | |
986 | 987 | | |
987 | | - | |
988 | | - | |
989 | | - | |
| 988 | + | |
| 989 | + | |
990 | 990 | | |
991 | 991 | | |
992 | 992 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
476 | 476 | | |
477 | 477 | | |
478 | 478 | | |
479 | | - | |
480 | | - | |
481 | | - | |
482 | | - | |
483 | | - | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
484 | 484 | | |
485 | 485 | | |
486 | 486 | | |
| |||
0 commit comments