docs(todo): WP-18 セッションの観測を順位 385-388 へ登録し todo21.md を新設 - #371
Conversation
WP-18 の PR 作業 (#364〜#370) で実測した自動化経路の運用問題を todo へ登録し、 384 完了削除・todo ローテーション・WP-11 記録を 1 バッチにまとめる。 ## todo21.md 新設 (todo20.md が 56KB = 50KB 閾値超過) 新規追加先を todo20.md → todo21.md へ移行。breadcrumb を持つ 5 ファイル (todo.md / todo8 / todo10 / todo13 / todo14) の「現在の追加先」ポインタと、 数詞「22つ/todo2-20」を持つ 8 ファイル (todo3-11) を 23つ/todo2-21 へ更新。 ## 順位 385-388 (2026-08-08 実測、todo21.md) - 385 (T3): cli-pr-monitor lock の liveness check 欠落 (復帰窓 30 分) - 386 (T2): 監視・自動 fix 経路の空コミットで bookmark ずれ → merge/push 失敗。 **本セッションで 7 回観測**、生成元確定、深さ非依存 revset が本命の対処 - 387 (T2): 自動 fix は push が BLOCK されてもローカル作業コピーを書き換える - 388 (T3): post-merge-feedback の完了判定が書き込みと race し誤 failed marker いずれも post-merge feedback には構造的に入らない (feedback の入力は PR diff と レビュー指摘で、ツール自身の運用中の事象は拾わない)。 ## 順位 384 完了・削除 外部設定の実体は ADR-072 § 外部設定の実体 に記録済み (#369/#370)。todo20.md の full エントリと summary2 の行を削除し、完了記録の 1 行に置換。 ## WP-11 記録 (harness-improvement-plan) #366 で enforce 下の scope guard 誤検知を 1 件観測。anchor と remedy が別ファイルの 指摘は構造的に必ず BLOCK される。本採用判定の前に判定基準の再定義が要ることを記録。 ## 検証 pnpm lint:docs OK (preamble + cross-ref + priority-inversion — 数詞 23 整合を含む) / markdownlint 127 files 0 error。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthrough
Changesscope_guard 判定記録
TODO ファイル運用
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 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 概要 (軽量サマリー)全 16 ファイル、すべて
次のアクション
|
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/harness-improvement-plan.md`:
- Line 91: Update the Line 91 documentation to classify the `#366` block as an
intentional conservative deny under the current evaluate_scope_guard allowlist
design, not a false positive. State that allowlisting only findings’ file
anchors excludes separate remedy paths, and revise the measurement and adoption
criteria accordingly while aligning the ADR-054 reference.
In `@docs/todo.md`:
- Line 5: docs/todo.md:5-5 の使い分け一覧に todo21.md と todo-summary2.md
を追加してください。docs/todo3.md:5-5 と docs/todo4.md:5-5 の todo2-20.md
表記は現在の運用範囲に更新するか、履歴範囲であることを明記し、3箇所で同じ canonical list を参照できる状態に統一してください。
In `@docs/todo21.md`:
- Around line 55-58: 「探索を深さ非依存の revset へ変える」案に、複数 bookmark
が一致した場合の結果単一化を追加してください。`heads(::@ & bookmarks())` の利用箇所では対象 bookmark
を指定するか、return value を制限して必ず単一 commit を返すようにし、clone の `--head` / `-b` や PR
番号選択が複数対象にならない状態を保証してください。
- Around line 98-102: 「race」と断定せず、takt 完了後の reconcile_takt_output()
によるレポート転送契機と順序の不整合として問題を記述してください。.takt/runs/*/reports/feedback-report.md の
latest run 特定、転送同期、.claude/feedback-reports/<PR>.md へのコピー先パスを確認対象として明示し、report
不在時に source 側の問題と copy 側の不一致を区別できる内容へ更新してください。
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 8788d4a2-9a94-4fee-9f42-254ea45b380f
📒 Files selected for processing (16)
docs/harness-improvement-plan.mddocs/todo-summary2.mddocs/todo.mddocs/todo10.mddocs/todo11.mddocs/todo13.mddocs/todo14.mddocs/todo20.mddocs/todo21.mddocs/todo3.mddocs/todo4.mddocs/todo5.mddocs/todo6.mddocs/todo7.mddocs/todo8.mddocs/todo9.md
|
|
||
| - 現状: observe 期間(2026-07-12〜08-01、fix step 実行 5 回)で誤検知ゼロを確認し、2026-08-01 に `mode = "enforce"` へ昇格済(ADR-054 の dogfood 記録参照)。 | ||
| - 残作業: enforce で 3〜5 PR(fix step 発生ベース)誤検知ゼロを確認したら本採用(ADR-054 の status 更新)。判定基準・kill-switch は ADR-054 を参照。 | ||
| - **2026-08-08 に enforce 下で誤検知を 1 件観測**(#366、WP-18)。自動 fix の push が「finding 対象外ファイルへの変更を検知 (injection の疑い): `.github/workflows/nightly-todo.yml`」で BLOCK されたが、**これは injection ではなく、CodeRabbit finding の anchor(`docs/adr/adr-072`)と remedy(workflow)が別ファイルだった**ケース。scope guard が anchor だけを信頼する設計である限り、**anchor と remedy が別ファイルになる指摘は構造的に必ず BLOCK される**(memory `coderabbit-finding-summary-truncates-scope` と同根)。本採用判定の前に、この構造的限界を「誤検知」に数えるか「設計どおりの保守的 deny」に数えるかを ADR-054 で明示する必要がある。 |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
rg -n -C 8 'allowlist_from_findings|anchor|remedy|struct Finding' \
src/cli-pr-monitor/src docs
rg -n -C 5 '`#366`|adr-072|nightly-todo.yml' docs .githubRepository: aloekun/claude-code-hook-test
Length of output: 50387
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "## scope_guard.rs relevant section"
sed -n '1,190p' src/cli-pr-monitor/src/stages/scope_guard.rs
echo "## lib_scope_guard definitions/usages"
rg -n -C 10 'mod lib_scope_guard|pub.*allowlist_from_paths|allowlist_from_paths|struct Finding' src | sed -n '1,220p'
echo "## `#366` references with context"
rg -n -C 12 '`#366`|nightly-todo.yml|adr-072|SEC-NEW-nightly-todo-yml|SIM-NEW-nightly-todo-yml' docs src .githubRepository: aloekun/claude-code-hook-test
Length of output: 50385
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "## ADR-054 relevant text"
fd -a 'adr-054.*md' . | while read -r f; do
echo "--- $f"
rg -n -C 12 'allowlist|source|location|Finding|scope_guard|3-5|decision trigger|誤検知|false|true|scope guard' "$f"
done
echo "## ADR-072 relevant references"
fd -a 'adr-072.*md' . | while read -r f; do
echo "--- $f"
rg -n -C 8 'SEC-NEW|SIM-NEW|nightly-todo|workflow|CodeRabbit|review|finding|fix|target|対象ファイル|workflow|docs/adr/adr-072|adr-072' "$f" || true
done
echo "## CodeRabbit workflow invocations"
fd . .github/workflows -e yml | xargs rg -n -C 8 -i 'coderabbit|list-findings|findings|nightly-todo|workflow_call|workflow_dispatch|pull_request|issues/comment'Repository: aloekun/claude-code-hook-test
Length of output: 50386
Line 91 は「設計どおりの保守的 deny」として扱ってください。
evaluate_scope_guard の allowlist は lib_scope_guard::allowlist_from_paths(findings.iter().map(|f| f.file.as_str())) で、file 値(CodeRabbit の anchor 位置)以外の remedy path は含まれません。ADR-054 も「allowlist を findings の file 集合に限定する欠点」を明記しています。そのため、このブロックは enforce 状態・#366 の finding payload・対象 workflow のみで成立する誤検知ではなく、scope guard の現行設計上の保守的 block として計測・判定基準を修正してください。
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/harness-improvement-plan.md` at line 91, Update the Line 91
documentation to classify the `#366` block as an intentional conservative deny
under the current evaluate_scope_guard allowlist design, not a false positive.
State that allowlisting only findings’ file anchors excludes separate remedy
paths, and revise the measurement and adoption criteria accordingly while
aligning the ADR-054 reference.
| > **運用ルール**: 各タスクには **やろうとしたこと / 現在地 / 詰まっている箇所** を必ず書く。完了タスクは ADR か仕組みに反映後、このファイルから削除する。過去の経緯は git log で追跡可能。 | ||
| > | ||
| > **本ファイル + [docs/todo2.md](todo2.md) 〜 [docs/todo20.md](todo20.md) + [docs/todo-summary.md](todo-summary.md) の使い分け** (PR #83 T3-2 で恒久化、2026-04-28 強化、PR #88 で todo3.md 追加、PR #96 セッションで todo4.md 追加、PR #101 セッションで todo5.md 追加、PR #123 セッションで todo6.md 追加、2026-05-09 に todo-summary.md 切り出し + todo5.md 分割で todo7.md 追加、PR #143 = 2026-05-11 で todo8.md 追加、PR #172 仕組み化方針切替 = 2026-05-25 で todo9.md 追加、PR #185 land 後 2026-05-29 で todo10.md 追加、2026-06-06 todo9.md 分割で todo11.md 追加、2026-06-12 PR #204 で todo10.md 分割により todo12.md 追加、2026-06-29 PR #224 セッションで todo13.md 追加、2026-07-19 週次レビュー WR-2026-07-19-T02 採用で todo14.md 追加、2026-07-20 docs 50KB 超過解消で todo13.md を todo15/16/17・todo10.md を todo18/19 へ物理分割、2026-08-04 todo14.md の 50KB 超過で todo20.md 追加): | ||
| > **本ファイル + [docs/todo2.md](todo2.md) 〜 [docs/todo20.md](todo20.md) + [docs/todo-summary.md](todo-summary.md) の使い分け** (PR #83 T3-2 で恒久化、2026-04-28 強化、PR #88 で todo3.md 追加、PR #96 セッションで todo4.md 追加、PR #101 セッションで todo5.md 追加、PR #123 セッションで todo6.md 追加、2026-05-09 に todo-summary.md 切り出し + todo5.md 分割で todo7.md 追加、PR #143 = 2026-05-11 で todo8.md 追加、PR #172 仕組み化方針切替 = 2026-05-25 で todo9.md 追加、PR #185 land 後 2026-05-29 で todo10.md 追加、2026-06-06 todo9.md 分割で todo11.md 追加、2026-06-12 PR #204 で todo10.md 分割により todo12.md 追加、2026-06-29 PR #224 セッションで todo13.md 追加、2026-07-19 週次レビュー WR-2026-07-19-T02 採用で todo14.md 追加、2026-07-20 docs 50KB 超過解消で todo13.md を todo15/16/17・todo10.md を todo18/19 へ物理分割、2026-08-04 todo14.md の 50KB 超過で todo20.md 追加、2026-08-08 todo20.md の 50KB 超過で todo21.md 追加): |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
TODO ファイルの現行一覧を文書間で統一してください。
入口の一覧と各ファイルの確認範囲が分裂しています。新しい追加先や確認対象を更新するときは、同じ canonical list を全箇所へ反映してください。
docs/todo.md#L5-L5: 使い分け一覧にtodo21.mdとtodo-summary2.mdを追加してください。docs/todo3.md#L5-L5:todo2-20.mdの範囲を現在の運用範囲へ更新するか、履歴範囲であることを明記してください。docs/todo4.md#L5-L5:todo2-20.mdの範囲を現在の運用範囲へ更新するか、履歴範囲であることを明記してください。
📍 Affects 3 files
docs/todo.md#L5-L5(this comment)docs/todo3.md#L5-L5docs/todo4.md#L5-L5
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/todo.md` at line 5, docs/todo.md:5-5 の使い分け一覧に todo21.md と
todo-summary2.md を追加してください。docs/todo3.md:5-5 と docs/todo4.md:5-5 の todo2-20.md
表記は現在の運用範囲に更新するか、履歴範囲であることを明記し、3箇所で同じ canonical list を参照できる状態に統一してください。
| > - `BOOKMARK_SEARCH_REVSETS` の段数を増やす — 対症療法。何段積まれるかに上限が無いので根治しない | ||
| > - **探索を深さ非依存の revset へ変える** (`heads(::@ & bookmarks())` = @ から祖先方向で最初に当たる bookmark) — 3 クレート共有の `lib-jj-helpers` を触るため 3 クレート (push-runner / pr-monitor / merge-pipeline) 全てで回帰確認が要る。**本命** | ||
| > - push-runner の「bookmark を `@-` に自動更新」を、空コミットを飛ばして直近の非空 bookmark commit へ寄せる | ||
| > - 監視・自動 fix 経路が**空コミットを積まない / 積んだら片付ける** ([ADR-022](adr/adr-022-automation-responsibility-separation.md) の責務分離としてはこちらが筋) |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
# 期待: revset の戻り値と、各呼び出し側の複数 bookmark 処理を確認できる。
rg -n -C 8 \
'BOOKMARK_SEARCH_REVSETS|get_jj_bookmarks|detect_pr_number|heads\(::@|bookmarks\(\)' \
src/lib-jj-helpers src/cli-merge-pipeline src/cli-push-runner src/cli-pr-monitorRepository: aloekun/claude-code-hook-test
Length of output: 50385
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
# 各関数の実装区間で返す値と呼び出し側への影響だけを確認する。
sed -n '160,260p' src/lib-jj-helpers/src/lib.rs
printf '\n--- cli-merge-pipeline github detect_pr_number ---\n'
sed -n '102,180p' src/cli-merge-pipeline/src/github.rs
printf '\n--- cli-pr-monitor util find_pr_via_jj_bookmarks / ensure_head_arg ---\n'
sed -n '1,90p' src/cli-pr-monitor/src/util.rs
sed -n '212,255p' src/cli-pr-monitor/src/stages/create_pr.rs
printf '\n--- cli-push-runner push build command ---\n'
sed -n '150,220p' src/cli-push-runner/src/stages/push.rsRepository: aloekun/claude-code-hook-test
Length of output: 12969
🌐 Web query:
jj revset heads() returns commits that have no child in the set documentation
💡 Result:
In the Jujutsu (jj) version control system, the revset function heads(x) returns all commits in the set x that are not ancestors of any other commits within that same set x [1][2][3]. In other words, it identifies the commits in x that have no descendants within x [3][4]. This is formally equivalent to the revset expression x ~::x- [1][2][5]. The documentation emphasizes that this behavior is distinct from the heads function in Mercurial, which is equivalent to x ~ x- [1][2].
Citations:
- 1: https://docs.jj-vcs.dev/latest/revsets/
- 2: https://github.com/martinvonz/jj/blob/HEAD/docs/revsets.md
- 3: https://martinvonz.github.io/jj/latest/glossary/
- 4: https://docs.jj-vcs.dev/v0.17.1/glossary/
- 5: https://docs.jj-vcs.dev/prerelease/revsets/
heads(::@ & bookmarks()) の結果単一化を提案に含めてください。
heads(::@ & bookmarks()) は @ に付与された bookmark が複数あれば複数の commit を返します。clones は複数の bookmark に対して --head / -b を出したり、最初の PR 番号を採用する場合があり、想定外の PR が検出されたり、単一の push / PR 作成対象を選べません。単一 commit を保証できるよう、指定bookmark に絞るなど return value を制限してから本命案にしてください。
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/todo21.md` around lines 55 - 58, 「探索を深さ非依存の revset へ変える」案に、複数 bookmark
が一致した場合の結果単一化を追加してください。`heads(::@ & bookmarks())` の利用箇所では対象 bookmark
を指定するか、return value を制限して必ず単一 commit を返すようにし、clone の `--head` / `-b` や PR
番号選択が複数対象にならない状態を保証してください。
| > **動機**: #367 のマージ後、post-merge-feedback の再実行は**成功していた**が、マーカーが「report 不在」で failed 扱いになっていた (`takt 成功扱いだが report 不在: feedback-report.md が見つかりません`)。実際にはレポート実体は takt の run ディレクトリ (`.takt/runs/*/reports/feedback-report.md`) に**存在しており**、`.claude/feedback-reports/367.md` へ手動コピーしてマーカーを外した。 | ||
| > | ||
| > **問題の型**: 完了判定 (report 不在チェック) が、report の**書き込み完了より先に走る** race。takt workflow は成功 (exit 0) しているのに、その直後の marker 判定が書き込み途中を「不在」と見なす。fail-open ではなく**誤った fail** を出しており、次セッションに不要な recovery 指示 (`hooks-user-prompt-feedback-recovery`) を投げる。 | ||
| > | ||
| > **対処案**: (a) report 不在判定の前に takt run ディレクトリの `reports/feedback-report.md` も確認する、(b) 判定に短い retry / 待機を入れる、(c) takt の完了と report 書き込みを同期させる。ADR-030 (決定論的 post-merge feedback) の marker 設計に属する。 |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
# 期待: report の生成、転送、marker 判定の順序と失敗時の分岐を確認できる。
rg -n -C 10 \
'feedback-report\.md|write_failed_marker|\.failed|reports/' \
src/cli-merge-pipelineRepository: aloekun/claude-code-hook-test
Length of output: 43648
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "== feedback/mod.rs relevant lines =="
sed -n '60,170p' src/cli-merge-pipeline/src/feedback/mod.rs
echo
echo "== takt context/latest_run references =="
rg -n -C 8 'find_latest_run_dir|find_latest_prepush_reports_dir|report|feedback-report' src/cli-merge-pipeline/src/feedback
echo
echo "== todo context =="
sed -n '88,108p' docs/todo21.mdRepository: aloekun/claude-code-hook-test
Length of output: 45098
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "== takt.rs run/copy implementation =="
sed -n '1,120p' src/cli-merge-pipeline/src/feedback/takt.rs
echo
echo "== feedback workflow / takt settings references =="
rg -n -C 6 'post-merge-feedback|report|feedback-report|takt|workflow|runs|reports' . -g '!node_modules' -g '!target' -g '!dist' -g '!build' | head -n 220Repository: aloekun/claude-code-hook-test
Length of output: 14828
🌐 Web query:
takt 0.35.3 post-merge-feedback report feedback-report.md runs reports
💡 Result:
The command "post-merge-feedback" is not a native command, argument, or documented feature of the takt CLI (nrslib/takt) as of version 0.35.3 [1][2][3]. Takt is an AI task management and automation tool that organizes workflows using files in the.takt/ directory [1]. While it handles post-execution flows such as auto-committing, pushing to origin, and creating or updating pull requests (PRs) based on task outcomes [2][4][5], it does not have a dedicated "post-merge-feedback" report command or a standard output file named "feedback-report.md" [1]. The confusion likely stems from other tools in the AI agent ecosystem: 1. Feedback report files: The filename feedback-report.md is explicitly used by the uipath-feedback skill (uip feedback send) as a fallback mechanism when automatic submission fails [6][7]. 2. Post-merge tracking: Other AI agent tools, such as git-aftermerge, specifically focus on "post-merge feedback" by tracking commit survival and feeding this data back to agents [8]. In the context of takt, you manage task outcomes, reviews, and subsequent instructions via takt list and the interactive workflow menus (e.g., "Instruct," "Try merge," "Merge & cleanup") [1][9]. If you are looking to generate reports or document feedback within takt, these are typically handled by defining output_contracts within your workflow YAML files [10][11], which produce reports (e.g., implementation-report.md, self-review.md) rather than a general-purpose feedback-report.md [10][11].
Citations:
- 1: https://github.com/nrslib/takt/blob/main/docs/task-management.md
- 2: https://deepwiki.com/nrslib/takt/12.3-pull-request-and-merge-request-automation
- 3: https://github.com/nrslib/takt/blob/main/docs/ci-cd.md
- 4: https://github.com/nrslib/takt/blob/f70a91e1/src/features/tasks/execute/postExecution.ts
- 5: https://github.com/nrslib/takt/blob/bbeb41ff/src/features/tasks/execute/postExecution.ts
- 6: https://github.com/UiPath/skills/blob/7009424a8dfff80d9b03fa7e0f1c1ff2ac1401eb/skills/uipath-feedback/SKILL.md
- 7: https://tessl.io/registry/skills/github/UiPath/skills/uipath-feedback
- 8: https://pypi.org/project/git-aftermerge/0.1.0/
- 9: https://github.com/nrslib/takt/blob/c226cca9/docs/tutorial.md
- 10: https://github.com/harumiWeb/xlflow/blob/main/.takt/workflows/xlflow-issue-bug-high.yaml
- 11: https://github.com/harumiWeb/xlflow/blob/main/.takt/workflows/xlflow-pr-review-high.yaml
race ではなく report 転送契機の不整合を明示してください。
現行コードは takt 完了後に reconcile_takt_output() で .takt/runs/*/reports/feedback-report.md → .claude/feedback-reports/<PR>.md をコピーし、失敗で marker を残す仕組みです。report 不在 になった場合、source の race だけでなく、latest run の特定/同期不足や copy 側のパス不一致も考えられます。問題の型を断定しないよう、転送順序と契機をまず特定してください。
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/todo21.md` around lines 98 - 102, 「race」と断定せず、takt 完了後の
reconcile_takt_output()
によるレポート転送契機と順序の不整合として問題を記述してください。.takt/runs/*/reports/feedback-report.md の
latest run 特定、転送同期、.claude/feedback-reports/<PR>.md へのコピー先パスを確認対象として明示し、report
不在時に source 側の問題と copy 側の不一致を区別できる内容へ更新してください。
🤖 PR Monitor 分析 (GitHub Actions バックストップ)
Applicable Findings (Critical / High / Major)
Applicable Findings (Medium 以下)
Filtered (not applicable)(該当なし — 4件すべてドキュメント記述の技術的正確性・相互参照整合性に関する指摘であり、ADR-035 の docs-only 除外基準(mutation/error handling/test coverage 等のコード品質指標)に該当しないため、全件 applicable と判定) 次のアクション
|
いずれも「実コードを確認せず断定していた」箇所で、実装を verify して直した。 ## #1 (harness-plan) WP-11 の「誤検知」→「設計どおりの保守的 deny」 evaluate_scope_guard の allowlist は allowlist_from_paths(findings.map(f.file)) = finding の anchor 位置だけで、remedy が別ファイルなら含まない (ADR-054 も欠点として 明記)。#366 の BLOCK は誤検知ではなく設計どおりの保守的 deny。本採用の判定基準を 「この保守的 deny を誤検知に数えない」よう明確化する、と修正。 ## #2 (todo.md/todo3-7) breadcrumb の todo20/todo2-20 残存 docs バッチで更新し漏れた参照を補完。todo.md 冒頭の使い分けを todo21 + summary2 まで、 todo3-7 の「todo2-20」を todo2-21 へ。全 docs で todo2-20 残存ゼロを確認。 ## #3 (todo21:58) heads(::@ & bookmarks()) の複数返り @ に複数 bookmark が付くと複数コミットを返し clone --head / PR 選択が多対象になる。 trunk 除外 + 単一 bookmark へ絞る (現行 is_trunk_bookmark 除外と同規律) 必要を追記。 ## #4 (todo21:102) 388 の「race」断定を撤回 reconcile_takt_output → copy_feedback_report は find_latest_run_dir で run dir を 選ぶ (mod.rs:147 / takt.rs:84)。単純な write race と断定せず、latest 特定のずれ / パス不一致 / 前後関係を「まず特定する」形へ。#367 では実体が run dir に存在した。 ## 検証 pnpm lint:docs OK / markdownlint 0 error。scope guard・feedback reconcile の実装を 実際に読んで記述と一致させた。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Summary
Context
Why: WP-18 を PR 化する過程で、PR 監視・自動 fix 経路が後続の決定論コマンドを妨げる事象を複数実測した。いずれも post-merge feedback には構造的に入らない(feedback の入力は PR diff とレビュー指摘で、ツール自身の運用中の事象は拾わない)。この非対称ゆえ、手動で todo へ残す。
登録した観測(すべて 2026-08-08 実測、todo21.md):
heads(::@ & bookmarks()))が本命の対処todo21.md 新設: 新規追加先を todo20→todo21 へ移行。breadcrumb を持つ 5 ファイル(todo.md / todo8 / todo10 / todo13 / todo14)の「現在の追加先」ポインタと、数詞「22つ/todo2-20」を持つ 8 ファイル(todo3-11)を 23つ/todo2-21 へ同期。
順位 384 完了・削除: 外部設定の実体は ADR-072 § 外部設定の実体 に記録済み(#369/#370)。todo20.md の full エントリと summary2 の行を削除し、完了記録の 1 行に置換。
WP-11 記録: #366 で enforce 下の scope guard 誤検知を 1 件観測。anchor と remedy が別ファイルの指摘は構造的に必ず BLOCK される。ADR-054 の本採用判定の前に判定基準の再定義が要ることを記録。
Validation
pnpm lint:docs: OK(preamble + cross-ref + priority-inversion — 数詞 23 整合を含む)markdownlint: 127 files / 0 errorpnpm pushpre-push review: verdict=APPROVE(両 facet)References
Summary by CodeRabbit
scope_guardの採用判断基準を見直し、実測結果を踏まえて継続的に観測する方針を明記しました。