← Jobs
failure

headless ant/term ↗

started 17 Sep 2026 11:01 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: e2e tests corrupted by bash's readline echo on a readline /bin/sh e2e_start disables the pty's kernel ECHO flag so a test's own "typed" command text doesn't leak into the output stream ahead of the command's real output — but on a system where /bin/sh is (a symlink to) bash built with readline, e.g. NixOS's default, bash's readline echoes back whatever it reads using its own redisplay logic, entirely independent of that kernel flag. Reproduced deterministically (100% of runs, single test, single thread — not a timing race) on a NixOS host: fragments of a test's own command/marker text (e.g. "IL" from "ILDONE1", "D" from "ICDONE2") showed up at the position readline echoed them to, instead of the real escape-sequence-driven content, failing test_e2e_char_editing, test_e2e_line_editing, and test_e2e_tmux_secondary_da_no_corruption. Never reproduced on a dash /bin/sh (no built-in line editing to race with), which is what this dev environment and CI's earlier local testing both happened to have. `set +o emacs +o vi` is bash's documented way to fall back to reading input without readline; dash has neither option and just errors harmlessly on stderr (already discarded, same as the PS1 assignment right after it). Sent unconditionally before the READY handshake so it applies regardless of which shell /bin/sh actually resolves to. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KpDBFeBQKx9f5U3pfVeVV3
$ headless failure · exit 1 · raw
++ mktemp -d
+ checkout=/tmp/tmp.KUSxNtydZS
+ trap 'rm -rf "$checkout"' EXIT
+ cp -R /var/lib/ci-tron/sources/b3ba4f1c73ea999b/. /tmp/tmp.KUSxNtydZS
+ cd /tmp/tmp.KUSxNtydZS
+ nix develop --command python3 scripts/headless_test.py
GC Warning: Could not open /proc/stat
headless_test: building term...
headless_test: starting headless sway...
Traceback (most recent call last):
File "/tmp/tmp.KUSxNtydZS/scripts/headless_test.py", line 582, in <module>
sys.exit(main(sys.argv[1:]))
~~~~^^^^^^^^^^^^^^
File "/tmp/tmp.KUSxNtydZS/scripts/headless_test.py", line 530, in main
sway_proc, host_tool_env = start_sway(workdir)
~~~~~~~~~~^^^^^^^^^
File "/tmp/tmp.KUSxNtydZS/scripts/headless_test.py", line 243, in start_sway
proc = subprocess.Popen(["sway"], env=sway_env, stdout=sway_log, stderr=subprocess.STDOUT)
File "/nix/store/vm6nxpp97fxgczw00bwkxdqdm2an3n95-python3-3.13.12/lib/python3.13/subprocess.py", line 1039, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pass_fds, cwd, env,
^^^^^^^^^^^^^^^^^^^
...<5 lines>...
gid, gids, uid, umask,
^^^^^^^^^^^^^^^^^^^^^^
start_new_session, process_group)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/vm6nxpp97fxgczw00bwkxdqdm2an3n95-python3-3.13.12/lib/python3.13/subprocess.py", line 1991, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'sway'
+ rm -rf /tmp/tmp.KUSxNtydZS
Artifacts

no artifacts