From c98bb5b56e2136a96e950734911f1ff56bf4bd13 Mon Sep 17 00:00:00 2001 From: Julian Noble Date: Wed, 8 Jul 2026 03:52:42 +1000 Subject: [PATCH] make.tcl projectversion: escape [X.Y.Z] in warning messages The version-mismatch and missing-header warning branches interpolated the literal [X.Y.Z] inside double-quoted puts strings, so Tcl attempted command substitution and the check died with `invalid command name "X.Y.Z"` the first time a warning branch actually fired (surfaced by a manual projectversion check during the 0.4.2 bump, whose CHANGELOG entry was missing at the time). Brackets now backslash-escaped. Layout copies of make.tcl synced by the project build included. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com --- src/make.tcl | 4 ++-- src/project_layouts/custom/_project/punk.basic/src/make.tcl | 4 ++-- .../custom/_project/punk.project-0.1/src/make.tcl | 4 ++-- .../custom/_project/punk.shell-0.1/src/make.tcl | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/make.tcl b/src/make.tcl index a45272bf..8600aae7 100644 --- a/src/make.tcl +++ b/src/make.tcl @@ -1848,10 +1848,10 @@ if {$::punkboot::command eq "projectversion"} { if {![string length $pp_version]} { puts stderr "WARNING: could not read version from $pp_file" } elseif {![string length $cl_version]} { - puts stderr "WARNING: no '## [X.Y.Z]' version header found in $cl_file" + puts stderr "WARNING: no '## \[X.Y.Z\]' version header found in $cl_file" } elseif {$pp_version ne $cl_version} { puts stderr "WARNING: version mismatch — punkproject.toml=$pp_version but CHANGELOG.md=$cl_version" - puts stderr " The latest '## [X.Y.Z]' header in CHANGELOG.md must match the version in punkproject.toml." + puts stderr " The latest '## \[X.Y.Z\]' header in CHANGELOG.md must match the version in punkproject.toml." } else { puts stdout "consistency: OK (versions match)" } diff --git a/src/project_layouts/custom/_project/punk.basic/src/make.tcl b/src/project_layouts/custom/_project/punk.basic/src/make.tcl index a45272bf..8600aae7 100644 --- a/src/project_layouts/custom/_project/punk.basic/src/make.tcl +++ b/src/project_layouts/custom/_project/punk.basic/src/make.tcl @@ -1848,10 +1848,10 @@ if {$::punkboot::command eq "projectversion"} { if {![string length $pp_version]} { puts stderr "WARNING: could not read version from $pp_file" } elseif {![string length $cl_version]} { - puts stderr "WARNING: no '## [X.Y.Z]' version header found in $cl_file" + puts stderr "WARNING: no '## \[X.Y.Z\]' version header found in $cl_file" } elseif {$pp_version ne $cl_version} { puts stderr "WARNING: version mismatch — punkproject.toml=$pp_version but CHANGELOG.md=$cl_version" - puts stderr " The latest '## [X.Y.Z]' header in CHANGELOG.md must match the version in punkproject.toml." + puts stderr " The latest '## \[X.Y.Z\]' header in CHANGELOG.md must match the version in punkproject.toml." } else { puts stdout "consistency: OK (versions match)" } diff --git a/src/project_layouts/custom/_project/punk.project-0.1/src/make.tcl b/src/project_layouts/custom/_project/punk.project-0.1/src/make.tcl index a45272bf..8600aae7 100644 --- a/src/project_layouts/custom/_project/punk.project-0.1/src/make.tcl +++ b/src/project_layouts/custom/_project/punk.project-0.1/src/make.tcl @@ -1848,10 +1848,10 @@ if {$::punkboot::command eq "projectversion"} { if {![string length $pp_version]} { puts stderr "WARNING: could not read version from $pp_file" } elseif {![string length $cl_version]} { - puts stderr "WARNING: no '## [X.Y.Z]' version header found in $cl_file" + puts stderr "WARNING: no '## \[X.Y.Z\]' version header found in $cl_file" } elseif {$pp_version ne $cl_version} { puts stderr "WARNING: version mismatch — punkproject.toml=$pp_version but CHANGELOG.md=$cl_version" - puts stderr " The latest '## [X.Y.Z]' header in CHANGELOG.md must match the version in punkproject.toml." + puts stderr " The latest '## \[X.Y.Z\]' header in CHANGELOG.md must match the version in punkproject.toml." } else { puts stdout "consistency: OK (versions match)" } diff --git a/src/project_layouts/custom/_project/punk.shell-0.1/src/make.tcl b/src/project_layouts/custom/_project/punk.shell-0.1/src/make.tcl index a45272bf..8600aae7 100644 --- a/src/project_layouts/custom/_project/punk.shell-0.1/src/make.tcl +++ b/src/project_layouts/custom/_project/punk.shell-0.1/src/make.tcl @@ -1848,10 +1848,10 @@ if {$::punkboot::command eq "projectversion"} { if {![string length $pp_version]} { puts stderr "WARNING: could not read version from $pp_file" } elseif {![string length $cl_version]} { - puts stderr "WARNING: no '## [X.Y.Z]' version header found in $cl_file" + puts stderr "WARNING: no '## \[X.Y.Z\]' version header found in $cl_file" } elseif {$pp_version ne $cl_version} { puts stderr "WARNING: version mismatch — punkproject.toml=$pp_version but CHANGELOG.md=$cl_version" - puts stderr " The latest '## [X.Y.Z]' header in CHANGELOG.md must match the version in punkproject.toml." + puts stderr " The latest '## \[X.Y.Z\]' header in CHANGELOG.md must match the version in punkproject.toml." } else { puts stdout "consistency: OK (versions match)" }