Browse Source

G-102 achieved: no-tclsh buildsuite bootstrap - flip, archive, reference sweep

Acceptance evidence recorded in the archived detail file: PATH-scrubbed
clean-clone demonstration (c:/T/g102, env probed tclsh/fossil/git-free) ran
'zig build bootstrap' end-to-end - zon-pinned sources materialized, runtime +
piperepl variants built, smokes green (static/zip shells, Tk tooltip, tcllib,
tcllibc accelerators via critcl+zig cc), demo shell's tcl::build-info identical
to the fossil-flow build; scrubbed test gate 69552/56075/13468/9 with 8
baselined + fCmd-30.3 proven a SystemDrive scrub artifact (single-file rerun
with the var: GATE PASS), matching the same-day fossil-flow delegated gate
(69552/56040/13503/9 GATE PASS). Environment findings (critcl target probing,
windows Run-step stdio, testsuite base-env needs, firewall consent on first
socket listen) recorded in the detail file for future suite work.

Flip mechanics: detail file to goals/archive with Status achieved 2026-07-21,
GOALS.md entry removed, GOALS-archive record appended (Scope+Acceptance
verbatim), pending-tense G-102 references in G-099/G-103/G-104/G-105 annotated
with the achievement and the settled driver shape. goals_lint clean (77
active-index goals, 29 archived).

Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
master
Julian Noble 3 days ago
parent
commit
8f331c72d5
  1. 4
      GOALS-archive.md
  2. 4
      GOALS.md
  3. 4
      goals/G-099-suite-tcl86-buildsuite.md
  4. 64
      goals/G-102-buildsuite-zig-bootstrap.md
  5. 3
      goals/G-103-runtime-kit-family.md
  6. 8
      goals/G-104-maketcl-buildsuite-surface.md
  7. 2
      goals/G-105-buildsuite-cross-target.md
  8. 152
      goals/archive/G-102-buildsuite-zig-bootstrap.md

4
GOALS-archive.md

@ -128,3 +128,7 @@ Acceptance: from a clean checkout plus a punk-getzig-fetched pinned zig, the sui
### G-094 [achieved 2026-07-21] punkcheck single record lifecycle: OO installtrack as sole implementation with a persistence policy → detail: goals/archive/G-094-punkcheck-single-lifecycle.md
Scope: src/modules/punkcheck-999999.0a1.0.tm (installtrack/installevent lifecycle unification, installfile_* retirement, punkcheck::install as OO consumer), src/modules/punk/mix/cli-999999.0a1.0.tm + src/make.tcl (consumers verified unchanged), src/tests/modules/punkcheck/testsuites/punkcheck/ (characterization + new equivalence/staleness coverage)
Acceptance: characterization suites install.test and installtrack.test pass (pins flipped only where this goal's contract deliberately changes behaviour, each flip recorded); a new test pins field equivalence between batch-installed and OO-installed records (including -targets_cksums, which the legacy proc pipeline never stored); a new regression test covers o_record_list coherence - two sequential events on one installtrack instance, with targetset writes in the first event, lose nothing at the second start_event; grep of src/modules, src/make.tcl and src/project_layouts finds no live caller of the retired trio outside shims and tests; a full make.tcl build completes with skip/copy decisions unchanged against pre-refactor .punkcheck state (no spurious recopies of unchanged sources).
### G-102 [achieved 2026-07-21] buildsuite bootstrap without a pre-existing tclsh: zig-driver hybrid → detail: goals/archive/G-102-buildsuite-zig-bootstrap.md
Scope: src/buildsuites/suite_tcl90/ (driver split: zig-layer fetch/generate/compile + suite-tclsh-run Tcl phases; sources.config -> zon-shaped manifest migration), src/buildsuites/ (the pattern future suites fork - interplay with G-099), bin/tools/ (pinned zig acquisition per the consent-gated mechanism), src/scriptapps/bin/ punk-getzig (acquisition layer, unchanged in role)
Acceptance: from a clean checkout plus the pinned zig (acquired via the consent-gated download mechanism or self-built), a documented zig invocation performs the whole pipeline in an environment where no pre-existing tclsh is resolvable (PATH-scrubbed demonstration recorded in this file): fetch/stage sources per the declarative manifest (content-integrity pins for zig-fetched trees; the fossil-checkout flow retained as a documented dev alternative for live-branch work), generate the configure-products, build the runtime, then run the post-tclsh phases under the suite-built shell - tcllib install with tcllibc accelerators via critcl, tklib, tk - and the expected-failure-baselined test gate, with results matching the suite.tcl-driven equivalents; the manifest is the documented tweak surface and copied suite trees remain isolated (G-096 copy-and-tweak property preserved); the recipe pins the zig version it is written against (API-churn mitigation - the 0.14->0.16 migration cost is the recorded precedent); the bash+powershell polyglot alternative for this layer is recorded as considered and rejected, with polyglot craft remaining the ACQUISITION layer's mechanism (punk-getzig/getpunk first-contact story).

4
GOALS.md

@ -354,10 +354,6 @@ Detail: goals/G-100-suite-tcl86-tk-tcllib.md
Scope: investigation + decision record under src/buildsuites/suite_tcl86/ (or successor mechanism), TEMP_REFERENCE/metakit + TEMP_REFERENCE/KitCreator (read-only guidance), src/runtime/mapvfs.config ('kit' type consumers), src/make.tcl kit-wrap path (as consumer)
Detail: goals/G-101-tcl86-kit-container-strategy.md
### G-102 [active] buildsuite bootstrap without a pre-existing tclsh: zig-driver hybrid
Scope: src/buildsuites/suite_tcl90/ (driver split: zig-layer fetch/generate/compile + suite-tclsh-run Tcl phases; sources.config -> zon-shaped manifest migration), src/buildsuites/ (the pattern future suites fork - interplay with G-099), bin/tools/ (pinned zig acquisition per the consent-gated mechanism), src/scriptapps/bin/ punk-getzig (acquisition layer, unchanged in role)
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)
Detail: goals/G-103-runtime-kit-family.md

