Commit Graph

3 Commits

Author SHA1 Message Date
7b56a7c01d docs(joinir): Phase 70-A - Relay Runtime Guard (dev-only)
Phase 66で analysis/plan層はmultihop受理可能になったが、runtime lowering
(実行導線)はまだ未対応。このPhaseでは「未対応は同じタグで必ず落ちる」を
docs + テストで固定する。

Key changes:
- phase70-relay-runtime-guard.md: Runtime guard設計doc新規追加
  - 現状(plan OK / runtime NG)の明確化
  - Fail-Fastタグ [ownership/relay:runtime_unsupported] の標準化
  - Phase 70-B以降の解除条件

- pattern3_with_if_phi.rs: エラーメッセージのタグ統一
  - [ownership/relay:runtime_unsupported] 形式に変更
  - var/owner_scope/relay_path の診断情報追加

- normalized_joinir_min.rs: 固定テスト追加
  - test_phase70a_multihop_relay_runtime_unsupported_tag
  - Plan層のmultihop受理確認 + runtime拒否の文書化

Tests: normalized_dev 50/50 PASS (+1), lib 950/950 PASS

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-13 02:22:29 +09:00
5c75506dcc feat(joinir): Phase 66 - Ownership-Relay Multihop Implementation (dev-only)
Phase 65設計に基づき、relay_path.len() > 1 を analysis/plan 層で受理するよう実装。

Key changes:
- plan_to_lowering.rs: relay_path.len() > 1 制限撤去 + 構造的 Fail-Fast 維持
  - relay_path.is_empty() → Err(loop relay は最低 1 hop)
  - relay_path[0] != plan.scope_id → Err(この scope が最初の hop)
  - relay.owner_scope == plan.scope_id → Err(relay と owned は排他)
  - owned_vars ∩ relay_writes ≠ ∅ → Err(同名は不変条件違反)

- ast_analyzer.rs: 3階層 multihop テスト追加
  - multihop_relay_detected_for_3_layer_nested_loops

Unit tests (plan_to_lowering):
- test_relay_multi_hop_accepted_in_with_relay
- test_relay_path_empty_rejected_in_with_relay
- test_relay_path_not_starting_at_plan_scope_rejected
- test_relay_owner_same_as_plan_scope_rejected
- test_owned_and_relay_same_name_rejected

Tests: normalized_dev 49/49 PASS, lib 947/947 PASS
Design: Analysis-only, no behavior change in production lowering

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 23:33:16 +09:00
ba68fb2bad docs(joinir): Phase 65 - Ownership-Relay Multihop Design (設計のみ)
Multihop relay(複数階層を跨ぐrelay)の完全な設計文書を作成。
Phase 66実装の土台となる意味論と不変条件を確立。

Key design decisions:
- Multihop relay 意味論: relay_path(内→外の順)、段階的carrier化
- Merge relay 意味論: PERMIT with owner merge(複数inner loopが同一祖先owned変数を更新)
- Fail-Fast 解除条件: Phase 66実装時の受け入れ基準を明文化
- 実装箇所の特定: Analyzer変更不要、plan_to_lowering/Pattern lowering変更点を箇条書き
- 禁止事項: by-name分岐排除、dev-only name guard対象外

Design principles:
- 「読むのは自由、管理は直下だけ」を維持
- 各中間ループは「素通し」のみ(merge責務はownerのみ)
- Owner scopeのexit PHIで全分岐をmerge
- 構造ベース設計(変数名による特別扱いなし)

Representative cases:
- 3階層multihop(AST例 + OwnershipPlan例)
- Merge relay(JSON fixture例 + 期待されるOwnershipPlan)

Phase 66への引き継ぎ:
- この文書の「5. 実装箇所の特定」をガイドとして使用
- Fail-Fast段階解除の流れに従って実装
- 回帰テスト(既存Phase 64テスト全PASS)を確認しながら進める

Status: 設計完了、実装はPhase 66以降
Tests: N/A (設計文書のみ)

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-12 23:16:32 +09:00