WORK-704
ID:WORK-704Status:done

The composed testimonial goes live in the marketing plugin

The staged testimonial has been approved on staging.refrakt.md. Its final form places a featured quotation (WORK-700), so it goes live after that lands, on the path WORK-702 opens.

Priority:highComplexity:simpleMilestone:v0.48.0Source:SPEC-181
claude/composition-usage-rune-pages-c87ar6 View source

Criteria completion

Criteria completion: 6 of 6 (100%) checked; history from Nov 3 to Nov 30%25%50%75%100%Nov 3Nov 3
Branches 2
claude/composition-usage-rune-pages-c87ar6 current done
main donechangeset-release/main ready
History 2
  1. ce58f41
    • ☑ `testimonial.md` moves from `site/staged-runes/` into the marketing `runeDir` unchanged, and the `staging` site's `runes.prefer` entry for `testimonial` is removed
    • ☑ The plugin testimonial's schema, theme config entry and `testimonial.css` are removed, and the CSS coverage sets are updated
    • ☑ The `Review` / `Person` / `Rating` graph is unchanged by the SEO baseline comparison, and both copies of `contracts/structures.json` are regenerated
    • ☑ The `review` alias still resolves
    • ☑ The testimonial reference page describes the rune as a composition, and drops the note that the paragraph byline "still works for now" if the composition reports it
    • ☑ A breaking changeset and a migration note list what authors and themes lose (`rf-testimonial*` classes) and what changed
    by bjornolofandersson
  2. f91f637
    Created (ready)by bjornolofandersson

Gates (SPEC-181 rollout)

  1. and 2. Reviewed, differences fixed or accepted: WORK-691, then approved after WORK-700.
  2. author / role attributes accepted by the plugin since v0.44.0, and the codemod applied to this repository (WORK-685).
  3. It places pullquote, so it depends on SPEC-185, which is accepted.

Acceptance Criteria

  • testimonial.md moves from site/staged-runes/ into the marketing runeDir unchanged, and the staging site's runes.prefer entry for testimonial is removed
  • The plugin testimonial's schema, theme config entry and testimonial.css are removed, and the CSS coverage sets are updated
  • The Review / Person / Rating graph is unchanged by the SEO baseline comparison, and both copies of contracts/structures.json are regenerated
  • The review alias still resolves
  • The testimonial reference page describes the rune as a composition, and drops the note that the paragraph byline "still works for now" if the composition reports it
  • A breaking changeset and a migration note list what authors and themes lose (rf-testimonial* classes) and what changed

Blocked by

  • WORK-700
  • WORK-702

References

  • SPEC-181: the rollout gates and D5.
  • SPEC-182: the byline reinterpretation.
  • SPEC-185: D7, the featured quotation.

Resolution

Completed: 2026-11-03

Branch: claude/composition-usage-rune-pages-c87ar6 PR: refrakt-md/refrakt#769

What was done

  • site/staged-runes/testimonial.md → plugins/marketing/runes/testimonial.md, unchanged; testimonial removed from the staging site's runes.prefer, leaving only steps staged.
  • Removed the native testimonial: plugins/marketing/src/tags/testimonial.ts (and the parseAttribution export), its Testimonial theme entry, Lumina's and the skeleton's testimonial.css, and plugins/marketing/test/testimonial.test.ts.
  • plugins/marketing/fixtures/testimonial.md replaces the inline fixture.
  • plugins/marketing/test/helpers.ts loads the plugin's runeDir with slot markers declared, so the plugin's hand-written SEO intent tests run against the composed testimonial; they pass. The "same tree either way" test now ignores data-rune-fields and data-slot, the only differences between the two attribution forms.
  • composed-testimonial.test.ts keeps the comparison's findings as assertions; staging-site.test.ts moves its shadowing tests to steps.
  • Docs: testimonial page gains "How it is built"; a theme-authoring layout example no longer names rf-testimonial.

Notes

  • SEO baseline: the Review / Person / Rating graph is unchanged except the comma fixture's jobTitle, which loses its leading ", " — BUG-019, fixed by the composition's attribution pattern and marked fixed.
  • The review alias resolves to the composed testimonial (asserted).
  • The reference page never carried the "still works for now" note in its current form; it documents both attribution forms as equal, which the composition keeps.