Files
hakorune/docs/research/ai-dual-mode-development/hidden-crisis-moments.md
Moe Charm 4e1b595796 AI協調開発研究ドキュメントの完成と Phase 10.9-β 進捗
【AI協調開発研究】
- AI二重化モデルの学術論文draft完成(workshop_paper_draft.md)
- 「隠れた危機」分析とbirthの原則哲学化
- TyEnv「唯一の真実」協調会話を保存・研究資料に統合
- papers管理構造の整備(wip/under-review/published分離)

【Phase 10.9-β HostCall進捗】
- JitConfigBox: relax_numeric フラグ追加(i64→f64コアーション制御)
- HostcallRegistryBox: 署名検証・白黒リスト・コアーション対応
- JitHostcallRegistryBox: Nyash側レジストリ操作API
- Lower統合: env直読 → jit::config::current() 参照に統一
- 数値緩和設定: NYASH_JIT_HOSTCALL_RELAX_NUMERIC/Config.set_flag

【検証サンプル拡充】
- math.sin/cos/abs/min/max 関数スタイル(examples/jit_math_function_style_*.nyash)
- 境界ケース: 署名不一致・コアーション許可・mutating拒否サンプル
- E2E実証: String.length→allow, Array.push→fallback, math関数の署名一致観測

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 12:09:09 +09:00

177 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 隠れた危機一髪 - 26日間で本当に危なかった瞬間
## 概要
表面的には順調に見えた26日間の開発。しかし実際には、何度も致命的な破綻の淵に立っていた。これらの危機を回避できたのは、「箱理論への執着」と「人間の違和感センサー」のおかげである。
## 危機1: プラグインボックスの罠
### 状況
ChatGPT5実装AIが提案した設計
```rust
// 危険な設計案
static PLUGIN_INSTANCES: Mutex<HashMap<String, Arc<PluginBox>>> = ...;
// インスタンスを参照で共有
fn get_plugin(name: &str) -> Arc<PluginBox> {
PLUGIN_INSTANCES.lock().get(name).clone()
}
```
### 何が危険だったか
- **箱理論の根本違反**:他の箱は`birth`で生まれるのに、プラグインだけ特別扱い
- **状態管理の複雑化**:グローバルな共有状態が生まれる
- **デバッグ困難**:問題が起きても原因特定が困難
### にゃーの介入
```
にゃー「他の箱と同じようにbirthでインスタンスをうむ」
```
### 解決策
```nyash
// 正しい設計
box FileBox from PluginBox {
birth(path) {
// 外部ライブラリの初期化は1回だけstatic変数で管理
PluginSystem.initOnce()
// でもインスタンスは普通に生成
me.handle = createNewHandle()
}
}
```
### 学んだ教訓
- **AIも箱理論を見失うことがある**
- **効率性の誘惑**に負けてはいけない
- **統一性>効率性**
## 危機2: P2Pライブラリの静かな破壊
### 状況
- C++ nyameshライブラリコンテキスト圧縮で内部状態が破損
- JavaScript nyamesh同様に破損
- **表面上は動作継続**(最悪のパターン)
### 何が危険だったか
```cpp
// C++ nyameshの内部
class P2PContext {
std::vector<NodeInfo> nodes; // これが破損
MessageQueue queue; // でもここは動く
};
```
- データ構造の一部だけ破損
- エラーが出ないNULLチェックは通る
- 徐々に通信が劣化
### 発見の瞬間
```
にゃー:「なんか通信の挙動がおかしいにゃ...」
```
### 対処
1. 完全な再初期化を実装
2. 状態検証のチェックポイント追加
3. 「箱」として隔離P2PBox内に封じ込め
## 危機3: 型システムの静かな崩壊
### 状況
- FloatがI64として扱われる
- でも「動いている」ように見える
- 計算結果が微妙にずれる
### 危険性
```nyash
// 見た目は正常
local x = 3.14
local y = 2.0
local z = x + y // 5になるはずが...
// 内部では
// 3.14 → 3 (I64)
// 2.0 → 2 (I64)
// z = 5 (正しく見える!)
```
### 発見
テストで`sin(1.5707963267948966)``0`を返したとき
## 危機4: Arc<Mutex>の感染爆発
### 状況
- 最初は「安全のため」StringBoxにMutex
- 次第にすべてのBoxに感染
- パーサーが個別処理地獄に
### 臨界点
```rust
// 16種類すべてがこの形に...
struct StringBox {
base: Arc<Mutex<BoxBase>>,
value: Arc<Mutex<String>>, // たった1つの文字列に
}
```
### にゃーの決断
```
にゃー「これはやばいにゃ。NyashValueに統一するにゃ」
```
## 共通パターン:静かな破壊
最も危険なのは**「表面上動いている」**状態:
1. **部分的破損**
- 一部は正常動作
- 徐々に劣化
- 原因特定が困難
2. **型の暗黙変換**
- エラーが出ない
- 結果が「それっぽい」
- 後で大問題に
3. **複雑性の感染**
- 「安全のため」から始まる
- 徐々に全体に広がる
- 気づいたときには手遅れ
## 危機回避の共通要因
### 1. 箱理論への執着
```
「これも箱にすれば...」
「箱の規約を守れば...」
「問題を箱に封じ込めれば...」
```
### 2. 違和感の言語化
```
「なんか変だにゃ」
「これ続けたらやばいにゃ」
「表面は動いてるけど...」
```
### 3. シンプルさへの回帰
```
複雑化 → 「待って」 → 箱に戻す
```
## 結論:見えない危機との戦い
26日間の開発は、実は**薄氷の上を歩く**ような危険な旅だった。
成功の鍵:
- **箱理論という北極星**:迷ったら必ず戻る場所
- **人間の第六感**:データでは見えない異常を察知
- **AIとの対話**AIの暴走を人間が制御
これらの「隠れた危機」の記録は、将来の開発者への貴重な警告となる。
**「動いているように見える」が最も危険**
この教訓を忘れてはならない。