feat(phase91): PluginHost/CoreServices skeleton complete

Phase 91 完了: Ring1-Core 構造の明確化

**実装内容**:
- CoreServices 定義(6つの Service trait)
  - StringService, IntegerService, BoolService
  - ArrayService, MapService, ConsoleService
- PluginHost 構造体(Ring0 ⇔ CoreServices 橋渡し)
- NyashPlugin trait(プラグインシステム標準IF)
- PluginRegistry skeleton

**Phase 87 整合性**:
- CoreServices は core_required (6個) を完全カバー
  - String, Integer, Bool, Array, Map, Console
- CoreBoxId との対応表をドキュメント化

**設計原則確立**:
- Ring1-Core 構造明確化
- core_required は必ず揃う(型レベル保証)
- Fail-Fast 設計(ensure_initialized)
- 既存影響ゼロ(新規ファイルのみ)

**テスト結果**:
- 5件追加(全て合格)
- ビルド成功
- 既存テストに影響なし

**次のステップ**: Phase 92 (UnifiedBoxRegistry との統合)

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
nyash-codex
2025-12-03 07:43:08 +09:00
parent 4e2e45a79d
commit 3d253056bd
4 changed files with 356 additions and 0 deletions

View File

@ -239,3 +239,127 @@ Phase 85 の調査結果を完全反映:
すべて1ファイルで完結するため、Phase 84-4-B のような分散ハードコード問題は完全解消。
---
## 6. CoreBoxCategory enumPhase 87
### 6.1 役割
CoreBoxId の分類を型安全に表現する enum。Phase 85 調査結果を完全に反映。
```rust
pub enum CoreBoxCategory {
CoreRequired, // 必須: 起動時に全て揃っていなければならない (6個)
CoreOptional, // オプション: 無くても起動できるが、標準機能として提供 (9個)
Special, // 特殊: 言語実装に直結Function/Result/Method/Missing
}
```
### 6.2 Phase 85 対応表
| Category | 個数 | Box 一覧 |
|----------|------|---------|
| CoreRequired | 6 | String, Integer, Bool, Array, Map, Console |
| CoreOptional | 9 | Float, Null, File, Path, Regex, Math, Time, Json, Toml |
| Special | 4 | Function, Result, Method, Missing |
### 6.3 実装効果
- **is_core_required() の簡略化**: `category() == CoreBoxCategory::CoreRequired`
- **Phase 92 CoreServices 設計**: core_required (6個) のみを CoreServices に含める根拠
- **型安全な分類**: 文字列比較 → enum 比較で完全型安全
---
## 7. Phase 87 完了チェックリスト
### 7.1 実装完了 ✅
- [x] CoreBoxId enum 定義19個
- [x] CoreMethodId enum 定義30個
- [x] CoreBoxCategory enum 定義3カテゴリ
- [x] is_reserved_type() リファクタリング
- [x] infer_boxcall_return_type() リファクタリング67%削減)
- [x] テスト 11件追加
- [x] Phase 85 調査結果の完全反映
### 7.2 Phase 92 への橋渡し準備 ✅
- [x] core_required (6個) の確定
- [x] CoreBoxCategory による分類体系確立
- [x] SSOTSingle Source of Truth確立
### 7.3 今後の展開
Phase 92 では、CoreServices の実装時に CoreBoxCategory::CoreRequired (6個) のみを対象とすることで、**「core_required は必ず揃う」**という設計原則を型レベルで保証する。
---
## 8. Phase 91: PluginHost/CoreServices 実装2025-12-03
### 8.1 PluginHost アーキテクチャ
**構造**:
```rust
pub struct PluginHost {
pub ring0: Arc<Ring0Context>, // Phase 88-90 実装済み
pub core: CoreServices, // Phase 91 skeleton
pub optional: HashMap<String, Arc<dyn Any>>,
}
```
**役割**:
- Ring0ContextOS APIと CoreServicesBox 実装)の橋渡し
- core_required Box の初期化保証
- optional/user プラグインの管理
### 8.2 CoreServices: Ring1-Core の顔
**定義**:
```rust
pub struct CoreServices {
pub string: Arc<dyn StringService>,
pub integer: Arc<dyn IntegerService>,
pub bool: Arc<dyn BoolService>,
pub array: Arc<dyn ArrayService>,
pub map: Arc<dyn MapService>,
pub console: Arc<dyn ConsoleService>,
}
```
**Phase 87 CoreBoxId との対応**:
| CoreBoxId | CoreBoxCategory | CoreServices | 実装状況 |
|-----------|----------------|--------------|---------|
| String | CoreRequired | ✅ string | Phase 91 skeleton |
| Integer | CoreRequired | ✅ integer | Phase 91 skeleton |
| Bool | CoreRequired | ✅ bool | Phase 91 skeleton |
| Array | CoreRequired | ✅ array | Phase 91 skeleton |
| Map | CoreRequired | ✅ map | Phase 91 skeleton |
| Console | CoreRequired | ✅ console | Phase 91 skeleton |
**設計原則**:
- core_required (6個) は全て CoreServices に含まれる
- 起動時に全フィールドが初期化されていなければ panic
- Phase 92 で UnifiedBoxRegistry から自動生成予定
### 8.3 NyashPlugin trait
**定義**:
```rust
pub trait NyashPlugin: Send + Sync {
fn descriptor(&self) -> PluginDescriptor;
fn register(&self, host: &mut PluginRegistry);
}
```
**用途**:
- プラグインの基本情報名前、バージョン、capabilities
- Phase 92 以降で既存プラグインシステムと統合予定
### 8.4 Phase 92 以降の計画
- UnifiedBoxRegistry から CoreServices への自動変換
- PluginHost.optional への optional/user プラグイン登録
- 既存 Box 実装と Service trait の接続