← Jobs
failure

headless ant/term ↗

started 17 Sep 2026 08:38 UTC · ran for
2m 38s, success 2m 32s, success 2m 41s, success 2m 37s, success 3m 43s, success 3m 29s, success 3m 47s, success 3m 37s, success 3m 31s, success 3m 46s, success avg 3m 14s ± 33s over the last 10 runs
fix: pin HarfBuzz's advance-query load flags to match cell_metrics hb_ft_font_create leaves HarfBuzz's own glyph-advance query on an internal default that isn't font.LOAD_DEFAULT. At some pixel sizes (font-dependent — reproduced with both the Nerd Font build in use and DejaVu Sans Mono, just at different sizes for each) that path returns each glyph's *unhinted* advance, while cell_metrics derives cell_w from face.size.metrics.max_advance, a *hinted* value — same font, same size, two disagreeing numbers. draw_shaped_run accumulates HarfBuzz's advance across a run but resets each new run's origin_x from the grid (start_col * cell_w), so the 1px-per-character gap only became visible at the next Row_Run_Key boundary (a color/style change) — read as "extra space before differently-styled text, growing the further right you look" rather than uniform drift, and vanishing entirely for plain single-color text where nothing ever resets against it. hb_ft_font_set_load_flags(font, font.LOAD_DEFAULT) makes HarfBuzz use the exact same hinted advance font.odin's own rasterize() already loads glyphs with, closing the gap between the two paths.
$ headless failure · exit 1 · raw
++ mktemp -d
+ checkout=/tmp/tmp.xwNai0Axfu
+ trap 'rm -rf "$checkout"' EXIT
+ cp -R /var/lib/ci-tron/sources/17fc8960553517e7/. /tmp/tmp.xwNai0Axfu
+ cd /tmp/tmp.xwNai0Axfu
+ nix develop --command python3 scripts/headless_test.py
GC Warning: Could not open /proc/stat
headless_test: FAIL: XDG_RUNTIME_DIR is unset — not a Wayland-capable session
+ rm -rf /tmp/tmp.xwNai0Axfu
Artifacts

no artifacts