Programmer-POV diagnostics
Core claim
Diagnostic text is a communication surface. When compilers write for their own vocabulary (AST nodes, internal codes, dump-shaped stderr), they force the programmer into a second job: translating machine talk into “what do I change?”
That is the same failure mode as handing a driver raw ECU hex when they asked why the radiator failed.
OpenShellOrg owns the tool-run bus and shell hosts that keep diagnostics off the scrollback. HCI Nerdz owns the wording and attention face: programmer POV, channel switchers, and demos of how humans scan runs.
Three stacked problems
-
Vocabulary — messages describe the compiler’s world, not the programmer’s next edit.
-
Surface — multiline stderr in a VT scrollback is wrap-hostile and hostile to agent spam.
-
Index — finished runs disappear; fifty agent compiles leave no shared secondary context.
Fixing only vocabulary inside stderr still leaves the wrong surface. Fixing only a GUI without structured events still leaves scrapers.
Presentation over rewrite
Most ecosystems already emit machine-readable diagnostics (SARIF, rustc JSON, clang tooling JSON). Programmer-POV copy is often a presentation layer over codes — glossaries, “do this next,” related spans — not a demand that every frontend be rewritten before the UX can improve.
HCI work here: patterns for gloss, severity without panic theater, and how a diagnostic list should scan when the reader is mid-edit.
Surfaces HCI cares about
| Surface | HCI question |
|---|---|
| Channel switcher (out / err / diag) | Top chips vs left rail; attention without clutter |
| Tool-run panel | Live vs collapsed tile; how finished work stays findable |
| Embed in agent timeline | Same widgets, different chrome — no second visual language |
| Host flash / focus | How to summon the shell that owned the run without stealing focus from the wrong place |
Desktop Tooling may help when the host is the OS desktop (tray, flash). Dev-Centr harnesses mount the embeddable library. OpenShellOrg defines the bus.
Retro-interactivity vs tool runs
Retro-interactive shell results (format at display time; stay interactive after exit) help when the output is data — tables, lists, API rows.
Tool runs help when the output is adversarial diagnostics that should not own the pipeline.
Same thesis (display ≠ transport), different mounts. Do not force compilers into “pretty table” just because Nu can explore tables.