diff --git a/GOALS-archive.md b/GOALS-archive.md index 47c52cd6..f0c7e675 100644 --- a/GOALS-archive.md +++ b/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. diff --git a/GOALS.md b/GOALS.md index 86442f38..d81c28f7 100644 --- a/GOALS.md +++ b/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 diff --git a/goals/G-097-bin-utility-naming-sweep.md b/goals/G-097-bin-utility-naming-sweep.md index 0ea2139f..6fc13ff1 100644 --- a/goals/G-097-bin-utility-naming-sweep.md +++ b/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 ("/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"). diff --git a/goals/G-100-suite-tcl86-tk-tcllib.md b/goals/G-100-suite-tcl86-tk-tcllib.md index d97c72d9..ff834a98 100644 --- a/goals/G-100-suite-tcl86-tk-tcllib.md +++ b/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 diff --git a/goals/G-102-buildsuite-zig-bootstrap.md b/goals/G-102-buildsuite-zig-bootstrap.md index 57530944..301f4dbd 100644 --- a/goals/G-102-buildsuite-zig-bootstrap.md +++ b/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). diff --git a/goals/G-103-runtime-kit-family.md b/goals/G-103-runtime-kit-family.md index 458086c0..957b7817 100644 --- a/goals/G-103-runtime-kit-family.md +++ b/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. diff --git a/goals/G-104-maketcl-buildsuite-surface.md b/goals/G-104-maketcl-buildsuite-surface.md index ccf8a5d7..4c1bfdf2 100644 --- a/goals/G-104-maketcl-buildsuite-surface.md +++ b/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). diff --git a/goals/G-106-powershell-consolemode-fallback.md b/goals/G-106-powershell-consolemode-fallback.md index 6beab85c..a2e475a5 100644 --- a/goals/G-106-powershell-consolemode-fallback.md +++ b/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 diff --git a/goals/G-096-zig-buildsuite-piperepl.md b/goals/archive/G-096-zig-buildsuite-piperepl.md similarity index 99% rename from goals/G-096-zig-buildsuite-piperepl.md rename to goals/archive/G-096-zig-buildsuite-piperepl.md index 030093f8..9e1938dd 100644 --- a/goals/G-096-zig-buildsuite-piperepl.md +++ b/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.