Browse Source

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
master
Julian Noble 3 days ago
parent
commit
d74752a935
  1. 21
      goals/G-103-runtime-kit-family.md
  2. 3
      src/buildsuites/suite_tcl90/patches/README.md

21
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.

3
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)

Loading…
Cancel
Save