diff --git a/.claude/rules/blocked-green-ci-investigate-threads.md b/.claude/rules/blocked-green-ci-investigate-threads.md index e9ee8c7bb..d5c8ff640 100644 --- a/.claude/rules/blocked-green-ci-investigate-threads.md +++ b/.claude/rules/blocked-green-ci-investigate-threads.md @@ -85,6 +85,40 @@ Resolve these no-op (the prose was correct at write-time; substrate edits would be retroactive rewriting). Stale ≠ false; it just means the action window closed. +#### Worked example — 2-finding pre-fixed cascade with immediate auto-merge fire + +Empirical anchor [PR #4097](https://github.com/Lucent-Financial-Group/Zeta/pull/4097) +(merged 2026-05-17T21:29Z at `e1704a26`): + +- `poll-pr-gate.ts 4097` returned `gate: "BLOCKED"`, `requiredChecks.failed: 0`, + `autoMerge: "armed"`, `unresolvedThreads: 2` +- Both threads (Codex P2 `PRRT_kwDOSF9kNM6Cppvx` + Copilot + `PRRT_kwDOSF9kNM6Cppwe`) on the same file + same line + (`docs/backlog/P3/B-0613-...md` line 75), same finding + ("Option A is `compgen -G`, a bash builtin, not zsh-valid") +- **Both threads had `isOutdated: false`** even though peer Otto's + commit `6f91e9c` ("fix(B-0613): drop Option A from zsh fallback + recommendation") had already addressed both findings before the + current session's tick-open. `isOutdated=false` is NOT a + reliable signal that the finding is still actionable; GitHub + does not auto-outdate threads when a fix touches the same line + unless the comment's diff-hunk anchor itself drifts. +- Verification via direct `awk -v N=75 'NR==N { print NR": ["$0"]" }'` + on the file content confirmed line 75 already read "use **Option C + (find — fully portable)** since Option A (`compgen -G`) is also + bash-only" — the precise correction both reviewers had asked for. +- `resolveReviewThread` GraphQL mutation × 2 → both `resolved=true`. + Within 5 seconds the armed auto-merge fired and the PR landed + on main. + +**Operational lesson**: `isOutdated=true` is a strong signal that +a thread is safely no-op-resolvable, but `isOutdated=false` is NOT +a counter-signal — the thread may still be substantively stale. +The verify-via-direct-inspection step (with `-v N=`) is the +load-bearing discriminator between "fix needed" and "fix already +landed, just resolve." Resolving threads on the latter case is +correct discipline, not retroactive rewriting. + ### Stale-armed-PR resolution patterns Empirical anchor 2026-05-16T13:10Z-16:33Z (one session, 5 stale-armed PR investigations):