Bracket std79 DoE trial loop with HB-ON/HB-OFF, capture real heartbeat CSVs
Every prior std79-doe.fth run's automatically-extracted CSV (scripts/extract_doe.sh) was silently empty -- g_doe_log_enabled (doe_log.c) defaults off, and nothing in the campaign ever called HB-ON. EXEC-STD79-DOE now calls HB-ON right before its trial loop and HB-OFF right after, so the per-heartbeat-tick physics/timing CSV (18 columns: tick_number, hot_word_count, avg_word_heat_q48, apic_ticks, per-VM heat_q48, etc.) finally covers the run's own window on all three architectures. Found and fixed two bugs along the way, one in a comment and one in the ad hoc QEMU orchestration script used to drive these runs (not part of this repo): - std79-doe.fth's own explanatory comment accidentally spelled out the literal "[HADES][DOE ]" tag string doe_log.c prefixes each row with -- the FORTH REPL's compile-time echo of that comment then matched scripts/extract_doe.sh's own extraction grep, corrupting the first extracted CSV row with comment text instead of real telemetry. Fixed by never spelling out the literal substring. - The harness script's completion-detection watched for "STD79-DOE: complete" anywhere in the log since before the whole capsule was fed, which matches the colon definition's own compile-time echo of that same string literal, not just the real end-of-run print. Without HB-ON the entire 27-trial run finished in a few seconds -- faster than one poll interval -- so the false match and the real one always landed in the same window and this never surfaced. HB-ON's added per-tick console I/O slowed real execution enough to expose it: the script sent BYE the moment compilation finished, truncating every trial after whatever point compilation had reached (aarch64 lost 9 of 27 trials this way on the first attempt). Fixed by feeding definitions and invocation as two genuinely separate connections, with the completion-watch window opened only after compilation is confirmed landed. Verified 27/27 trials correct on every architecture via the campcampaign's most distinctive result markers (both M*/M/MOD 18-19 digit values and the 2147483648 2/ result, all exactly 27 occurrences, zero faults) rather than exact substring reconstruction: HB-ON's async per-tick CSV printer and the trial loop's own console output share the same serial line with no locking, so CSV rows can splice mid-token into trial output on the wire (confirmed live -- cosmetic only, the underlying FORTH execution and values are unaffected). results-20260912-with-heartbeat-csv/ holds both the raw logs and their paired heartbeat CSVs; the earlier truncated runs' logs are kept too (never delete logs) as the record of how this was found. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXieurDfDSsDFdnSyusuWo
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
8394e375d1
commit
403a7639e1
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user