diff --git a/builtins/en/instructions/review-arch.md b/builtins/en/instructions/review-arch.md index f0a6036..45a244c 100644 --- a/builtins/en/instructions/review-arch.md +++ b/builtins/en/instructions/review-arch.md @@ -9,8 +9,14 @@ Do not review AI-specific issues (already covered by the ai_review movement). - Dead code - Call chain verification +**Previous finding tracking (required):** +- First, extract open findings from "Previous Response" +- Assign `finding_id` to each finding and classify current status as `new / persists / resolved` +- If status is `persists`, provide concrete unresolved evidence (file/line) + ## Judgment Procedure -1. Review the change diff and detect issues based on the architecture and design criteria above -2. For each detected issue, classify as blocking/non-blocking based on Policy's scope determination table and judgment rules -3. If there is even one blocking issue, judge as REJECT +1. First, extract previous open findings and preliminarily classify as `new / persists / resolved` +2. Review the change diff and detect issues based on the architecture and design criteria above +3. For each detected issue, classify as blocking/non-blocking based on Policy's scope determination table and judgment rules +4. If there is even one blocking issue (`new` or `persists`), judge as REJECT diff --git a/builtins/en/instructions/review-qa.md b/builtins/en/instructions/review-qa.md index 457d51e..f980afc 100644 --- a/builtins/en/instructions/review-qa.md +++ b/builtins/en/instructions/review-qa.md @@ -7,8 +7,14 @@ Review the changes from a quality assurance perspective. - Logging and monitoring - Maintainability +**Previous finding tracking (required):** +- First, extract open findings from "Previous Response" +- Assign `finding_id` to each finding and classify current status as `new / persists / resolved` +- If status is `persists`, provide concrete unresolved evidence (file/line) + ## Judgment Procedure -1. Review the change diff and detect issues based on the quality assurance criteria above -2. For each detected issue, classify as blocking/non-blocking based on Policy's scope determination table and judgment rules -3. If there is even one blocking issue, judge as REJECT +1. First, extract previous open findings and preliminarily classify as `new / persists / resolved` +2. Review the change diff and detect issues based on the quality assurance criteria above +3. For each detected issue, classify as blocking/non-blocking based on Policy's scope determination table and judgment rules +4. If there is even one blocking issue (`new` or `persists`), judge as REJECT diff --git a/builtins/en/output-contracts/architecture-review.md b/builtins/en/output-contracts/architecture-review.md index 2525bf2..c2b3aa2 100644 --- a/builtins/en/output-contracts/architecture-review.md +++ b/builtins/en/output-contracts/architecture-review.md @@ -14,10 +14,15 @@ - [x] Dead code - [x] Call chain verification +## Previous Open Findings +| finding_id | Previous Status | Current Status (new/persists/resolved) | Evidence | +|------------|-----------------|-----------------------------------------|----------| +| ARCH-EXAMPLE-src-file-L42 | open | persists | `src/file.ts:42` | + ## Issues (if REJECT) -| # | Scope | Location | Issue | Fix Suggestion | -|---|-------|----------|-------|----------------| -| 1 | In-scope | `src/file.ts:42` | Issue description | Fix approach | +| # | finding_id | Status (new/persists) | Scope | Location | Issue | Fix Suggestion | +|---|------------|-----------------------|-------|----------|-------|----------------| +| 1 | ARCH-EXAMPLE-src-file-L42 | new | In-scope | `src/file.ts:42` | Issue description | Fix approach | Scope: "In-scope" (fixable in this change) / "Out-of-scope" (existing issue, non-blocking) diff --git a/builtins/en/output-contracts/qa-review.md b/builtins/en/output-contracts/qa-review.md index 170b254..d977b87 100644 --- a/builtins/en/output-contracts/qa-review.md +++ b/builtins/en/output-contracts/qa-review.md @@ -15,8 +15,13 @@ | Documentation | ✅ | - | | Maintainability | ✅ | - | +## Previous Open Findings +| finding_id | Previous Status | Current Status (new/persists/resolved) | Evidence | +|------------|-----------------|-----------------------------------------|----------| +| QA-EXAMPLE-src-file-L42 | open | persists | `src/file.ts:42` | + ## Issues (if REJECT) -| # | Category | Issue | Fix Suggestion | -|---|----------|-------|----------------| -| 1 | Testing | Issue description | Fix approach | +| # | finding_id | Status (new/persists) | Category | Issue | Fix Suggestion | +|---|------------|-----------------------|----------|-------|----------------| +| 1 | QA-EXAMPLE-src-file-L42 | new | Testing | Issue description | Fix approach | ``` diff --git a/builtins/en/policies/review.md b/builtins/en/policies/review.md index fd09b7b..3d36f1f 100644 --- a/builtins/en/policies/review.md +++ b/builtins/en/policies/review.md @@ -86,6 +86,18 @@ Every issue raised must include the following. Extract into a shared function." ``` +## Finding ID Tracking (`finding_id`) + +To prevent circular rejections, track findings by ID. + +- Every issue raised in a REJECT must include a `finding_id` +- If the same issue is raised again, reuse the same `finding_id` +- For repeated issues, set status to `persists` and include concrete evidence (file/line) that it remains unresolved +- New issues must use status `new` +- Resolved issues must be listed with status `resolved` +- Issues without `finding_id` are invalid (cannot be used as rejection grounds) +- REJECT is allowed only when there is at least one `new` or `persists` issue + ## Boy Scout Rule Leave it better than you found it. diff --git a/builtins/ja/instructions/review-arch.md b/builtins/ja/instructions/review-arch.md index 03fd8e9..313be9a 100644 --- a/builtins/ja/instructions/review-arch.md +++ b/builtins/ja/instructions/review-arch.md @@ -9,8 +9,14 @@ AI特有の問題はレビューしないでください(ai_reviewムーブメ - デッドコード - 呼び出しチェーン検証 +**前回指摘の追跡(必須):** +- まず「Previous Response」から前回の open findings を抽出する +- 各 finding に `finding_id` を付け、今回の状態を `new / persists / resolved` で判定する +- `persists` と判定する場合は、未解決である根拠(ファイル/行)を必ず示す + ## 判定手順 -1. 変更差分を確認し、構造・設計の観点に基づいて問題を検出する -2. 検出した問題ごとに、Policyのスコープ判定表と判定ルールに基づいてブロッキング/非ブロッキングを分類する -3. ブロッキング問題が1件でもあればREJECTと判定する +1. まず前回open findingsを抽出し、`new / persists / resolved` を仮判定する +2. 変更差分を確認し、構造・設計の観点に基づいて問題を検出する +3. 検出した問題ごとに、Policyのスコープ判定表と判定ルールに基づいてブロッキング/非ブロッキングを分類する +4. ブロッキング問題(`new` または `persists`)が1件でもあればREJECTと判定する diff --git a/builtins/ja/instructions/review-qa.md b/builtins/ja/instructions/review-qa.md index 1c8bf02..dc080e5 100644 --- a/builtins/ja/instructions/review-qa.md +++ b/builtins/ja/instructions/review-qa.md @@ -7,8 +7,14 @@ - ログとモニタリング - 保守性 +**前回指摘の追跡(必須):** +- まず「Previous Response」から前回の open findings を抽出する +- 各 finding に `finding_id` を付け、今回の状態を `new / persists / resolved` で判定する +- `persists` と判定する場合は、未解決である根拠(ファイル/行)を必ず示す + ## 判定手順 -1. 変更差分を確認し、品質保証の観点に基づいて問題を検出する -2. 検出した問題ごとに、Policyのスコープ判定表と判定ルールに基づいてブロッキング/非ブロッキングを分類する -3. ブロッキング問題が1件でもあればREJECTと判定する +1. まず前回open findingsを抽出し、`new / persists / resolved` を仮判定する +2. 変更差分を確認し、品質保証の観点に基づいて問題を検出する +3. 検出した問題ごとに、Policyのスコープ判定表と判定ルールに基づいてブロッキング/非ブロッキングを分類する +4. ブロッキング問題(`new` または `persists`)が1件でもあればREJECTと判定する diff --git a/builtins/ja/output-contracts/architecture-review.md b/builtins/ja/output-contracts/architecture-review.md index 1a017e0..d6429ae 100644 --- a/builtins/ja/output-contracts/architecture-review.md +++ b/builtins/ja/output-contracts/architecture-review.md @@ -14,10 +14,15 @@ - [x] デッドコード - [x] 呼び出しチェーン検証 +## 前回Open Findings +| finding_id | 前回状態 | 今回状態(new/persists/resolved) | 根拠 | +|------------|----------|----------------------------------|------| +| ARCH-EXAMPLE-src-file-L42 | open | persists | `src/file.ts:42` | + ## 問題点(REJECTの場合) -| # | スコープ | 場所 | 問題 | 修正案 | -|---|---------|------|------|--------| -| 1 | スコープ内 | `src/file.ts:42` | 問題の説明 | 修正方法 | +| # | finding_id | 状態(new/persists) | スコープ | 場所 | 問題 | 修正案 | +|---|------------|--------------------|---------|------|------|--------| +| 1 | ARCH-EXAMPLE-src-file-L42 | new | スコープ内 | `src/file.ts:42` | 問題の説明 | 修正方法 | スコープ: 「スコープ内」(今回修正可能)/ 「スコープ外」(既存問題・非ブロッキング) diff --git a/builtins/ja/output-contracts/qa-review.md b/builtins/ja/output-contracts/qa-review.md index fddb75d..84dc0d1 100644 --- a/builtins/ja/output-contracts/qa-review.md +++ b/builtins/ja/output-contracts/qa-review.md @@ -15,8 +15,13 @@ | ドキュメント | ✅ | - | | 保守性 | ✅ | - | +## 前回Open Findings +| finding_id | 前回状態 | 今回状態(new/persists/resolved) | 根拠 | +|------------|----------|----------------------------------|------| +| QA-EXAMPLE-src-file-L42 | open | persists | `src/file.ts:42` | + ## 問題点(REJECTの場合) -| # | カテゴリ | 問題 | 修正案 | -|---|---------|------|--------| -| 1 | テスト | 問題の説明 | 修正方法 | +| # | finding_id | 状態(new/persists) | カテゴリ | 問題 | 修正案 | +|---|------------|--------------------|---------|------|--------| +| 1 | QA-EXAMPLE-src-file-L42 | new | テスト | 問題の説明 | 修正方法 | ``` diff --git a/builtins/ja/policies/review.md b/builtins/ja/policies/review.md index 3eed9bd..77d91b8 100644 --- a/builtins/ja/policies/review.md +++ b/builtins/ja/policies/review.md @@ -86,6 +86,18 @@ 共通関数に抽出してください」 ``` +## 指摘ID管理(finding_id) + +同じ指摘の堂々巡りを防ぐため、指摘をIDで追跡する。 + +- REJECT時に挙げる各問題には `finding_id` を必須で付ける +- 同じ問題を再指摘する場合は、同じ `finding_id` を再利用する +- 再指摘時は状態を `persists` とし、未解決である根拠(ファイル/行)を必ず示す +- 新規指摘は状態 `new` とする +- 解消済みは状態 `resolved` として一覧化する +- `finding_id` のない指摘は無効(判定根拠として扱わない) +- REJECTは `new` または `persists` の問題が1件以上ある場合のみ許可する + ## ボーイスカウトルール 来たときよりも美しく。