feat(backend): ドラフト選定順を「継続期間 × 実装量」へ変更しノイズ判定を追加(#562) - #585
Conversation
ADR-0026 決定 3。select_repos の第 1 キーが最終 push 日時だったため、 「昨日 README を直しただけのチュートリアル」が「作り込んで完成させた本命」に 勝っていた。継続期間を主キーに据え、直近性はタイブレークへ降格する。 - select_repos: 継続期間(pushed_at − created_at)→ 言語バイト合計 → 最終 push 日時 → full_name の段階比較に変更。重み付き和や積は係数の恣意性が 入るため採らない。stars は判別力が無いので使わない(ADR-0026 決定 3) - 実装量は #561 で永続化した language_bytes_total を参照する - evaluate_noise を追加。継続期間が閾値未満 / 学習用途 topics をデフォルト 非選択にし、理由を返す。topics は小文字化 + 区切り除去して完全一致で判定 - 機械は候補を落とさない。判定はデフォルト選択状態と理由表示にのみ影響させ、 select_repos の結果からは除外しない(ADR-0026 決定 2) - mapper.py を [tool.mutmut] only_mutate に追加 TDD: 並び順・ノイズ判定それぞれで red('o/tutorial' != 'o/flagship' / assert True is False)を確認してから実装した。閾値・語彙・スコア式は mapper.py の定数が正本で、ADR には数値を複製していない。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
`_active_days` が `created_at[:10]` / `pushed_at[:10]` と日付へ切り詰めて 減算していたため、時刻成分が落ちて実継続期間より最大 1 日長く数えられていた。 `2026-06-01T23:59:00Z` 作成 → `2026-07-01T00:00:00Z` push(実 29 日 1 分)が 30 日と評価され、閾値 30 日ちょうどでデフォルト選択側に倒れていた。 - ISO 8601 を完全にパースする `_to_utc_datetime` を追加し、時刻まで含めて減算する - created_at / pushed_at のタイムゾーン表記が揺れても減算できるよう UTC の aware へ揃える(オフセット無しは GitHub API の慣習に合わせ UTC とみなす) - TDD: 閾値直下(29 日 1 分)の境界テストで red を確認してから実装 - タイムゾーン混在表記のテストを追加(正規化を落とすと fail することを確認済み) - RV: 本件の観点を `.claude/rules/common/review.md` の「正しさ」に追記 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KaqnCny4wsD6AkBkJeTEEV
Warning Review limit reached
Next review available in:48 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (4)
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 |
Uh oh!
There was an error while loading. Please reload this page.
#585(PR #581 相当)が main に squash マージされ、同じ #562 の実装が両側に 別コミットとして入ったためコンフリクトしていた。 - mapper.py / test_resume_draft_mapper.py: 本ブランチ側を採用した。main 側の select_repos / evaluate_noise は本ブランチの rank_repos / evaluate_default_selection / build_candidates に置き換わっており、候補一覧 API・ 選択 UI がこちらの API に依存しているため - ただし main 側にしか無かった修正(継続期間の時刻成分切り捨て / PR #581 の CodeRabbit 指摘)は本ブランチの duration_days へ移植した。_parse_datetime を 追加して UTC の aware datetime で減算する。日粒度でよい「参画中」判定は _parse_date のまま残す - 移植分のテスト 2 件(閾値直下 29 日 1 分の境界 / タイムゾーン混在表記)を 本ブランチの evaluate_default_selection の契約に合わせて追加した - pyproject.toml: only_mutate の同一エントリで、コメント文言のみ本ブランチ側を採用 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KaqnCny4wsD6AkBkJeTEEV
ADR-0026 決定 3。select_repos の第 1 キーが最終 push 日時だったため、
「昨日 README を直しただけのチュートリアル」が「作り込んで完成させた本命」に
勝っていた。継続期間を主キーに据え、直近性はタイブレークへ降格する。
最終 push 日時 → full_name の段階比較に変更。重み付き和や積は係数の恣意性が
入るため採らない。stars は判別力が無いので使わない(ADR-0026 決定 3)
非選択にし、理由を返す。topics は小文字化 + 区切り除去して完全一致で判定
select_repos の結果からは除外しない(ADR-0026 決定 2)
TDD: 並び順・ノイズ判定それぞれで red('o/tutorial' != 'o/flagship' /
assert True is False)を確認してから実装した。閾値・語彙・スコア式は
mapper.py の定数が正本で、ADR には数値を複製していない。
Co-Authored-By: Claude Opus 5 noreply@anthropic.com