f775c0fe01
docs: Phase 131 P2 DirectValue exit reconnection complete
...
Update completion status for Phase 131 P2:
- CURRENT_TASK.md: Note WSL restart resolved EXDEV issue
- 10-Now.md: Add Phase 131 P2 completion entry
- phase-131/README.md: Document P1.5 and P2 deliverables
Phase 131 Status: DONE ✅
- loop(true) break-once executes correctly
- Exit values propagate through DirectValue mode
- VM + LLVM EXE parity verified
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2025-12-18 17:48:18 +09:00
bfac188732
docs: Phase 131 P1.5 DirectValue exit reconnection design
...
Add design documents for Phase 131 P1.5 DirectValue mode:
- Root cause analysis of PHI-based exit merge assumptions
- Option B (DirectValue) analysis and trade-offs
- Implementation guide for exit value reconnection
Also add exit_reconnector.rs module stub for future extraction.
Related:
- Phase 131: loop(true) break-once Normalized support
- Normalized shadow path uses continuations, not PHI
- Exit values reconnect directly to host variable_map
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2025-12-18 17:47:45 +09:00
bd39e09c5d
docs: Phase 131 P0 structure implementation complete
...
Document Phase 131 P0 Normalized loop(true) break-once:
**Documentation**:
- docs/development/current/main/phases/phase-131/README.md (234 lines)
- Goal: loop(true) { <assign>* ; break } in Normalized (PHI-free)
- Scope: one-time execution loop only
- Contract: Bool(true) literal + break at end
- SSOT: EnvLayout, loop structure contract, VM+LLVM parity
- Current status: structure implemented, execution wiring pending
- docs/development/current/main/10-Now.md
- Updated Next section with Phase 131 P0 status
**Deliverables** (P0):
- ✅ Complete loop(true) break-once Normalized lowering logic
- ✅ PHI-free implementation (env + continuations)
- ✅ Box-First modular design
- ✅ Foundation for execution (structure verified)
- ✅ Unit tests passing (1155/1155)
**Known Limitation**:
- Execution path not yet wired (dev-only observation mode)
- Follow-up phase needed to route execution through Normalized shadow
- VM/LLVM smokes fail (expected until execution wiring)
**Next Steps**:
1. Modify try_cf_loop_joinir to check Normalized shadow first
2. Add dev-mode routing for loop(true) break-once
3. Implement JoinModule → MIR merge for loop patterns
4. Enable VM/LLVM smoke tests
Related: Phase 131 P0 - loop(true) break-once Normalized structure
2025-12-18 09:36:50 +09:00
353b8022af
docs: clarify Phase 130 LLVM EXE smoke gating
2025-12-18 09:22:15 +09:00
b5d628d8bf
docs: Phase 130 DONE (if-only normalized small expr/assign)
2025-12-18 09:13:19 +09:00
05fccce09a
docs: add Phase 130 plan and set Now to Phase 130
2025-12-18 08:36:38 +09:00
80df1cccd4
feat(control_tree): Phase 129-C post-if via post_k continuation
2025-12-18 08:33:56 +09:00
b2af9fb297
docs: update normalized_shadow references and Phase 129 status
2025-12-18 08:18:20 +09:00
36717cad4f
docs: update Now/INDEX for Phase 129-B join_k as-last
2025-12-18 07:54:16 +09:00
088122df71
docs: update Now/INDEX for Phase 127 DONE and Phase 129 next
2025-12-18 07:28:30 +09:00
b822355431
docs: Phase 129 progress report (P0-P3 complete)
...
## Completed ✅
P0: LLVM EXE smoke test for Phase 128
- VM+LLVM parity verified
- Regression tests pass (phase103, phase118, phase128)
P2: Post-if return var fixture + VM smoke
- phase129_if_only_post_if_return_var_min.hako
- Tests join_k env merge pattern
- Currently passes via fallback (non-Normalized)
P3: Documentation complete
- README.md: Goal, design, scope
- P1-implementation-plan.md: Detailed refactoring plan
- PROGRESS.md: This report
## In Progress 🔄
P1: Materialize join_k continuation
- Status: Analysis complete, awaiting user decision
- Options:
- A: In-place (fast, risky)
- B: Phased (recommended, safe)
## Test Results ✅
- cargo test --lib: 1165 passed
- phase128 VM: PASS
- phase128 LLVM EXE: PASS
- phase129 VM: PASS (fallback path)
- Regression: ALL PASS
## Feedback
Box-First:
- JoinKBuilder module proposed (join_k generation)
- EnvBuilder future consideration
Fail-Fast:
- verify_normalized_structure proposed
- verify_branch_is_return_literal too restrictive
Legacy:
- Phase 123-124 lower_if_node incomplete
- Placeholder logic in lhs_vid resolution
## Next Steps
Awaiting user/ChatGPT decision on Option A vs B
2025-12-18 07:20:46 +09:00
0d2eafd780
docs: Phase 129 P1 implementation plan (join_k materialization)
...
Detailed analysis of current state and required changes:
Current Issues:
- lower_if_node only processes then branch (incomplete)
- No join_k function generation
- verify_branch_is_return_literal too restrictive
- No env merging logic
Required Changes:
- Create JoinKBuilder helper (Box-First)
- Generate join_k as real JoinFunction
- then/else tail-call join_k with env
- Process post-if statements in join_k body
- Add verify_normalized_structure checks
Implementation Options:
- Option A: In-place modification (risky, fast)
- Option B: Phased approach (recommended, safe)
Recommended: Option B (3-phase rollout)
- Phase 129-A: JoinKBuilder foundation
- Phase 129-B: Branch lowering to join_k
- Phase 129-C: Post-if statement support
Open Questions:
1. Function ID allocation strategy
2. Post-if statement detection mechanism
3. env parameter passing representation
4. join_k naming convention
Next: User/ChatGPT decision on approach
2025-12-18 07:19:22 +09:00
083be99214
test(joinir): Phase 129 P2 - add post-if return var fixture + VM smoke
...
- Add phase129_if_only_post_if_return_var_min.hako
- Pattern: x=1; if flag==1 { x=2 }; print(x)
- Tests join_k continuation env merge
- Add phase129_if_only_post_if_return_var_vm.sh
- Expected output: 2 (x updated in then branch)
- Dev-only: NYASH_JOINIR_DEV=1 HAKO_JOINIR_STRICT=1
Note: Currently passes via fallback path (non-Normalized)
P1 implementation (join_k materialization) is next step
2025-12-18 07:18:00 +09:00
d74f77d2ed
docs: Phase 128 DONE
2025-12-18 07:08:32 +09:00
85ee761858
docs: Phase 128 plan (if-only env merge)
2025-12-18 06:59:50 +09:00
9aedc19413
docs: add Phase 127 entry (planned)
2025-12-18 06:55:29 +09:00
49c2bdf2e9
docs: Phase 126 feedback report
...
- Box-first modularization: AvailableInputsCollectorBox (SSOT)
- All P0-P5 steps completed successfully
- Regression: 1165 tests PASS, all smokes PASS
- Next steps: Phase 127 (strict fail-fast, CapturedEnv integration)
2025-12-18 06:47:43 +09:00
b195e8bad9
docs: Phase 126 DONE (available_inputs wired)
...
- AvailableInputsCollectorBox: function params + CapturedEnv SSOT
- EnvLayout.inputs: reads ∩ available_inputs (deterministic)
- Reads-only inputs resolution実装完了(dev-only)
- Regression: 1165 tests PASS, Phase 121-125/118 smokes PASS
- 次: Phase 127 TBD
2025-12-18 06:46:43 +09:00
b7a16aacd0
docs: Phase 126 plan (wire available_inputs)
2025-12-18 06:40:36 +09:00
aabb67cdc2
docs: Phase 125 P2-P5 feedback (boxification review)
...
Feedback summary:
- 単一責任: EnvLayout / lower_return_value
- SSOT: reads ∩ available_inputs
- Fail-Fast: 構造化エラー + hint
- 段階的投入: 構造のみ(P3 で完成)
Good:
- Single responsibility principle maintained
- SSOT approach for env layout
- Fail-Fast with structured errors
- Graceful degradation (Ok(None))
Improvement proposals:
- P3 wiring clarification
- EnvLayout responsibility scope
- Error hint context-awareness
- Fixture completeness after P3
Next: Phase 125 P3 (available_inputs wiring)
Ref: docs/development/current/main/phases/phase-125/FEEDBACK.md
2025-12-18 06:33:55 +09:00
d7c77e1046
docs: Phase 125 P2-P5 DONE (structure-only, P3 pending)
...
Phase 125 P2-P5 完了:
- EnvLayout (writes + inputs) 導入
- Return(Variable) 解決拡張(writes or inputs)
- Fail-Fast with hint(構造化エラー)
- Unit tests: 18/18 PASS
- Integration smoke: PASS
- Regression: Phase 121-124, 118 維持
Next: Phase 125 P3 (available_inputs wiring)
- routing.rs / lowering.rs で available_inputs を配線
- SSOT: function params + CapturedEnv
Ref: docs/development/current/main/phases/phase-125/README.md
2025-12-18 06:33:03 +09:00
7eeeb588e4
docs: add Phase 125 entry (planned)
2025-12-18 06:28:39 +09:00
d044af1fbc
docs: Phase 124 DONE
...
Phase 124 完了:
- reads facts SSOT 化(StepTreeFacts/Contract に追加)
- Return(Variable) from env (writes) サポート(dev-only)
- env マッピング(変数名 → ValueId)を writes から生成
- extract_variables_from_ast() で Variable 抽出を SSOT 化
- Fail-Fast 原則(env に無い Variable はエラー)
- Unit tests: 1159 PASS (including test_return_variable_from_env)
- Integration smoke: PASS (phase124_if_only_return_var_vm.sh)
- 回帰確認: Phase 121/123/118 全て PASS
- 10-Now.md 更新(Phase 124 完了、Phase 125 計画追加)
2025-12-18 06:10:17 +09:00
fb4ec2c2bf
docs: Phase 124 plan (reads facts + return var)
2025-12-18 05:54:51 +09:00
4f0ffae70d
docs: Phase 123 DONE
...
Updates documentation to reflect Phase 123 completion.
**Updates**:
1. `docs/development/current/main/phases/phase-123/README.md`:
- Marked all success criteria as complete
- Added comprehensive DONE section with implementation details
- Documented key design decisions (graceful degradation, fail-fast, box-first)
- Added verification commands and next steps (Phase 124)
2. `docs/development/current/main/10-Now.md`:
- Moved Phase 123 from "Next" to "2025-12-18: Phase 123 完了"
- Added Phase 123 summary (Return literal, If minimal compare, graceful degradation)
- Updated "Next" to Phase 124 (Normalized reads facts + Return(Variable))
3. `docs/development/current/main/01-JoinIR-Selfhost-INDEX.md`:
- Added Phase 123 entry: "Normalized semantics (Return literal + If minimal compare, dev-only)"
**Phase 123 Summary**:
- P0: Docs complete, scope frozen ✅
- P1: Return(Integer literal) working ✅
- P2: Return(Variable) returns Ok(None) (graceful degradation) ✅
- P3: If(minimal compare) generates correct JoinIR ✅
- P4: Integration smoke passing ✅
- P5: Docs updated ✅
**Verification**:
- Unit tests: 8 passed
- Integration smoke: PASS
- Legacy tests: Still passing (graceful degradation confirmed)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-18 05:50:29 +09:00
51ed137339
docs: Phase 123 plan (if-only normalized semantics)
2025-12-18 05:29:34 +09:00
bf7d3899b0
docs: Phase 122 DONE (if-only Normalized emit dev-only)
2025-12-18 04:54:49 +09:00
c92154966c
docs: add Phase 122 entry (planned)
2025-12-18 04:48:53 +09:00
95c9394396
docs: Phase 122 plan (if-only emit)
2025-12-18 04:48:49 +09:00
2a53f87d10
docs: Phase 121 DONE (StepTree→Normalized shadow parity for if-only)
2025-12-18 04:40:53 +09:00
8d930d2dcc
docs: Phase 121 StepTree→Normalized shadow plan
2025-12-18 04:27:30 +09:00
9d5e58305e
docs: Phase 120 DONE
2025-12-18 04:19:48 +09:00
4e863c7cd8
docs: Phase 120 StepTree facts/contract SSOT
2025-12-18 04:16:04 +09:00
708accc853
docs: Phase 119 DONE
2025-12-18 04:09:47 +09:00
84d63ac11b
docs: Phase 119 StepTree cond SSOT (AST handle)
2025-12-18 04:03:50 +09:00
5091cda9cb
docs: Phase 118 DONE (loop+if merge parity)
2025-12-18 03:43:16 +09:00
2c7f5f7a5e
docs: Phase 117 DONE
...
Phase 117: if-only nested-if + call merge parity completed.
**Documentation**:
- docs/development/current/main/phases/phase-117/README.md (complete)
- docs/development/current/main/10-Now.md (updated with Phase 117 entry)
- docs/development/current/main/01-JoinIR-Selfhost-INDEX.md (added Phase 117 to index)
**Phase 117 Summary**:
- Verified nested if-only (inner if + outer else) with call merge
- Pattern: 3 call sites (f(1), f(2), f(3)) merge to single variable
- VM/LLVM EXE parity: both produce identical output "2\n3\n4"
- Regression: Phase 116 maintained
**Technical Details**:
- JoinIR Pattern3 (if-only) nested structure validation
- Call merge across nested control flow
- PHI node generation for nested branches
- LLVM EXE plugin integration (StringBox, IntegerBox, ConsoleBox)
**Next Steps**:
Phase 118+ will address more complex nested patterns (if-else nested, loop-if combinations).
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-18 02:55:14 +09:00
f63b5c3c64
docs: fix INDEX numbering + refresh backlog after Phase 116
...
- Fixed INDEX numbering: 24/25 → 28/29 (was duplicated after Phase 116 additions)
- Updated Backlog: next candidate Phase 114 → Phase 117 (nested if + call merge)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-18 02:52:01 +09:00
8440550b2f
docs: Phase 116 DONE
...
Phase 116 完了ドキュメント化
## 更新内容
### Phase 116 README
- 背景: LLVM fragile pattern(keep+call merge)
- 実装内容: fixture, VM smoke, LLVM EXE smoke
- 検証コマンド
- 技術的詳細: JoinIR Pattern 1, PHI接続
- Lessons Learned: Box-First原則, Fail-Fast原則
### 10-Now.md
- Phase 116 完了エントリ追加
- 入口: `docs/development/current/main/phases/phase-116/README.md`
### 01-JoinIR-Selfhost-INDEX.md
- Phase 116 を JoinIR Phase リストに追加
- 番号の重複を修正(18-27に整理)
## 成果物
✅ 片側元値保持、片側call結果のmergeパターンをVM/LLVM両方で固定
✅ output_validator.sh, llvm_exe_runner.sh 活用で統一的なテスト基盤
✅ 回帰防止: Phase 115 維持確認
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-18 02:39:44 +09:00
0a29f1443e
test: Phase 115 if-only call result merge parity (VM + LLVM EXE)
...
Phase 115実装 - if分岐内での関数呼び出し結果をマージするパターンを固定
**実装内容**:
- Fixture: phase115_if_only_call_merge_min.hako (expected: 2, 3)
- if/else両分岐で関数呼び出し f() の結果を変数 v に代入
- if後にマージされた v を使用(LLVM EXE でのPHI node生成を検証)
- VM smoke: phase115_if_only_call_merge_vm.sh
- NYASH_DISABLE_PLUGINS=1 HAKO_JOINIR_STRICT=1 で実行
- LLVM EXE smoke: phase115_if_only_call_merge_llvm_exe.sh
- llvm_exe_runner.sh を利用した標準パリティ検証
**検証結果**:
- VM test: PASS ✅
- LLVM EXE test: PASS ✅
- Phase 114 regression: PASS ✅
**箱化モジュール化の観点**:
- 単一責任: 各smokeは1パターンのみ検証(call result merge)
- 分離: VM/LLVM EXEで独立したテスト(llvm_exe_runner.sh経由)
- Fail-Fast: HAKO_JOINIR_STRICT=1 で不正な制御フローを即座に検出
**関連**:
- Phase 103: If-Only基本パリティ(制御フロー基礎)
- Phase 113: If-Only部分代入パリティ(変数マージ)
- Phase 114: If-Only return+post パリティ(early returnとpost-if文)
- Phase 115: If-Only call result merge パリティ(関数呼び出し結果マージ) ← 今回
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-18 02:32:08 +09:00
97675b4035
docs: Phase 114 DONE
...
Phase 114完了に伴うドキュメント更新:
- 30-Backlog.md: Phase 114の次候補から完了済みに移行
- design/control-tree.md: Phase 110-112の進捗反映
- design/README.md, joinir-design-map.md, phases/README.md: マイナー更新
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-18 02:19:41 +09:00
80be814fa4
test: Phase 114 if-only return+post parity (VM + LLVM EXE)
...
Phase 114 validates that if-only lowering correctly handles cases with:
- Early return in the if-only branch
- Post-if statements that execute on the else path
- Different return values from each path
Fixture: apps/tests/phase114_if_only_return_then_post_min.hako
- Expected output: 7\n2
- f(1): condition true → early return 7
- f(0): condition false → x=1+1=2, return 2
Testing:
- VM backend: phase114_if_only_return_then_post_vm.sh ✅
- LLVM EXE backend: phase114_if_only_return_then_post_llvm_exe.sh ✅
- Regression: Phase 103/113 maintained ✅
Implementation: No new code required - validates existing if-only
exit line routing and post-if statement processing.
Documentation:
- docs/development/current/main/phases/phase-114/README.md
- Updated: 10-Now.md, 01-JoinIR-Selfhost-INDEX.md
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-18 02:18:57 +09:00
70fe0da549
docs: Phase 113 if-only partial assign parity
...
- Create phases/phase-113/README.md (background, fixed pattern, verification)
- Update 10-Now.md with Phase 113 completion
- Update 01-JoinIR-Selfhost-INDEX.md with Phase 113 entry
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-18 01:58:56 +09:00
7829b23cf4
docs: note Phase 110-112 control_tree status
...
- Update 10-Now.md with Phase 112 completion
- Note: StepTree capability guard (strict-only) implemented
- Note: Default behavior unchanged, only affects HAKO_JOINIR_STRICT=1
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-18 01:39:06 +09:00
14730c227f
feat(control_tree): add StepTreeContract and signature (dev-only)
2025-12-18 00:57:58 +09:00
67a2408da5
docs: clarify StepTree boundary (no routing)
2025-12-18 00:30:04 +09:00
b32480823d
docs: add ControlTree/StepTree SSOT
2025-12-18 00:14:04 +09:00
a27e3ce908
docs: Phase 109 DONE
...
- Create phases/phase-109/README.md
- Update 10-Now.md with completion report
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-17 23:45:55 +09:00
23e7f4629f
docs: Phase 109 plan (error_tags hints SSOT)
...
- Add hint policy to joinir-design-map.md
- Document format: [joinir/<category>/<tag>] <msg> Hint: <hint>
- Establish SSOT for error messages
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-17 23:45:32 +09:00
46c924ac6d
docs: add Phase 108 entry
2025-12-17 23:30:13 +09:00