CodePulse v2.3.113 — em-dash parse bomb + AST CI gate
Build-support-email.ps1 failed to parse because a UTF-8 em-dash inside a double-quoted string was misread as a closing quote under PS 5.1's ANSI fallback. All installer .ps1 files scrubbed + CI now runs [Parser]::ParseFile before every release.
Install Script Parse Bomb, Round 2 (TAB-588 — second hotfix)
- Parse bomb class #2 — UTF-8 em-dash misread as CP1252 closing quote — PS 5.1 reads BOM-less
.ps1files as the CP1252 ANSI codepage. The UTF-8 em-dash—has byte sequenceE2 80 94, and0x94maps to a curly closing double-quote (") in CP1252, which terminated the string mid-expression. The v2.3.112 hotfix had actually added a new em-dash while fixing the$Script:bomb — a textbook example of an in-repo encoding regression that neither tsc nor unit tests could catch. - All 10 installer .ps1 files scrubbed + CI AST gate — Em-dashes, en-dashes, arrows, and box-drawing characters were replaced with ASCII equivalents across every
install/**/*.ps1file. A new CI gate inrelease.ymlruns PowerShell's built-in[System.Management.Automation.Language.Parser]::ParseFileplus a BOM/ASCII scan in ~3 seconds before the 10-minute build step — any future encoding or syntax regression is now caught before the installer binary can be produced. - Write-InstallLog fallback — Added a no-op
Write-InstallLogstub toinstall.ps1and addedlogger.ps1to the preflight required-files list, so a missing logger no longer crashes the installer before it can write any diagnostics.