4
goals/G-099-suite-tcl86-buildsuite.md

@ -45,7 +45,9 @@ recommendation is to complete G-096's remaining items (TCLSH_PIPEREPL patch reba
behaviour matrix, punk-getzig per-version fetch) and run the punk905_beta interactive
trial through to promotion before activating this goal, so the shared suite
scaffolding settles before it is forked. Also weigh G-102 (zig-driver hybrid
bootstrap, agreed direction 2026-07-20): its natural slot is before or alongside
bootstrap, achieved 2026-07-21 - the driver shape is now SETTLED: pipeline as zig
recipe steps, zon-pinned + fossil-checkout source flows converging on one staged
invocation): its natural slot was before or alongside
this goal so suite_tcl86 is born onto the chosen driver shape rather than ported
later.

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

@ -1,64 +0,0 @@
# G-102 buildsuite bootstrap without a pre-existing tclsh: zig-driver hybrid
Status: active
Scope: src/buildsuites/suite_tcl90/ (driver split: zig-layer fetch/generate/compile + suite-tclsh-run Tcl phases; sources.config -> zon-shaped manifest migration), src/buildsuites/ (the pattern future suites fork - interplay with G-099), bin/tools/ (pinned zig acquisition per the consent-gated mechanism), src/scriptapps/bin/ punk-getzig (acquisition layer, unchanged in role)
Goal: a buildsuite is drivable end-to-end with only the pinned zig toolchain present - no pre-existing tclsh anywhere in the chain. Pre-tclsh phases (source fetch, configure-product generation, compile) move into the zig build layer, with sources declared in a content-hashed declarative manifest (build.zig.zon or a zon-shaped equivalent) that keeps the copy-and-tweak retargeting property; post-tclsh phases (tcllib/tklib installers, critcl accelerators, the parsed-totals test gate, smokes) remain Tcl scripts executed by the FRESHLY BUILT suite tclsh as build steps - Tcl stays the tool exactly where a tclsh is guaranteed to exist because the suite just built it. The plain-tclsh suite.tcl remains as an ergonomic dev driver during transition (or is reduced to a thin documented wrapper).
Acceptance: from a clean checkout plus the pinned zig (acquired via the consent-gated download mechanism or self-built), a documented zig invocation performs the whole pipeline in an environment where no pre-existing tclsh is resolvable (PATH-scrubbed demonstration recorded in this file): fetch/stage sources per the declarative manifest (content-integrity pins for zig-fetched trees; the fossil-checkout flow retained as a documented dev alternative for live-branch work), generate the configure-products, build the runtime, then run the post-tclsh phases under the suite-built shell - tcllib install with tcllibc accelerators via critcl, tklib, tk - and the expected-failure-baselined test gate, with results matching the suite.tcl-driven equivalents; the manifest is the documented tweak surface and copied suite trees remain isolated (G-096 copy-and-tweak property preserved); the recipe pins the zig version it is written against (API-churn mitigation - the 0.14->0.16 migration cost is the recorded precedent); the bash+powershell polyglot alternative for this layer is recorded as considered and rejected, with polyglot craft remaining the ACQUISITION layer's mechanism (punk-getzig/getpunk first-contact story).
## Context
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).
Why zig fits this layer:
- build.zig.zon is itself a declarative, content-hashed source manifest - fetch by
url+hash gives declarative retargeting WITH integrity. Fossil sources pin as
per-checkin tarball urls (branch-tip tarballs are not hash-stable); that is a
provenance feature - '-refresh' becomes 'bump the pin' - with the fossil-checkout
path kept for dev-friendly live-branch work.
- The recipe already generates configure-products (tclUuid.h, manifests, rc edits)
inside the zig layer - the boundary just extends to cover fetch.
- zig Run steps execute artifacts they just built: 'zig build tcllib' = build tclsh
-> run installer.tcl under it; 'zig build test-gate' = run the core suite under it
and gate on parsed totals. The freshly-built-tclsh intermediate maps 1:1 onto the
build graph.
Why NOT a bash+powershell polyglot for this layer (considered and rejected): the
polyglot's value is first contact - zero installed tools - but the suite driver runs
AFTER zig acquisition by definition, so a capable tool is always already present.
The driver's workload (manifest parsing, byte-exact file generation, totals parsing,
child-process orchestration) is what dual shell implementations do worst: two
codebases in lockstep or a fragile dual-parse dialect, divergent quoting/path
semantics as a permanent bug farm. Polyglot craft stays where it already earns its
keep in this repo: the acquisition layer (punk-getzig / getpunk cmd-or-powershell
first-contact twins).
Residual external tools, and their long-term story: fossil and git CLIs are used by
the current fetch flow. Under the zon path they become optional (tarball fetch with
pinned hashes needs neither); fossil itself is buildable with zig cc if live
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 (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
activation so suite_tcl86 is born onto the chosen driver shape rather than ported
later - but this goal must not block G-096's remaining items (piperepl matrix,
punk-getzig per-version fetch), which close out on the current suite.tcl shape.
sources.config records are deliberately name/url/ref-shaped (close to zon records)
so the manifest migration is mechanical.
## Notes
- 2026-07-20 (user requirements batch): the build-graph products this driver shape
must express grew concrete - the G-103 runtime kit FAMILY (plain/punk/bi kits with
attached batteries) become named build outputs, G-105 adds -target as a build
dimension, and G-104's make.tcl surface fronts whichever driver shape wins (its
suite self-description contract must survive the migration).

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

