WORK-101
ID:WORK-101Status:done

Migrate moderate-complexity runes from Model to createContentModelSchema

Migrate runes that have multiple groups, context-dependent group logic, or light custom processing. These need more careful mapping but don't require the custom escape hatch.

Priority:highComplexity:moderateMilestone:v1.0.0Source:SPEC-032

Runes

RuneLocationChallengeContent model
navpackages/runes/src/tags/nav.tsMultiple heading-based sections with nested structuresections
pricingrunes/marketing/src/tags/pricing.tsMulti-section layout with header/features/footer splitsections
maprunes/places/src/tags/map.tsSections with location extraction from child contentsections
storyboardrunes/storytelling/src/tags/storyboard.tsImage-triggered panel accumulator with caption groupingcustom

Acceptance Criteria

  • nav rewritten using createContentModelSchema with sections content model
  • pricing rewritten using createContentModelSchema with sections content model
  • map rewritten using createContentModelSchema with sections content model
  • storyboard rewritten using createContentModelSchema with custom content model
  • refrakt inspect <rune> --type=all output is identical before and after for each rune
  • All existing tests pass after each migration
  • No Model class import remains in any of the migrated files

Approach

  • nav: Map the heading-level group splits to a sections model. Heading content becomes section names; nested content follows naturally.
  • pricing: Header/body/footer groups map to named sections. Feature list extraction stays in the transform function.
  • map: Section-based content with location metadata extraction in transform.
  • storyboard: The image-triggered panel accumulator is genuinely stateful — use custom content model with the panel grouping logic in processChildren.

Dependencies

References

History

  1. 59ded4a
    Content edited
  2. f262d7b
    source+SPEC-032
  3. f0a845a
    • ☑ `nav` rewritten using `createContentModelSchema` with `sections` content model
    • ☑ `pricing` rewritten using `createContentModelSchema` with `sections` content model
    • ☑ `map` rewritten using `createContentModelSchema` with `sections` content model
    • +4 more criteria
  4. a20f532
    statusreadydone
  5. 5c72bef
    Created (ready, high, moderate, runes, content-model, v1.0.0)