Real repro from MiniMax-M2.7: sub-agent emits a section wrapper with the WRONG role applied — Search Bar(role=search-bar) > Search Input Container(role=input,fill=$color-surface). The outer "search-bar" frame is actually a section-level wrapper (its child carries the real atom), but its role is `search-bar` which is in PROTECTED_ROLES, so the strip pass treated it as the real atom and left its #F8FAFC hedge fill alone. Result: visible double-cream nesting against the cream root background. Detect this misroll: a frame whose role IS protected but ALSO contains a child carrying either the same role or another protected/structural role with its own solid fill is a wrapper, not the atom — its fill is eligible for the same safe-light/safe-dark hedge stripping that pure section frames get. Counter-case kept covered: a real `search-bar` atom whose children are just icons / placeholder text (no nested input/search-bar/card/etc with its own fill) keeps its fill — that fill is intentional, not a hedge. Two new tests: - M2.7 misrolled wrapper (search-bar > input + safe-light fill) — outer fill stripped, inner input fill preserved. - Real search-bar atom (no fill-bearing component children) — fill preserved. |
||
|---|---|---|
| .. | ||
| agent-native@e1f90cab96 | ||
| pen-acp | ||
| pen-ai-skills | ||
| pen-core | ||
| pen-engine | ||
| pen-figma | ||
| pen-mcp | ||
| pen-react | ||
| pen-renderer | ||
| pen-sdk | ||
| pen-types | ||
| CLAUDE.md | ||