# Self Current Task — Backlog (main)

Status: Active  
Scope: 「次にやる候補」を短く列挙するメモ。現状は `docs/development/current/main/10-Now.md` を入口にする。  
Related:
- `docs/development/current/main/10-Now.md`
- `docs/development/current/main/DOCS_LAYOUT.md`

## 直近（JoinIR/selfhost）

- **real-app loop regression の横展開（VM + LLVM EXE）**
  - ねらい: 実コード由来ループを 1 本ずつ最小抽出して fixture/smoke で固定する（段階投入）。
  - 現状: Phase 107（find_balanced_array/object / json_cur 由来）まで固定済み。
  - 次候補: JsonLoader/JsonCur から 1 本ずつ（fixture + integration smoke）で増やす。

- **P5b “完全E2E”**（escape skip の実ループを end-to-end で固定）
  - 現状: Phase 94 で VM E2E まで固定済み。次は selfhost 実コード（`apps/selfhost-vm/json_loader.hako`）へ横展開して回帰を減らす。
  - 入口: `docs/development/current/main/phases/phase-94/README.md`

- **制御の再帰合成（docs-only → dev-only段階投入）**
  - ねらい: `loop/if` ネストの "構造" を SSOT（ControlTree/StepTree）で表せるようにする
  - 注意: canonicalizer は観測/構造SSOTまで（ValueId/PHI配線は Normalized 側へ）
  - 現状: Phase 119–126（cond SSOT / facts→contract / shadow parity / JoinModule生成 / semantics / reads+return-var / reads-only inputs / available_inputs wiring）まで完了
  - 次候補（Phase 127）: unknown-read strict Fail-Fast（reads にあるが available_inputs に無い変数の検出）
  - 入口: `docs/development/current/main/design/control-tree.md`

## 中期（ループ在庫の残り）

- **P5（guard-bounded）**: 大型ループを “小粒度” に割ってから取り込む（分割 or 新契約）
- **P6（nested loops）**: capability guard で Fail-Fast 維持しつつ、解禁時の契約を先に固定

## ドキュメント運用

- 重複が出たら「設計 SSOT（design）」に集約し、Phaseログ（phases）は “何をやったか/検証したか” に限定する
- 調査ログ（investigations）は結論を SSOT に反映してから Historical 化する
