WORK-670
ID:WORK-670Status:done

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.

Priority:mediumComplexity:simpleMilestone:v0.46.0Source:ADR-043

Criteria completion

Criteria completion: 4 of 4 (100%) checked; tracking started on Nov 2, no incremental history yet0%25%50%75%100%Nov 2Nov 4

Tracking started Nov 2 — check back for trends.

Branches 4
History 5
  1. e2cb222
    Created (done)by bjornolofandersson
  2. be024ac
    Content editedby Claude
    plan: WORK-670, WORK-671 done (#752)
  3. d2b8962
    Content editedby Claude
    v0.46.0 batch 1: all of metaFields is identity; the engine stops adding
  4. 0ec343f
    Content editedby Claude
    plan: draft v0.45.0 and v0.46.0; WORK-660 joins v0.44.0
  5. c527aa0
    Content editedby Claude
    plan: accept ADR-042 to ADR-045; SPEC-166 D6 formats; WORK-669 to WORK-6

Acceptance Criteria

  • IDENTITY_FIELDS names metaFields in place of metaFields.*.metaType, and a theme override of any part of it is reported and dropped
  • No first-party theme or preset trips the guard
  • SPEC-158 D3 carries a note pointing to ADR-043
  • The changeset names the break for third-party themes that override label, sentimentMap or transform, with the migration: change the definition, or style through [data-field] and [data-value]

References

  • ADR-043: decision 2.
  • SPEC-158: D3.

Resolution

Completed: 2026-11-02

Branch: claude/milestone-v0-44-0-ism7ni

What was done

  • packages/transform/src/identity-fields.ts: IDENTITY_FIELDS names metaFields in place of metaFields.*.metaType. IDENTITY_FIELD_ATTRIBUTES keys data-meta-type to metaFields.
  • packages/transform/src/merge.ts: the per-entry metaType reassert is removed (a guarded override never carries metaFields), and the docs are updated.
  • Tests: identity-paths.test.ts has the D3 block rewritten. Each of metaType/label/sentimentMap/transform is dropped and reported as metaFields, blocks stays overridable, and the wildcard tests pass their path explicitly. identity-fields.test.ts has its list updated.
  • plan/specs/SPEC-158: a D3 note pointing to ADR-043.
  • .changeset/metafields-identity.md.

Notes

  • Lumina's identity-guard test (every first-party plugin, and Lumina's own overrides) passes unchanged, so nothing first-party trips the guard.
  • The criterion's migration names [data-value], which the engine does not emit. The changeset names [data-field], [data-meta-type] and [data-meta-sentiment] instead.