V0.46.0
Name:v0.46.0Status:planning

v0.46.0 — The theme contract

A theme renders a vocabulary and configures no rune (ADR-043); a plugin rune speaks the same vocabulary, and only its novel parts bring their own structure, in tokens (ADR-044). Both decisions were accepted on 2026-10-28. This milestone builds what makes them checkable.

Milestone burndown: 6 open work items remaining; peak 6, started Oct 290246Oct 29Nov 4
Open work items Ideal burndown
Progress 0/6 work items
History 2
  1. 807a48b
    Created (planning)by bjornolofandersson
  2. 0ec343f
    Content editedby Claude
    plan: draft v0.45.0 and v0.46.0; WORK-660 joins v0.44.0

Work Items

Ready 6
WORK-670 claude/value-primitives-and-grid
All of metaFields is identity
SPEC-158 D3 made metaFields.*.metaType identity and left label, sentimentMap and transform overridable, so a theme had something to change. ADR-043 decision 2 reads all three as claims about content: a label is copy, a sentiment map says what the content means, and transform names a kind of formatting whose style is now formats (SPEC-166 D6). So metaFields becomes identity as a whole, for native runes too.
medium simple
0/4 criteria
WORK-671 claude/value-primitives-and-grid
The engine stops adding rf-badge to field values
CHIP_METATYPES (packages/transform/src/engine.ts) gives status, category and tag values the rf-badge class, so the engine decides that those values look like pills. Under ADR-043 decision 3 the engine emits meaning, not shape: the pill comes from the base stylesheet, keyed on data-meta-type, and a theme restyles it like any other rule.
medium moderate
0/6 criteria
WORK-672 claude/value-primitives-and-grid
A theme vocabulary coverage check
A theme that configures no rune cannot promise each rune looks right. It needs to cover the vocabulary instead (ADR-043 decision 5). Lumina's coverage test (packages/lumina/test/css-coverage.test.ts) checks BEM selectors derived from rune configs; it does not check vocabulary values.
medium moderate
0/5 criteria
WORK-673 claude/value-primitives-and-grid
A vocabulary report per plugin rune and a token-only lint for plugin CSS
ADR-044 lets a plugin rune bring its own structure CSS only for genuinely novel parts, written only in theme tokens. Two checks make the tiers checkable rather than advice. Neither exists.
low moderate
0/5 criteria
WORK-674 claude/value-primitives-and-grid
A composition's narrative field is checked at definition load
ADR-047 lets a rune declare one narrative field that accepts only the editorial runes textblock and mediatext, and says the field is never published as structured data. As amended, the field is inferred from its match, and both rules are checked.
low simple
0/6 criteria
WORK-675 claude/value-primitives-and-grid
The content-boundaries guide documents the narrative field
The "Content boundaries" section of site/content/extend/rune-authoring/patterns.md puts "Story, editorial, famous quotes" outside recipe. ADR-047 adds a case: a rune may declare one narrative field that takes {% textblock %} and {% mediatext %}, so a template can place the story between the rune's parts. A site's own composed rune can declare one today.
low simple
0/5 criteria