@ -49,7 +49,8 @@ READILY ACCESSIBLE as an ordinary suite build product (_build/<suite>/out/bin) b
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
(achieved 2026-07-21 - zig-driver hybrid landed): the family members become named
build-graph products of the settled step shape. 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
strategy. G-006: punkbin download consent. G-097: runtime.cmd -> punk-runtime

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

@ -16,8 +16,10 @@ make.tcl."
Design lean: make.tcl stays a THIN front - discovery by directory scan, description
and info answered by the suite itself (a 'suite.tcl info' action emitting a stable
record, or a small manifest the driver also reads). That keeps copied/retargeted
trees first-class citizens and survives the G-102 driver-shape migration (whatever
replaces suite.tcl keeps answering the same contract; make.tcl need not know which
trees first-class citizens and survives the G-102 driver-shape migration (achieved
2026-07-21: suite.tcl remains as the fossil dev wrapper delegating to the recipe's
zig steps, with 'zig build stage|bootstrap' as the no-tclsh flow - whatever
fronts these keeps answering the same contract; make.tcl need not know which
shape a suite uses).
Sibling ergonomics note: the earlier-recorded make.tcl 'vfs' wishes (build a single
@ -27,7 +29,7 @@ separate subsystem (kit wrapping) but the same ergonomic family - a candidate to
execute alongside this goal.
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 (achieved 2026-07-21 - driver shape settled; the info/build contract holds), G-103 (family
products appear in info output), G-105 (target dimension forwarded when it exists).
## Notes

2
goals/G-105-buildsuite-cross-target.md

@ -34,7 +34,7 @@ INVERTED):
Relationships: G-060 (qemu cross-platform matrix - WSL is the cheap first rung;
qemu covers what WSL cannot), G-099/G-100 (the 8.6 suite inherits the target
dimension), G-102 (driver shape: target becomes a build-graph dimension), G-103
dimension), G-102 (achieved 2026-07-21 - driver shape settled; target becomes a build-graph dimension), G-103
(family x target = the punkbin artifact matrix), G-006 (punkbin artifact consent).
## Notes

