Why: Codex stop-time review 2026-05-10 — clipCardImageCorners was slotted between unwrapFakePhoneMockups and resolveTreeRoles in the post-streaming pipeline. Cards that don't carry an explicit cornerRadius from the sub-agent get one filled in by role-resolver (e.g. role='card' → default cornerRadius=12). Running clip before role defaults silently skipped every default-radius card — match policy required scalar cornerRadius > 0 and saw cornerRadius=undefined at that point. Net effect: the bug stayed for the most common case where the model wrote role='card' without a numeric radius. What: move the clipCardImageCorners call to the freshRoot block right after resolveTreeRoles + resolveTreePostPass. By that point the role-resolver has populated defaults, so a card without an explicit radius now correctly hits the predicate. Reuse the existing \`freshRoot\` reference (re-fetched after updateNode mutations earlier in the pipeline) so we don't double-fetch from the store. No new tests — the existing 9 unit tests already pin the predicate; the bug was placement-only. 1448 / 1448 pen-core tests, 1110 / 1110 AI service tests still pass. |
||
|---|---|---|
| .. | ||
| public | ||
| server | ||
| src | ||
| CLAUDE.md | ||
| components.json | ||
| dev.ts | ||
| package.json | ||
| tsconfig.json | ||
| vite.config.ts | ||