Status: Active Scope: `StringUtils.is_integer/1`(nested-if + loop)を JoinIR で受理して `--profile quick` を進める。 Related: - Now: `docs/development/current/main/10-Now.md` - Phase 258: `docs/development/current/main/phases/phase-258/README.md` - Design goal: `docs/development/current/main/design/join-explicit-cfg-construction.md` # Phase 259: `StringUtils.is_integer/1` (nested-if + loop) ## Current Status (SSOT) - Current first FAIL: `json_lint_vm / StringUtils.is_integer/1` - Shape summary(ログ由来): - prelude: nested-if to compute `start` (handles leading `"-"`) - loop: `loop(i < s.length()) { if not this.is_digit(s.substring(i, i+1)) { return false } i = i + 1 }` - post: `return true` - caps: `If,Loop,NestedIf,Return` ## Goal - `StringUtils.is_integer/1` を JoinIR で受理し、quick の first FAIL を次へ進める ## Proposed Approach (P0) 方針: prelude(nested-if)は既存 lowering のまま、loop 部分だけを scan パターンへ寄せる(構造で解決)。 P0 の狙い: - loop の core は “scan until mismatch” で、Pattern6(scan)と近い - ただし return 値が `i/-1` ではなく `true/false` なので、scan パターンの “return payload” を一般化する必要がある可能性がある