Browse Source

G-096 progress: increment-2 record (rename done, 0.15 migration reverted to 0.14-validated recipe); scriptapps AGENTS ref updated

Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
master
Julian Noble 1 week ago
parent
commit
c5c315a0fe
  1. 30
      goals/G-096-zig-buildsuite-piperepl.md
  2. 2
      src/scriptapps/AGENTS.md

30
goals/G-096-zig-buildsuite-piperepl.md

@ -142,12 +142,36 @@ Acceptance: from a clean checkout plus a punk-getzig-fetched pinned zig, the sui
fix); zip shell tzdata working; tcl9thread301.dll builds from CURRENT thread trunk fix); zip shell tzdata working; tcl9thread301.dll builds from CURRENT thread trunk
(3.0.1) and loads. vfs/vlerq dlls also built. (3.0.1) and loads. vfs/vlerq dlls also built.
### 2026-07-20 increment 2: punk-getzig rename + naming policy; 0.15 migration attempted then reverted
- getzig -> punk-getzig: scriptset renamed (bash/ps1/_wrap.toml; getzig_original.polyglot
kept as historical reference), payload self-references updated, and the ziglang.org
release URL now derives its version from the single $releasearchive pin (it carried a
separately hardcoded 0.15.1 against the 0.15.2 archive). Re-wrapped via scriptwrap
multishell (checkfile ERROR-free; the two boundary-scan warnings are the
documented-normal polyglot ones). bin: getzig.cmd removed, punk-getzig.cmd tracked,
punk-getzig.ps1 twin (byte-copy) refreshed; bin/AGENTS.md gains the punk- naming
policy section (exceptions dtplite/sdx/kettle wrappers + getpunk; sweep = G-097);
src/scriptapps/AGENTS.md reference updated.
- zig 0.15.2 migration attempted (bin/tools/zig = the getzig-managed 0.15.2): a
scripted API transform (addExecutable/addObject root_module + createModule,
addShared/StaticLibrary -> addLibrary with .linkage, std.ArrayList ->
std.array_list.Managed, b.host -> b.graph.host) got the recipe to compile up to a
strict-format print issue, but the user flagged mid-work that the 0.14->0.16 churn is
significant and the 2024 zig target comes first - REVERTED to the committed
0.14-validated recipe and re-verified PASS (9.0.5 shells, zig 0.14.0-dev.2074).
The transformer script and findings are preserved (scratchpad zig015_migrate.tcl;
known remaining 0.15 items: slice-of-strings debug.print format, plus whatever the
next compile reveals). Pin-path decision put to the user: official 0.14.1 release
as-is, punkbin-hosted 0.14.0-dev.2074, or completing the 0.15.2 migration.
Remaining for acceptance: Remaining for acceptance:
- punk-getzig rename (scriptset + both bin wrapper twins, old names removed,
references updated) and the naming-policy section in bin/AGENTS.md.
- Pin an exact zig version retrievable via punk-getzig and have the suite consume it - Pin an exact zig version retrievable via punk-getzig and have the suite consume it
(driver currently takes -zig / PUNK_ZIG / PATH; validated with 0.14.0-dev.2074). (driver currently takes -zig / PUNK_ZIG / PATH; validated with 0.14.0-dev.2074;
pin path = user decision in flight). Note punk-getzig currently pins a single
$releasearchive - a per-version fetch argument (or suite-side fetch) is likely
wanted so the suite pin and the general-tools pin can differ.
- Rebase the piperepl patch onto current core-9-0-branch sources; build a - Rebase the piperepl patch onto current core-9-0-branch sources; build a
piperepl-enabled variant; behaviour matrix (TCLSH_PIPEREPL unset == stock on piperepl-enabled variant; behaviour matrix (TCLSH_PIPEREPL unset == stock on
tty/piped/script-arg forms; =1 with a script setting ::tclsh(dorepl) 1 -> live tty/piped/script-arg forms; =1 with a script setting ::tclsh(dorepl) 1 -> live

2
src/scriptapps/AGENTS.md

@ -13,7 +13,7 @@ Standalone Tcl scripts that serve as entry points for Punk applications and util
- Scripts here are invoked directly by the user or by build tools, not loaded as packages. - Scripts here are invoked directly by the user or by build tools, not loaded as packages.
- Wrapper configs (`.toml` files) define how scripts are packaged as platform executables. - Wrapper configs (`.toml` files) define how scripts are packaged as platform executables.
- `<name>_wrap.toml` scriptsets are the SOURCE of the generated polyglot `.cmd` scripts in `<projectroot>/bin`, and bin-deployed scriptsets live in the `bin/` subfolder here (e.g `bin/runtime.ps1` + `bin/runtime.bash` + `bin/runtime_wrap.toml` -> `<projectroot>/bin/runtime.cmd` via `punk::mix::commandset::scriptwrap::multishell runtime -askme 0`, run from `src/scriptapps/bin`, alongside the `getzig.*` scriptset). Fixes to a `bin/*.cmd` polyglot are made in the scriptset sources and re-wrapped - never in the output file. Regenerate and commit the bin output together with payload changes: `src/tests/modules/punk/mix/testsuites/scriptwrap/multishell.test` pins the runtime scriptset round-trip byte-identical against `bin/runtime.cmd`, and `src/tests/shell/testsuites/binscripts/dtplite.test` pins the dtplite scriptset (`dtplite.tcl` + `dtplite_wrap.toml`, wrapped from this folder) against `bin/dtplite.cmd` the same way. Payload scripts embedded in polyglots must be LF-only - the wrap embeds payload bytes verbatim and the multishell output contract is LF-only. - `<name>_wrap.toml` scriptsets are the SOURCE of the generated polyglot `.cmd` scripts in `<projectroot>/bin`, and bin-deployed scriptsets live in the `bin/` subfolder here (e.g `bin/runtime.ps1` + `bin/runtime.bash` + `bin/runtime_wrap.toml` -> `<projectroot>/bin/runtime.cmd` via `punk::mix::commandset::scriptwrap::multishell runtime -askme 0`, run from `src/scriptapps/bin`, alongside the `punk-getzig.*` scriptset). Fixes to a `bin/*.cmd` polyglot are made in the scriptset sources and re-wrapped - never in the output file. Regenerate and commit the bin output together with payload changes: `src/tests/modules/punk/mix/testsuites/scriptwrap/multishell.test` pins the runtime scriptset round-trip byte-identical against `bin/runtime.cmd`, and `src/tests/shell/testsuites/binscripts/dtplite.test` pins the dtplite scriptset (`dtplite.tcl` + `dtplite_wrap.toml`, wrapped from this folder) against `bin/dtplite.cmd` the same way. Payload scripts embedded in polyglots must be LF-only - the wrap embeds payload bytes verbatim and the multishell output contract is LF-only.
- The `spud/` directory holds the spud build tool's app scripts. - The `spud/` directory holds the spud build tool's app scripts.
- The `tools/` directory holds miscellaneous build and deployment utilities. - The `tools/` directory holds miscellaneous build and deployment utilities.

Loading…
Cancel
Save