WORK-315
ID:WORK-315Status:done

bar layout, intrinsic field shape, code metaType

The rendering primitives SPEC-080 depends on: a single bar horizontal layout (merging split + chip-row), field shape decided intrinsically from metaType, a new code metaType, and the rename of the unreleased eyebrow rune to bar.

Priority:highComplexity:moderateMilestone:v0.17.0Source:SPEC-080

Criteria completion

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

Tracking started Jun 2 — check back for trends.

Branches 2
History 3
  1. 4ea7f14
    Created (done)by bjornolofandersson
  2. 350ec06
    Content editedby Claude
    feat(transform): SPEC-080 block-and-layout engine + bar primitive (WORK-
  3. 1076766
    Content editedby Claude
    plan: SPEC-080 work breakdown (WORK-314..320) for v0.17.0

Acceptance Criteria

  • bar layout. One horizontal primitive replacing split and chip-row: flex row with wrap (default true) + per-field align. Lumina [data-zone-layout="bar"] plus the shared right-push rule [data-zone-layout="bar"] [data-align="end"] { margin-left: auto }.
  • Intrinsic field shape. Chip-vs-bare is chosen from metaType uniformly across definition-list and bar, via buildChip / buildPlainValue — never from the layout. Chip types: status, category, tag. Bare types: id, quantity, temporal, code. sentimentMap only adds colour.
  • code metaType. Monospace inline, no chip geometry; Lumina typography for data-meta-type="code".
  • Rename the eyebrow rune → bar. The rune created on this branch is unreleased; rename it and update references. eyebrow survives only as a position name.
  • CSS coverage. css-coverage.test.ts updated. split / chip-row remain functional (aliased to bar or left in place) until migrations complete.

Approach

Keep split / chip-row working during the migration window — alias them to bar or leave the old selectors until the legacy surface is removed (WORK-320). The eyebrow-rune rename is cheap now precisely because it is unreleased. Lands in parallel with WORK-314 (engine projection).

Dependencies

  • WORK-305 — SPEC-079 engine + layout primitives (done).

References

  • SPEC-080 — Terminology (eyebrow=position, bar=geometry), field-shape taxonomy, bar alignment.

Resolution

Completed: 2026-06-02

Branch: claude/spec-079-implementation

What was done

  • Added bar to LayoutPrimitive and a BlockDef type; code added to MetaField.metaType.
  • Engine: fieldRendersAsChip (chip = status/category/tag; bare = id/quantity/temporal/code), renderBlockValue, renderBarLayout (flex row, wrap, per-field aligndata-align="end"), and renderDefListBlock (intrinsic shape). New block renderers; the legacy split/chip-row/def-list renderers are untouched so SPEC-079 runes keep their current output until they migrate.
  • Lumina: [data-zone-layout="bar"] + [data-wrap="false"] + [data-align="end"] rules; [data-meta-type="code"] monospace typography.
  • Renamed the unreleased eyebrow rune → bar: tags/bar.ts, catalog entry, Bar block config, bar.css, bar.test.ts, and the site/content/runes/bar.md doc page + prose mentions. eyebrow survives only as a position name. The bar rune emits data-zone-layout="bar" with the right group tagged data-align="end".
  • Regenerated root + lumina structure contracts (Eyebrow → Bar).

Notes

  • split / chip-row CSS + renderers remain functional during the migration window; removed in WORK-320.
  • bar chips are unlabelled (eyebrow-style); labelled rows use definition-list.