The '---- errorInfo: ' / '---- errorCode: ' prefixes are 16 characters;
parse_testrun captured from index 15, so every captured value led with
the prefix's trailing space. Capture now starts at index 16 -
report-shape normalization only (continuation errorInfo lines were
always raw and are unchanged). parsetestrun-multiline-error-3.0 pins the
normalized shape (errorcode exact, errorinfo anchored) instead of
trimming/tolerating; 6/6 green tclsh90 + native tclsh 8.6.
Landed directly at user direction from the archived G-161 Follow-ons -
disposition flipped to landed in the same change-set (the sanctioned
archived-file edit). CHANGELOG + punkproject 0.49.7.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
@ -107,4 +107,4 @@ lines inside test output) must keep their current behaviour for single-line case
Follow-on: anchor-verify single-line opening banners too - any "==== * FAILED" line still opens failure capture unanchored (the historic emulated-banner confounder cost, pinned by parsetestrun-confounder-5.0); anchoring would close it but changes characterized behaviour => open
Follow-on: anchor-verify single-line opening banners too - any "==== * FAILED" line still opens failure capture unanchored (the historic emulated-banner confounder cost, pinned by parsetestrun-confounder-5.0); anchoring would close it but changes characterized behaviour => open
Follow-on: closing-banner prefix match uses glob string match on the raw name, so a test NAME containing glob metacharacters can mis-match its opening text (latent, pre-existing, unexercised in the corpus) => open
Follow-on: closing-banner prefix match uses glob string match on the raw name, so a test NAME containing glob metacharacters can mis-match its opening text (latent, pre-existing, unexercised in the corpus) => open
Follow-on: errorInfo/errorCode capture retains a historic leading space (capture ranges from index 15 of the 16-char "---- errorCode: " prefix); consumers tolerate it and the parser suite trims - normalizing is a report-shape change => open
Follow-on: errorInfo/errorCode capture retains a historic leading space (capture ranges from index 15 of the 16-char "---- errorCode: " prefix); consumers tolerate it and the parser suite trims - normalizing is a report-shape change => landed 2026-08-04 (tcltestrun 0.4.1 parse_testrun index-16 capture, parsetestrun-multiline-error-3.0 pins thenormalized shape exact; punkshell 0.49.7)
#0.4.1 - parse_testrun fix (G-161 follow-on, landed at user direction): errorInfo/errorCode values no longer carry the historic leading space - the "---- errorInfo: "/"---- errorCode: " prefixes are 16 characters and the capture ranged from index 15 (the prefix's trailing space); capture now starts at index 16. Report-shape normalization only; continuation errorInfo lines were always raw and are unchanged.
#0.4.0 - parse_testrun (G-161): multi-line opening-banner tolerance. A failing test whose description contains embedded newlines (tcltest emits the banner as ONE puts spanning physical lines) is now parsed with full fidelity - failure entry with name/description/result_was/result_expected - and every later event including the summary line keeps flowing. Recognition anchors on '---- <name> start' events (-verbose start, which runtests.tcl always passes) plus bounded banner-continuation buffering, abandoned at the next recognisable event line so banner-ish ordinary output cannot swallow events. Streams without start events, and all single-line parse paths (including the emulated-banner confounder heuristics), behave exactly as before.
#0.4.0 - parse_testrun (G-161): multi-line opening-banner tolerance. A failing test whose description contains embedded newlines (tcltest emits the banner as ONE puts spanning physical lines) is now parsed with full fidelity - failure entry with name/description/result_was/result_expected - and every later event including the summary line keeps flowing. Recognition anchors on '---- <name> start' events (-verbose start, which runtests.tcl always passes) plus bounded banner-continuation buffering, abandoned at the next recognisable event line so banner-ish ordinary output cannot swallow events. Streams without start events, and all single-line parse paths (including the emulated-banner confounder heuristics), behave exactly as before.
#0.4.0 - parse_testrun fix (G-161): result_expected was NEVER captured - the '---- Result should have been' opener always arrives while the result_was capture is active, and the active-capture reset branch fell through PAST the opener elseif, so every FAILED record lacked result_expected and the expected-value lines leaked into test_body. The active-capture branch now transitions result_was -> result_expected directly.
#0.4.0 - parse_testrun fix (G-161): result_expected was NEVER captured - the '---- Result should have been' opener always arrives while the result_was capture is active, and the active-capture reset branch fell through PAST the opener elseif, so every FAILED record lacked result_expected and the expected-value lines leaked into test_body. The active-capture branch now transitions result_was -> result_expected directly.
#0.3.1 - fix: tm_path_additional_ifneeded exclude list missed the G-155 _build->_mint staging rename - staged pods in _mint were registered as bogus _mint::* modules; now -exclude-paths {**/_build/*** **/_mint/***} (full option name, ***-tail pruning form; _build kept for legacy checkouts)
#0.3.1 - fix: tm_path_additional_ifneeded exclude list missed the G-155 _build->_mint staging rename - staged pods in _mint were registered as bogus _mint::* modules; now -exclude-paths {**/_build/*** **/_mint/***} (full option name, ***-tail pruning form; _build kept for legacy checkouts)