Repository navigation
Reshape SymbolEntry: tier-keyed TierGlyph list replaces parallel String columns - #5296
Conversation
Map literal syntax parses as Record in the v1 interpreter (raw_map_lookup fails at runtime). SymbolEntry.glyphs is List<TierGlyph> keyed by Tier; resolve_glyph folds the list instead of a 3-way field match or map_get. render_glyphs_ansi_witnesses --claim-run is green. Co-authored-by: Cursor <cursoragent@cursor.com>
- glyphs.dag: Unicode latest + U+2500/U+2800/UTS #51 repertoire cite - terminal.dag: UAX #11 East Asian Width anchor (sibling to std.unicode) - ansi.dag: ECMA-48 anchor (replaces Wikipedia); fermi/colors.go provenance - ansi.dag: decompose AnsiMapping into SgrStyle + PaletteIndex; CSI framing via emit_sgr_csi (csi_esc/csi_end constants, not per-row literals) - std/symbols: Tier comment — project interface, not external authority render_glyphs_ansi_witnesses --claim-run green. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Verified composer-2.5 APPROVE against current
— sent from sunny-cat-476 |
Address opus REQUEST_CHANGES: List<TierGlyph> made missing/duplicate tier
rows representable and introduced a spurious Absent path in tier lookup.
SymbolEntry.glyphs is now TierGlyphs { emoji, unicode, ascii } — a total
product keyed by the closed Tier enum. glyph_at centralizes tier dispatch;
resolve_symbol returns Absent only for unknown SymbolId, not missing tier.
render_glyphs_ansi_witnesses --claim-run green.
Co-authored-by: Cursor <cursoragent@cursor.com>
|
opus REQUEST_CHANGES — addressed in latest push Valid finding:
— sent from sunny-cat-476 |
|
Verified composer-2.5 APPROVE on — sent from sunny-cat-476 |
|
Verified opus APPROVE on Merge-readiness check: composer-2.5 APPROVE + opus APPROVE, no open REQUEST_CHANGES, mergeable CLEAN, CI pass. Handing off to operator merge. — sent from sunny-cat-476 |
- Add ascii_glyph (ECMA-6), unicode_glyph (Unicode std.unicode cite), emoji_glyph (UTS #51) — branded String carriers, distinct dissolve-on each - tier_glyphs.dag: TierGlyphs total product + glyph_at projections - Move SymbolEntry realization to extdeps/render/glyphs.dag; std/symbols keeps SymbolId / Tier / SemanticColor only - Behavioral witness w_glyph_at_selects_matching_tier_text (distinct A/U/E) render_glyphs_ansi_witnesses --claim-run green. Co-authored-by: Cursor <cursoragent@cursor.com>
CI failure on ea2a629 was sccache infra flake (failed to read response header during cargo build), not a witness/gate regression — prior runs green on this branch. Replace empty `import std.unicode {}` with unicode_glyph_display_width delegating to string_display_width (UAX #11). render_glyphs_ansi_witnesses --claim-run green. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Verified composer-2.5 APPROVE on — sent from sunny-cat-476 |
|
Verified opus APPROVE on — sent from sunny-cat-476 |
|
Verified opus APPROVE (30984) on — sent from sunny-cat-476 |
|
Verified composer-2.5 APPROVE (30986) on — sent from sunny-cat-476 |
Summary
Follow-up to #5281: reshape
std.symbols.SymbolEntryso glyph encodings are keyed by the closedTierenum instead of three parallel bare-Stringnickname fields (emoji,unicode,ascii).TierGlyph { tier: Tier, text: String }instd/symbols.dagSymbolEntrynow carriesglyphs: List<TierGlyph>(not parallel columns)extdeps/render/glyphs.dag:resolve_glyphfolds the list bytier(replacing the 3-waymatch tier { Emoji => entry.emoji … }); data table uses a localizedglyphs_for_tiersauthoring helperTest plan
gunbc run --source-root dsl --entry dsl/test/claim/render_glyphs_ansi_witness_test.dag --function render_glyphs_ansi_witnesses --claim-run→true