untracked files on main: dceb101 feat(#63): IMP-34 R1 donor capacity measured bound (u1+u2)

This commit is contained in:
kmlee1 committed 2026-05-21 22:07:41 +09:00
commit 8f085a28d3
3220 files changed
+985495

No files matched your search

+1
View File
@@ -0,0 +1 @@
{"body":{"value":"[Claude #5] Stage 3 code-edit r1 — IMP-41 u1 (FrameCandidate type extension)\n\nExecuting unit: u1\n\n■ unit_executed\n- id: u1\n- summary: Extend `FrameCandidate` with optional `applicationMode` / `autoApplicable` / `delegatedTo` fields so the frontend type surface mirrors backend Step 9 `unit.application_candidates[]` emit.\n\n■ files_changed\n- Front/client/src/types/designAgent.ts\n\n■ diff_summary\n```diff\ndiff --git a/Front/client/src/types/designAgent.ts b/Front/client/src/types/designAgent.ts\n@@ -175,6 +175,19 @@ export interface FrameCandidate {\n reason?: string | null;\n /** Capacity vs. content shape audit (compute_capacity_fit output). */\n capacityFit?: CapacityFitEvidence | null;\n+\n+ // ─── IMP-41 application_mode forwarding (issue #70 u1) ─────────────────────\n+ // Source = src/phase_z2_pipeline.py APPLICATION_MODE_BY_V4_LABEL (:107-112),\n+ // emitted by _application_candidates_for_unit() into Step 9\n+ // unit.application_candidates[]. Optional — legacy fixtures pre-IMP-32 omit\n+ // these and the FramePanel tooltip falls back to the raw V4 label.\n+\n+ /** Application mode mapped from V4 label by backend (authoritative). */\n+ applicationMode?: \u0027direct_insert\u0027 | \u0027same_frame_with_adjustment\u0027 | \u0027layout_or_region_change\u0027 | \u0027exclude\u0027;\n+ /** True when backend marks the candidate as automatically applicable. */\n+ autoApplicable?: boolean;\n+ /** Delegation target step / actor (e.g. \"step10_contract_check\", \"human_review\"). */\n+ delegatedTo?: string | null;\n }\n```\n\nNet change: +13 lines (3 optional fields + 4 doc lines + 1 section comment + 5 anchoring lines). Mirrors the `minHeightPx` optional-field precedent at `Front/client/src/types/designAgent.ts:150`. String-literal union for `applicationMode` is the verbatim value set emitted by `APPLICATION_MODE_BY_V4_LABEL` at `src/phase_z2_pipeline.py:107-112`. `delegatedTo` is typed `string | null` (open vocabulary — backend currently emits `\"step10_contract_check\"` / `\"human_review\"` / `null`; matches Stage 2 guardrail \"delegatedTo is forwarded by type/bridge only, no tooltip use in this scope\").\n\n■ scope_adherence\n- Edited only the file declared in u1 (`Front/client/src/types/designAgent.ts`).\n- No change to `designAgentApi.ts` (= u2) or `FramePanel.tsx` (= u3).\n- No backend / fixture / orchestrator artifact modified.\n- Did NOT touch existing `FrameCandidate` fields, V4 label badge color axis, composite outer-button tooltip, route-hint chip, or non-FramePanel surfaces.\n\n■ baseline_verification\n- `npm --prefix Front run check` (post-edit) → only pre-existing TS2305 in `client/src/components/BottomActions.tsx(11,10)` re: `serializeSlidePlan` (unrelated to IMP-41 axis).\n- Same error reproduced on `git stash` baseline (no IMP-41 edits) → confirmed pre-existing, NOT introduced by u1.\n- u1 introduces ZERO new TypeScript errors. Type-only addition; no runtime / behavioral change yet (u2 must wire the bridge for new fields to appear at runtime).\n- `pytest -q tests` not run for u1 — type-only frontend change, backend unaffected. Stage 4 verify will run it once all three units land.\n\n■ guardrail_checkpoint (Stage 2 lock)\n- AI 격리 contract: type-only declaration; no AI call, no derivation, no behavioral wiring.\n- No hardcoding: union values mirror backend `APPLICATION_MODE_BY_V4_LABEL` keys; not a frontend-authored consequence map.\n- 1 turn = 1 step: only u1 implemented this turn; u2/u3 deferred.\n- Scope-qualified verification: this report covers FramePanel V4-label-badge tooltip axis u1 ONLY (type extension). u2 (bridge enrichment) and u3 (tooltip swap) untouched.\n- Anti-PZ-4 (no silent shrink): no fields removed/narrowed; additive only.\n\n■ remaining_units\n- u2 — `designAgentApi.ts`: read `unit.application_candidates[]`, index by `template_id`, enrich matching `FrameCandidate` objects without changing source priority / sorting / TOP_N slicing.\n- u3 — `FramePanel.tsx`: replace V4 label badge `title` at FramePanel.tsx:249 with `applicationMode`-keyed Korean consequence tooltip; preserve `V4 label: ${label}` fallback when `applicationMode` is absent.\n\n■ follow_up_issue_candidates\nNone this turn. Stage 2 out-of-scope list (backend `APPLICATION_MODE_BY_V4_LABEL` audit, Step 12 AI restructure delegation visualization, composite outer-button tooltip + route-hint chip surfaces, non-FramePanel surface propagation) already enumerated; no new axes surfaced during u1 implementation.\n\n■ evidence\n- Backend source of truth: `src/phase_z2_pipeline.py:107-112` (APPLICATION_MODE_BY_V4_LABEL), `:3071-3092` (`_application_candidates_for_unit`).\n- Fixture proof: `Front/client/public/data/runs/mdx03_f29_fix_check/steps/step09_application_plan.json:53-72,108-127` — values `direct_insert` / `same_frame_with_adjustment` / `layout_or_region_change` plus `step10_contract_Line truncated