WORK-567
ID:WORK-567Status:ready

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.

Priority:mediumComplexity:moderateMilestone:v0.35.0Source:SPEC-130
claude/spec-130-spec-133-priority-fd9nfg View source

Criteria completion

Criteria completion: 0 of 6 (0%) checked; tracking started on Sep 14, no incremental history yet0%25%50%75%100%Sep 14Sep 15

Tracking started Sep 14 — check back for trends.

History 1
  1. f847949
    Created (ready)by bjornolofandersson

What they publish today

{ "@context": "https://schema.org", "@type": "Dataset" }
{ "@context": "https://schema.org", "@type": "ItemList" }

A Dataset with no name, description or distribution; an ItemList with no itemListElement. Verified by running extractSeo directly over gallery, data-table, budget, itinerary and map; symbol and blog carry no schema: map either, so nothing stamps a property inside them.

These are not wrong the way a podcast typed as a music playlist is wrong. They are noise in every consumer that reads them.

Acceptance Criteria

  • Each of the seven runes either declares at least one property or stops emitting a type
  • The decision per rune is recorded with a reason, not left implicit in the diff
  • No entity with zero properties is emitted anywhere in the catalog, enforced by the mechanism rather than by convention (D4)
  • Every removal is visible as a diff against WORK-562's baseline — seven entities disappearing in one reviewable commit
  • Any rune that gains a mapping has that mapping reviewed through refrakt inspect (per WORK-566), not by reading the transform
  • defineRune({ schemaOrgType }) entries for these runes go with them

Approach

The forcing function is the point. The imperative form let this question be skipped for years — schemaOrgType: 'Dataset' costs one line and looks like work being done. The table makes "write the mapping or lose the type" the only two options, which is the right pressure.

Expect the honest answer for most of them to be lose the type. A gallery of images is a plausible ImageGallery but only if it says what images; a data-table is a plausible Dataset but only with a distribution. Where the content genuinely carries the properties, map them; where it does not, removing the assertion is the improvement, not the compromise.

blog is the one worth a second look, since it is the closest to page-level schema and page-level schema is explicitly out of scope for SPEC-130WebSite and Organization entities are built in seoToHtml and the Next/Nuxt head helpers, not from runes. If blog's right answer turns out to be "this belongs to the page, not the rune", record that and drop the type here rather than inventing a rune-level mapping to keep it.

Blocked by

  • WORK-565
  • WORK-566

References

  • SPEC-130 — "Group A", D4, and the page-level non-goal
  • WORK-562 — the baseline these removals are read against