docs(joinir): Phase 80 Tasks 80-0/80-A - Status verification + design doc

Task 80-0: Current status verification
-  970/970 lib tests PASS (production stable)
-  Core VM smoke tests PASS (json_pp_vm)
-  Phase 79 E2E tests broken (AST API mismatch, out-of-scope)
-  Pre-existing json_lint_vm failure (Pattern2 verifier, out-of-scope)
- **Conclusion**: Phase 80 has ZERO blockers

Task 80-A: SSOT design doc created
- New: docs/development/current/main/phase80-bindingid-p3p4-plan.md (336 lines)
- Pattern3/4 BindingId wiring strategy
- Implementation order: 80-B (P3) → 80-C (P4) → 80-D (E2E)
- Code examples and success metrics
- Fallback detection mechanism (existing log tags)

Design principles (consistent with Phase 74-79):
- Dev-only code (feature-gated)
- Dual-path maintained (BindingId priority + name fallback)
- Structural detection only (NO by-name branching)
- Fail-Fast error handling
- Zero production impact

Updated docs:
- 01-JoinIR-Selfhost-INDEX.md: Phase 79 Activation status
- 10-Now.md: Phase 80 tasks 80-0/80-A complete
- 20-Decisions.md: BindingId migration complete status
- joinir-architecture-overview.md: Phase 79/80 sections

Next: Task 80-B (Pattern3 BindingId registration)
This commit is contained in:
nyash-codex
2025-12-13 17:26:15 +09:00
parent b7f7882558
commit 889492b617
5 changed files with 311 additions and 1 deletions

View File

@ -1,9 +1,13 @@
# Self Current Task — Decisions (main)
20251213
- JoinIR lowering の name-based 変数解決は、dev-only`normalized_dev`)で BindingId-based に段階移行するdual-path を維持)。
- promoted carriersDigitPos/Trim などの synthetic nameは、`BindingId(original) → BindingId(promoted) → ValueId(join)` の鎖で接続し、by-name ルール分岐は導入しない。
- debug/観測は既存のフラグ(例: `NYASH_JOINIR_DEBUG`)に集約し、新しい環境変数のスパローは避ける。
20250908
- ループ制御は既存命令Branch/Jump/Phiで表現し、新命令は導入しない。
- Builder に loop_ctx{head, exit}を導入し、continue/break を分岐で降ろす。
- Verifier の支配関係/SSA を崩さないよう、単一 exit と postterminated 後の emit 禁止を徹底。
- VInvokevector 経路)の戻り値は、短期は「既知メソッドの整数返り」を特例扱いで保持し、
中期は nyash.toml の戻り型ヒント or NyRT シムの期待フラグで正道化。