G-018 superseded: 'completely plain' tclsh niche left to other distributions
User decision 2026-07-20: other build systems/distributions already
provide completely-plain tclsh executables - not a punkshell product role.
G-103's 'plain' family member (no piperepl patch, batteries attached) is
plain enough for our purposes; the truly bare bootstrap-intermediate
tclsh (tclsh90szip-class, which already satisfies G-018's substance:
stock invocations, no punk namespaces, self-contained) remains readily
accessible as an ordinary suite build product under _build/<suite>/out
but is deliberately not showcased or published.
G-018 closing note records all of this; G-103 gains the plain-niche
boundary paragraph (scope's subsumption-review item resolved and
removed, GOALS.md mirror updated); G-102's relationship line updated.
goals_lint clean.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Goal: developers can use the G-005 zig build system to produce self-contained zip-based tclsh executables that carry no punk-specific infrastructure (no punk boot layer, punk modules, or punk apps) - plain tclsh kits usable independently of the punkshell product.
Acceptance: a documented zig invocation on a clean checkout (zig toolchain available) produces a zip-based tclsh executable for at least one target platform that runs conventional tclsh invocations (`<exe> script.tcl args`, piped stdin) on a machine with no Tcl installation; a listing of the kit's mounted/zip contents shows stock Tcl (plus any declared stock runtime deps) and no punk namespaces, punk boot files, or punkshell apps; the punk-flavoured executables remain producible alongside.
@ -55,3 +55,15 @@ This defines one end of a deliberate spectrum of buildable executables:
that want Tk ship it as a loadable package (as the punk Windows kit already
does - `package require Tk` from the tclsh-style executable, console
retained). Applies to plain kits here and punk kits alike.
- SUPERSEDED 2026-07-20 (user decision): the 'completely plain' tclsh niche is
already served by other build systems/distributions and is not a punkshell
product role. The substance this goal asked for nonetheless exists as
# G-103 runtime kit family from buildsuites: plain / punk / bi kits with attached batteries + artifact metadata
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), goals/G-018 (subsumption review)
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).
@ -37,8 +37,15 @@ BUILDSUITE BOOTSTRAP configs which must parse dependency-free, a distinct concer
punkbin currently carries sha1sums.txt (+ minisign) - metadata extends, not
replaces, that. Compatible repos (punkbin mirrors) carry the same records.
Relationships: G-018 (zig plain tclsh kits) is substantially subsumed by the plain
family member - reconciliation/retirement decision flagged for the user. G-102
Plain-niche boundary (user 2026-07-20): 'completely plain' tclsh executables are
already available from other build systems/distributions - punkshell does not
compete for that niche, and G-018 is SUPERSEDED accordingly. This family's 'plain'
member is plain-for-punk-purposes: no piperepl patch, but batteries attached. The
truly bare tclsh built during bootstrap (the tclsh90szip-class intermediate) stays
READILY ACCESSIBLE as an ordinary suite build product (_build/<suite>/out/bin) but
is not showcased or published as a family member.
Relationships: G-018 (superseded 2026-07-20 - see its closing note). G-102
(zig-driver hybrid): the family members become named build-graph products. G-105
(cross-target): family x target is the punkbin artifact matrix - metadata carries
the target dimension. G-101: the 8.6 family variant depends on the container