Files
hakorune/docs/development/current/main/DOCS_LAYOUT.md
tomoaki 4496b6243d feat(joinir): Phase 259 P0 complete - Pattern8 final fixes + docs (pre-block-params migration)
Phase 259 P0: Pattern8 (BoolPredicateScan) 完全完了
is_integer/1 を Pattern8 で受理し、VM/LLVM EXE 両方で動作確認完了。
次の大工事(block-parameterized CFG への移行)前のマイルストーンとして記録。

## Key Fixes Applied

1. **skipped_entry_redirects** (instruction_rewriter.rs)
   - k_exit のスキップ時、entry block 参照を exit_block_id へリダイレクト
   - BasicBlockId not found エラーを根治

2. **loop_var_name** (pattern8_scan_bool_predicate.rs)
   - merge_entry_block 選択に使用(`Some(parts.loop_var.clone())`)
   - 未設定時の誤った entry block 選択を修正

3. **loop_invariants** (pattern8_scan_bool_predicate.rs)
   - PHI-free 不変量パラメータ(`[(me, me_host), (s, s_host)]`)
   - loop_var_name 設定時、BoundaryInjector が join_inputs Copy を全スキップするため必要
   - Pattern6 と同じ設計(header PHI で不変量を保持)

4. **expr_result** (pattern8_scan_bool_predicate.rs)
   - k_exit からの返り値を明示設定(`Some(join_exit_value)`)
   - Pattern7 style(推測ではなく明示)

5. **Smoke test scripts**
   - set +e パターンで exit code 7 をキャプチャ
   - LLVM EXE スクリプトにコメント追加(tools/build_llvm.sh 経由の明記)

## Contract Documentation

- join-explicit-cfg-construction.md に Pattern8 契約の具体例を追加
  - "pattern増でも推測増にしない" の実例として記録
  - loop_var_name / loop_invariants / expr_result / jump_args_layout の契約を明示
- 20-Decisions.md に正規化(Semantic/Plumbing)の分離方針を追記
- DOCS_LAYOUT.md に重要ドキュメントへの参照を追加

## Test Results

-  VM smoke test: `[PASS] phase259_p0_is_integer_vm` (exit 7)
-  LLVM EXE: tools/build_llvm.sh 経由で exit 7 確認
-  --verify: PASS

## Next FAIL (Phase 260+)

- Function: `Main.main/0` in `apps/examples/json_lint/main.hako`
- Error: `[cf_loop/pattern2] Failed to extract break condition from loop body`
- Pattern: Nested loop(外側 loop + 内側 loop with break)

🚀 次の大工事: block-parameterized CFG への移行を開始します。

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 03:21:22 +09:00

3.7 KiB
Raw Blame History

Docs Layout (SSOT)

Status: SSOT
Scope: docs/development/current/ 以下の「置き場所ルール」と、SSOT/履歴メモの混在を防ぐための最小ガイド。

目的

  • 入口(読む順序)と、詳細(設計図/調査/Phaseログを分離して迷子を防ぐ。
  • “Phase 文書が増えても” SSOT が埋もれないようにする。
  • 大規模移動はしない(リンク切れ回避)。以後の追加分から秩序を作る。

ディレクトリの役割(推奨)

docs/development/current/main/(入口・現状)

ここは「まず読む」入口を置く場所。SSOT を全部ここに置かない。

  • 入口(例): 00-Overview.md, 01-JoinIR-Selfhost-INDEX.md, 10-Now.md, 20-Decisions.md, 30-Backlog.md

docs/development/current/main/design/設計図・SSOT寄り

設計の SSOT / 長期参照の設計図を置く。

  • 原則: Phase 依存のログ/作業記録は置かない(それは phases へ)。
  • 例: JoinIR の設計、Boundary/ExitLine の契約、Loop パターン空間、runtime/box 解決の地図。
  • よく参照する設計SSOT:
    • Join-Explicit CFG Constructionnorth star: docs/development/current/main/design/join-explicit-cfg-construction.md

docs/development/current/main/investigations/(調査ログ)

不具合調査のログ、切り分け、暫定メモを置く。

  • 原則: “結論” は 10-Now.md / 20-Decisions.md / 該当 design doc に反映し、調査ログ自体は参照用に残す。
  • 原則: 調査ログを SSOT にしない(参照元を明記して“歴史化”できる形にする)。
  • よく参照する調査ログ:
    • Phase 259: block-parameterized CFG / ABI/contract 相談パケット: docs/development/current/main/investigations/phase-259-block-parameterized-cfg-consult.md

docs/development/current/main/phases/Phaseログ

Phase ごとの記録・完了サマリ・実装チェックリストを置く。

  • 推奨構造:
    • docs/development/current/main/phases/phase-131/
    • docs/development/current/main/phases/phase-131/131-03-llvm-lowering-inventory.md
    • docs/development/current/main/phases/phase-131/131-11-case-c-summary.md

ドキュメントの種別(ファイル先頭に明記)

追加/更新する文書の先頭に、最低限これを付ける。

Status: SSOT | Active | Historical
Scope: ...
Related:
- <入口/SSOT>
  • SSOT: 現行の正本(同じテーマの“別名ファイル”を増やさない)。
  • Active: 現行だが SSOT ではない(実装の手順書/チェックリスト等)。
  • Historical: 参照用(当時の調査・ログ)。入口や Now から “歴史” としてリンクする。

移行ポリシー(リンク切れ防止)

既存のファイルは大量移動しない。移動が必要な場合は必ず旧パスに“転送スタブ”を残す。

例(旧ファイルの内容を最小化):

# Moved

Moved to: docs/development/current/main/phases/phase-131/131-03-llvm-lowering-inventory.md

命名(推奨)

  • Phase 文書: phase-<N>/ + <N>-<NN>-<topic>.md(同一フェーズ内で並べ替えが自然)
  • 調査ログ: <topic>-investigation-YYYY-MM-DD.md など(時系列が分かる形)
  • 入口/SSOT: “Phase番号を入れない” ことを基本にする(寿命が長いので)

運用の最小ルール

  • 新しい Phase 文書は main/phases/ に入れる(main/ 直下に増やさない)。
  • 設計図SSOTmain/design/ に寄せるPhase の完了サマリと混ぜない)。
  • 10-Now.md は「現状の要約+正本リンク」に徹し、詳細ログの本文は抱え込まない。