WORK-118
ID:WORK-118Status:done

Validate property and ref name uniqueness in createComponentRenderable

Priority:highComplexity:simpleMilestone:v1.0.0Source:ADR-008

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

  • createComponentRenderable throws a descriptive error if any key appears in both properties and refs
  • 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

  1. In packages/runes/src/lib/component.ts, add a Set intersection check between Object.keys(properties) and Object.keys(refs) before building the renderable
  2. 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 to iconSource), faction/realm name (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

History

  1. 1676387
    complexitylowsimple
  2. f262d7b
    source+ADR-008
  3. c435d57
    statusreadydone
    • ☑ `createComponentRenderable` throws a descriptive error if any key appears in both `properties` and `refs`
    • ☑ Error message includes the rune name and the colliding key(s)
    • ☑ All existing runes pass validation (no current collisions)
    • +2 more criteria
  4. dca6250
    milestone+v1.0.0
  5. ece282c
    Created (ready, high, low, runes, validation, architecture)