V0.35.0
Name:v0.35.0Status:planning

v0.35.0 — Declarative schema.org mapping

Thirty runes publish structured data. Every one of them writes it by hand, inside its transform, in a channel no tool can read and no reviewer looks at. This milestone turns that channel into data keyed by the rune's own names — the same shape BEM, modifiers and editHints already use — and builds the review surface it has never had.

Milestone burndown: 15 open work items remaining; peak 15, started Sep 1403691215Sep 14Sep 15
Open work items Ideal burndown
Progress 0/12 work items
Related 20
History 2
  1. 989be44
    Content editedby bjornolofandersson
  2. f847949
    Created (planning)by bjornolofandersson

Work Items

Ready 12
WORK-560 claude/spec-130-spec-133-priority-fd9nfg
Give properties and refs a stated rule
State the rule that decides which map a node belongs in, and correct the authoring docs to describe what the catalog actually emits. Documentation and a lint, not a migration — none of SPEC-133's ~97 node moves happen here.This is in this milestone for one reason: WORK-561 has to choose a map for roughly ten nodes, and without a stated rule those choices get made ad hoc and re-made later.
medium simple
0/5 criteria
WORK-561 claude/spec-130-spec-133-priority-fd9nfg
Make every schema.org source addressable
Roughly ten schema sources are in neither properties nor refs, so they are reachable by neither route the applier has: not in the field bag, and carrying no data-name. Give each one a name or a bag entry before its rune migrates.Purely additive, no schema knowledge required, and it can land in parallel with WORK-565. It is a prerequisite for the runes that carry these sources, not for the mechanism itself.
high simple
0/7 criteria
WORK-562 claude/spec-130-spec-133-priority-fd9nfg
Baseline the JSON-LD every rune emits today
Commit a snapshot of today's structured data for all 30 emitting runes, before a single call site changes. Every later item in this milestone is then reviewed as a diff against it.This goes first, and nothing in the milestone starts before it.
high simple
0/7 criteria
WORK-563 claude/spec-130-spec-133-priority-fd9nfg
Harvest SEO after the pipeline, and assert both harvest points agree
Recompute seo from enrichedPages once runPipeline returns, and add the two-point invariant that keeps the RDFa and the JSON-LD from drifting apart.Independent of the schema table — it fixes a live hole on its own and builds the net every later item lands into.
high moderate
0/8 criteria
WORK-564 claude/spec-130-spec-133-priority-fd9nfg
Move Lumina off the schema.org channel
Six Lumina rules select on RDFa property= attributes. Four of them already match nothing. Move all six to the BEM element classes that exist for the same nodes, and add the assertion that keeps presentation off this channel.Half of this is a bug fix (BUG-015) regardless of whether anything else in the milestone ships. The other half is removing a tripwire that WORK-565 onward would otherwise be walking across.
medium simple
0/6 criteria
WORK-565 claude/spec-130-spec-133-priority-fd9nfg
The schema table and its applier
The mechanism: a declarative schema table declared on the rune, an applier that realises it at transform time, and the three entry kinds (SPEC-130's entities, text and index) that let it express what the 30 emitters do imperatively today.No rune migrates here. This item builds the thing and proves it on the two runes the spec already prototyped; WORK-567 through WORK-571 are the migration.
high complex
0/17 criteria
WORK-566 claude/spec-130-spec-133-priority-fd9nfg
Show a rune's resolved schema row in inspect, contracts and reference
Make the table reviewable. refrakt inspect shows a rune's resolved schema row, refrakt contracts describes the structured data it currently omits, and refrakt reference documents it.
high moderate
0/9 criteria
WORK-567 claude/spec-130-spec-133-priority-fd9nfg
Group A — seven runes that assert a type and describe nothing
gallery, data-table, budget, itinerary, map, symbol and blog declare a schemaOrgType and no property mapping at all. Each either gains a real mapping or stops emitting a type.Apply D4: a row that resolves to a bare @type emits nothing.
medium moderate
0/6 criteria
WORK-568 claude/spec-130-spec-133-priority-fd9nfg
Group B — fourteen flat mappings, and the type that does not exist
figure, embed, cast-member, character, realm, faction, plot, lore, organization, pricing, tier, timeline-entry, track and breadcrumb-item convert to declarative tables. These are the clean case: the transform already computes the values, and the table only names their schema roles.Mechanical, with one exception that is not.
medium moderate
0/9 criteria
WORK-569 claude/spec-130-spec-133-priority-fd9nfg
playlist — per-type schema, per-type children, and the two emitters
The driving case. playlist exercises by: row selection, per-type children: mappings and inline property stamps at once, and fixes BUG-013 in the process.It also carries the one design question SPEC-130 said it must answer and did not.
high complex
0/11 criteria
WORK-570 claude/spec-130-spec-133-priority-fd9nfg
Retype and wrap — accordion, recipe and how-to
accordion, accordion-item, recipe and how-to set typeof on nodes they did not create and hand-write a <div property="text"> wrapper to supply the value. Replace both with a declaration.The HTML must not change. That is the whole difficulty.
medium moderate
0/8 criteria
WORK-571 claude/spec-130-spec-133-priority-fd9nfg
Synthesised entities and index-derived values
The last two Group C shapes. testimonial and event build entity spans by hand from text pulled out of other tags; breadcrumb and timeline emit positions from a loop index. Both become declarations.Closes Group C, and with it the migration.
medium moderate
0/9 criteria