WORK-118
ID:WORK-118Status:done

Validate property and ref name uniqueness in createComponentRenderable

Priority:highComplexity:simpleMilestone:v1.0.0Source:ADR-008
claude/nifty-ptolemy-80epot View source

Criteria completion

Criteria completion: 5 of 5 (100%) checked; tracking started on Sep 24, no incremental history yet0%25%50%75%100%Sep 24Oct 11

Tracking started Sep 24 — check back for trends.

Branches 4
History 1
  1. 9762a80
    Created (done)by bjornolofandersson

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