refactor: Phase 109後のコード整理・改善(セットA/B/C完全実装)
全セット実装で総95行の純削減を達成(190削除, 95追加) ## Set A: Quick Wins (55行削減) - FileBox caps check を check_write_capability() ヘルパーに統一 - is_required_in() から冗長な local variable 削除 - 未使用の CoreServicesConfig::from_env() 削除 ## Set B: Architecture Refinement (65行削減) - provider_lock の責務を「登録」のみに限定(init_* メソッド削除) - PluginHost を initialization hub に統一 - profile-aware provider 初期化を一元化 - Default/NoFs の両 profile に対応 - FileBox::new() を Result-based に改善(Fail-Fast) - delete()/copy() デッドコード削除(実装なし) - PluginRegistry skeleton 削除(Phase 92 未実装プレースホルダ) ## Set C: Future-Proofing (+36行, 46追加/10削除) - RuntimeProfile ドキュメント大幅拡充 - 現在のプロファイル(Default, NoFs)の詳細説明 - 将来のプロファイル(TestMock, Sandbox, ReadOnly, Embedded)を明示 - PluginHost::new_skeleton() 削除 ## 設計改善 1. **責務分離の明確化**: - provider_lock: 登録のみ (set/get) - PluginHost: initialization hub (profile-aware setup) - initialize_runtime: env読み込みのみ 2. **Fail-Fast 原則の強化**: - FileBox provider missing → 即座にエラー(Default profile) - new() でパニック vs try_new() で Result 3. **将来への足がかり**: - Profile システムは拡張可能に設計 - TestMock/Sandbox/ReadOnly/Embedded への対応準備完了 テスト: - 既存テスト: 25/25 PASS ✅ - ビルド: SUCCESS ✅ ファイル変更: - src/boxes/file/mod.rs (-58) - src/runtime/core_box_ids.rs (-6) - src/runtime/mod.rs (-23) - src/runtime/plugin_host.rs (-90) - src/runtime/provider_lock.rs (-62) - src/runtime/runtime_profile.rs (+46) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -106,15 +106,15 @@ macro_rules! console_println {
|
||||
/// Phase 95: global に登録して get_core_plugin_host() でアクセス可能に
|
||||
/// Phase 109: RuntimeProfile に基づく条件付き初期化
|
||||
///
|
||||
/// # Responsibility Separation (Phase 109 Modification 1)
|
||||
/// # Responsibility Separation (Phase 109)
|
||||
///
|
||||
/// - **initialize_runtime**: 環境変数から profile を読む(唯一の env reader)
|
||||
/// - **PluginHost**: profile を引数として受け取る(env に依存しない)
|
||||
/// - **PluginHost**: profile を引数として受け取り、provider 初期化を実行(initialization hub)
|
||||
///
|
||||
/// # Profile behavior
|
||||
///
|
||||
/// - **Default**: FileBox provider 必須(Fail-Fast)、全 core services 有効
|
||||
/// - **NoFs**: FileBox provider optional(disabled stub)、core services のみ有効
|
||||
/// - **NoFs**: FileBox provider optional(NoFsFileIo stub)、core services のみ有効
|
||||
pub fn initialize_runtime(ring0: std::sync::Arc<Ring0Context>) -> Result<(), CoreInitError> {
|
||||
use crate::box_factory::UnifiedBoxRegistry;
|
||||
use crate::box_factory::builtin::BuiltinBoxFactory;
|
||||
@ -127,22 +127,7 @@ pub fn initialize_runtime(ring0: std::sync::Arc<Ring0Context>) -> Result<(), Cor
|
||||
// Phase 94: BuiltinBoxFactory を登録して core_required Boxes を提供
|
||||
registry.register(std::sync::Arc::new(BuiltinBoxFactory::new()));
|
||||
|
||||
// Phase 109: Profile-aware FileBox provider initialization
|
||||
// Note: This is done BEFORE PluginHost initialization to allow plugin override
|
||||
match profile {
|
||||
RuntimeProfile::Default => {
|
||||
// Default profile: FileBox provider will be auto-registered in PluginHost
|
||||
// (no action needed here, kept for documentation)
|
||||
}
|
||||
RuntimeProfile::NoFs => {
|
||||
// NoFs profile: Register NoFsFileIo stub
|
||||
use crate::runtime::provider_lock;
|
||||
let _ = provider_lock::init_filebox_provider_for_profile(&ring0, &profile);
|
||||
// Ignore error - PluginHost will handle missing provider gracefully
|
||||
}
|
||||
}
|
||||
|
||||
// Phase 109: Pass profile to PluginHost (env-independent)
|
||||
// Phase 109: PluginHost acts as initialization hub (handles FileBox provider)
|
||||
let plugin_host = plugin_host::PluginHost::with_core_from_registry_optional(
|
||||
ring0,
|
||||
®istry,
|
||||
|
||||
Reference in New Issue
Block a user