Skip to content

Recover PR #646's orphaned doc commit (1fa8d168) + record the failure mode - #650

Merged
WilfordGrimley merged 3 commits into
masterfrom
recover/pr-646-doc
Jul 30, 2026
Merged

Recover PR #646's orphaned doc commit (1fa8d168) + record the failure mode#650
WilfordGrimley merged 3 commits into
masterfrom
recover/pr-646-doc

Conversation

@WilfordGrimley

Copy link
Copy Markdown

PR #646 was squash-merged at 2026-07-30T10:03:42Z. Its author pushed one more commit at 10:04:58Z76 seconds too late — so 1fa8d168 never reached master. The PR reads MERGED, CI read green, and nothing reported the loss.

All three code files from #646 (channel_report.py, channel_roster.py, management/commands/channel_report.py) are on master. Only the doc was missing.

1. Cherry-pick 1fa8d168 (31 insertions, docs/features/stage-e-operations.md)

Adds the owner ruling that channel_report is deliberately not wired into the run-stage sequence yet: the command is built to gate, the roster is knowingly dirty (ZERO_DECLARATIONS ships empty on purpose; #616's coverage audit found at least three genuinely silent channels), so auto-wiring today turns every dead channel into a hard stop on unrelated work. Sequence recorded: run deliberately → first real reading → rule on each zero → then wire it in. States the first production reading is expected to exit 1 — the instrument working, not a defect.

Applied whole, unmodified.

2. docs/lessons.md: the pattern, not just the instance

This is the second time a final push missed a squash-merge by minutes (#604's 82360a9b was the first, recovered as PR #641). A sweep of all 25 recently-merged PRs found only those two.

Extends the existing "Squash-merge is the right default, but it discards a branch's own commits" entry rather than adding a sibling — same mechanism, narrower window. Adds the detection sweep: for each merged PR, compare mergedAt against git log -1 --format=%cI origin/<branch>; a branch timestamp later than the merge means stranded work.

docs/lessons.md publishes to the wiki as Lessons per .github/wiki-publish-map.json.

Verification

🤖 Generated with Claude Code

https://claude.ai/code/session_013NhYmT1PxCcyemA16dFDxN

WilfordGrimley and others added 3 commits July 30, 2026 10:10
Owner ruling 2026-07-30: it stays an operator step for now. The decision
belongs in the published doc, not a PR comment.

The command is built to gate, and the roster is KNOWINGLY dirty -
ZERO_DECLARATIONS is empty by design and the coverage audit found three
genuinely silent channels. Auto-gating today means an unrelated command
fails because a channel nobody was touching has been silent for a week.

Sequence recorded: run deliberately -> first real reading -> rule on each
zero -> then wire it in, at which point a new zero genuinely means
something regressed. Also states that the first production reading is
EXPECTED to exit 1, so nobody reads a red first run as a broken tool.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013NhYmT1PxCcyemA16dFDxN
Second occurrence: PR #646's final commit landed 76 seconds after the
squash-merge fired, so it never reached master. PR #604's 82360a9 was
the first. Nothing in GitHub or CI reports this - the PR reads MERGED
and CI reads green.

Extends the existing squash-merge orphan entry rather than adding a
sibling: same mechanism, narrower window. Adds the mergedAt vs branch-tip
sweep so it can be detected mechanically.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013NhYmT1PxCcyemA16dFDxN
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013NhYmT1PxCcyemA16dFDxN
@WilfordGrimley
WilfordGrimley merged commit cacb86e into master Jul 30, 2026
12 checks passed
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.

1 participant