Skip to content

Bundle 195-FB: jj revset hardcode lint rule + helper parameterize - #196

Merged
aloekun merged 4 commits into
masterfrom
docs/pr-195-feedback-registration
Jun 5, 2026
Merged

Bundle 195-FB: jj revset hardcode lint rule + helper parameterize#196
aloekun merged 4 commits into
masterfrom
docs/pr-195-feedback-registration

Conversation

@aloekun

@aloekun aloekun commented Jun 5, 2026

Copy link
Copy Markdown
Owner

Summary

PR #195 post-merge-feedback で採用された 4 件 (Bundle 195-FB) を mechanical + 実装 + docs の 3 層構造で land。前セッションで land 済の feedback registration commit に 3 commits を追加して同 PR で消化。

各層 (4 commits)

Commit Layer 順位 / Tier
ouxpmynm (既 push 済) docs(todo): PR #195 post-merge-feedback 採用 4 件登録 前セッション、Bundle 195-FB 計画書
uoxuyxrp feat(lint): rule⑫ no-hardcoded-jj-revset-range 追加 順位 189 (T1) — mechanical
qntnzyxt refactor(cli-pr-monitor): count_empty_in_pr_rangedefault_branch 引数化 順位 190 (T2) — 実装
nootrxyl docs(todo): Bundle 195-FB 完了で 順位 189-192 削除 + global rule edit 同伴 順位 191/192 (T3) — cleanup + docs

3 層が 1 PR で循環する dogfood

  • Layer 1 (189) で rule⑫ を追加 → 同 PR の Layer 2 (190) で production の count_empty_in_pr_range の hardcode を修正 → rule⑫ は 0 fire の clean baseline に遷移
  • grep -rn 'master\.\.@' src/ = 0 hit (verify 済)
  • companion helper group (3 関数: assert_descriptions_absent_* / assert_descriptions_present_* / count_empty_in_pr_range) の API signature が (repo_dir, default_branch, ...) で整合

Global rule edits (本 PR の diff 外、要確認)

順位 191/192 は ~/.claude/rules/common/ 配下の global rule docs を編集するため本リポジトリの diff には現れません。派生プロジェクト (techbook-ledger / auto-review-fix-vc) に自動波及するため、別途確認をお願いします:

  • ~/.claude/rules/common/code-review.md (順位 191): § Non-blocking findings の留置基準 を追加
    • current impact: none / low / medium+ の 3 段階 table
    • 残置時の理由明記原則 + PR description 形式の例
    • 同型 finding 複数観測 → medium+ 昇格 ルール
  • ~/.claude/rules/common/patterns.md (順位 192): § Companion Helper Group の API Cohesion を追加
  • ~/.claude/rules/common/testing.md (順位 192): sentinel pattern section 末尾に ADR-041 (Test Isolation Patterns for Multi-Condition Guards) への inline cite を追加 (派生プロジェクトでは ADR-041 が無い場合があるため markdown link ではなく inline 引用で完結)

Snapshot: ~/.claude-backups/20260605-131309-bundle-195-fb/ (memory feedback_global_config_backup per)

設計判断

rule⑫ の pattern 緩和 ("master\.\.@"master\.\.@)

当初設計は引用符付き ("master\.\.@") で false positive を抑制する案でしたが、実 production の hardcode は "empty() & (master..@)" のように 内側 literal が outer string scope 内に embed されている形式 だったため、引用符付きでは fire しない問題が dogfood で判明。pattern を引用符なしに緩和し、FP リスクは Bundle Z #B-α (comment-lint-rust) が非 doc comments を既に block するため軽微 (jj revset 固有 token) と判断。

Self-exclusion 戦略

src/hooks-post-tool-linter/src/main.rs 自身が extensions = ["rs"] の lint 対象であるため、test fixture は build_*_fixture(branch: &str) 関数で runtime 組立 (= source 内に literal master..@ を書かない)。grep -n 'master\.\.@' src/hooks-post-tool-linter/src/main.rs で 0 hit を verify 済。

doc comments の書き換え

production の count_empty_in_pr_range 直近の doc comments (line 621, 644) も master..@ literal を含んでいたため、<default_branch>..@ placeholder に書き換えて FP を構造的に排除。

Verification

