The closing-banner prefix check 'string match "$line_inner*"' treated
the raw test name as a glob pattern, so a test NAME containing glob
metacharacters (* ? [ ] backslash) never matched its own opening text:
the closing banner failed to close the failure section and every later
event including the summary line was swallowed (the G-161 wedge class;
latent, unexercised in the corpus). The check is now an exact byte
prefix compare (string equal -length) - identical semantics for ordinary
names, and an empty line_inner keeps the historic match-everything
behaviour. New parsetestrun-globname-7.0/7.1 pins: 8/8 green tclsh90
single+multi-process and tclsh86, parser dir 10/10.
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). runner/AGENTS.md parser coverage bullet updated.
CHANGELOG + punkproject 0.51.2.
Assisted-by: harness=opencode; primary-model=openrouter/moonshotai/kimi-k3; api-location=openrouter.ai
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
Acceptance met in full (evidence in the archived detail file's Progress):
synthetic + e2e parser suites committed and green both runner modes and
both Tcl generations; full-suite parity PARITY ok in both modes;
src/tests/AGENTS.md relaxed to style guidance. Index entry ->
GOALS-archive.md, detail file -> goals/archive/ with Progress evidence
and three structured open Follow-ons (single-line banner anchoring,
glob-metachar closing-banner match, errorInfo/errorCode leading space).
Reference sweep: no pending-tense live-tier references existed;
goals_lint clean (83 active / 80 archived); goals_followons registers
the three open items; goals_xref reports no lost bridges.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com