Toggle VALIDATION_ENABLED from false to true so the post-generation vision LLM validation loop runs. The loop itself was fully built in design-validation.ts long ago — only ai-runtime-config:109 was holding it at runtime. Add VALIDATION_NODE_COUNT_THRESHOLD=30 size-gate so atomic single-tool outputs (one badge, one chart) skip the +30-90s vision round-trip. Composite multi-section briefs (full-page mockups, dashboards) easily clear the threshold and benefit from the screenshot -> vision LLM -> safe-fix -> re-screenshot rounds. Pre-validation heuristics (ms-cheap tree walks) still run regardless of size. Plumbing was already done before this commit: - design-screenshot.ts captureRegion() shipped in Phase 1.5 - design-validation.ts MAX_VALIDATION_ROUNDS=3 loop fully implemented - validate.ts has 4 vision provider paths (Anthropic Agent SDK, Codex CLI, OpenCode SDK, Gemini CLI) This commit only flips the flag and adds the size-gate heuristic. Tests: 4223/4223 pass; format:check + tsc clean. Predicted KPI lift: M3 composite +5-10pp (speculative). Vision catches what schema-coerce + role-hint can't — mis-positioned sibling sections, missing component spacing, color-contrast issues. Gating by node count keeps user-perceived latency contained to designs that actually need it. Out-of-scope for this commit (followups if needed): - ab-corpus glm/minimax/deepseek client image_url part injection (lets the eval harness exercise vision for KPI verification) - builtin Zig agent-native runtime image part support (only matters if the embedded provider becomes the default) |
||
|---|---|---|
| .. | ||
| public | ||
| server | ||
| src | ||
| CLAUDE.md | ||
| components.json | ||
| dev.ts | ||
| package.json | ||
| tsconfig.json | ||
| vite.config.ts | ||