|
|
af6f95cd4b
|
Phase 33 NORM canon test: enforce normalized dev route for P1/P2/JP mini
|
2025-12-11 20:54:33 +09:00 |
|
|
|
dc90b96bb2
|
feat(phase114): FileIo trait 拡張 & メタデータ統一完成
Phase 113 で公開した .hako API は変更なく、内部実装を完全統一化。
FsApi(Ring0 stateless)と FileIo(Ring1 stateful)の設計を確立。
【実装内容】
Task 1: FileIo trait 拡張
- FileStat 構造体追加(is_file/is_dir/size)
- exists/stat/canonicalize メソッド追加(FileIo trait)
Task 2: Ring0FsFileIo 実装
- exists(): path を Ring0.fs で確認
- stat(): Ring0.fs.metadata() を FileStat に変換
- canonicalize(): Ring0.fs.canonicalize() を String に変換
Task 3: NoFsFileIo stub 実装
- exists() → false(全ファイルが「存在しない」扱い)
- stat() → Err(Unsupported)(FS 無効情報を返す)
- canonicalize() → Err(Unsupported)
Task 4: FileHandleBox 内部統一
- metadata_internal() を新規追加(FileIo::stat() ベース)
- is_file/is_dir/size を metadata_internal() 経由に統一
- Nyash 公開 API(ny_exists/ny_size/ny_isFile/ny_isDir)は変更なし
Task 5: テスト + ドキュメント
- Ring0FsFileIo: 5テスト(stat/exists/canonicalize)
- NoFsFileIo: 3テスト(exist/stat/canonicalize error)
- FileHandleBox: 5テスト(metadata_internal/exists/is_file/is_dir)
- すべてのテスト PASS
【設計原則確立】
FsApi ↔ FileIo の責務分担:
- FsApi (Ring0): Stateless(パスを毎回指定)
- FileIo (Ring1): Stateful(path を内部保持)
- FileHandleBox: FileIo::stat() で一元化
Profile 別動作:
- Default: 全機能正常動作
- NoFs: exists=false, stat/canonicalize は Unsupported エラー
【統計】
- 修正ファイル: 9ファイル
- 追加行: +432行、削除: -29行
- 新規テスト: 13個(全PASS)
- ビルド: SUCCESS
【効果】
- 内部実装が完全統一(二重実装・不一貫性排除)
- Phase 115+ での拡張(modified_time/permissions等)が容易に
- FsApi と FileIo の設計がクリアに確立
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-04 03:58:02 +09:00 |
|
|
|
fce7555e46
|
feat(phase111): FileHandleBox append+metadata実装(修正案統合版)
Task 2: FsApi / Ring0FsFileIo 拡張
- FsApi trait に append_all(path, data) メソッド追加
- StdFsApi で append_all() を std::fs::OpenOptions で実装
- Ring0FsFileIo に mode を保持、write() で truncate/append を切り替え
- Ring0FsFileIo に内部 metadata() ヘルパ追加(FsApi.metadata() 呼び出し)
Task 3: FileHandleBox API 実装
- open(path, mode) で "r"/"w"/"a" 3モードをサポート
- write_all() で read-only mode チェック
- 内部 Rust API:size / exists / is_file / is_dir メソッド実装
(NyashBox 公開は Phase 112+ に延期)
Task 5: テスト + ドキュメント
- 4つの新テスト PASS:
- test_filehandlebox_append_mode(write→append→内容確認)
- test_filehandlebox_metadata_size(size() 取得)
- test_filehandlebox_metadata_is_file(is_file()/is_dir())
- test_filehandlebox_write_readonly_error("r"で write 拒否)
統計:
- 9ファイル修正(+316行, -35行)
- 4つの新テスト追加(既存15テスト全PASS)
- cargo build --release: SUCCESS
- 11個のチェックリスト: ✅ ALL PASS
次フェーズ(Phase 112-114)の backlog も指示書で整理済み
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-03 21:30:47 +09:00 |
|
|
|
4ef3e7f56c
|
feat(phase109): RuntimeProfile設計で FileBox を条件付き optional に
Phase 109 完全実装完了:
- RuntimeProfile enum (Default, NoFs) で profile 制御
- CoreBoxId.is_required_in(profile) で条件付き required/optional
- initialize_runtime() で env 読み込み責務を一元化(修正1)
- NoFsFileIo スタブで no-fs プロファイルでの FileBox 無効化(修正2)
- Logger/ConsoleService は no-fs でも有効と明示(修正2)
- Profile 拡張予定(TestMock/Sandbox/ReadOnly/Embedded)を予約(修正3)
実装ファイル:
- src/runtime/runtime_profile.rs (新規)
- src/providers/ring1/file/nofs_fileio.rs (新規)
- src/runtime/core_box_ids.rs (修正)
- src/runtime/plugin_host.rs (修正)
- src/runtime/provider_lock.rs (修正)
- docs 更新
テスト: Phase 109 11/11 PASS ✅
ビルド: cargo build --release SUCCESS ✅
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-03 19:37:32 +09:00 |
|
|
|
61dc4dec9b
|
feat(filebox): Phase 108 FileBox write/write_all implementation
Implement write functionality for FileBox following Phase 108 specification,
completing the read/write pipeline via Ring0.FsApi.
## Implementation Summary
### Task 2: FsApi / Ring0FsFileIo write implementation
- Added write() method to FileIo trait
- Implemented write() in Ring0FsFileIo (truncate mode via Ring0.FsApi.write_all)
- Updated FileCaps to { read: true, write: true } for standard profile
- Added write() stub to CoreRoFileIo (returns Unsupported)
### Task 3: FileBox write/write_all implementation
- Updated FileBox.write_all() to delegate to provider.write()
- Updated FileBox.write() to convert content to text and call provider.write()
- UTF-8 conversion via String::from_utf8_lossy (text-oriented design)
- Returns "OK" on success, "Error: ..." on failure
### Task 4: Test coverage
- Round-trip test (write → read): ✅ PASS
- Truncate mode verification: ✅ PASS
- Write without open error: ✅ PASS
- Read-only provider rejection: ✅ PASS
- Auto-registration test updated: ✅ PASS
### Task 5: Documentation updates
- phase107_fsapi_fileio_bridge.md: Added Phase 108 section
- core_boxes_design.md: Updated Ring0.FsApi relationship section
- CURRENT_TASK.md: Added Phase 108 completion entry
## Design Decisions (from phase108_filebox_write_semantics.md)
- **Write mode**: truncate (overwrite existing file each time)
- **Text-oriented**: UTF-8 conversion via from_utf8_lossy
- **Append mode**: Planned for Phase 109+
- **Error handling**: FileError::Io for failures, Fail-Fast on caps.write=false
## Test Results
```
cargo test --release --lib filebox
test result: ok. 5 passed; 0 failed; 1 ignored
```
All FileBox tests pass, including Phase 107 compatibility tests.
## Pipeline Complete
```
FileBox.write(content)
↓
FileBox.write_all(buf)
↓
provider.write(text) ← Ring0FsFileIo implementation
↓
Ring0.FsApi.write_all()
↓
std::fs::write()
```
## Next Steps (Backlog)
- Phase 109: minimal/no-fs profile
- Phase 110: FileHandleBox (multiple files simultaneously)
- Phase 111: append mode implementation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-03 18:40:33 +09:00 |
|
|
|
0fd4962e4c
|
feat(Ring0): Phase 107 - Ring0.FsApi FileIo integration complete
Implementation Summary:
Phase 107 establishes FileBox as a unified layer over Ring0.FsApi
Completed Tasks:
- Task 1: FsApi SSOT review and documentation
- Task 2: FileIo designed as FsApi wrapper
- Task 3: Ring0FsFileIo implementation added
- Task 4: Fail-Fast integration verified
- Task 5: Documentation integration complete
Key Changes:
1. New File: src/providers/ring1/file/ring0_fs_fileio.rs
- Ring0.FsApi-based FileIo implementation
- Stateful wrapper (open/read/close)
- UTF-8 handling via read_to_string()
- One-file-at-a-time semantics (tested)
2. provider_lock.rs:
- Added init_default_filebox_provider()
- Auto-registration helper for Ring0FsFileIo
3. plugin_host.rs:
- with_core_from_registry_optional() auto-registers default provider
- Plugin priority maintained (debug logging)
- Phase 106 MissingService check still active (Fail-Fast preserved)
4. Documentation:
- phase107_fsapi_fileio_bridge.md: Complete design doc
- phase106_filebox_design_revised.md: Phase 107 integration notes
- core_boxes_design.md: Layer diagram and principles
Design Decisions:
- UTF-8 handling: read_to_string() for text-focused use cases
- One file at a time: open() returns Err if already open
- Plugin priority: init_default_filebox_provider() fails gracefully
Test Results:
- cargo build --release: SUCCESS
- plugin_host tests: 11 passed
- ring0_fs_fileio tests: 4 passed
Next Steps (Phase 108+):
- minimal/no-fs profile support
- write operations
- multi-file handle support
|
2025-12-03 18:16:49 +09:00 |
|
|
|
f9d100ce01
|
chore: Phase 25.1 完了 - LoopForm v2/Stage1 CLI/環境変数削減 + Phase 26-D からの変更
Phase 25.1 完了成果:
- ✅ LoopForm v2 テスト・ドキュメント・コメント完備
- 4ケース(A/B/C/D)完全テストカバレッジ
- 最小再現ケース作成(SSAバグ調査用)
- SSOT文書作成(loopform_ssot.md)
- 全ソースに [LoopForm] コメントタグ追加
- ✅ Stage-1 CLI デバッグ環境構築
- stage1_cli.hako 実装
- stage1_bridge.rs ブリッジ実装
- デバッグツール作成(stage1_debug.sh/stage1_minimal.sh)
- アーキテクチャ改善提案文書
- ✅ 環境変数削減計画策定
- 25変数の完全調査・分類
- 6段階削減ロードマップ(25→5、80%削減)
- 即時削除可能変数特定(NYASH_CONFIG/NYASH_DEBUG)
Phase 26-D からの累積変更:
- PHI実装改善(ExitPhiBuilder/HeaderPhiBuilder等)
- MIRビルダーリファクタリング
- 型伝播・最適化パス改善
- その他約300ファイルの累積変更
🎯 技術的成果:
- SSAバグ根本原因特定(条件分岐内loop変数変更)
- Region+next_iパターン適用完了(UsingCollectorBox等)
- LoopFormパターン文書化・テスト化完了
- セルフホスティング基盤強化
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: ChatGPT <noreply@openai.com>
Co-Authored-By: Task Assistant <task@anthropic.com>
|
2025-11-21 06:25:17 +09:00 |
|
|
|
07a254fc0d
|
feat(phase21.5): MirBuilder optimization prep + crate EXE infrastructure
Phase 21.5 optimization readiness - C-level performance target:
- MirBuilder: JsonFrag purify toggle (HAKO_MIR_BUILDER_JSONFRAG_PURIFY=1)
- Normalizer: extended f64 canonicalization + dedupe improvements
- loop_opts_adapter: JsonFrag path refinement for crate EXE compatibility
Infrastructure improvements:
- provider_registry: add diagnostics + ring-1 providers (array/console/map/path)
- mir_interpreter: add normalization/purify feature gates
- tools/selfhost_exe_stageb.sh: new end-to-end Stage-B→crate EXE pipeline
- tools/perf/microbench.sh: performance measurement tooling
Smoke tests (phase2100):
- Extend timeout 15s→120s for heavy crate EXE builds
- Add stageb_loop_jsonfrag_crate_exe_canary_vm.sh (target test)
- Add s3_backend_selector_crate_exe_vm_parity_return42_canary_vm.sh
Documentation:
- ENV_VARS.md: add Phase 21.5 optimization toggles
- README updates: clarify crate backend strategy
- phase215-optimization.md: new optimization roadmap
This commit sets the stage for Phase 21.5 critical optimization:
achieving C-level performance to decide hakorune's future viability.
|
2025-11-11 02:07:12 +09:00 |
|
|
|
ece91306b7
|
mirbuilder: integrate Normalizer (toggle), add tag-quiet mode, share f64 canonicalization; expand canaries; doc updates for quick timeout + dev toggles; Phase 21.5 optimization readiness
|
2025-11-10 23:17:46 +09:00 |
|