ADRs
ADR 0007 — URL-import: code-first, не vision-first
  • Date: 2026-05-22
  • Status: Accepted
  • Feature: URL-import (unparks §V "Small-company path / ARNO Studio")
  • Affects: url_import_spec.md § 0.2, § IV Phase 1

Context

URL-import — новый onboarding flow для small-biz: юзер даёт URL → ARNO строит React TSX компоненты со всеми состояниями, темами, viewports.

Изначальный подход (rejected): vision-first pipeline — captures screenshots всех states/viewports → отдаёт VLM (Vision Language Model) → VLM генерирует TSX из visual analysis.

Юзерская критика:

"Меня смущает в твоём решении что ты равняешься на скрины, а не на код. Я даю тебе ссылку на код — это более мощный и дешёвый инструмент. Найди решение по анализу кода а не принтскринов."

Объективные минусы vision-first:

  • VLM cost $0.20-0.40/component через Gemini Flash-Lite vision mode
  • VLM precision ниже на дизайн-токенах (цвета — аппроксимация, не exact CSS values)
  • VLM не видит semantic ARIA / event listeners / dynamic state machinery
  • Source maps (30-50% сайтов) дают оригинальный TSX напрямую — vision полностью лишний для них

Decision

Code-first pipeline с reactive vision fallback:

  1. Primary path (deterministic, ~$0.001/component):

    • Playwright DOM extraction
    • PostCSS AST parsing (lenient mode для real-world bad CSS)
    • Source maps detection и parsing (jackpot 30-50%)
    • Computed styles capture
    • Framework detection (React/Vue/Svelte/HTML)
    • JS bundle pattern analysis
  2. Schema-driven extraction с per-field priority chains (см ADR 0008)

  3. Vision activation только когда code path fails acceptance gate (см ADR 0011)

Consequences

Pros:

  • 5× дешевле на average ($0.001 vs $0.005 per component в bootstrap)
  • Точные дизайн-токены из CSS variables, не аппроксимация
  • Semantic ARIA сохранён
  • Source maps shortcut → 90% confidence на старте для тех сайтов

Cons:

  • Pipeline сложнее (multiple extraction layers)
  • Не работает на canvas-rendered UI (Figma embed, charts) → vision-only fallback с low confidence
  • CSS-in-JS runtime-generated class names требуют computed_style fallback

Trade-off accepted: complexity vs cost. Юзер explicit prefer cost optimization.

Alternatives rejected

A. Pure vision-first (изначальный draft)

  • ❌ $0.20-0.40/component cost
  • ❌ Аппроксимация tokens vs exact
  • ❌ Игнорирует source maps jackpot

B. Vendor solutions (Vercel v0, Builder.io, Locofy)

  • ❌ Closed source, vendor lock-in
  • ❌ $20-30/мес minimum
  • ❌ Нельзя fine-tune под ARNO use case
  • ❌ Нельзя use в дальнейшей дистилляции

C. Hybrid с predictive vision triggers

  • ❌ Spec'овая complexity без actual benefit (см ADR 0011)
  • ❌ False vision activations → cost waste

Cross-references