From d74752a935fea3643e376d32eee72f3a60e7a6b0 Mon Sep 17 00:00:00 2001 From: Julian Noble Date: Tue, 21 Jul 2026 00:30:47 +1000 Subject: [PATCH] G-103: punk-in-name requirement for patched runtimes; punkbin push deferred to family artifacts User direction 2026-07-21 recorded in G-103: piperepl-patched runtime executables must carry 'punk' in the name (e.g tclsh905punk.exe) so patched and unpatched are never confusable - now an Acceptance item, with the open design questions captured (how to encode tcl patchlevel + punk version, separator choice; existing sub-namespaces punkNNN kits / tclsh-runtimes / punk- utilities; metadata carries authoritative versions so filenames stay human-distinguishing). The suite's tclsh90spr/sprzip are flagged as internal working names in patches/README.md pending the scheme. Also noted: punkbin pushes of suite runtimes are deferred until family members carry Thread etc in the attached zip and the punk-named pr variants exist - publication follows G-103's artifacts, not the interim tclsh905/punk905 shapes. goals_lint clean. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com --- goals/G-103-runtime-kit-family.md | 21 +++++++++++++++++-- src/buildsuites/suite_tcl90/patches/README.md | 3 +++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/goals/G-103-runtime-kit-family.md b/goals/G-103-runtime-kit-family.md index 957b7817..3f2131b2 100644 --- a/goals/G-103-runtime-kit-family.md +++ b/goals/G-103-runtime-kit-family.md @@ -3,7 +3,7 @@ Status: proposed Scope: src/buildsuites/suite_tcl90/ (kit assembly steps in recipe/driver; pattern for later suites), src/vfs/_config + src/runtime/mapvfs.config (as consumers of the new runtime names), punkbin repo layout + metadata (c:/repo/jn/punkbin; compatible repos), src/scriptapps runtime scriptset ('runtime.cmd' list/use - punk-runtime rename pending G-097) Goal: buildsuites produce a defined FAMILY of runnable, self-contained runtime kits - executables whose info library and core batteries live in the initially attached zip, depending on no external filesystem tree: (1) a PLAIN tclsh kit carrying loadable Thread, tclvfs with as many vfs::* packages as we have, and tcllib+tcllibc; (2) a PUNK kit = the plain kit with the TCLSH_PIPEREPL patch applied and ENABLED BY DEFAULT (env opt-out, not opt-in - users wanting stock behaviour take the plain kit); (3) BI (batteries-included) punk kits additionally carrying libraries WE BUILD - Tk first; sqlite3/tdom/twapi as future build targets - all in the attached zip. These are the project's 'runtime' executables: punkbin candidates carrying metadata (variant, component versions, target platform, provenance) that runtime list/use subcommands can surface. -Acceptance: suite_tcl90 produces named artifacts for at least plain, punk, and one bi (+Tk) kit; each verified self-contained from a path with no external Tcl visible (info library resolves into the attached zip; package require checks for Thread, vfs + representative vfs::* packages, tcllib module + tcllibc acceleration engaged; bi adds Tk create/destroy) with the checks recorded here; the punk kit demonstrates piperepl active by default and disabled via the documented env opt-out, the plain kit demonstrates stock behaviour (no patch); artifact metadata (variant, versions, target, source provenance) is emitted alongside the binaries in the punkbin layout and surfaced by the runtime scriptset's list/use; the naming scheme for family members is documented and mapvfs.config consumes the punk/bi runtimes; the 8.6 family variant is explicitly deferred to the G-101 container investigation (static vfs / metakit patching questions). +Acceptance: suite_tcl90 produces named artifacts for at least plain, punk, and one bi (+Tk) kit; each verified self-contained from a path with no external Tcl visible (info library resolves into the attached zip; package require checks for Thread, vfs + representative vfs::* packages, tcllib module + tcllibc acceleration engaged; bi adds Tk create/destroy) with the checks recorded here; the punk kit demonstrates piperepl active by default and disabled via the documented env opt-out, the plain kit demonstrates stock behaviour (no patch); artifact metadata (variant, versions, target, source provenance) is emitted alongside the binaries in the punkbin layout and surfaced by the runtime scriptset's list/use; the naming scheme for family members is documented, with piperepl-patched runtime executables carrying 'punk' in the name to distinguish them from unpatched (e.g tclsh905punk.exe - the tcl-patchlevel / punk-version / separator questions resolved and the decision recorded here) and mapvfs.config consuming the punk/bi runtimes under the decided names; the 8.6 family variant is explicitly deferred to the G-101 container investigation (static vfs / metakit patching questions). ## Context @@ -55,6 +55,23 @@ the target dimension. G-101: the 8.6 family variant depends on the container strategy. G-006: punkbin download consent. G-097: runtime.cmd -> punk-runtime rename interplay. +RUNTIME NAMING (user 2026-07-21): piperepl-patched runtime executables must carry +'punk' in the name so patched and unpatched are never confusable - e.g +tclsh905punk.exe. The suite's current tclsh90spr/tclsh90sprzip are INTERNAL WORKING +NAMES pending this goal's scheme. Open design questions the user flagged, to +resolve here: how to encode BOTH the tcl patchlevel and a punk version (which punk +version - the patch revision? the punkshell release the kit family ships with?), +and which separators are appropriate. Existing-namespace considerations for that +decision: kit exes use bare punk+patchlevel (punk905.exe), runtimes historically +tclsh+nodotversion+flags (tclsh90s) or tclsh+patchlevel (tclsh905.exe), and bin +UTILITIES use the punk- hyphen prefix (bin/AGENTS.md policy) - three deliberate +sub-namespaces; windows-filename-safe separators only; and the G-103 metadata +records can carry the AUTHORITATIVE versions, letting filenames stay +human-distinguishing rather than fully version-encoded. + ## Notes -(none yet) +- 2026-07-21 (user): punkbin pushes of the suite runtimes are DEFERRED until family + members carry Thread etc in the attached zip and the pr (punk-named) variants + exist - i.e. punkbin publication follows this goal's artifacts, not the current + interim tclsh905/punk905 shapes. diff --git a/src/buildsuites/suite_tcl90/patches/README.md b/src/buildsuites/suite_tcl90/patches/README.md index 7d9400b7..6c708156 100644 --- a/src/buildsuites/suite_tcl90/patches/README.md +++ b/src/buildsuites/suite_tcl90/patches/README.md @@ -9,6 +9,9 @@ The tclZipfs/tclCmdIL patches are NOT applied by any build. The piperepl capabil IS built by default since 2026-07-20 - as SEPARATE products (`tclsh90spr`, `tclsh90sprzip`) compiled from the rebased `tclMain_piperepl_905.c`; the stock `tclsh90s`/`tclsh90szip` products continue to compile upstream sources unpatched. +NAMING NOTE: the spr names are suite-internal WORKING names - the published family +naming (G-103) will carry 'punk' in patched runtime names (e.g tclsh905punk.exe, +user 2026-07-21) so patched and unpatched are never confusable. ## tclMain.c.piperepl.patch / tclMain_piperepl.c (the TCLSH_PIPEREPL capability)