Concretization failed errors emit ANSI escape sequences that screen readers cannot parse
0 reputation · 28 Feb 2026, 22:50 UTC
Accessibility barrier in concretization failure output
When spack concretize or spack install cannot resolve a spec, the CLI prints a multi-line dependency conflict trace that uses ANSI color codes for version constraints, conflict markers, and tree connectors. In monochrome terminals or under screen readers, these escape sequences appear as raw characters (e.g., ^[[31m, ^[[0m), obscuring the root-cause message and making the structured graph unreadable.
Current constraints
- The global
--color={always,auto,never}flag suppresses color but does not restructure the dense dependency trace into a linear, parseable format. - No
--error-format=json(or YAML) option exists for concretization failures; thespack spec --formattemplating only applies to successful specs. - Terminal width detection defaults to 80 columns in headless CI, causing line-wrapping that breaks tree alignment and further degrades readability.
Open design questions
Should a machine-readable error schema be added behind a new --error-format flag, and if so, how to version that schema without breaking existing log parsers? Can the existing spack.error hierarchy be extended to emit structured diagnostics while preserving the current human-readable layout for interactive use?