Browse Source

G-096 achieved: tracked zig buildsuite (suite_tcl90) with TCLSH_PIPEREPL capability

All acceptance items met and recorded in the goal file: clean-checkout +
punk-getzig-pinned-zig build PASS (shallow-path/longpaths MAX_PATH caveat
recorded; c:/T available as a shallow test base per user), recovered +
rebased piperepl patch set with the G-103 opt-out gate policy and full
behaviour matrix (automated rows + user interactive verification),
tclsh90spr/tclsh90sprzip products, per-version punk-getzig into versioned
dirs (all four paths verified), both-VCS tracking + samplesuite1/
vendorbuild reconciliation, bin/AGENTS.md naming policy + punk-getzig
rename. Flipped to achieved 2026-07-20 and archived; GOALS/GOALS-archive
updated; achieved markers added to the six referencing goals flagged by
the lint reference sweep (G-097, G-100, G-102, G-103, G-104, G-106).
goals_lint clean (79 active, 27 archived).

Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
master
Julian Noble 1 week ago
parent
commit
1f55a25a65
  1. 4
      GOALS-archive.md
  2. 4
      GOALS.md
  3. 2
      goals/G-097-bin-utility-naming-sweep.md
  4. 2
      goals/G-100-suite-tcl86-tk-tcllib.md
  5. 2
      goals/G-102-buildsuite-zig-bootstrap.md
  6. 2
      goals/G-103-runtime-kit-family.md
  7. 2
      goals/G-104-maketcl-buildsuite-surface.md
  8. 4
      goals/G-106-powershell-consolemode-fallback.md
  9. 2
      goals/archive/G-096-zig-buildsuite-piperepl.md

4
GOALS-archive.md

