Recover PR #646's orphaned doc commit (1fa8d168) + record the failure mode - #650
Merged
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR #646 was squash-merged at
2026-07-30T10:03:42Z. Its author pushed one more commit at10:04:58Z— 76 seconds too late — so1fa8d168never 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_reportis deliberately not wired into the run-stage sequence yet: the command is built to gate, the roster is knowingly dirty (ZERO_DECLARATIONSships 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 instanceThis is the second time a final push missed a squash-merge by minutes (#604's
82360a9bwas 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
mergedAtagainstgit log -1 --format=%cI origin/<branch>; a branch timestamp later than the merge means stranded work.docs/lessons.mdpublishes to the wiki asLessonsper.github/wiki-publish-map.json.Verification
python3 .github/scripts/docs_lint.py --strict→docs-lint: clean.🤖 Generated with Claude Code
https://claude.ai/code/session_013NhYmT1PxCcyemA16dFDxN