feat(profiler/behave_shell): output error-signal helper for Phase D

Lifts the error-signal slice of F.0 forward as a D.0 prelude. ANSI
strip + canonical bash/sh error fingerprints classify each command's
post-execution output window; Command gains errored / output_bytes
fields. PII discipline preserved — only a bool and an int leave the
helper, the stripped output text is dropped on return.

Drives D.1 (cognitive_load error_rate term) and D.5–D.7 (error_resilience
family). Phase F.0 will subsume this with PS1 + exit-code parsing.
This commit is contained in:
2026-05-03 23:46:31 -04:00
parent bc62e42ce1
commit 601986bd6d
4 changed files with 259 additions and 0 deletions

View File

@@ -76,6 +76,17 @@ FEEDBACK_MIN_PAIRS: int = 5
PAUSE_CV_METRONOMIC_MAX: float = 0.40
PAUSE_CV_BIMODAL_MIN: float = 1.50
# ── output error-signal helper (Step D.0) ──────────────────────────────────
# The canonical bash/sh error fingerprints live in ``_parse.py`` as
# ``_OUTPUT_ERROR_PATTERNS`` (compiled regexes). They're not threshold
# numbers, so they live next to the helper that uses them rather than
# here. This v0.1 heuristic will be subsumed by Phase F.0's prompt
# parser (PS1 echo + exit-code sniff), at which point this comment and
# the patterns block move to ``_parse.py``'s prompt section. Until then,
# any drift in registry value definitions for ``error_resilience.*`` or
# ``cognitive_load`` must be reflected by editing the patterns tuple
# (not a constant, so no boundary-band logic applies).
# ── motor.keystroke_cadence (Step B.1) ──────────────────────────────────────
# Typing bursts split at gaps > IKI_THINK_MAX_S so think-pauses between
# commands don't inflate the within-burst CV. Mirrors the prototype's