Browse Source

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
master
Julian Noble 3 days ago
parent
commit
9169291175
  1. 4
      GOALS.md
  2. 14
      goals/G-018-zig-plain-tclsh-kits.md
  3. 5
      goals/G-102-buildsuite-zig-bootstrap.md
  4. 13
      goals/G-103-runtime-kit-family.md

4
GOALS.md

@ -118,7 +118,7 @@ Detail: goals/G-016-projects-work-git-discovery.md
Scope: AGENTS.md (root) or a child doc it indexes (guidance content only - no code)
Detail: goals/G-017-agent-project-discovery.md
### G-018 [proposed] Zig-built plain tclsh kits: self-contained zip-based executables without punk infrastructure
### G-018 [superseded] Zig-built plain tclsh kits: self-contained zip-based executables without punk infrastructure
Scope: build.zig / build.zig.zon (per G-005), src/runtime/, src/make.tcl integration
Detail: goals/G-018-zig-plain-tclsh-kits.md
@ -367,7 +367,7 @@ Scope: src/buildsuites/suite_tcl90/ (driver split: zig-layer fetch/generate/comp
Detail: goals/G-102-buildsuite-zig-bootstrap.md
### G-103 [proposed] runtime kit family from buildsuites: plain / punk / bi kits with attached batteries + artifact metadata
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)
Detail: goals/G-103-runtime-kit-family.md
### G-104 [proposed] make.tcl buildsuite surface: list / info / build

14
goals/G-018-zig-plain-tclsh-kits.md

@ -1,6 +1,6 @@
# G-018 Zig-built plain tclsh kits: self-contained zip-based executables without punk infrastructure
Status: proposed
Status: superseded
Scope: build.zig / build.zig.zon (per G-005), src/runtime/, src/make.tcl integration
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
suite_tcl90's bootstrap intermediate (tclsh90szip.exe: static tclsh 9.0.5
with the tcl library in its attached zip; stock script/piped invocations,
no punk namespaces) - it remains READILY ACCESSIBLE as a build product of
every suite run (_build/<suite>/out/bin), deliberately NOT showcased or
published as a product. The showcased family lives in G-103, whose 'plain'
member is plain-for-punk-purposes (no piperepl patch, but batteries -
Thread/tclvfs/tcllib - attached), close enough to plain for our purposes.
make.tcl surfacing of suite builds is G-104. The executable-spectrum framing
this goal contributed remains referenced from G-019/G-023/G-031/G-033.

5
goals/G-102-buildsuite-zig-bootstrap.md

@ -43,8 +43,9 @@ checkouts without a preinstalled fossil are ever wanted.
Relationships: G-005 (this formalizes its zig-build-infrastructure intent for the
buildsuite path), G-006 (consent-gated artifact/toolchain download - the zig
acquisition gate), G-018 (plain tclsh kits - substantially delivered by
tclsh90szip.exe; reconciliation candidate), G-096 (origin discussion in its notes;
acquisition gate), G-018 (superseded 2026-07-20 - the bare bootstrap-intermediate
tclsh stays an accessible, unshowcased build product; the showcased 'plain' niche
is G-103's plain-for-punk member), G-096 (origin discussion in its notes;
the suite.tcl scaffolding this splits), G-099 (sequencing interplay below).
SEQUENCING: proposed 2026-07-20. Natural slot is before or alongside G-099

13
goals/G-103-runtime-kit-family.md

@ -1,7 +1,7 @@
# 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

Loading…
Cancel
Save