- phase-runner: レポートを上書きせずタイムスタンプ付きで同ディレクトリに保存し、fix が過去指摘の傾向を追跡できるよう改善
- output-contracts: persists/reopened/family_tag フィールドを追加してレビュー指摘の継続性を明示
- pieces: 全ビルトインピースに reviewers↔fix の loop_monitors を追加し、発散ループを自動検知
- fix.md: 過去レポートの参照方法を「Glob で {レポート名}.* を検索、最大2件読む」と具体化
- loop-monitor-reviewers-fix.md: ループモニタ判定用の共通インストラクションを新規追加
48 lines
1.9 KiB
Markdown
48 lines
1.9 KiB
Markdown
```markdown
|
||
# セキュリティレビュー
|
||
|
||
## 結果: APPROVE / REJECT
|
||
|
||
## 重大度: None / Low / Medium / High / Critical
|
||
|
||
## チェック結果
|
||
| カテゴリ | 結果 | 備考 |
|
||
|---------|------|------|
|
||
| インジェクション | ✅ | - |
|
||
| 認証・認可 | ✅ | - |
|
||
| データ保護 | ✅ | - |
|
||
| 依存関係 | ✅ | - |
|
||
|
||
## 今回の指摘(new)
|
||
| # | finding_id | family_tag | 重大度 | 種類 | 場所 | 問題 | 修正案 |
|
||
|---|------------|------------|--------|------|------|------|--------|
|
||
| 1 | SEC-NEW-src-db-L42 | injection-risk | High | SQLi | `src/db.ts:42` | 生SQL文字列 | パラメータ化クエリを使用 |
|
||
|
||
## 継続指摘(persists)
|
||
| # | finding_id | family_tag | 前回根拠 | 今回根拠 | 問題 | 修正案 |
|
||
|---|------------|------------|----------|----------|------|--------|
|
||
| 1 | SEC-PERSIST-src-auth-L18 | injection-risk | `src/auth.ts:18` | `src/auth.ts:18` | 未解消 | バリデーションを強化 |
|
||
|
||
## 解消済み(resolved)
|
||
| finding_id | 解消根拠 |
|
||
|------------|----------|
|
||
| SEC-RESOLVED-src-db-L10 | `src/db.ts:10` はバインド変数化済み |
|
||
|
||
## 再開指摘(reopened)
|
||
| # | finding_id | family_tag | 解消根拠(前回) | 再発根拠 | 問題 | 修正案 |
|
||
|---|------------|------------|----------------|---------|------|--------|
|
||
| 1 | SEC-REOPENED-src-auth-L55 | injection-risk | `前回: src/auth.ts:20 で修正済み` | `src/auth.ts:55 で再発` | 問題の説明 | 修正方法 |
|
||
|
||
## 警告(非ブロッキング)
|
||
- {セキュリティに関する推奨事項}
|
||
|
||
## REJECT判定条件
|
||
- `new`、`persists`、または `reopened` が1件以上ある場合のみ REJECT 可
|
||
- `finding_id` なしの指摘は無効
|
||
```
|
||
|
||
**認知負荷軽減ルール:**
|
||
- 問題なし → チェック表のみ(10行以内)
|
||
- 警告のみ → + 警告1-2行(15行以内)
|
||
- 脆弱性あり → + 指摘表(30行以内)
|