Files
C.E.L_Slide_test2/docs/architecture/IMP-31-GATE-AUDIT.md
kyeongmin 182aa7c47f docs(#40): IMP-31 gate audit + activation reference cross-link
- 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.
2026-05-21 01:59:03 +09:00

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.
  • :580def _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_PROMPT import).
  • 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.