Phase 127: unknown-read strict Fail-Fast(DONE)
目的
- 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.writesinputs: reads ∩ available_inputs(Phase 125/126)
- strict(
joinir_strict_enabled()):- unknown_reads が 1 つでもあれば
freeze_with_hintで停止(hint必須・1行)
- unknown_reads が 1 つでもあれば
- non-strict/dev:
- 理由ログ(tag + count + 先頭数件)までで継続
受け入れ基準
cargo test --libが PASS- Phase 121–126 の smokes が退行しない
- 新規 fixture(例:
return missing_x)が strict で確実に Fail-Fast する
Status
- DONE: unknown-read を strict で Fail-Fast 固定(dev-only)
関連
- 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