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 2 days 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
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.
### 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)
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
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

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
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,
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").

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

@ -29,7 +29,7 @@ Depends on G-099 (suite_tcl86 core buildsuite).
native path.
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

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
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
acquisition accepted as the root dependency, the freshly built tclsh accepted as
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
(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;
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
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
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
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
User verification 2026-07-20 on the freshly built tclsh90spr (G-096 piperepl
variant): with `tcl::tm::add .../modules` + `package require repl; repl::init;
User verification 2026-07-20 on the freshly built tclsh90spr (piperepl
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 -
except raw mode, which is twapi-reliant. Launched instead via
`./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
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)
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.
Loading…
Cancel
Save