From 9aedc19413740e5cbabf8cdf4b4c0b275a572d21 Mon Sep 17 00:00:00 2001 From: nyash-codex Date: Thu, 18 Dec 2025 06:55:29 +0900 Subject: [PATCH] docs: add Phase 127 entry (planned) --- .../current/main/01-JoinIR-Selfhost-INDEX.md | 18 ++++++---- docs/development/current/main/10-Now.md | 7 ++-- docs/development/current/main/30-Backlog.md | 4 +-- .../current/main/phases/phase-127/README.md | 35 +++++++++++++++++++ 4 files changed, 53 insertions(+), 11 deletions(-) create mode 100644 docs/development/current/main/phases/phase-127/README.md diff --git a/docs/development/current/main/01-JoinIR-Selfhost-INDEX.md b/docs/development/current/main/01-JoinIR-Selfhost-INDEX.md index 2f8b9d21..9686d602 100644 --- a/docs/development/current/main/01-JoinIR-Selfhost-INDEX.md +++ b/docs/development/current/main/01-JoinIR-Selfhost-INDEX.md @@ -86,19 +86,23 @@ JoinIR の箱構造と責務、ループ/if の lowering パターンを把握 - `docs/development/current/main/phases/phase-123/README.md` 26. Phase 124: Reads facts + Return(Variable from env)(dev-only) - `docs/development/current/main/phases/phase-124/README.md` -27. Phase 125: Reads-only inputs → Normalized env(planned) +27. Phase 125: Reads-only inputs → Normalized env(dev-only) - `docs/development/current/main/phases/phase-125/README.md` -28. Phase 104: loop(true) break-only digits(VM + LLVM EXE) +28. Phase 126: available_inputs SSOT wiring(dev-only) + - `docs/development/current/main/phases/phase-126/README.md` +29. Phase 127: unknown-read strict Fail-Fast(dev-only / planned) + - `docs/development/current/main/phases/phase-127/README.md` +30. Phase 104: loop(true) break-only digits(VM + LLVM EXE) - `docs/development/current/main/phases/phase-104/README.md` -29. Phase 107: json_cur find_balanced_* depth scan(VM + LLVM EXE) +31. Phase 107: json_cur find_balanced_* depth scan(VM + LLVM EXE) - `docs/development/current/main/phases/phase-107/README.md` -30. Phase 108: Pattern2 policy router SSOT(入口の薄さを固定) +32. Phase 108: Pattern2 policy router SSOT(入口の薄さを固定) - `docs/development/current/main/phases/phase-108/README.md` -31. Phase 109: error_tags hints SSOT(Fail-Fast + hint の語彙固定) +33. Phase 109: error_tags hints SSOT(Fail-Fast + hint の語彙固定) - `docs/development/current/main/phases/phase-109/README.md` -32. MIR Builder(Context 分割の入口) +34. MIR Builder(Context 分割の入口) - `src/mir/builder/README.md` -33. Scope/BindingId(shadowing・束縛同一性の段階移行) +35. Scope/BindingId(shadowing・束縛同一性の段階移行) - `docs/development/current/main/phase73-scope-manager-design.md` - `docs/development/current/main/PHASE_74_SUMMARY.md` - `docs/development/current/main/PHASE_75_SUMMARY.md` diff --git a/docs/development/current/main/10-Now.md b/docs/development/current/main/10-Now.md index 9698fb02..8c2494ff 100644 --- a/docs/development/current/main/10-Now.md +++ b/docs/development/current/main/10-Now.md @@ -2,8 +2,11 @@ ## Next: Phase 127(予定) -**Phase 127: TBD** -- Phase 126 完了。次のフェーズを決定 +**Phase 127: unknown-read strict Fail-Fast(dev-only)** +- 目的: `reads` にあるが `available_inputs` に存在しない変数を “unknown-read” として検出し、strict で Fail-Fast +- 実装: `UnknownReadGuardBox`(builder の lowering 前にチェック、tag + 1行hint で停止) +- fixture/smoke: `return missing_x` を strict で落とす(`[phase127/unknown_read/... ]` を固定) +- 入口(計画): `docs/development/current/main/phases/phase-127/README.md` ## 2025-12-18:Phase 126 完了 ✅ diff --git a/docs/development/current/main/30-Backlog.md b/docs/development/current/main/30-Backlog.md index a6328d64..9381ccd3 100644 --- a/docs/development/current/main/30-Backlog.md +++ b/docs/development/current/main/30-Backlog.md @@ -20,8 +20,8 @@ Related: - **制御の再帰合成(docs-only → dev-only段階投入)** - ねらい: `loop/if` ネストの "構造" を SSOT(ControlTree/StepTree)で表せるようにする - 注意: canonicalizer は観測/構造SSOTまで(ValueId/PHI配線は Normalized 側へ) - - 現状: Phase 119–124(cond SSOT / facts→contract / shadow parity / JoinModule生成 / semantics / reads+return-var)まで完了 - - 次候補(Phase 125): reads-only inputs を Normalized env に載せる(return var from inputs / unknown-read capability) + - 現状: 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` ## 中期(ループ在庫の残り) diff --git a/docs/development/current/main/phases/phase-127/README.md b/docs/development/current/main/phases/phase-127/README.md new file mode 100644 index 00000000..5f4ad840 --- /dev/null +++ b/docs/development/current/main/phases/phase-127/README.md @@ -0,0 +1,35 @@ +# Phase 127: unknown-read strict Fail-Fast(planned) + +## 目的 + +- Phase 126 で `available_inputs`(function params + CapturedEnv)を Normalized builder に配線できた。 +- 次に、`reads` に出てくるのに `writes`/`inputs` のどちらにも解決できない変数を “unknown-read” として検出し、strict では Fail-Fast にする。 + +## Scope + +- 対象: if-only Normalized(dev-only) +- 既定挙動は不変: `joinir_dev_enabled()` のときだけチェック・検証する + +## 契約(SSOT) + +- unknown-read の定義: + - `unknown_reads = reads - (writes ∪ inputs)` + - `writes`: StepTreeContract.writes + - `inputs`: reads ∩ available_inputs(Phase 125/126) +- strict(`joinir_strict_enabled()`): + - unknown_reads が 1 つでもあれば `freeze_with_hint` で停止(hint必須・1行) +- non-strict/dev: + - 理由ログ(tag + count + 先頭数件)までで継続 + +## 受け入れ基準 + +- `cargo test --lib` が PASS +- Phase 121–126 の smokes が退行しない +- 新規 fixture(例: `return missing_x`)が strict で確実に Fail-Fast する + +## 関連 + +- Phase 125: EnvLayout(writes + inputs) + - `docs/development/current/main/phases/phase-125/README.md` +- Phase 126: available_inputs SSOT wiring + - `docs/development/current/main/phases/phase-126/README.md`