152
goals/archive/G-102-buildsuite-zig-bootstrap.md

@ -0,0 +1,152 @@
# G-102 buildsuite bootstrap without a pre-existing tclsh: zig-driver hybrid
Status: achieved 2026-07-21
Scope: src/buildsuites/suite_tcl90/ (driver split: zig-layer fetch/generate/compile + suite-tclsh-run Tcl phases; sources.config -> zon-shaped manifest migration), src/buildsuites/ (the pattern future suites fork - interplay with G-099), bin/tools/ (pinned zig acquisition per the consent-gated mechanism), src/scriptapps/bin/ punk-getzig (acquisition layer, unchanged in role)
Goal: a buildsuite is drivable end-to-end with only the pinned zig toolchain present - no pre-existing tclsh anywhere in the chain. Pre-tclsh phases (source fetch, configure-product generation, compile) move into the zig build layer, with sources declared in a content-hashed declarative manifest (build.zig.zon or a zon-shaped equivalent) that keeps the copy-and-tweak retargeting property; post-tclsh phases (tcllib/tklib installers, critcl accelerators, the parsed-totals test gate, smokes) remain Tcl scripts executed by the FRESHLY BUILT suite tclsh as build steps - Tcl stays the tool exactly where a tclsh is guaranteed to exist because the suite just built it. The plain-tclsh suite.tcl remains as an ergonomic dev driver during transition (or is reduced to a thin documented wrapper).
Acceptance: from a clean checkout plus the pinned zig (acquired via the consent-gated download mechanism or self-built), a documented zig invocation performs the whole pipeline in an environment where no pre-existing tclsh is resolvable (PATH-scrubbed demonstration recorded in this file): fetch/stage sources per the declarative manifest (content-integrity pins for zig-fetched trees; the fossil-checkout flow retained as a documented dev alternative for live-branch work), generate the configure-products, build the runtime, then run the post-tclsh phases under the suite-built shell - tcllib install with tcllibc accelerators via critcl, tklib, tk - and the expected-failure-baselined test gate, with results matching the suite.tcl-driven equivalents; the manifest is the documented tweak surface and copied suite trees remain isolated (G-096 copy-and-tweak property preserved); the recipe pins the zig version it is written against (API-churn mitigation - the 0.14->0.16 migration cost is the recorded precedent); the bash+powershell polyglot alternative for this layer is recorded as considered and rejected, with polyglot craft remaining the ACQUISITION layer's mechanism (punk-getzig/getpunk first-contact story).
## Context
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).
Why zig fits this layer:
- build.zig.zon is itself a declarative, content-hashed source manifest - fetch by
url+hash gives declarative retargeting WITH integrity. Fossil sources pin as
per-checkin tarball urls (branch-tip tarballs are not hash-stable); that is a
provenance feature - '-refresh' becomes 'bump the pin' - with the fossil-checkout
path kept for dev-friendly live-branch work.
- The recipe already generates configure-products (tclUuid.h, manifests, rc edits)
inside the zig layer - the boundary just extends to cover fetch.
- zig Run steps execute artifacts they just built: 'zig build tcllib' = build tclsh
-> run installer.tcl under it; 'zig build test-gate' = run the core suite under it
and gate on parsed totals. The freshly-built-tclsh intermediate maps 1:1 onto the
build graph.
Why NOT a bash+powershell polyglot for this layer (considered and rejected): the
polyglot's value is first contact - zero installed tools - but the suite driver runs
AFTER zig acquisition by definition, so a capable tool is always already present.
The driver's workload (manifest parsing, byte-exact file generation, totals parsing,
child-process orchestration) is what dual shell implementations do worst: two
codebases in lockstep or a fragile dual-parse dialect, divergent quoting/path
semantics as a permanent bug farm. Polyglot craft stays where it already earns its
keep in this repo: the acquisition layer (punk-getzig / getpunk cmd-or-powershell
first-contact twins).
Residual external tools, and their long-term story: fossil and git CLIs are used by
the current fetch flow. Under the zon path they become optional (tarball fetch with
pinned hashes needs neither); fossil itself is buildable with zig cc if live
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 (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
activation so suite_tcl86 is born onto the chosen driver shape rather than ported
later - but this goal must not block G-096's remaining items (piperepl matrix,
punk-getzig per-version fetch), which close out on the current suite.tcl shape.
sources.config records are deliberately name/url/ref-shaped (close to zon records)
so the manifest migration is mechanical.
## Verification (acceptance evidence, 2026-07-21)
Landed as increments on suite_tcl90: 84a1b225 (configure-products as build-cache
OVERLAYS - tclUuid.h/tkUuid.h/threadUuid.h via generator include-dirs, the two exe
manifests + thread.rc via overlay writefiles/rc copies; source trees never written,
fossil checkouts stay pristine), 51fc727f (build.zig.zon pinned manifest +
zig-native bootstrap staging: 'zig build stage|bootstrap' from the tracked suite
dir, tools/stagetree.zig materializer with pin-marker invalidation and fossil/git
checkout protection), e5db0513 (post-tclsh phases as recipe steps under the
suite-built shell: smoke/tklib/tcllib/tcllibc/test-gate + package landing in the
recipe; suite.tcl thinned to the fossil dev wrapper delegating to the same staged
steps), acc6ab40 (build.zig default-entry shim; deterministic critcl target;
comptime zig pin 0.16.0).
PATH-scrubbed no-tclsh demonstration (clean checkout):
- Clean git clone of the repo at e5db0513 to c:/T/g102 (shallow base). The clone
carries no toolchain; the pinned zig is the acquisition layer's
bin/tools/zig-x86_64-windows-0.16.0 (punk-getzig-fetched, minisign-verified
hosting).
- Environment: env -i with PATH = the pinned zig dir (plus C:\Windows\System32 +
COMSPEC/PATHEXT/SystemDrive for the TEST-SUITE phase - base windows facilities,
see findings) and TEMP/LOCALAPPDATA/USERPROFILE only. Probed: 'where zig.exe
cmd.exe' resolve; 'where tclsh.exe tclsh90.exe fossil.exe git.exe' finds
NOTHING.
- Documented invocation 'zig build bootstrap' (build.zig shim -> build905.zig
bootstrap mode) performed the whole pipeline: the seven build.zig.zon pinned
per-checkin tarballs materialized into _build/suite_tcl90 (stagetree pin
markers; packages verified against the manifest hashes by zig's fetch layer),
recipe staged, and the nested staged build ran install + install-libraries +
make-zipfs + smoke + tklib + tcllib + tcllibc - ALL GREEN: suite_smoke
static+zip (9.0.5; zip proves attached tzdata+autoload), tklib tooltip:2.0.4
under withdrawn Tk, tcllib md5:2.0.9 sha1:2.0.5 cmdline:1.5.3, tcllibc:2.0
with md5-critcl-accel:1 (critcl driving zig cc). tcl::build-info of the demo
shell reports 9.0.5+1a9c3b9d... - IDENTICAL to the fossil-flow build: the zon
pins are the exact checkouts the promoted punk905 runtime was built from.
(The build pipeline was additionally green in an earlier pass with PATH = the
zig dir ALONE - not even cmd.exe.)
- Test gate ('zig build bootstrap -Dsteps=test-gate', scrubbed): totals 69552
run, 56075 passed, 13468 skipped, 9 failed - 8 baselined plus fCmd-30.3,
which is a scrub artifact (the test's expected result assumes
$env(SystemDrive) exists); with SystemDrive present the file reruns GATE PASS
all-baselined. Same-day suite.tcl-driven equivalent (fossil flow, delegated
to the same test-gate step): 69552 run, 56040 passed, 13503 skipped, 9
failed, GATE PASS - matching run counts, with the small passed<->skipped
shift being env-dependent test constraints.
- Copy-and-tweak preserved: exercised via a full suite copy (suite_tcl90zt)
that bootstrapped from nothing but its tracked tree + pinned zig into its own
_build/<name> stage; the stage dir derives from the suite folder name in both
flows. The fossil-checkout dev flow is retained: suite.tcl fetches live
checkouts per sources.config and delegates to the same staged steps, and the
bootstrap staging never touches an existing fossil/git checkout (guarded in
the recipe and in stagetree, tested against the fossil-populated stage).
Environment findings (recorded for future suite work):
- critcl chooses its build target by PROBING PATH for compilers: with a gcc
visible the tracked config's defaults engaged (why the G-098-era flow always
worked), but the scrubbed environment fell back to critcl's builtin msvc 'cl'
target and all 25 accelerator modules failed with "couldn't execute cl". The
config now declares an explicit win32-x86_64-zig target and the recipe passes
-target win32-x86_64-zig - deterministic in both environments.
- The tcl core test suite needs base windows facilities beyond the toolchain:
without cmd.exe/COMSPEC/PATHEXT the winpipe/auto_execok/fCmd families fail
spuriously (~52 extra), and fCmd-30.3 needs SystemDrive. These are properties
of the tests, not the pipeline.
- First socket listen by a newly built shell at a new path raises the windows
firewall consent dialog (user-observed and accepted mid-run during the first
demo gate) - socket-family flakes in a first gate run on a fresh clone can be
firewall artifacts; post-accept runs are deterministic. An isolated
http-4.14.2 connect-refused flake was also observed once on the fossil flow
and passed on rerun (528/519/9/0).
- Windows Run-step spawn semantics encoded in the recipe: cached
(non-side-effect) zig Run steps spawn children with stdout IGNORED - a tcl
child then has no stdout channel and any puts errors; such runs capture
stdout. Built-shell artifact runs execute the CACHED exe (no ../lib/tcl9.0
beside it) and get TCL_LIBRARY pointed at the source tree's script library
(the zip smoke deliberately excluded - its attached library is under test).
Residual: out/bin/tclsh90sprzip.exe in the MAIN repo's fossil-flow stage is
pending one install copy (the file was held open by a user application through
the verification window; the product builds and installed cleanly in the demo
clone, and the next make-zipfs run installs it once released). The G-104
make.tcl surface will front these flows; -Dtestargs passthrough on bootstrap
mode (currently a staged-invocation option only) is a G-104-adjacent nicety.
## Notes
- 2026-07-20 (user requirements batch): the build-graph products this driver shape
must express grew concrete - the G-103 runtime kit FAMILY (plain/punk/bi kits with
attached batteries) become named build outputs, G-105 adds -target as a build
dimension, and G-104's make.tcl surface fronts whichever driver shape wins (its
suite self-description contract must survive the migration). The shape that won
(this goal, achieved): pipeline entirely in the zig recipe as steps; two source
flows (zon pins / fossil checkouts) converging on one staged invocation.
Loading…
Cancel
Save