WORK-638
ID:WORK-638Status:ready

Plan runes keep the content their content models drop, then content-unmatched becomes an error

WORK-631 added content-unmatched: validation reports an authored node that no content-model field matches, because the transform drops it. It shipped as a warning because the measurement found that four shipped runes drop real content today, all in the plan plugin. The plan site renders each entity through its rune ({% expand %}), so the loss reaches plan.refrakt.md.

Measured over this repo's plan/ directory (907 files), as of WORK-631:

Priority:mediumComplexity:moderateSource:SPEC-145
claude/v041-composed-runes-guide View source

Criteria completion

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

Tracking started Oct 8 — check back for trends.

Branches 4
History 2
  1. bcc1118
    Created (ready)by bjornolofandersson
  2. c04815d
    Content editedby Claude
    feat(runes): report content no content-model field matches (WORK-631)

Acceptance Criteria

  • milestone keeps its ## sections, so a milestone's body renders
  • work, bug and decision keep preamble content that is not a paragraph, for example with a catch-all preamble field
  • Rerunning WORK-631's measurement over plan/ reports no content-unmatched finding
  • CONTENT_UNMATCHED_LEVEL in packages/runes/src/lib/index.ts is raised to error, and the docs and tests that state the severity are updated
  • npm run seo:baseline:check and refrakt contracts --check report no drift on either contract copy, or the drift is reviewed and explained

Approach

Fix the content models first, and only then raise the severity. Raising first would fail the build for every project with a plan directory. refrakt plan reads entities structurally, not through the content model, so the CLI is not affected either way.

References

  • WORK-631: the report, and the measurement in its resolution.
  • SPEC-145 D11.