WORK-076
ID:WORK-076Status:done

Extract Shared Layout Meta Tag Utility

Priority:highComplexity:simpleSource:SPEC-028

Summary

Runes that extend SplitLayoutModel all emit identical boilerplate for layout meta tags (layout, ratio, valign, gap, collapse). Extract this into a shared utility in @refrakt-md/runes so each rune's transform calls one function instead of copy-pasting the conditional logic.

Acceptance Criteria

  • New buildLayoutMetas() utility exported from packages/runes/src/common.ts (or a new layout-helpers.ts)
  • Utility accepts the split layout attrs object and returns { metas: Tag[], properties: Record<string, Tag> }
  • Handles the layout !== 'stacked' guard, gap/collapse conditionals, and all five meta tags (layout, ratio, valign, gap, collapse)
  • recipe.ts in @refrakt-md/learning refactored to use the shared utility
  • realm.ts and faction.ts in @refrakt-md/storytelling refactored to use the shared utility
  • playlist.ts in @refrakt-md/media refactored to use the shared utility
  • All existing tests pass — no change to identity transform output

Approach

  1. Study the layout meta tag block in recipe.ts (reference implementation) and compare with realm.ts, faction.ts, playlist.ts
  2. Extract the shared pattern into a utility function
  3. Replace the inline blocks in all four runes with calls to the utility
  4. Run tests to verify output is unchanged

References

History

  1. 59ded4a
    Content edited
  2. f262d7b
    source+SPEC-028
  3. bfa195e
    statusreadydone
  4. 9aff526
    Created (ready, high, simple, runes, transform, architecture)