From 47f3a88799c652ff03e292c59f29d62ca32e7511 Mon Sep 17 00:00:00 2001 From: Julian Noble Date: Sun, 2 Aug 2026 20:34:49 +1000 Subject: [PATCH] G-025: activate (status proposed -> active) Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com --- GOALS.md | 2 +- goals/G-025-exe-selfreport.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/GOALS.md b/GOALS.md index 547ffdb6..e98c5836 100644 --- a/GOALS.md +++ b/GOALS.md @@ -153,7 +153,7 @@ Detail: goals/G-022-fossil-rename-punkshell.md Scope: src/make.tcl; src/runtime/ (mapping config - see G-024); bin/ (build outputs) Detail: goals/G-023-version-named-binaries.md -### G-025 [proposed] Punk executables self-report project version and build provenance +### G-025 [active] Punk executables self-report project version and build provenance Scope: src/vfs/_config/punk_main.tcl (subcommand dispatch); src/make.tcl (stamping build info into the vfs); src/vfs/ (stamp payload location); src/modules/punk/ (in-shell command - the single implementation) Detail: goals/G-025-exe-selfreport.md diff --git a/goals/G-025-exe-selfreport.md b/goals/G-025-exe-selfreport.md index 2cba0287..27a4c628 100644 --- a/goals/G-025-exe-selfreport.md +++ b/goals/G-025-exe-selfreport.md @@ -1,6 +1,6 @@ # G-025 Punk executables self-report project version and build provenance -Status: proposed +Status: active Scope: src/vfs/_config/punk_main.tcl (subcommand dispatch); src/make.tcl (stamping build info into the vfs); src/vfs/ (stamp payload location); src/modules/punk/ (in-shell command - the single implementation) Goal: a punk executable reports its identity from embedded data rather than its filename - a documented subcommand prints the punkproject.toml project version it was built from plus the input runtime binary name and vfs folder name used to assemble it - with the same-named command available in the punk module so scripts running in any punk shell (including tclsh-hosted ones like `tclsh src/make.tcl shell`) get the same report in-process without exec, stamp fields reported as absent rather than fabricated when there is no stamp. Acceptance: the build stamps project version, runtime binary name, and vfs folder name into the kit; the built executable invoked with the version-report subcommand prints those fields machine-parseably on stdout and exits 0 with no other output (G-015-compatible; no repl fallthrough); a same-named command in the punk module returns the same fields in-process (subcommand implemented as a wrapper over it - one implementation) and works from the code interp; the report distinguishes stamped provenance from live facts: a stamped kit reports its stamp, a `src`-mode or source-tree session additionally reports the live punkproject.toml version as a distinct field when it differs, and unstamped contexts (`tclsh src/make.tcl shell`, plain tclsh with punk modules) report stamp fields explicitly absent with live runtime facts (actual `info nameofexecutable`) still provided; the report is correct when the executable file has been renamed or copied; executables built before stamping existed fail gracefully with a clear message rather than fabricating values.