feat(ci): 夜間 PR に台帳の後始末が含まれているかをマージ境界で検査する - #468
Conversation
完了を表現するのは台帳削除コミットのマージだけ (ADR-072 決定 19) だが、 その削除はブランチに載って運ばれるデータなので失われても検知層が無かった。 2026-08-30 の jj rebase -r が親の chore(ledger) コミットを置き去りにし、 #427/#459/#461 の 3 本で実装だけがマージされ、2026-09-01 の夜間 run が 順位 324 を再選択して空 diff red になった。 claude/nightly-<順位> を head とする PR に対し、その順位が台帳・順位 table・ 詳細エントリのどこにも残っていないことを CI で要求する。diff のテキストでは なく head の状態を順位で見るので、運び方にも行番号にも依存しない。 ADR-072 に決定 21 として記録。
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Team Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (9)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthrough夜間ブランチの順位を台帳、順位テーブル、詳細エントリから検出するCLIを追加しました。CLIをworkspace、ビルドスクリプト、UbuntuのCIに接続し、順位解析APIとテストを追加しました。 Changes夜間台帳後始末検証
Estimated code review effort: 3 (Moderate) | ~25 minutes Merge Risk: ⚪ Minimal · up to This change adds a CI check to verify that nightly ledger cleanup is present at the merge boundary. No actionable merge-blocking risk remains after normal checks and review. Sequence Diagram(s)sequenceDiagram
participant GitHubActions
participant cli-ledger-removal-check
participant docs
GitHubActions->>cli-ledger-removal-check: --branch と --docs-dir を渡す
cli-ledger-removal-check->>docs: 台帳・順位テーブル・詳細エントリを走査する
docs-->>cli-ledger-removal-check: 順位集合を返す
cli-ledger-removal-check-->>GitHubActions: 終了コードを返す
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 70.37% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 27 functions across 4 files. (5 skipped: 5 unsupported.)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
🤖 PR Monitor 分析 (GitHub Actions バックストップ)
Applicable Findings (Critical / High / Major)該当なし (レビュー指摘 0 件) Applicable Findings (Medium 以下)該当なし Filtered (not applicable)該当なし diff 概要 (軽量サマリー)
次のアクション
|
何を止めるか
完了を表現するのは台帳削除コミットのマージだけ (ADR-072 決定 19) だが、その削除はブランチに載って運ばれるデータなので、失われても検知する層が無かった。
2026-08-30、
jj rebase -r <先端>が親のchore(ledger)コミットを置き去りにし、#427 / #459 / #461 の 3 本すべてで実装だけがマージされた (衝突は 1 度も起きていない。捨てたのではなく拾い忘れた形)。順位 324 / 412 / 457 が 3 箇所とも残り、2026-09-01 の夜間 run が 324 を再選択して空 diff red になった。既存の防御はどれも当たらない — 除外集合はブランチ存在だけを見る (マージで消える)、順位 table 照合は台帳と順位 table が両方残ると素通り、
cli-ledger-cleanupの採点はブランチの diff しか見ない。何を足すか
新 crate
cli-ledger-removal-check。claude/nightly-<順位>の PR に対し、その順位が台帳・順位 table・詳細エントリのどこにも残っていないことを CI (ci.ymlのVerify nightly ledger cleanup) で要求する。lib_ledger::detail_entry_ranks)、順位 table の識別はcli_docs_lint::docs_filesを借りるjj rebase -bとcli-ledger-cleanup --applyの 2 経路を出力で案内する検証
master→ SKIPresidueの判定を潰すと incident 再現テスト 2 件が落ちる-D warnings/lint:md/lint:docs/lint:workflowsすべて green射程外
人間が別名ブランチで実装して後始末を忘れた場合は、ブランチ名から順位が引けないため検査できない。この経路は次の PR (A1 / A3: merged PR × 台帳の照合を weekly-review / 夜間 preflight へ) が受け持つ。
Summary by CodeRabbit
新機能
ドキュメント
ビルド