WORK-468
ID:WORK-468Status:done

Retire the media-position → definitions-grid coupling

Remove the implicit arrangement-from-media coupling and move the grid/stack decision entirely onto [data-layout]. Per SPEC-099 §2.

Priority:mediumComplexity:moderateMilestone:v0.26.0Source:SPEC-099
changeset-release/main View source

Criteria completion

Criteria completion: 4 of 4 (100%) checked; tracking started on Jun 26, no incremental history yet0%25%50%75%100%Jun 26Jul 11

Tracking started Jun 26 — check back for trends.

Branches 3
History 4
  1. 340475d
    Created (done)by github-actions[bot]
  2. 4216f8b
    Content editedby Claude
    WORK-468: regenerate structure contracts for the layout axis
  3. 8528ebb
    Content editedby Claude
    plan: mark SPEC-099 work items (WORK-467/468/469) done
  4. 17d2678
    Content editedby Claude
    v0.26.0: accept ADR-018 + SPEC-099/100/108, break down into 15 work item

Scope

  • Remove the variants: { 'media-position': { top/bottom → definitions-grid } } block and the definitions-grid static modifier from the Feature config (plugins/marketing/src/config.ts).
  • Update packages/lumina/styles/runes/feature.css so grid-vs-stack keys off [data-layout="grid"] / [data-layout="list"] instead of .rf-feature--definitions-grid.
  • Because the media-derived default (WORK-467) reproduces the old behaviour when layout is unset, rendered output for existing content is unchanged — but this is a behaviour change with visual-regression surface, owned here, not a silent side effect. Spot-check existing feature content renders identically.
  • Update CSS-coverage: remove the definitions-grid selector from KNOWN_* and add the [data-layout] selectors.

Acceptance Criteria

  • The media-positiondefinitions-grid variant and the definitions-grid modifier are removed from the Feature config and CSS.
  • feature.css keys grid-vs-stack arrangement off [data-layout="grid"] / [data-layout="list"].
  • Existing feature content (no explicit layout) renders identically to before.
  • CSS-coverage tests pass for the new [data-layout] selectors; the definitions-grid selector is removed from coverage/KNOWN_* as appropriate.

Dependencies

  • WORK-467 — the [data-layout] emission and media-derived default must exist before the coupling is removed.

References

  • Spec: SPEC-099 §2. SPEC-091 (the variant being retired).
  • plugins/marketing/src/config.ts (Feature, variants/definitions-grid), packages/lumina/styles/runes/feature.css.

Resolution

Completed: 2026-06-25

Branch: claude/spec-099-feature-layout-axis

What was done

  • plugins/marketing/src/config.ts — removed the SPEC-091 media-positiondefinitions-grid variant.
  • packages/skeleton/styles/runes/feature.css — grid arrangement (display: grid vs block) now keys off [data-layout="grid"] / [data-layout="list"].
  • packages/lumina/styles/runes/feature.css — item chrome (carded tiles vs flat rows) now keys off [data-layout] instead of [data-media-position].
  • plugins/marketing/src/tags/feature.ts — stale SPEC-091 comment updated.

Notes

  • Output unchanged for existing content (the media-derived default reproduces today's grid/stack); new combinations (media beside + grid, media top + list) are now reachable and styled correctly. CSS coverage green (176).
  • DEFERRED: the generated structure contracts still list .rf-feature--definitions-grid. Regen needs the project's canonical multi-site command — the CLAUDE.md refrakt contracts -o ... now errors on the multi-site config (and a --site main regen diverges from the committed artifact, which has feature 3×). Flagged for the maintainer rather than shipping a divergent artifact.

Completed: 2026-06-25

Branch: claude/spec-099-feature-layout-axis

What was done

  • plugins/marketing/src/config.ts — removed the SPEC-091 media-positiondefinitions-grid variant.
  • packages/skeleton/styles/runes/feature.css — grid arrangement (display: grid vs block) now keys off [data-layout="grid"] / [data-layout="list"].
  • packages/lumina/styles/runes/feature.css — item chrome (carded tiles vs flat rows) now keys off [data-layout] instead of [data-media-position].
  • plugins/marketing/src/tags/feature.ts — stale SPEC-091 comment updated.
  • contracts/structures.json + packages/lumina/contracts/structures.json — regenerated via refrakt contracts --site main. Removing the variants block collapsed feature's per-variant entries (3×→1×) and dropped .rf-feature--definitions-grid. Guarded by packages/lumina/test/contracts.test.ts (green).

Notes

  • Output unchanged for existing content (the media-derived default reproduces today's grid/stack); new combinations (media beside + grid, media top + list) are now reachable and styled correctly. CSS coverage + contracts tests green.