# Focused diff — D2 field driver, preserved 81dc4fe8 -> current f7b7773f. # sha256(history/fp-driver-d2-81dc4fe8.sh) = 81dc4fe8288105ed65998f2b152896f1cd4e068e29f1d3b1defe3ae5ed1c315d # sha256(fp-driver-d2.sh) = f7b7773f6988768421fb4a4f19eeb6a6e12faec6136e7c1cad3032f0c1e2fde0 # One hunk, 9 added / 5 removed, entirely inside ts_readable(). Arm R10 is rig-side. # Runtime dependency recorded per doyle 2026-09-13: date -u -d is GNU coreutils (8.32 measured # here); acceptable for this Windows/MSYS-specific diagnostic, no BSD/macOS support requested. --- history/fp-driver-d2-81dc4fe8.sh 2026-09-12 19:36:20.063144100 -0700 +++ fp-driver-d2.sh 2026-09-12 19:36:20.983438300 -0700 @@ -718,11 +718,15 @@ # every row carries a numeric pid, a READABLE creation timestamp, a non-empty executable and a # non-empty command line. # Anything else is UNREADABLE -- INCLUDING the case where every recorded pid is now absent. -ts_readable() { # a timestamp we can compare, not merely a string that is not the word UNREADABLE - case "$1" in - [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]*Z) return 0 ;; - *) return 1 ;; - esac +ts_readable() { # a timestamp we can COMPARE -- parsed, not merely shaped + # SHAPE IS NOT VALIDITY (doyle, 2026-09-13). "2026-02-30T00:00:00.000Z" matches every character + # class an ISO-8601 pattern asks for and names a day that does not exist, so a pattern test would + # let an impossible date establish pid reuse. This PARSES the value with the calendar and treats + # a parse failure as unreadable. The empty string is rejected first, because `date -d ""` is + # accepted as "now" and would otherwise pass. + [ -n "$1" ] || return 1 + case "$1" in [0-9][0-9][0-9][0-9]-*) ;; *) return 1 ;; esac + date -u -d "$1" +%s >/dev/null 2>&1 } capture_is_complete() { # -> 0 when the recorded set may support a CLEAR verdict local f="$R/run-identities.txt"