WORK-099
ID:WORK-099Status:done

Migrate simple core runes from Model to createContentModelSchema

Migrate the straightforward core runes that use @group decorators with sequential or sectioned patterns. These have no custom processChildren logic — they map directly to sequence, sections, or delimited content models.

Priority:highComplexity:simpleMilestone:v1.0.0Source:SPEC-032
changeset-release/main View source

Criteria completion

No incremental history — criteria tracking started on Apr 19.

Branches 3
History 6
  1. f2b3512
    Content editedby Claude
    Add {ID}-{slug}.md filename convention + migrate filenames subcommand
  2. 59ded4a
    Content editedby Claude
    Implement SPEC-037 plan package hardening: all 7 work items
  3. f262d7b
    Content editedby Claude
    Backfill source attributes on all 123 work items
  4. f0a845a
    Content editedby Claude
    chore(plan): check off acceptance criteria for 14 completed v1.0.0 work
  5. a20f532
    Content editedby Claude
    Mark all SPEC-032 work items as done (WORK-099 through WORK-104)
  6. 5c72bef
    Created (done)by Claude
    Add work items WORK-099 through WORK-104 for legacy Model removal

Runes

RuneFilePatternContent model
accordionpackages/runes/src/tags/accordion.ts@group sectionssections
budgetpackages/runes/src/tags/budget.ts@group sequentialsequence
revealpackages/runes/src/tags/reveal.ts@group delimiteddelimited
sandboxpackages/runes/src/tags/sandbox.ts@group sequentialsequence

Acceptance Criteria

  • accordion rewritten using createContentModelSchema with sections content model
  • budget rewritten using createContentModelSchema with sequence content model
  • reveal rewritten using createContentModelSchema with delimited content model
  • sandbox rewritten using createContentModelSchema with sequence 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

For each rune:

  1. Capture baseline output with refrakt inspect <rune> --type=all --json
  2. Rewrite schema using createContentModelSchema — map @attribute to attributes, @group to content model fields, transform() to the transform function
  3. Compare output to baseline — must be identical
  4. Run npx vitest run for any related test files

References

  • SPEC-032 (parent spec)