Skip to content

docs(ci): separate the absence and replay windows in the canary comment - #3066

Merged
kyle-sexton merged 1 commit into
mainfrom
fix/2988-canary-workflow-window-prose
Aug 21, 2026
Merged

docs(ci): separate the absence and replay windows in the canary comment#3066
kyle-sexton merged 1 commit into
mainfrom
fix/2988-canary-workflow-window-prose

Conversation

@kyle-sexton

@kyle-sexton kyle-sexton commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Summary

.github/workflows/silent-revert-canary.yml was the third site of the claim #2917 set out to remove. Its comment charged the whole 31h28m content-absence window to the replay's silence — so the workflow contradicted the two scripts/ files the job it documents actually invokes. This brings the last of the three sites into agreement.

Fix

Comment text only, in one hunk. No run:, uses:, with:, or any other executable YAML was touched (git diff --numstat = 6 3 on that one file; every +/- line begins with #).

Before:

incidents deleted is on the tree TODAY. Both are needed, and the gap
between them has already cost 31h28m: the content #2828 is about was
missing from main while the replay printed ok and exited 0, two
re-lands each missed it, and a hand audit found it, not this lane.

After:

incidents deleted is on the tree TODAY. Both are needed, and #2828
is the gap made real: its content sat off main for 31h28m, from
f603880 to the 534eac1 (#2829) restore. This lane covered only
the tail -- it merged at 7b47d22 (#2808), 6h13m out from the
restore -- and across that tail the replay still printed ok and
exited 0 with the content gone: it answered the other question. Two
re-lands each missed it, and a hand audit found it, not this lane.

The load-bearing point is preserved rather than deleted: the replay's silence still did not mean the content was present. What changes is which window that silence is charged to. "Both are needed" is kept deliberately — the ORDER IS LOAD-BEARING paragraph immediately below reads off it. The wording is the workflow's own rather than a lift from either sibling; in particular it keeps this file's "not this lane" voice instead of the scripts' "not this canary" / "not this file".

Verification

Both figures re-derived here from committer dates (git show -s --format=%ct), not carried over from the issue:

window from to seconds rendered
content absence f603880da 1786752447 534eac138 1786865745 113298 31h28m
replay presence 7b47d2253 1786843322 534eac138 1786865745 22423 6h13m

113298s = 31h28m18s and 22423s = 6h13m43s; both are floored to the minute, matching the convention the two sibling files already use. 7b47d2253 is an ancestor of main (git merge-base --is-ancestor exit 0) and its committer epoch falls strictly inside the absence interval, which is what makes "only the tail" true.

Repo-wide sweep for further sites: swept all tracked files for 31h28m, 31h, 6h13m, 113298, 22423, the three incident shas, and numberless restatements (exited 0 for, printed `ok` , while the replay, absence window). No fourth site exists. The only near-hit outside the three known files is plugins/claude-ops/skills/lanes/scripts/restart-consumer.test.sh:572 — "lock-held and exited 0 forever" about a Task Scheduler consumer — an unrelated sentence that merely shares the words. No follow-up issue needed.

The change is comment-only, so no test asserts it; CI is the verification of record for the surrounding workflow, and the shell suites were not run locally (they run badly on this machine's platform).

The other two sites

Both siblings are already on main and untouched here — #2930 corrected scripts/check-silent-revert.sh, and #2986 (merged as 0e9ed8eb0) corrected scripts/silent-revert-incidents.txt. This branch is merged up to a main that carries both, so all three passages can be read side by side in one tree. The workflow was the last holdout.

Related

Closes #2988

.github/workflows/silent-revert-canary.yml charged the whole 31h28m
content-absence window to the replay's silence, so the workflow
contradicted the two scripts its own job invokes.
scripts/check-silent-revert.sh (#2930) and
scripts/silent-revert-incidents.txt (#2986) already separate the two
windows; this brings the last of the three sites into agreement.

Both figures re-measured here from committer dates (%ct):

  absence   f603880 1786752447 -> 534eac1 1786865745 = 113298s = 31h28m
  presence  7b47d22 1786843322 -> 534eac1 1786865745 =  22423s = 6h13m

Both floored to the minute (113298s is 31h28m18s, 22423s is 6h13m43s),
matching the convention the two sibling files already use.

7b47d22 (#2808, this canary's own merge) is an ancestor of main and
its committer epoch falls strictly inside the absence interval, so the
lane covered only the tail of that window. The load-bearing point is
kept rather than deleted: across that tail the replay still printed `ok`
and exited 0 with the content gone, because it answered the other
question.

Comment text only -- no executable YAML changed.

Closes #2988

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LwdkpWf6bptu3AqTMoeg2H
@claude

claude Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Claude finished @kyle-sexton's task in 2m 9s —— View job


Code review: docs(ci): separate the absence and replay windows in the canary comment

  • Gather context (PR diff, changed file, CLAUDE.md)
  • Run skip-gate check
  • Review the changed comment text for correctness/consistency
  • Post findings

Skip gate: none apply — PR is open, not a draft, and while the change is comment-only, it's the kind of load-bearing narrative prose this repo treats as review-worthy (per #2847's standard, cited in the PR body).

Scope: single hunk in .github/workflows/silent-revert-canary.yml (lines 152–160), comment text only. git diff origin/main...HEAD confirms no run:/uses:/with: or other executable YAML changed.

What I checked:

  • Cross-referenced the new prose against the two already-merged sibling passages (scripts/check-silent-revert.sh:241-257 and scripts/silent-revert-incidents.txt:42-56). All three now agree on the same facts: 31h28m content-absence window (f603880da534eac138/fix(disk-hygiene): restore the README and evals #2635 never got back (#2828) #2829), 6h13m replay-tail window (7b47d2253/ci: add a post-merge silent-revert canary #2808 → restore), two missed re-lands, hand audit caught it. No new inconsistency introduced by this hunk.
  • Verified the arithmetic in the PR body independently: 1786865745 − 1786752447 = 113298s = 31h28m18s, and 1786865745 − 1786843322 = 22423s = 6h13m43s — both match the stated 31h28m / 6h13m (floored to the minute, consistent with the sibling files' convention).
  • Repo-wide grep for 31h28m, f603880d, 534eac1, 7b47d22 turned up two more hits — plugins/source-control/CHANGELOG.md:71 and scripts/check-stale-base-overlap.sh:15 — but both are about the unrelated stale-base-in-history claim (Stale-base squash merges silently reverted two merged fixes (CI green, issues left closed) #2691), not the replay-silence claim this PR is fixing, so they aren't a missed fourth site.
  • Confirmed the file already uses "lane" and "canary" interchangeably to refer to itself elsewhere (e.g. lines 26, 38, 55, 110, 185), so the new text's "not this lane" voice is consistent with the surrounding file rather than an inconsistent import from a sibling.
  • I could not independently confirm the underlying commit SHAs/timestamps against real git history (this checkout is shallow — git rev-parse f603880da etc. fail as unknown revisions). The date-derivation math in the PR body is therefore author-claimed and unverified by me beyond the internal-consistency and arithmetic checks above.

Findings: none. The reworded comment is internally consistent, matches the two sibling files it's meant to line up with, and correctly separates the content-absence window from the narrower replay-coverage window without weakening the underlying claim ("the replay's silence still did not mean the content was present").

@claude

claude Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Claude finished @kyle-sexton's task in 44s —— View job


Security review (/review:security-review)

  • Read trigger instructions and gather PR context
  • Invoke /review:security-review per custom instructions
  • Post findings / summary

Skip gate triggered — no review performed. This PR touches only comment text inside .github/workflows/silent-revert-canary.yml:

-      # incidents deleted is on the tree TODAY. Both are needed, and the gap
-      # between them has already cost 31h28m: the content #2828 is about was
-      # missing from main while the replay printed `ok` and exited 0, two
+      # incidents deleted is on the tree TODAY. Both are needed, and #2828
+      # is the gap made real: its content sat off main for 31h28m, from
+      # f603880da to the 534eac138 (#2829) restore. This lane covered only
+      # the tail -- it merged at 7b47d2253 (#2808), 6h13m out from the
+      # restore -- and across that tail the replay still printed `ok` and
+      # exited 0 with the content gone: it answered the other question. Two
       # re-lands each missed it, and a hand audit found it, not this lane.

Confirmed via git diff --numstat origin/main...HEAD (6 3, one file) and inspection of the full diff: every changed line is inside a #-prefixed comment block. No run:, uses:, with:, permissions:, on:/trigger config, or any other executable YAML is touched — nothing changes what the workflow does at runtime.

Per the skill's skip gate ("Change has no security-relevant surface after reading the diff"), no vulnerabilities, trust-boundary issues, or Actions-security findings are applicable here. No security issues found.

@github-actions

Copy link
Copy Markdown

Last security-reviewed head: bd2c6350bd9f61b586a9d58636fd144d3979d27a. On the next push, the relevance gate compares only the commits since this SHA; delete this comment to force a full re-review.

@github-actions

Copy link
Copy Markdown

Claude has reviewed this PR 1 time. The lane skips further automatic reviews after 5; deleting this comment resets the count.

@kyle-sexton
kyle-sexton merged commit 5d8c92c into main Aug 21, 2026
51 of 52 checks passed
@kyle-sexton
kyle-sexton deleted the fix/2988-canary-workflow-window-prose branch August 21, 2026 05:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

silent-revert-canary.yml carries the same unhedged 31h28m claim, so the workflow contradicts the two scripts it runs

1 participant