ID:WORK-118Status:donePriority:highComplexity:lowMilestone:v1.0.0
Validate property and ref name uniqueness in createComponentRenderable
Summary
Add a static validation step to createComponentRenderable that checks for naming collisions between properties keys and refs keys. Since ADR-008 uses a flat namespace where both properties and refs become component props/slots, duplicate names would cause silent overwrites.
Acceptance Criteria
createComponentRenderablethrows a descriptive error if any key appears in bothpropertiesandrefs- Error message includes the rune name and the colliding key(s)
- All existing runes pass validation (no current collisions)
- Unit test for collision detection
- Unit test confirming no false positives on valid runes
Approach
- In
packages/runes/src/lib/component.ts, add a Set intersection check betweenObject.keys(properties)andObject.keys(refs)before building the renderable - Throw with rune name and colliding keys if intersection is non-empty
Resolution
Completed: 2026-04-04
Branch: claude/adr-008-implementation-nBN9K
What was done
- Added Set intersection validation in
packages/runes/src/lib/component.ts - Fixed 3 pre-existing collisions: bento-cell
icon(renamed property toiconSource), faction/realmname(removed from properties, kept as ref only) - 9 unit tests in
packages/runes/test/component.test.ts
Notes
- Validation runs before attribute decoration, catching collisions at build time
- All 1969 existing tests pass after fixing the 3 collisions