@ -120,3 +120,7 @@ Acceptance: 'help tcl' on an affected runtime shows the warning with the f10d91c
### G-098 [achieved 2026-07-20] suite_tcl90 full punkshell dependency set: Tk+tklib, tcllib with critcl accelerators, and testsuite gating → detail: goals/archive/G-098-suite-tk-tcllib-critcl.md ### G-098 [achieved 2026-07-20] suite_tcl90 full punkshell dependency set: Tk+tklib, tcllib with critcl accelerators, and testsuite gating → detail: goals/archive/G-098-suite-tk-tcllib-critcl.md
Scope: src/buildsuites/suite_tcl90/ (recipe extensions, driver steps, testsuite gate), src/buildsuites/_build/ (tk/tklib/tcllib/critcl sources and outputs), bin/tools/ (pinned zig as consumed), src/tests/ (punkshell suites exercised against the suite-built runtime) Scope: src/buildsuites/suite_tcl90/ (recipe extensions, driver steps, testsuite gate), src/buildsuites/_build/ (tk/tklib/tcllib/critcl sources and outputs), bin/tools/ (pinned zig as consumed), src/tests/ (punkshell suites exercised against the suite-built runtime)
Acceptance: from the pinned zig and fetched sources the suite produces a Tk the suite tclsh loads (package require Tk with a create/destroy-window verification recorded in this file) and a matching tklib whose packages resolve from the install (a representative tklib package require recorded); a tcllib install performed via its own installer machinery (installer.tcl/sak.tcl behaviour checked and recorded - module selection, pkgIndex/tm generation, critcl module handling) whose accelerators load (package require tcllibc) with a punkcheck-relevant hashing comparison showing the accelerated path engaged versus pure-tcl; critcl is version-pinned and driven with zig cc; suite.tcl test gates on parsed totals against a recorded expected-failure baseline and the current 72 core-test failures are dispositioned (fixed or baselined with reasons); punkshell's runtests can run against the suite-built runtime with Tk-dependent suites no longer skipped for lack of Tk. Acceptance: from the pinned zig and fetched sources the suite produces a Tk the suite tclsh loads (package require Tk with a create/destroy-window verification recorded in this file) and a matching tklib whose packages resolve from the install (a representative tklib package require recorded); a tcllib install performed via its own installer machinery (installer.tcl/sak.tcl behaviour checked and recorded - module selection, pkgIndex/tm generation, critcl module handling) whose accelerators load (package require tcllibc) with a punkcheck-relevant hashing comparison showing the accelerated path engaged versus pure-tcl; critcl is version-pinned and driven with zig cc; suite.tcl test gates on parsed totals against a recorded expected-failure baseline and the current 72 core-test failures are dispositioned (fixed or baselined with reasons); punkshell's runtests can run against the suite-built runtime with Tk-dependent suites no longer skipped for lack of Tk.
### G-096 [achieved 2026-07-20] Tracked zig tcl buildsuite (suite_tcl90) with recovered TCLSH_PIPEREPL kit-repl capability → detail: goals/archive/G-096-zig-buildsuite-piperepl.md
Scope: src/buildsuites/ (suite_tcl90 new; samplesuite1 sketch reconciliation; VCS ignore flip), src/buildsuites/_build/ (untracked build/source area via existing _build globs), .gitignore + .fossil-settings/ignore-glob, src/scriptapps/bin/ (getzig scriptset rename), bin/ (regenerated punk-getzig wrapper twins, old names retired, AGENTS.md naming policy), bin/tools/ (untracked zig toolchains, existing), TEMP_REFERENCE/2024zig (read-only recovery origin)
Acceptance: from a clean checkout plus a punk-getzig-fetched pinned zig, the suite builds tclsh90s/tclsh90szip from a fresh core-9-0-branch checkout under src/buildsuites/_build with recipe-generated tclUuid.h and tclsh.exe.manifest (no hand-placed files) and the result reports the expected patchlevel; the recovered patch set (piperepl plus the companion tclZipfs/tclCmdIL patches and a notes doc) is tracked in the suite; the rebased piperepl build gates per the G-103 punk-kit policy: with TCLSH_PIPEREPL=0 it behaves identically to the unpatched build on a tty/piped/script-arg matrix, with the gate open (unset or any other value - the default) scripts that never touch ::tclsh(dorepl) still behave stock on the same matrix (script-arg runs default dorepl to 0; unconsumed piped input is buffered in ::tclsh(inputbuffer), not eval'd), and a script setting ::tclsh(dorepl) 1 lands in a live interactive console repl after piped-input eof with the unconsumed input available in ::tclsh(inputbuffer); src/buildsuites is tracked in both VCSes with only _build content ignored and the samplesuite1 vendorbuild-prefix residue reconciled (vendorbuild concept retired); bin/AGENTS.md documents the utility naming policy (punk- prefix for punkshell-own utilities; exceptions: external-tool wrappers such as dtplite/sdx/kettle, and getpunk as the intended future cross-platform entry point) and the getzig scriptset and its bin wrapper twins (getzig.cmd/getzig.ps1) are renamed to punk-getzig with the old names removed and references updated.

4
GOALS.md

@ -342,10 +342,6 @@ Detail: goals/G-094-punkcheck-single-lifecycle.md
Scope: src/modules/punkcheck-999999.0a1.0.tm (save/load chokepoint: atomic rename, lockfile protocol, merge-on-flush, non-interactive recovery), src/make.tcl + src/modules/punk/mix/cli-999999.0a1.0.tm (event-scoped lock consumers as verified), src/tests/modules/punkcheck/testsuites/punkcheck/ (new concurrency suite) Scope: src/modules/punkcheck-999999.0a1.0.tm (save/load chokepoint: atomic rename, lockfile protocol, merge-on-flush, non-interactive recovery), src/make.tcl + src/modules/punk/mix/cli-999999.0a1.0.tm (event-scoped lock consumers as verified), src/tests/modules/punkcheck/testsuites/punkcheck/ (new concurrency suite)
Detail: goals/G-095-punkcheck-concurrent-writer-safety.md Detail: goals/G-095-punkcheck-concurrent-writer-safety.md
### G-096 [active] Tracked zig tcl buildsuite (suite_tcl90) with recovered TCLSH_PIPEREPL kit-repl capability
Scope: src/buildsuites/ (suite_tcl90 new; samplesuite1 sketch reconciliation; VCS ignore flip), src/buildsuites/_build/ (untracked build/source area via existing _build globs), .gitignore + .fossil-settings/ignore-glob, src/scriptapps/bin/ (getzig scriptset rename), bin/ (regenerated punk-getzig wrapper twins, old names retired, AGENTS.md naming policy), bin/tools/ (untracked zig toolchains, existing), TEMP_REFERENCE/2024zig (read-only recovery origin)
Detail: goals/G-096-zig-buildsuite-piperepl.md
### G-097 [proposed] bin utility naming sweep: punk- prefix for remaining punkshell-own tools ### G-097 [proposed] bin utility naming sweep: punk- prefix for remaining punkshell-own tools
Scope: src/scriptapps/ + src/scriptapps/bin/ (bits, runtime, tclargs scriptset renames; selfsign experiment scripts), bin/ (regenerated wrapper twins + renamed experiment scripts, old names retired), src/tests/modules/punk/mix/testsuites/scriptwrap/ + src/tests/shell/testsuites/binscripts/ (roundtrip pins), bin/AGENTS.md + referencing docs Scope: src/scriptapps/ + src/scriptapps/bin/ (bits, runtime, tclargs scriptset renames; selfsign experiment scripts), bin/ (regenerated wrapper twins + renamed experiment scripts, old names retired), src/tests/modules/punk/mix/testsuites/scriptwrap/ + src/tests/shell/testsuites/binscripts/ (roundtrip pins), bin/AGENTS.md + referencing docs
Detail: goals/G-097-bin-utility-naming-sweep.md Detail: goals/G-097-bin-utility-naming-sweep.md

2
goals/G-097-bin-utility-naming-sweep.md

@ -9,7 +9,7 @@ Acceptance: bin/ presents punk-bits, punk-runtime and punk-tclargs (wrapper twin
Utilities in bin/ are on a plausible user PATH ("<project>/bin"), so generic names like Utilities in bin/ are on a plausible user PATH ("<project>/bin"), so generic names like
bits, runtime and tclargs are collidable. User decision 2026-07-20 (recorded with the bits, runtime and tclargs are collidable. User decision 2026-07-20 (recorded with the
policy statement in G-096): punkshell-own utilities take a punk- prefix; wrappers for policy statement in G-096, achieved 2026-07-20): punkshell-own utilities take a punk- prefix; wrappers for
external tools (dtplite, sdx, kettle) stay unprefixed, as does getpunk (already specific, external tools (dtplite, sdx, kettle) stay unprefixed, as does getpunk (already specific,
intended future cross-platform entry point). getzig itself is renamed within G-096; this intended future cross-platform entry point). getzig itself is renamed within G-096; this
goal sweeps the remainder at a suitable time (user 2026-07-20: the renames "can wait"). goal sweeps the remainder at a suitable time (user 2026-07-20: the renames "can wait").

2
goals/G-100-suite-tcl86-tk-tcllib.md

@ -29,7 +29,7 @@ Depends on G-099 (suite_tcl86 core buildsuite).
native path. native path.
SEQUENCING: as for G-099 - proposed now, activation recommended after suite_tcl90's SEQUENCING: as for G-099 - proposed now, activation recommended after suite_tcl90's
G-096 remainder closes and punk905_beta trial concludes. G-096 (achieved 2026-07-20) remainder closed and punk905_beta trial concludes.
## Notes ## Notes

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

@ -7,7 +7,7 @@ Acceptance: from a clean checkout plus the pinned zig (acquired via the consent-
## Context ## Context
Direction agreed 2026-07-20 (discussion recorded in G-096 notes; user decisions: Direction agreed 2026-07-20 (discussion recorded in the notes of G-096 (achieved 2026-07-20); user decisions:
toml dropped for binary buildsuites, long-term no-tclsh bootstrap intent, zig toml dropped for binary buildsuites, long-term no-tclsh bootstrap intent, zig
acquisition accepted as the root dependency, the freshly built tclsh accepted as acquisition accepted as the root dependency, the freshly built tclsh accepted as
the legitimate intermediate for tcllib/tklib installers and critcl). the legitimate intermediate for tcllib/tklib installers and critcl).

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

@ -20,7 +20,7 @@ variant remains possible later via configuration rather than a separate philosop
piperepl gating REVIEW (user 2026-07-20): the patch's original env gating piperepl gating REVIEW (user 2026-07-20): the patch's original env gating
(TCLSH_PIPEREPL=1 opt-in) fit a single-binary world. With a kit FAMILY the punk kits (TCLSH_PIPEREPL=1 opt-in) fit a single-binary world. With a kit FAMILY the punk kits
are FOR punk use - default ON, env opt-OUT (e.g TCLSH_PIPEREPL=0) for debugging; are FOR punk use - default ON, env opt-OUT (e.g TCLSH_PIPEREPL=0) for debugging;
the plain kit exists for those who want stock semantics. G-096's behaviour-matrix the plain kit exists for those who want stock semantics. The G-096 (achieved 2026-07-20) behaviour-matrix
item still characterizes the patch itself; its kit-default policy is restated there item still characterizes the patch itself; its kit-default policy is restated there
pointing here. pointing here.

2
goals/G-104-maketcl-buildsuite-surface.md

@ -26,7 +26,7 @@ mapvfs.config comments and archived G-098 (achieved 2026-07-20) notes) are a
separate subsystem (kit wrapping) but the same ergonomic family - a candidate to separate subsystem (kit wrapping) but the same ergonomic family - a candidate to
execute alongside this goal. execute alongside this goal.
Relationships: G-096 (suite.tcl driver + copy-and-tweak workflow this fronts), Relationships: G-096 (achieved 2026-07-20 - suite.tcl driver + copy-and-tweak workflow this fronts),
G-102 (driver shape - the info/build contract must survive it), G-103 (family G-102 (driver shape - the info/build contract must survive it), G-103 (family
products appear in info output), G-105 (target dimension forwarded when it exists). products appear in info output), G-105 (target dimension forwarded when it exists).

4
goals/G-106-powershell-consolemode-fallback.md

@ -7,8 +7,8 @@ Acceptance: on a twapi-less suite runtime, raw enable/disable work via the fallb
## Context ## Context
User verification 2026-07-20 on the freshly built tclsh90spr (G-096 piperepl User verification 2026-07-20 on the freshly built tclsh90spr (piperepl
variant): with `tcl::tm::add .../modules` + `package require repl; repl::init; variant from G-096, achieved 2026-07-20): with `tcl::tm::add .../modules` + `package require repl; repl::init;
repl::start stdin`, basic punk features are functional on the bare suite runtime - repl::start stdin`, basic punk features are functional on the bare suite runtime -
except raw mode, which is twapi-reliant. Launched instead via except raw mode, which is twapi-reliant. Launched instead via
`./tclsh90spr .../src/make.tcl shell`, the powershell fallback engaged and raw mode `./tclsh90spr .../src/make.tcl shell`, the powershell fallback engaged and raw mode

2
goals/G-096-zig-buildsuite-piperepl.md → goals/archive/G-096-zig-buildsuite-piperepl.md

@ -1,6 +1,6 @@
# G-096 Tracked zig tcl buildsuite (suite_tcl90) with recovered TCLSH_PIPEREPL kit-repl capability # G-096 Tracked zig tcl buildsuite (suite_tcl90) with recovered TCLSH_PIPEREPL kit-repl capability
Status: active Status: achieved 2026-07-20
Scope: src/buildsuites/ (suite_tcl90 new; samplesuite1 sketch reconciliation; VCS ignore flip), src/buildsuites/_build/ (untracked build/source area via existing _build globs), .gitignore + .fossil-settings/ignore-glob, src/scriptapps/bin/ (getzig scriptset rename), bin/ (regenerated punk-getzig wrapper twins, old names retired, AGENTS.md naming policy), bin/tools/ (untracked zig toolchains, existing), TEMP_REFERENCE/2024zig (read-only recovery origin) Scope: src/buildsuites/ (suite_tcl90 new; samplesuite1 sketch reconciliation; VCS ignore flip), src/buildsuites/_build/ (untracked build/source area via existing _build globs), .gitignore + .fossil-settings/ignore-glob, src/scriptapps/bin/ (getzig scriptset rename), bin/ (regenerated punk-getzig wrapper twins, old names retired, AGENTS.md naming policy), bin/tools/ (untracked zig toolchains, existing), TEMP_REFERENCE/2024zig (read-only recovery origin)
Goal: src/buildsuites gains its first real, VCS-tracked suite (suite_tcl90) that reproducibly builds the Tcl 9.0 windows runtime from clean sources using only project-managed tooling - a punk-getzig wrapper fetching a pinned zig into untracked bin/tools, with all transient checkouts and outputs under untracked src/buildsuites/_build - and the 2024 TCLSH_PIPEREPL tclMain patch is recovered into the suite in tracked form and rebased onto current Tcl 9 sources, so a suite-built runtime can return to a standard interactive repl after a kit-style main.tcl completes with unconsumed piped input buffered rather than eval'd. The gate default follows the G-103 kit-family policy (2026-07-20): the patched binary is ENABLED unless TCLSH_PIPEREPL=0 (opt-out; the unpatched plain build serves those wanting stock semantics) - and even enabled it is inert for scripts that never set ::tclsh(dorepl): script-arg runs default dorepl to 0 and unconsumed piped input is buffered, not eval'd, so plain scripts behave stock. Goal: src/buildsuites gains its first real, VCS-tracked suite (suite_tcl90) that reproducibly builds the Tcl 9.0 windows runtime from clean sources using only project-managed tooling - a punk-getzig wrapper fetching a pinned zig into untracked bin/tools, with all transient checkouts and outputs under untracked src/buildsuites/_build - and the 2024 TCLSH_PIPEREPL tclMain patch is recovered into the suite in tracked form and rebased onto current Tcl 9 sources, so a suite-built runtime can return to a standard interactive repl after a kit-style main.tcl completes with unconsumed piped input buffered rather than eval'd. The gate default follows the G-103 kit-family policy (2026-07-20): the patched binary is ENABLED unless TCLSH_PIPEREPL=0 (opt-out; the unpatched plain build serves those wanting stock semantics) - and even enabled it is inert for scripts that never set ::tclsh(dorepl): script-arg runs default dorepl to 0 and unconsumed piped input is buffered, not eval'd, so plain scripts behave stock.
Acceptance: from a clean checkout plus a punk-getzig-fetched pinned zig, the suite builds tclsh90s/tclsh90szip from a fresh core-9-0-branch checkout under src/buildsuites/_build with recipe-generated tclUuid.h and tclsh.exe.manifest (no hand-placed files) and the result reports the expected patchlevel; the recovered patch set (piperepl plus the companion tclZipfs/tclCmdIL patches and a notes doc) is tracked in the suite; the rebased piperepl build gates per the G-103 punk-kit policy: with TCLSH_PIPEREPL=0 it behaves identically to the unpatched build on a tty/piped/script-arg matrix, with the gate open (unset or any other value - the default) scripts that never touch ::tclsh(dorepl) still behave stock on the same matrix (script-arg runs default dorepl to 0; unconsumed piped input is buffered in ::tclsh(inputbuffer), not eval'd), and a script setting ::tclsh(dorepl) 1 lands in a live interactive console repl after piped-input eof with the unconsumed input available in ::tclsh(inputbuffer); src/buildsuites is tracked in both VCSes with only _build content ignored and the samplesuite1 vendorbuild-prefix residue reconciled (vendorbuild concept retired); bin/AGENTS.md documents the utility naming policy (punk- prefix for punkshell-own utilities; exceptions: external-tool wrappers such as dtplite/sdx/kettle, and getpunk as the intended future cross-platform entry point) and the getzig scriptset and its bin wrapper twins (getzig.cmd/getzig.ps1) are renamed to punk-getzig with the old names removed and references updated. Acceptance: from a clean checkout plus a punk-getzig-fetched pinned zig, the suite builds tclsh90s/tclsh90szip from a fresh core-9-0-branch checkout under src/buildsuites/_build with recipe-generated tclUuid.h and tclsh.exe.manifest (no hand-placed files) and the result reports the expected patchlevel; the recovered patch set (piperepl plus the companion tclZipfs/tclCmdIL patches and a notes doc) is tracked in the suite; the rebased piperepl build gates per the G-103 punk-kit policy: with TCLSH_PIPEREPL=0 it behaves identically to the unpatched build on a tty/piped/script-arg matrix, with the gate open (unset or any other value - the default) scripts that never touch ::tclsh(dorepl) still behave stock on the same matrix (script-arg runs default dorepl to 0; unconsumed piped input is buffered in ::tclsh(inputbuffer), not eval'd), and a script setting ::tclsh(dorepl) 1 lands in a live interactive console repl after piped-input eof with the unconsumed input available in ::tclsh(inputbuffer); src/buildsuites is tracked in both VCSes with only _build content ignored and the samplesuite1 vendorbuild-prefix residue reconciled (vendorbuild concept retired); bin/AGENTS.md documents the utility naming policy (punk- prefix for punkshell-own utilities; exceptions: external-tool wrappers such as dtplite/sdx/kettle, and getpunk as the intended future cross-platform entry point) and the getzig scriptset and its bin wrapper twins (getzig.cmd/getzig.ps1) are renamed to punk-getzig with the old names removed and references updated.
Loading…
Cancel
Save