- u1: IMP-17-CARVE-OUT.md anchor cite :564 -> :570/:572/:575/:580/:664 - u2: new IMP-31-GATE-AUDIT.md (3-cond AND gate state + 8 issue-body axes) - u3: backlog row + status-board section 5 cross-ref to audit doc (no verdict dup) doc-only. no src/ templates/ tests/ touched. src/phase_z2_ai_fallback/ not created.
5.7 KiB
IMP-31 — AI-assisted frame-aware adaptation activation gate audit
Status: design-only audit. IMP-31 (#40) = IMP-17 carve-out activation tracking issue. No new design slot. No runtime AI code lands until the 3-condition AND gate clears.
Source
- Gitea issue #40 IMP-31 — AI-assisted frame-aware adaptation (restructure / reject routes).
- Carve-out boundary spec:
IMP-17-CARVE-OUT.md(allowed / forbidden / activation gate). - Backlog row:
PHASE-Z-IMPLEMENTATION-ISSUE-BACKLOG.md:68 (IMP-17 — carve-out, normal path 밖, soft link IMP-04 + IMP-05). - Stage 1 / Stage 2 exit reports:
.orchestrator/issues/40_stage_problem-review_exit.md(Stage 1 binding contract).
Issue-body anchor drift (axis C1)
Issue body cites src/phase_z2_pipeline.py:452 for IMP-05 L5 _imp05_route_hint(). Current anchor surface (commit 1efbf67):
:570— conceptual comment ("restructure → AI-assisted frame-aware adaptation (deferred to IMP-17 …)").:572—_IMP05_ROUTE_HINTS: dict[str, str] = {declaration.:575—"restructure": "ai_adaptation_required"entry.:580—def _imp05_route_hint(label: Optional[str]) -> Optional[str]:.:664—"route_hint": _imp05_route_hint(match.label)candidate_evidence emission.
Anchor pin: tests/orchestrator_unit/test_imp17_comment_anchor.py. Synced in IMP-17-CARVE-OUT.md:10 (Stage 3 u1).
3-condition AND gate state (this cycle)
| # | Condition | State | Evidence |
|---|---|---|---|
| 1 | User GO — explicit activation request | NOT CLEAR | No axis activation directive in #40. Stage 1 root_cause: runtime consumer = 0. |
| 2 | B4 frame_selection evidence integration complete | NOT CLEAR (⚠ partial) | PHASE-Z-PIPELINE-STATUS-BOARD.md:48 Step 9 ⚠ partial; :82 "B4 frame_selection 의 V4 evidence 미통합"; :126 (j) ❌ pending. |
| 3 | IMP-04 catalog expansion + IMP-05 V4 fallback live | AMBIGUOUS | templates/phase_z2/catalog/frame_contracts.yaml = 11 template_id: entries vs 32 target. IMP-05 V4 rank-2/3 fallback selector logic live, but catalog coverage gates real semantics. |
Verdict: gate NOT CLEAR. Runtime AI adaptation remains design-only. src/phase_z2_ai_fallback/ = declaration-only path (not created this cycle).
Issue-body axis verdict
| Axis | Issue-body line | Verdict | Binding boundary |
|---|---|---|---|
| A1 | restructure → ai_adaptation_required actual adaptation route | gate-blocked | Allowed only inside IMP-17-CARVE-OUT.md Step 12 fallback path; runtime AI consumer not added this cycle. |
| A2 | reject → design_reference_only | gate-blocked + frontend ownership | Reject route = design reference only. Frontend zone-level override remains IMP-29 scope (PHASE-Z-PIPELINE-OVERVIEW.md Step 12). |
| A3 | AI call provider | Anthropic API only | Kei API / EDITOR_PROMPT / Kei-API endpoint forbidden (Phase Q Kei persona 영구 단절 — IMP-17-CARVE-OUT.md §"AI 격리 + Kei persona 단절 contract"). |
| A4 | candidate_evidence[].route_hint | live (deterministic emission) | Emission anchored at src/phase_z2_pipeline.py:570/:572/:575/:580/:664; AI consumer deferred. Anchor pin: tests/orchestrator_unit/test_imp17_comment_anchor.py. |
| A5 | MDX content preservation = strict | locked | No invent / rewrite / compress / summarize (IMP-17-CARVE-OUT.md §Forbidden; memory feedback_phase_z_spacing_direction). |
| A6 | AI prompt = frame-aware placement only, not "rewrite content" | locked | Output = content_object → Internal Region / Frame Slot placement proposal at content-object granularity (IMP-17-CARVE-OUT.md §Allowed). HTML / CSS / layout / zone topology / frame selection X. |
| A7 | popup / details / zone-resize routing when content cannot fit | deferred to Step 17 fallback | Deterministic actions exhausted (zone_ratio_retry / layout_adjust / frame_reselect / details_popup_escalation / image_fit_candidate / frame_internal_fit_candidate) before AI proposal (IMP-17-CARVE-OUT.md §Allowed Step 16/17). |
| A8 | no calculate_fit migration |
locked | IMP-05 selector uses V4 labels + frame-contract presence + Phase Z capacity precheck only (src/phase_z2_pipeline.py:587 lookup_v4_match_with_fallback declaration; :599 docstring "it does not call calculate_fit"; secondary anchors :3093 / :4871). |
| C1 | Anchor drift :452 → current |
synced | Stage 3 u1 — IMP-17-CARVE-OUT.md:10. |
| C2 | Backlog + status-board cross-ref | planned (u3) | Cross-ref discoverability surfaces only; no verdict duplication. |
Out of scope (this cycle)
Runtime AI module, src/phase_z2_ai_fallback/ directory creation, prompt implementation, candidate_evidence schema change, Phase Q file mutation, Kei API reuse, frontend zone override (IMP-29 scope), IMP-30 invariant change, calculate_fit migration.
Future activation path (declaration only)
When the 3-condition AND gate clears (User GO ∧ B4 V4 evidence integrated ∧ catalog 32/32 + IMP-05 V4 fallback live):
- Runtime AI module path =
src/phase_z2_ai_fallback/(not created this cycle). - Provider = Anthropic API only. Prompt design starts fresh (no Phase Q
EDITOR_PROMPTimport). - Output granularity = content_object → Internal Region / Frame Slot placement proposal. Frame / layout / zone topology selection remains deterministic.
- Activation tracker = this issue (#40, IMP-31). No new IMP ID issued.