Update autoresearch docs with findings from fill/size analysis

This commit is contained in:
Danila Poyarkov 2026-03-14 14:18:03 +03:00
parent 2858d944bd
commit 8ce1bb4fac
3 changed files with 21 additions and 7 deletions

13
autoresearch.ideas.md Normal file
View file

@ -0,0 +1,13 @@
# Autoresearch Ideas
## High Priority
- **Vector constraint resizing**: 38 vectors have wrong sizes because instances smaller than their component don't resize children via constraints. Figma uses horizontal/vertical constraints to scale children when instance size ≠ component size. Need to implement constraint-based resizing after population.
- **Variable-bound fills**: 3 Indicator nodes have wrong fill colors because their fills are bound to design variables that resolve differently in the visible-page context. Need to resolve variable bindings during import.
- **Self-referencing symbolOverride pattern**: 4 Placeholder TEXT nodes have dark fills instead of white. Same pattern as bold toolbar button — the instance's own kiwi NC has correct fills but a symbolOverride targeting the component shell overwrites them. The current fix only handles exact self-reference (targetId === nodeId). Need to also handle cases where the override targets a CHILD that was cloned from the self-referencing path.
## Medium Priority
- **datepicker width**: 6 `_datepicker-date-range-link` instances have width 32 vs Figma's 131. Likely DSD size override or layout recomputation issue.
- **Badge scaling**: Badge/Avatar/Placeholder/Close-Icon ~1.12x ratio diffs — proportional scaling issue from DSD not fully applied.
## Low Priority
- **99 unmatched nodes**: Figma has 99 nodes that don't match by tree path. Likely node ordering or naming differences in deep clone chains.

View file

@ -2,3 +2,4 @@
{"run":1,"commit":"8a90594","metric":246,"metrics":{"visibility":1,"text":0,"fills":10,"radius":161,"size":74,"unmatched":99},"status":"keep","description":"Baseline: 246 diffs (1 vis, 0 text, 10 fills, 161 radius, 74 size, 99 unmatched)","timestamp":1773482910363,"segment":0}
{"run":2,"commit":"3746d1a","metric":99,"metrics":{"visibility":1,"text":0,"fills":10,"radius":14,"size":74,"unmatched":99},"status":"keep","description":"Fix comparison: read individual corner radii when independentCorners=true","timestamp":1773483304162,"segment":0}
{"run":3,"commit":"7fc3a64","metric":85,"metrics":{"visibility":1,"text":0,"fills":10,"radius":0,"size":74,"unmatched":99},"status":"keep","description":"Fix comparison: treat both-pill cornerRadius values as equal","timestamp":1773483389254,"segment":0}
{"run":4,"commit":"2858d94","metric":84,"metrics":{"visibility":1,"text":0,"fills":9,"radius":0,"size":74,"unmatched":99},"status":"keep","description":"Skip self-referencing symbolOverrides on nodes with explicit kiwi properties (fixes bold toolbar button fill)","timestamp":1773484182748,"segment":0}

View file

@ -44,10 +44,10 @@ and `tests/fixtures/gold-preview-truth.json` as ground truth (extracted from liv
- **DSD for swapped instances**: Single-child fallback in resolveOverrideTarget (d93c475)
- **Rounded clipping**: clipRRect when clipsContent + cornerRadius (49423e4)
- **Shadow child shape**: Drop shadow on transparent containers follows first child (f70338d)
- **Current baseline**: 246 total_diffs (1 vis, 0 text, 10 fills, 161 radius, 74 size, 99 unmatched)
### Key insight: transitive sync overwrites instance-level properties
Nodes with their own kiwi NC (explicit fills, cornerRadius) get correct values
during initial kiwi-convert, then transitive sync copies component defaults
over them. Need to protect nodes with own kiwi NCs from sync overwrite.
This is the NEXT fix to attempt — should address radius (161) and fills (10).
- **Current best**: 84 total_diffs (1 vis, 0 text, 9 fills, 0 radius, 74 size, 99 unmatched)
- **Comparison fixes**: independentCorners radius reading, pill-shape tolerance
- **kiwiPropertyNodes**: Nodes with explicit kiwi NC fills/cornerRadius are added to seeds AND protected from sync overwrite
- **Self-referencing symbolOverride**: When an override resolves to the instance itself, skip if the instance has explicit kiwi NC properties
- **Remaining fills (9)**: Variable-bound colors (Indicators), wrong variant selection (badge Placeholders), deep chain overrides
- **Remaining sizes (74)**: 38 Vector constraint resizing (no DSD size data), 6 datepicker layout widths, Badge proportional scaling
- **Unmatched (99)**: Tree path matching gaps in deep clone chains