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 align → data-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.