本 page の 目的: Rei-Automator Phase 1 defer #5 (SoftWarnPatterns 別 file 化) を完全 close した wiring refactor の 記録。 藤本さん 「推奨でお願い致します」 (C option 選択) → 実行。 chat-Claude Phase 1 spec § 4 「安全層 3 件」 とは 独立の 「warn-level filter」 concept を DANGEROUS_PATTERNS_UNION (Phase 1d-ii) と同 pattern で 単一化。
関連 file:
src/aios/security/soft-warn-patterns.ts — 新規 (~100 行、 SOFT_WARN_PATTERNS + isSoftWarnCommand + matchSoftWarnPattern + PROVENANCE)
src/aios/action-executor.ts — 修正 (-6 行 inline 削除、 +2 行 import & call)
test/step1342-soft-warn-patterns-test.ts — 新規 (~180 行、 8 part 45 assertion)
package.json — test:step1342 script 追加
1. DANGEROUS vs SOFT_WARN の 2 axis 直交 concern
| axis | DANGEROUS_PATTERNS_UNION | SOFT_WARN_PATTERNS (本 STEP) |
| level | block-level (execute stop) | warn-level (log のみ、 execute 継続) |
| 用途 | rm -rf / mkfs / weapon 系 の unrecoverable 破壊 | launch install / alt+f4 / key delete の UX check |
| decision | 「絶対に 実行しない」 (Peace Axiom + physical safety) | 「実行するが 注意喚起」 (recoverable、 user intent 確認) |
| rejectionReason | 設定される (Blocked by safety rule: ...) | 設定なし (実行成功、 log のみ) |
| audit result | error | success (実行完了、 warn は audit event でなく console log) |
2 concept を 混同すると:
- 「block すべきなのに warn だけ」 = 安全性 gap (rm -rf を 実行してしまう)
- 「warn だけで良いのに block」 = UX 阻害 (alt+f4 で 「blocked」 表示は 過剰)
= 独立 filter として 保持、 単一 source of truth 化しても 2 file 別々 に 管理。
2. 実装 details
2.1 新規 file: soft-warn-patterns.ts
export const SOFT_WARN_PATTERNS: RegExp[] = [
/launch\s+".*install/i, // install 系 exe 起動 = 予想外 install?
/hotkey\s+["']?alt\+f4/i, // Alt+F4 (アプリ強制終了、 unsaved data risk)
/key\s+delete/i, // Delete key 単独送出 (unintended deletion risk)
];
export function isSoftWarnCommand(command: string): boolean {
return SOFT_WARN_PATTERNS.some(p => p.test(command));
}
export function matchSoftWarnPattern(command: string): RegExp | null {
for (const p of SOFT_WARN_PATTERNS) {
if (p.test(command)) return p;
}
return null;
}
export const SOFT_WARN_PATTERNS_PROVENANCE = {
version: '1.0.0-step1342-soft-warn-split',
totalPatterns: SOFT_WARN_PATTERNS.length,
origin: { actionExecutor: 3, union: 3 },
createdAt: '2026-08-17',
callerMigrationStatus: { actionExecutor: 'migrated' },
independentFrom: {
dangerousPatterns: 'block-level vs warn-level = 独立 filter concern',
peaceAxiom: 'command-level UX check vs intent-level ethics filter = 独立 concern',
},
} as const;
2.2 ActionExecutor refactor (before → after)
| before (STEP 1341 state) | after (STEP 1342) |
const WARN_PATTERNS: RegExp[] = [
/launch\s+".*install/i,
/hotkey\s+["']?alt\+f4/i,
/key\s+delete/i,
];
// ...
for (const pat of WARN_PATTERNS) {
if (pat.test(trimmed)) {
this.log(`WARNING: ...`);
break;
}
}
|
import { isSoftWarnCommand }
from './security/soft-warn-patterns';
// (const 削除)
// ...
if (isSoftWarnCommand(trimmed)) {
this.log(`WARNING: ...`);
}
|
差分: 6 行削除 (inline const) + 2 行追加 (import + call) = net -4 行、 意味は完全同型 (some check + log + break は if で単一 branch 化)。
3. Test 結果 (8 part、 45 assertion)
| Part | 期待 | 結果 |
| 1 | SOFT_WARN_PATTERNS 3 patterns 存在 (launch install / alt+f4 / key delete) | 6/6 PASS |
| 2 | isSoftWarnCommand — 3 patterns 全 match + case insensitive + non-warn 全 reject | 9/9 PASS |
| 3 | matchSoftWarnPattern — 正しい pattern 返却、 non-match は null | 4/4 PASS |
| 4 | PROVENANCE metadata 完全 (version + origin + callerMigrationStatus + independentFrom) | 9/9 PASS |
| 5 | DANGEROUS_PATTERNS_UNION と 独立性 (block vs warn 直交、 source-level overlap 0) | 6/6 PASS |
| 6 | ActionExecutor 経由 の behavior (warn 検出でも execute 継続、 audit result=success + WARNING log 1 emit) | 5/5 PASS |
| 7 | ActionExecutor で non-warn command は log なし、 execute 継続 | 3/3 PASS |
| 8 | ActionExecutor.ts の inline WARN_PATTERNS 削除確認 (grep) + import 追加 + isSoftWarnCommand() 呼び出し | 3/3 PASS |
Total: 45/45 PASS + STEP 1340 40/40 + STEP 1341 42/42 regression preserved。 累計 127/127 PASS (audit + warn 系)。
4. Rei-Automator Phase 1 defer 6 件 status update (2026-08-17 現在)
| defer # | 内容 | status |
| #1 | Phase 2 provider 追加 (OpenAI + Google + Ollama) | ⏳ pending (2-4 ヶ月 arc) |
| #2 | audit log JSONL hash chain | 🔷 2/4 caller 完 (STEP 1340 + STEP 1341、 残 2 caller pending) |
| #3 | kill switch IPC 経路 (Node parent-child) | ⏳ pending (1-2 hour 見込み) |
| #4 | License 実 適用 (弁護士 confirm) | ⏳ pending (藤本さん own decision) |
| #5 | SoftWarnPatterns 別 file 化 | ✅ STEP 1342 完全 close (本) |
| #6 | chat-Claude 逆 briefing (独立検証原則 侵害 candidate) | ⏳ pending (慎重 judgment) |
defer 完全 close 進捗: 0/6 → 1/6 (16.7%)。 #2 は 部分 advance (2/4)、 #1/3/4/5/6 のうち #5 が 本 STEP で完全 close。 「1 件を完全 close」 の [[feedback-one-reproduction-over-ten-unverified]] discipline 適用。
5. Honest scope
- 本 STEP は inline 3 patterns の 抽出 refactor のみ = 新機能 or 新 pattern 追加 なし、 意味は 完全同型 (behavior 変更 ゼロ)
- SOFT_WARN と DANGEROUS の 独立性 は source-level overlap 0 で verify、 但し semantic-level overlap の 判断は 人間 judgment 必要 (例: 「install exe」 が warn か dangerous か = 現状 warn 判断、 将来 malware install 検出強化時 に dangerous 昇格 candidate)
- Prior art 100% pre-existing: warn-level filter = Unix wall/sudo -k warning + IDE lint warning 系 industry standard、 Rei contribution = D-FUMT₈ + Peace Axiom Rei stack adaptation のみ
- 現状 caller は ActionExecutor のみ 1 系統 = divergence risk 低い state で start、 DANGEROUS_PATTERNS_UNION の 2 系統 divergence 経緯 と 対照的 (proactive 単一化)
- test 45/45 PASS は unit-level、 実 production Automator 稼働上 の warn UI 表示 (ex. destructive commands の 警告 dialog 等) は 別 STEP candidate
- 2026-08-06 「全研究 site 反映 default」 protocol 適用 (backend engine 拡張 + defer #5 完全 close = memory 忘れ対策 primary purpose)、 [[feedback-world-uniqueness-claim-controllable]] 遵守 (「defer #5 close」 まで say、 「世界唯一」 主張なし)
6. 関連 memory / feedback
- STEP 1341 ActionExecutor audit log wiring — 直前 STEP、 audit coverage 2/4 caller
- Rei-Automator Phase 1 full arc (12 sub-phase permanent record) — defer 6 件 origin
- chat-Claude Phase 1 実装 spec — 安全層 3 件 spec origin (但し 本 SoftWarn は spec 外の Rei stack 独自 discipline)
- [[feedback-one-reproduction-over-ten-unverified]] — 「1 件 完全 close > 複数 部分 advance」
- [[feedback-arc-close-discipline]] — 訂正の理由が次回判定基準 (defer close で TODO bookkeeping cost 減少)
- [[feedback-all-research-site-reflection-default]] — 2026-08-06 「全研究 site 反映 default」 protocol
- [[feedback-no-rush-publication]] — 「急がずゆっくりと」 (defer 1 件ずつ close)
- [[feedback-world-uniqueness-claim-controllable]] — 「defer #5 close」 まで、 世界唯一 主張なし