Check Result
cargo clippy --workspace -- -D warnings ✅ clean
cargo test --workspace ✅ all green (199 + lib doc tests)
cargo test -p hooks-post-tool-linter no_hardcoded_jj_revset_range ✅ 4 tests pass (positive 2 / negative 2)
cargo test -p hooks-post-tool-linter rule_test_coverage_check ✅ pass (TOML meta field 整合)
cargo test -p cli-pr-monitor 'fix_commit::tests::integration_sweep' -- --ignored --test-threads=1 ✅ 5 integration tests pass
grep -rn 'master\.\.@' src/ ✅ 0 hit (clean baseline)

Test plan

  • rule⑫ unit tests (4 variants) pass: simple hardcode / empty() filter scope / parameterized format skip / other branch literal skip
  • count_empty_in_pr_range が新 signature (repo_dir, default_branch: &str) で動作
  • integration_sweep_respects_alternative_default_branchcount_empty_in_pr_range(repo_dir, "main") が helper の "main" 動作を保護
  • companion helper group 3 関数の API signature 整合性
  • global rule (~/.claude/rules/common/*.md) edits が派生プロジェクトに波及 (= 次の派生プロジェクトでのセッションで rule が見える)
  • 次回 rule⑫ が production の新規 hardcode (もしあれば) を fire (dogfood 継続観測)

References

Summary by CodeRabbit

リリースノート

  • 新機能

    • Rustコード内のハードコードされたリポジトリブランチ範囲を検出する新規カスタムリントルールを追加しました。
  • テスト

    • 新規リントルールと既存のテストヘルパーに対応するテストケースを追加しました。

aloekun added 4 commits June 4, 2026 22:23
PR #195 で test helper 3 関数のうち 2 関数が `"master..@"` hardcode → CR Major
指摘で default_branch 引数化済 (commit 9663dd6)、残 1 関数 (`count_empty_in_pr_range`)
は pre-push F-1 で non-blocking 観測。手動 grep / reviewer 判断で塞ぐと再発するため、
決定論的防止層 (ADR-007) として機械検出する。

- Pattern: `master\.\.@` (jj revset 固有 token、FP リスクは Bundle Z #B-α で
  非 doc comments 既に禁止のため軽微)
- extensions = ["rs"] のみ、main.rs source は format! 経由で literal を runtime 組立し
  self-exclusion 維持 (`grep -n 'master\.\.@' src/hooks-post-tool-linter/src/main.rs` = 0 hit)
- Test 4 件: simple hardcode / empty() filter scope / parameterized format skip /
  other branch literal skip
- TOML meta field `[rules.test_coverage.main_ext_tests.rs]` 宣言、
  順位 137 land 済の rule_test_coverage_check が機械強制

順位 190 (count_empty_in_pr_range parameterize) と同 PR で land 推奨 = 機械検出が
auto-fix promotion 候補を提示し、順位 190 で受け修正、dogfood 循環を 1 PR で成立。

Bundle 195-FB Layer 1 (mechanical)
…化 (PR #195 T2-#1)

PR #195 で test helper 3 関数のうち 2 関数 (`assert_descriptions_absent_in_pr_range` /
`assert_descriptions_present_in_pr_range`) は `default_branch` 引数化済 (commit 9663dd6)
だが、`count_empty_in_pr_range` のみ `master..@` 引数化漏れ = API cohesion 違反。
順位 189 lint rule (rule⑫ no-hardcoded-jj-revset-range) が機械検出した hardcode を受けて修正、
companion helper group 3 関数の API signature を `(repo_dir, default_branch, ...)` で整合化。

- `count_empty_in_pr_range(repo_dir, default_branch: &str)` に signature 変更
- caller (`integration_sweep_empty_commits_abandons_multiple_in_range`) は `"master"` 引数で更新
- `integration_sweep_respects_alternative_default_branch` に `count_empty_in_pr_range(repo_dir, "main")`
  sanity check 追加 (alternative branch variant が helper レベルで保護)
- doc comments (line 621, 644) は `<default_branch>..@` placeholder に書き換え
  (rule⑫ pattern `master\.\.@` の FP を構造的に排除)
- `grep -n 'master\.\.@' src/` = 0 hit (clean baseline)

検証:
- cargo test --bin cli-pr-monitor fix_commit: 11 unit tests pass
- cargo test --bin cli-pr-monitor 'fix_commit::tests::integration_sweep' -- --ignored --test-threads=1: 5 integration tests pass
- 順位 189 lint rule が production code 上で fire 0 件

Bundle 195-FB Layer 2 (実装)
Bundle 195-FB (PR #195 post-merge-feedback 4 件) の 4 layer が land 完了したため
todo10.md / todo-summary.md から 順位 189-192 entries を削除。

Layer:
- 189 (T1): rule⑫ no-hardcoded-jj-revset-range 追加 (commit uoxuyxrp、本 PR 内)
- 190 (T2): count_empty_in_pr_range default_branch 引数化 (commit qntnzyxt、本 PR 内)
- 191 (T3): non-blocking finding 留置基準を code-review.md に追記 (~/.claude/、本 PR 外)
- 192 (T3): Companion Helper API Cohesion section + ADR-041 cross-ref (~/.claude/、本 PR 外)

global rule 編集 (191, 192) は ~/.claude/rules/common/{code-review,patterns,testing}.md
への edit のため本リポジトリの diff には含まれないが、 feedback_global_config_backup per
~/.claude-backups/20260605-131309-bundle-195-fb/ で snapshot を取得済。
派生プロジェクト (techbook-ledger / auto-review-fix-vc) に自動波及。

memory feedback_todo_no_history per: 完了タスクは ADR/仕組みに反映後、todo.md から削除
(履歴は git log で追跡可能)。

Bundle 195-FB Layer 4 (cleanup)
@coderabbitai

coderabbitai Bot commented Jun 5, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b933958d-bce4-48c7-9da3-af0e3f444a08

📥 Commits

Reviewing files that changed from the base of the PR and between 82d64ec and 870bb0b.

📒 Files selected for processing (3)
  • .claude/custom-lint-rules.toml
  • src/cli-pr-monitor/src/fix_commit.rs
  • src/hooks-post-tool-linter/src/main.rs

📝 Walkthrough

Walkthrough

This PR introduces a new custom lint rule no-hardcoded-jj-revset-range to detect hardcoded jj revset branch ranges in Rust code, parametrizes test infrastructure to support configurable default branches, and adds comprehensive test coverage for the new rule with multiple revset syntax variants.

Changes

カスタムリントルール「ハードコード revset 範囲」の追加と test 基盤のパラメータ化

Layer / File(s) Summary
リントルール定義と test 期待値
\.claude/custom-lint-rules.toml
新規ルール no-hardcoded-jj-revset-rangemaster..@ パターンを Rust ファイルで警告として検出し、default_branch を用いた修正戦略と test カバレッジ期待値を定義しています。
Test ヘルパーの default_branch パラメータ化
src/cli-pr-monitor/src/fix_commit.rs
count_empty_in_pr_range ヘルパーが default_branch 引数をサポートするよう拡張され、revset 生成がパラメータ化されました。統合テストのコメントと assert が更新され、mastermain 両方のブランチに対する動作検証が明示的になっています。
ハードコード revset 検出の test カバレッジ
src/hooks-post-tool-linter/src/main.rs
新規ルール用に複数の test ケースが追加され、ハードコード、empty() 構文内、format! パラメータ化、代替ブランチリテラルなど異なる revset 表現パターンの正・負ケースを検証しています。

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

  • aloekun/claude-code-hook-test#194: 本 PR の src/cli-pr-monitor/src/fix_commit.rs への default_branch パラメータ化は、PR #194 で新たに追加された空 commit sweep ロジックと同じモジュール内の default_branch 配線に直結しています。
  • aloekun/claude-code-hook-test#165: 本 PR の no-hardcoded-jj-revset-range ルール追加(.claude/custom-lint-rules.tomlrules.test_coveragesrc/hooks-post-tool-linter/src/main.rs の新規 test ケース)は、PR #165 で導入された rule_test_coverage_check 機構と rules.test_coverage メタ配線に直結しています。
  • aloekun/claude-code-hook-test#195: 本 PR の src/cli-pr-monitor/src/fix_commit.rs と統合テストへの変更(default_branch による revset 範囲パラメータ化)は、PR #195 の sweep revset バリアント test・ヘルパーと直接重複しており、revset scope overreach 回帰防止を目的としています。
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR タイトルは、新しいカスタムリントルール(no-hardcoded-jj-revset-range)の追加と、ヘルパー関数のパラメータ化という、PR の主要な変更内容を明確に要約しており、スキャン時に主要な変更を理解できる内容になっています。
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@aloekun
aloekun merged commit 3a3a150 into master Jun 5, 2026
1 check passed
@aloekun
aloekun deleted the docs/pr-195-feedback-registration branch June 5, 2026 05:57
aloekun added a commit that referenced this pull request Jun 6, 2026
本 PR は以下 4 つの作業を 1 コミットに統合:

## A. PR #196 post-merge-feedback 採用 2 件 (順位 193, 194 登録)

PR #196 (Bundle 195-FB) post-merge-feedback 8 件のうち 2 件採用、6 件却下/様子見。

採用 (todo10.md に entry 追加、todo-summary.md table に行追加):
- 順位 193 (T2): Companion helper group 署名整合 compile-time validation test
- 順位 194 (T3): development-workflow.md \"1. Plan First\" に Codification
  重複確認 step 追記

却下/様子見の詳細は .claude/feedback-reports/196.md 参照。

## B. queue 棚卸し (順位 ≤ 100 の 32 件を audit)

8 件削除 + 7 件改訂で queue の signal/noise 改善:

削除 8 件 (既存 land 確認、または動機失効):
- 順位 41 (Bundle Y2 効果定量計測): 動機の主軸失効 (Bundle Z 完成 + Z2 不採用)
- 順位 42, 43, 46 (rate-limit auto-retry 系): PR #97/#113/#129/#185 段階 land 完了
- 順位 45 (--list-findings Rust モード): PR #101 で land 済
- 順位 57 (Aggregation cap integration test): PR #171 で land 済
- 順位 93 (coding-style.md partial fix 例追加): ~/.claude/rules/common/
  coding-style.md に既に section 存在
- 順位 97 (with_num_ctx serialization test): lib.rs:494 で mockito test 実体存在

改訂 7 件 (Status update 2026-06-06 を front-matter に追加、現状反映):
- 順位 11: ADR-018 park / ADR-030 短命プロセス移行後の再現確認が前段
- 順位 19: ADR-037/043/PR #194 land 後の残余 case baseline 観測が前段
- 順位 27: Phase D-7 = PR #154 land 済を反映
- 順位 38: ADR-031 採用昇格済 (PR #192) → Bundle W/X land のみ残依存
- 順位 40: PR #175 push-runner bookmark_check 実装済 → skill 側は二重防御に縮小
- 順位 51: 採用案 C (fix.md instruction 追加) は land 済、残作業 = dogfood 観測のみ
- 順位 92: ADR-038 採用昇格済 (PR #156) で Phase d 運用入り、動機書き換え

cross-reference 修復:
- 順位 49: 旧依存 Bundle a Sub-PR 2 (順位 42/43/46) 消滅を反映
- 順位 61: 旧依存 順位 45 land 済を反映

## C. todo9.md → todo11.md 分割

todo9.md が 75KB / 890 行に到達し読み取り安定性閾値 (50KB) 超過のため分割:

- todo9.md (37KB / 454 行): 既存ルール仕組み化バンドル (順位 146-151) + 週次
  レビュー拡張 (順位 152-154) を保持
- todo11.md (41KB / 453 行、新規): PR-specific follow-up entries 10 件
  (順位 157, 160, 161, 162, 163, 165, 170, 171, 172, 173)

theme-based split で意味的分離 + 両ファイルとも 50KB 閾値以下に収まる。
todo-summary.md table の file 参照を Python script で一括更新 (10 件)、
todo-summary.md 冒頭の \"追加先ファイル\" 説明を todo10.md に更新。

## D. 順位 177 優先度引上げ

PostToolUse hook ファイルサイズ検出 task が 4 回目の同型観測に到達 (PR #133 +
#172 + #186 + 本セッション = Very High frequency)。CLAUDE.md code-review.md
\"同型 finding の閾値判定\" (3 観測 = Tier 1 昇格) を超え systemic risk 閾値到達。

3 箇所同期更新:
- todo10.md entry 本体に Status update 2026-06-06 blockquote 追加、優先度を
  \"Tier 1\" → \"Tier 1 (優先実装)\" に格上げ
- todo-summary.md table 行で Tier 列を太字 + 注記、dependency 列に urgency note
- todo-summary.md 末尾の戦略 note に \"直近優先 (2026-06-06 ユーザー指示)\"
  段落を新設、Bundle 195-FB-Followup (順位 193 + 194) の次の PR で消化推奨と
  specific call-out

## 統計

- 10 ファイル変更 (1 新規)
- ~670 lines insertions, ~910 lines deletions (net ~240 行削減)
- 全 todo*.md が 50KB 閾値以下に収まる (todo9: 37KB, todo10: 36KB, todo11: 41KB)

## 参照

- .claude/feedback-reports/196.md (採否確定 commit、PR #196 由来)
- memory feedback_post_merge_feedback_adoption_requires_user_approval per
  ユーザー承認済
- memory feedback_todo_no_history (削除は痕跡なし、コメントマーカー不使用)
- ADR-035 (docs-only PR 評価ポリシー)
- ADR-033 (採番管理簡素化、順位 renumber は避けて semantic markers で表現)
aloekun added a commit that referenced this pull request Jun 12, 2026
…exception codify (PR #203 follow-up) (#204)

* docs(todo): 順位 198 を PR #203 T3-1 採用で 3 観測目に昇格

PR #203 post-merge-feedback Tier 3 #1 (ADR-NNN: Timestamp invariant safety) を採用。
analyzer は新規 entry 提案だが、順位 198 が既に同 ADR 提案として登録済 (PR #199 T3-2)
のため、新規追加ではなく既存 entry の data point 強化として merge した。

主な変更:
- 動機: 2 件観測 (Medium) → 3 件観測 (High) に Frequency 昇格
- 本タスクの位置づけ: PR #203 T3-1 採用情報 + 既存 entry 強化の判断根拠を追記
- 参照: .claude/feedback-reports/203.md Tier 3 #1 + PR #203 を追加
- 設計決定 § 1 コンテキスト: PR #203 hooks-session-start port を観測実例に追加
- 派生プロジェクト適用: "順位 197 で実装予定" → "PR #203 で実装済" に更新
- 作業計画: PR #96 / #199 / #203 の 3 観測すべてを ADR 実装時に inline cite

順位 194 (task 着手前 grep 確認 rule、PR #196 採用) の初実践例となる。
analyzer の重複提案を運用層で吸収する明示的 pattern。

* docs(adr-039): mechanical lint exception を § 1.b として明記 + checklist 上位判定追加

PR #203 post-merge-feedback で「順位 177 file_size_check が ADR-039 機械適用で
default OFF にされ、user 期待と乖離した」事象を発見。順位 147 file_length lint
(default ON 固定) と順位 177 file_size_check (default OFF) の asymmetry が
標準パターンの over-application を示した。

主な変更:

§ 1 (Config opt-in) の改訂
- 「適用対象を明示」する section に再構成
- 「behavior の妥当性が不確定な experimental feature」と適用範囲を限定
- 「採否判定 (採用 / 却下 / 継続) のフェーズが必要なもの」を判定基準として追加

§ 1.b 新設 (mechanical lint default ON 許容)
- 4 条件 (non-blocking / 決定論 / scope 限定 / recovery hint 明確) すべて満たす機能を
  § 1 対象外として default ON 配布を許容
- 該当する実装例: 順位 147 file_length lint / 順位 177 file_size_check
- 該当しない例: post-merge-feedback (ADR-014/030) / weekly-review (ADR-031) /
  local-llm-finding-classification (ADR-038)
- PR #197 順位 177 の誤適用を本 PR (PR #203 由来) で訂正と明記

§ 新規 feature 追加時 checklist (4 点 → 5 点に拡張)
- § 0 「上位判定」を最初に追加: 「そもそも § 1 適用対象か?」
- § 1.b 4 条件すべて満たす → default ON で配布、4 点 checklist は skip
- 1 つでも欠ける → 従来通り 4 点 mechanical checklist 実施
- 判断に迷う場合は conservative default (default OFF) を選択
- 本判定を skip して機械適用すると order-application 発生 (PR #197 で実観測)

由来: PR #203 post-merge-feedback で発見された systemic 問題への対応。
派生プロジェクトへの自動波及はなし (本 ADR は本リポジトリ専用、`~/.claude/rules/`
配下ではないため)。

* docs(adr-007): Layer 0.5 file_size_check 追記を削除

順位 177 file_size_check は ADR-007 で扱う「正規表現層 / AST 層」の判断フロー対象外で
あり、metadata-only check (`std::fs::metadata.len()`) という性質上、独立した Layer
区分を設ける積極的理由がない。「Layer 0.5」概念を ADR に codify することで:

- 後続の metadata-only check 追加時に Layer 0.5 への配置判断を毎回迫る
- ADR-007 本体の Q1/Q2/Q3 判断フロー (regex / AST) との整合性が複雑化
- ADR-039 opt-in pattern 言及が「導入リスク」未定義のまま記載されている

という systemic な over-abstraction の温床になっていた。本 PR で「順位 177 は単純な
custom linter の一つとして扱う」方針 (ユーザー判断、2026-06-12) に従い、Layer 0.5
追記を削除する。今後 file_size_check 系の linter を追加する場合は ADR-007 の通常
判断フローに従い、必要なら都度 ADR 改訂で対応する。

* fix(hooks-config): file_size_check を default ON 化 + ADR 参照表記修正

ADR-039 § 1.b (mechanical lint 例外、本 PR で同時 codify) に従い、順位 177
file_size_check を default ON で配布する。順位 147 file_length lint と同 pattern。

主な変更:

enabled = false → enabled = true
- 4 条件 (non-blocking / 決定論的閾値 / scope 限定 / recovery hint 明確) すべて満たすため
- additionalContext warning のみで block しない (failure mode が無害)
- paths glob で scope 宣言的に限定
- todo*.md / Rust source に明示的 recovery hint

コメント修正:
- "ADR-039 § 3 opt-in pattern" → "ADR-039 § 1.b mechanical lint 例外"
  (§ 3 は bounded lifetime、opt-in は § 1。元コメントは誤参照)
- "Layer 0.5" → "custom linter" (ADR-007 Layer 0.5 追記削除に追従)
- 4 条件 (1.b 適用根拠) を明示
- 順位 147 file_length lint を同類例として cite
- bounded lifetime dogfood の記述を削除 (mechanical lint は dogfood phase 不要)

影響:
- 既存 grandfather (>50KB 既存ファイル) は touch されるまで warning なし
- 触られた >50KB ファイル (例: docs/todo10.md) は次の Edit/Write で warning が出る
- 本 PR で todo10.md の split (Commit 5) を同時実施し、初回 dogfood も完了させる

* docs(todo): todo10.md を分割して file_size_check 50KB threshold 内に収める

本 PR で順位 177 file_size_check を default ON 化したことにより、touched で 50KB
超のファイル (= 本 PR 着手時の docs/todo10.md = 57KB) に warning が出る状態になった。
本 commit で todo10.md から PR #185 〜 PR #196 era の 8 エントリを新規 docs/todo12.md
に分離し、todo10.md を 27KB まで縮小して threshold 内に収める。同時に hook の dogfood
としても機能 (順位 177 が想定する recovery flow = 新 todo<N+1>.md 新設 + entry 移管
が実際に機能することを実観測)。

主な変更:

docs/todo12.md (新規 158 行)
- 順位 176 (PR #185 T2-#4): check-ci-coderabbit format variant fixture 追加
- 順位 178 (週次レビュー S02): state.rs behavioral invariant test
- 順位 179 (週次レビュー S03): rate-limit retry decision boundary test
- 順位 180 (週次レビュー C01): lib-report-formatter markdown pipe escape
- 順位 181 (Phase D D-A): aggregate-weekly findings.json raw JSON
- 順位 182 (Phase D D-B): /weekly-review skill 重複検出 (簡易 grep)
- 順位 193 (PR #196 T2-1): Companion helper group 署名整合 compile-time test
- 順位 194 (PR #196 T3-5): development-workflow.md grep step 追記
- 専用ファイル (新規追加先ではない)、todo11.md と同 role

docs/todo10.md (-377 行、57KB → 27KB)
- 上記 8 エントリを削除
- preamble に todo12.md 分離の経緯を記述
- 新セッション確認対象を「12 file」→「13 file」に更新

docs/todo-summary.md
- preamble に todo12.md の説明を追記
- 8 行の「ファイル」列を todo10.md → todo12.md に変更 (sed 一括置換)

由来: 本 PR (PR #204) の hooks-config.toml 変更 (commit 4) で file_size_check
default ON 化に伴う初回 dogfood。順位 177 設計の recovery flow が機能した実証
データとなる。

技術メモ: sed -i '13,390d' で 8 entries 削除、Edit tool で 380 行の old_string
構築は実用的でないため Bash 経路を選択 (ユーザーの「適切な粒度」要件と整合、
独立 commit に集約)。
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