From f952cf8fdb0b9091dbe439b4281c5db155f5bbe9 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 1 Sep 2026 00:55:06 +0000 Subject: [PATCH] docs(pm-skill): anchor recorded replays to surviving commits, and to content over positions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The record-discipline block asks for reproductions on cards and rulings but says nothing about what those records are pinned TO, and both pins expire silently. A repro block stated at its own PR head goes unreplayable the moment the branch is squash-merged and deleted: measured, one card's own block had two of its three shas unresolvable, both PR-branch commits, while the surviving one was the main-side diff base. The same shape reaches positions — one triage round hit three dead line-number citations, every one relocated only via a symptom string. The block reads replayable in both cases, and there is no signal at write time. One bullet, two legs: state a replay against a commit that survives (the main merge commit, or base plus PR number) and never a PR head, saying so and recording the inputs themselves — the diff, or the changed hunks — where the PR head genuinely is the subject; and anchor content rather than positions, since line numbers drift as files grow. No gate: scanning card bodies for sha liveness would false-positive on every unmerged PR, which is the card's own restraint and triage's concurrence. Claude-Session: https://claude.ai/code/session_01Msg17tAHJ3jVTYFgHydCm2 Co-authored-by: Claude --- .claude/skills/pm-dispatch/references/dispatch-runbook.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.claude/skills/pm-dispatch/references/dispatch-runbook.md b/.claude/skills/pm-dispatch/references/dispatch-runbook.md index cd42950c17..fd1b1edb4a 100644 --- a/.claude/skills/pm-dispatch/references/dispatch-runbook.md +++ b/.claude/skills/pm-dispatch/references/dispatch-runbook.md @@ -119,6 +119,11 @@ fire 附带一次: 同文件里确定存在、且 ⛔ 绝不是被测词子串的一个词;对照未通过的零记「没读到」, ⛔ 不记「不存在」(对照不要求作者预知自己会犯哪一类错); ② **锚点取最短的不折行片段**,⛔ 不抄脑中那整句。 +- **记录锚在活得下来的对象上**(实测:一卡的复现块三 sha 死二,皆 PR 分支;同轮三处行号引 + 用全失效,靠症状串重定位):① 重放按**能存活的 commit** 陈述 —— `main` 的合并 commit,或 + base + PR 号,⛔ 永不用 PR head:分支一删 object 即不可达,而块读着仍可重放;PR head 确是主体时 + 明说,并把**输入本身**(diff 或改动 hunk)记在旁边,使运行无该 object 也可重建;② 同理**锚内 + 容、不锚位置** —— 行号随文件生长而漂,取症状字符串或独特标识符。 - **行文纪律**: 出处一行(日期 + 原话);实测叙事至多压成一行 —— 故事住在卡上,不进操作文本。