Browse Source

G-103 achieved: runtime kit family - flip, archive, reference sweep (wrap trial PASS)

Final acceptance item closed by the punk9_beta/punk9bi_beta kit-wrap
trial (user go-ahead; quiet tree): make.tcl project wrapped both kits
over the family runtimes (the user's own earlier same-day build agreed -
punkcheck no-change), and probes UNDER each kit verified 9.0.5,
//zipfs:/app/tcl_library, PIPEREPL MACHINERY PRESENT, Thread 3.0.7
winning over the vfs payload's legacy thread3.0.1, vfs/tcllib/tcllibc
engaged, punk::args from the vfs side, and Tk create/destroy in both -
punk9bi_beta's Tk necessarily from the runtime's attached image
(punk9win_for_tkruntime.vfs carries none). Every acceptance clause is
now met; evidence recorded in the detail file.

Flip mechanics: Status achieved 2026-07-22; detail file to
goals/archive/ (content-identical move after edits); index entry to
GOALS-archive.md; reference sweep across 13 live goal files (archive
markers per the G-058 precedent - non-contract text only, Scope lines
untouched; pending-tense updates in G-099 arc-unblocked, G-108 family
production landed, G-018/G-023 naming-authority pointers). Forward
pointers pushed to live goals: G-101 (8.6-family deferral target),
G-067 (family -rN artifacts exist; publication user-gated with the
defaults.txt flip process).

Flagged (completion report): tcltls bi-battery line loses its goal home
with this archive - candidate goal on request; punk9wintk905.vfs legacy
thread3.0.1 payload cleanup can ride a future payload refresh; beta
promotion is the user's interactive trial per the *_beta convention.

Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
master
Julian Noble 1 week ago
parent
commit
49f14060e1
  1. 4
      GOALS-archive.md
  2. 4
      GOALS.md
  3. 3
      goals/G-004-no-committed-binaries.md
  4. 3
      goals/G-018-zig-plain-tclsh-kits.md
  5. 3
      goals/G-023-version-named-binaries.md
  6. 3
      goals/G-060-qemu-test-matrix.md
  7. 3
      goals/G-066-pkgindex-tm-repackaging.md
  8. 12
      goals/G-067-module-artifact-channel.md
  9. 2
      goals/G-099-suite-tcl86-buildsuite.md
  10. 5
      goals/G-101-tcl86-kit-container-strategy.md
  11. 2
      goals/G-104-maketcl-buildsuite-surface.md
  12. 5
      goals/G-105-buildsuite-cross-target.md
  13. 6
      goals/G-108-buildsuite-debug-tier.md
  14. 3
      goals/G-110-sharedlib-extraction-cache.md
  15. 3
      goals/G-115-declarative-vfs-composition.md
  16. 47
      goals/archive/G-103-runtime-kit-family.md

4
GOALS-archive.md

@ -148,3 +148,7 @@ Acceptance: thread and tclvfs run gated with tracked dispositioned baselines, de
### G-106 [achieved 2026-07-22] powershell console-mode fallback: maintained raw-mode path for twapi-less runtimes → detail: goals/archive/G-106-powershell-consolemode-fallback.md ### G-106 [achieved 2026-07-22] powershell console-mode fallback: maintained raw-mode path for twapi-less runtimes → detail: goals/archive/G-106-powershell-consolemode-fallback.md
Scope: src/modules/punk/console-999999.0a1.0.tm (enableRaw_powershell/disableRaw_powershell + the persistent server lifecycle), scriptlib/utils/pwsh/ (consolemode_server_async.ps1 canonical + experiment-variant reconciliation), ps-script resolution/packaging across launch contexts (argv0-derived pstooldir; kits via the G-089 scriptlib-in-kits interplay), src/make.tcl shell (the verified launch context) Scope: src/modules/punk/console-999999.0a1.0.tm (enableRaw_powershell/disableRaw_powershell + the persistent server lifecycle), scriptlib/utils/pwsh/ (consolemode_server_async.ps1 canonical + experiment-variant reconciliation), ps-script resolution/packaging across launch contexts (argv0-derived pstooldir; kits via the G-089 scriptlib-in-kits interplay), src/make.tcl shell (the verified launch context)
Acceptance: on a twapi-less suite runtime, raw enable/disable work via the fallback from (a) the make.tcl shell launch and (b) a kit / plain-tclsh repl launch, with no stderr noise in normal operation; the server lifecycle is verified - starts once per session, stays up for the session's raw transitions (the 2026-07-20 observed early-shutdown mode diagnosed and fixed), and shuts down with the session leaving no orphan pwsh processes; ps-script resolution no longer depends solely on argv0 parent-dir derivation (works from kits and unusual cwds, with the fallback-to-pwd branch replaced by something principled); scriptlib/utils/pwsh is reconciled to one canonical server script with the experiment variants retired or explicitly labelled; the fallback's role as the no-twapi contingency is documented where G-103's twapi investigation will find it, and a repeatable verification recipe is recorded in this file. Acceptance: on a twapi-less suite runtime, raw enable/disable work via the fallback from (a) the make.tcl shell launch and (b) a kit / plain-tclsh repl launch, with no stderr noise in normal operation; the server lifecycle is verified - starts once per session, stays up for the session's raw transitions (the 2026-07-20 observed early-shutdown mode diagnosed and fixed), and shuts down with the session leaving no orphan pwsh processes; ps-script resolution no longer depends solely on argv0 parent-dir derivation (works from kits and unusual cwds, with the fallback-to-pwd branch replaced by something principled); scriptlib/utils/pwsh is reconciled to one canonical server script with the experiment variants retired or explicitly labelled; the fallback's role as the no-twapi contingency is documented where G-103's twapi investigation will find it, and a repeatable verification recipe is recorded in this file.
### G-103 [achieved 2026-07-22] runtime kit family from buildsuites: plain / punk / bi kits with attached batteries + artifact metadata → detail: goals/archive/G-103-runtime-kit-family.md
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 (punk-runtime list/use - renamed under G-097, achieved 2026-07-21)
Acceptance: suite_tcl90 produces named artifacts for at least plain, punk, and one bi (+Tk) kit; each verified self-contained from a path with no external Tcl visible (info library resolves into the attached zip; package require checks for Thread, vfs + representative vfs::* packages, tcllib module + tcllibc acceleration engaged; bi adds Tk create/destroy) with the checks recorded here; the punk kit demonstrates piperepl active by default and disabled via the documented env opt-out, the plain kit demonstrates stock behaviour (no patch); artifact metadata (variant, versions, target, source provenance) is emitted alongside the binaries in the punkbin layout and surfaced by the runtime scriptset's list/use; the naming scheme for family members is documented, with piperepl-patched runtime executables carrying 'punk' in the name to distinguish them from unpatched (e.g tclsh905punk.exe - the tcl-patchlevel / punk-version / separator questions resolved and the decision recorded here) and mapvfs.config consuming the punk/bi runtimes under the decided names; the 8.6 family variant is explicitly deferred to the G-101 container investigation (static vfs / metakit patching questions).

4
GOALS.md

@ -346,10 +346,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) 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 Detail: goals/G-101-tcl86-kit-container-strategy.md
### G-103 [active] 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 (punk-runtime list/use - renamed under G-097, achieved 2026-07-21)
Detail: goals/G-103-runtime-kit-family.md
### G-104 [proposed] make.tcl buildsuite surface: list / info / build ### G-104 [proposed] make.tcl buildsuite surface: list / info / build
Scope: src/make.tcl (buildsuite subcommand group), src/buildsuites/*/ (suite self-description contract: an 'info'/describe affordance per suite - suite.tcl action or manifest record), documentation (make.tcl help text, src/buildsuites README/AGENTS) Scope: src/make.tcl (buildsuite subcommand group), src/buildsuites/*/ (suite self-description contract: an 'info'/describe affordance per suite - suite.tcl action or manifest record), documentation (make.tcl help text, src/buildsuites README/AGENTS)
Detail: goals/G-104-maketcl-buildsuite-surface.md Detail: goals/G-104-maketcl-buildsuite-surface.md

3
goals/G-004-no-committed-binaries.md

@ -66,7 +66,8 @@ A standing repo-wide rule in root `AGENTS.md` (User Preferences) already directs
(punkshell strict, derived projects owner-chosen). (punkshell strict, derived projects owner-chosen).
- 2026-07-22 (user framing + assessment): EXIT PATHS for the src/vfs/*.vfs - 2026-07-22 (user framing + assessment): EXIT PATHS for the src/vfs/*.vfs
interim exception - the .vfs binary payloads leave the committed tree via interim exception - the .vfs binary payloads leave the committed tree via
some mix of: (i) suite-built runtime batteries (G-103 attached images some mix of: (i) suite-built runtime batteries (G-103, achieved 2026-07-22
- see goals/archive/G-103-runtime-kit-family.md - attached images
already shrink kit .vfs payloads toward pure punkshell script payload); already shrink kit .vfs payloads toward pure punkshell script payload);
(ii) per-package punkbin LIBRARY artifacts (G-067 channel - buildsuite-built (ii) per-package punkbin LIBRARY artifacts (G-067 channel - buildsuite-built
.tm/pkg libraries as a second punkbin artifact class) declared into kit .tm/pkg libraries as a second punkbin artifact class) declared into kit

3
goals/G-018-zig-plain-tclsh-kits.md

@ -62,7 +62,8 @@ This defines one end of a deliberate spectrum of buildable executables:
with the tcl library in its attached zip; stock script/piped invocations, with the tcl library in its attached zip; stock script/piped invocations,
no punk namespaces) - it remains READILY ACCESSIBLE as a build product of no punk namespaces) - it remains READILY ACCESSIBLE as a build product of
every suite run (_build/<suite>/out/bin), deliberately NOT showcased or every suite run (_build/<suite>/out/bin), deliberately NOT showcased or
published as a product. The showcased family lives in G-103, whose 'plain' published as a product. The showcased family lives in G-103 (achieved 2026-07-22 - see
goals/archive/G-103-runtime-kit-family.md), whose 'plain'
member is plain-for-punk-purposes (no piperepl patch, but batteries - member is plain-for-punk-purposes (no piperepl patch, but batteries -
Thread/tclvfs/tcllib - attached), close enough to plain for our purposes. Thread/tclvfs/tcllib - attached), close enough to plain for our purposes.
make.tcl surfacing of suite builds is G-104. The executable-spectrum framing make.tcl surfacing of suite builds is G-104. The executable-spectrum framing

3
goals/G-023-version-named-binaries.md

@ -83,5 +83,6 @@ binary-artifacts repository). Revisit when the accumulation actually bites.
make.tcl/bin-side ADOPTION of that decision's kit-artifact tier plus the make.tcl/bin-side ADOPTION of that decision's kit-artifact tier plus the
-dev / release-gated-plain-name policy layer (which the decision deliberately -dev / release-gated-plain-name policy layer (which the decision deliberately
leaves under project-owner control). Naming authority: G-103's NAMING leaves under project-owner control). Naming authority: G-103's NAMING
DECISION section (goals/G-103-runtime-kit-family.md; archive location once DECISION section (achieved 2026-07-22 - goals/archive/G-103-runtime-kit-family.md; the
decision text is stable there
flipped). flipped).

3
goals/G-060-qemu-test-matrix.md

@ -65,4 +65,5 @@ direction rather than a new ad-hoc location.
- 2026-07-21: concrete cross-platform test item for this matrix - temp-DLL/dir - 2026-07-21: concrete cross-platform test item for this matrix - temp-DLL/dir
cleanup after loading binary batteries out of a kit's VFS (Tcl core TIP 741, cleanup after loading binary batteries out of a kit's VFS (Tcl core TIP 741,
windows-framed): per guest, verify extracted temp copies do not accumulate, or windows-framed): per guest, verify extracted temp copies do not accumulate, or
characterize the flaw. Detail + requirement: G-103 Notes. characterize the flaw. Detail + requirement: G-103 Notes (achieved
2026-07-22 - see goals/archive/G-103-runtime-kit-family.md).

3
goals/G-066-pkgindex-tm-repackaging.md

@ -47,7 +47,8 @@ current goal touches this.
then the inner binary 'load's from that zipfs mount and EXTRACTS to then the inner binary 'load's from that zipfs mount and EXTRACTS to
%TEMP%\TCL<hex>\<dll> - the SAME copy-to-temp machinery as a direct-from-kit dll %TEMP%\TCL<hex>\<dll> - the SAME copy-to-temp machinery as a direct-from-kit dll
load, so the TIP-741 non-cleanup/accumulation flaw applies equally (one temp dir load, so the TIP-741 non-cleanup/accumulation flaw applies equally (one temp dir
per binary, persists on exit; see G-103 Notes). Three loading locations all per binary, persists on exit; see G-103 Notes - achieved 2026-07-22,
archived at goals/archive/G-103-runtime-kit-family.md). Three loading locations all
converge on this one mechanism: (1) dll direct in a kit's zipfs, (2) standalone converge on this one mechanism: (1) dll direct in a kit's zipfs, (2) standalone
.tm on disk, (3) .tm nested INSIDE a kit's zipfs - the nested (zip-in-zip) mount .tm on disk, (3) .tm nested INSIDE a kit's zipfs - the nested (zip-in-zip) mount
works IN PLACE with NO pre-extraction of the .tm itself; only the dll load hits works IN PLACE with NO pre-extraction of the .tm itself; only the dll load hits

12
goals/G-067-module-artifact-channel.md

@ -38,10 +38,20 @@ and pull (G-065) instead of re-vendoring by hand.
- 2026-07-21 (user): binary-bearing zip-based .tm (modpod) are an intended publish - 2026-07-21 (user): binary-bearing zip-based .tm (modpod) are an intended publish
payload here - single-file downloadable libraries carrying manifest + binary + payload here - single-file downloadable libraries carrying manifest + binary +
script. Consuming-side load extracts the binary to %TEMP%\TCL* with the TIP-741 script. Consuming-side load extracts the binary to %TEMP%\TCL* with the TIP-741
non-cleanup flaw on windows (characterized - G-066/G-103 Notes). Single-lowercase- non-cleanup flaw on windows (characterized - G-066 Notes and G-103, achieved
2026-07-22 - see goals/archive/G-103-runtime-kit-family.md). Single-lowercase-
name .tm (TIP 590) are plain-tclsh loadable; multi-require-name .tm need libunknown name .tm (TIP 590) are plain-tclsh loadable; multi-require-name .tm need libunknown
(punkshell-only, must be documented). Generation + multi-name discovery detail: (punkshell-only, must be documented). Generation + multi-name discovery detail:
G-066 Notes. G-066 Notes.
- 2026-07-22 (from archived G-103 - see goals/archive/G-103-runtime-kit-family.md):
the family runtime -rN artifacts + toml metadata + sha1sums now EXIST
(suite kit-family-artifacts emission, punkbin-layout shaped) and their punkbin
publication is a pending USER-GATED step - the archived goal's deferral
condition ("publication follows this goal's artifacts") is satisfied. When it
happens: copy the emission into punkbin win32-x86_64/, run build_sha1sums.tcl,
flip defaults.txt's win32-x86_64 line in the same change-set (the recorded
release process). Those runtime artifacts are punkbin's FIRST metadata-carrying
class; this goal's library class follows the same per-platform + toml pattern.
- 2026-07-22 (user framing): the zig BUILDSUITES are a producing source for this - 2026-07-22 (user framing): the zig BUILDSUITES are a producing source for this
channel - libraries the suites build (thread/tk/tcltls-class) get packaged as channel - libraries the suites build (thread/tk/tcltls-class) get packaged as
per-platform .tm/pkg artifacts when they are not going directly into a kit, and per-platform .tm/pkg artifacts when they are not going directly into a kit, and

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

@ -53,7 +53,7 @@ later.
## Notes ## Notes
- 2026-07-21 (user): SEQUENCING CONFIRMED - G-097 (achieved 2026-07-21) then G-103 precede this arc; the - 2026-07-21 (user): SEQUENCING CONFIRMED - G-097 (achieved 2026-07-21) then G-103 (achieved 2026-07-22 - see goals/archive/G-103-runtime-kit-family.md) precede this arc - BOTH LANDED, the arc is unblocked; the
suite_tcl86 fork is taken after the kit-family assembly steps exist in suite_tcl90 suite_tcl86 fork is taken after the kit-family assembly steps exist in suite_tcl90
so the 8.6 suite is born expressing family products (and G-101 inherits a concrete so the 8.6 suite is born expressing family products (and G-101 inherits a concrete
payload contract). payload contract).

5
goals/G-101-tcl86-kit-container-strategy.md

@ -25,7 +25,8 @@ zip-wrap). 8.6 has no zipfs, so a kit needs a vfs container and a boot mechanism
make.tcl's existing 'kit' wrap type drives sdx/mk4-style wrapping; whichever make.tcl's existing 'kit' wrap type drives sdx/mk4-style wrapping; whichever
container is chosen must either fit that path or come with a documented successor. container is chosen must either fit that path or come with a documented successor.
The G-103 runtime kit family (plain/punk/bi kits with thread + tclvfs + tcllib The G-103 runtime kit family (achieved 2026-07-22 - see
goals/archive/G-103-runtime-kit-family.md; plain/punk/bi kits with thread + tclvfs + tcllib
batteries in the attached container) extends to 8.6 THROUGH this investigation: the batteries in the attached container) extends to 8.6 THROUGH this investigation: the
user notes (2026-07-20) that in the 8.6 case tclvfs may have to be STATIC and there user notes (2026-07-20) that in the 8.6 case tclvfs may have to be STATIC and there
may be metakit-specific patching - both are part of this goal's assessment, and the may be metakit-specific patching - both are part of this goal's assessment, and the
@ -59,7 +60,7 @@ wrap), and only worth activating once G-099/G-100 land.
"loading binary dlls from or via the container" acceptance should characterize "loading binary dlls from or via the container" acceptance should characterize
that cleanup per platform - TIP 741 detail + requirement in G-103 Notes. that cleanup per platform - TIP 741 detail + requirement in G-103 Notes.
- 2026-07-22: the G-103 family attached-image contract this goal was promised as - 2026-07-22: the G-103 family attached-image contract this goal was promised as
its concrete payload target now EXISTS (G-103 Progress 2026-07-22): a family its concrete payload target now EXISTS (G-103 Progress 2026-07-22; archived): a family
runtime's image is tcl_library/ at the container root position the boot runtime's image is tcl_library/ at the container root position the boot
searches, tm tree at tcl9/<ver> (8.6: tcl8/<ver>), batteries at lib/<pkg> searches, tm tree at tcl9/<ver> (8.6: tcl8/<ver>), batteries at lib/<pkg>
with installed-shape pkgIndexes + dlls at bin/, and a one-line stock with installed-shape pkgIndexes + dlls at bin/, and a one-line stock

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

@ -29,7 +29,7 @@ separate subsystem (kit wrapping) but the same ergonomic family - a candidate to
execute alongside this goal. execute alongside this goal.
Relationships: G-096 (achieved 2026-07-20 - 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 (achieved 2026-07-21 - driver shape settled; the info/build contract holds), G-103 (family G-102 (achieved 2026-07-21 - driver shape settled; the info/build contract holds), G-103 (achieved 2026-07-22 - see goals/archive/G-103-runtime-kit-family.md; 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).
## Notes ## Notes

5
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; 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 qemu covers what WSL cannot), G-099/G-100 (the 8.6 suite inherits the target
dimension), G-102 (achieved 2026-07-21 - driver shape settled; 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 (achieved 2026-07-22 - see goals/archive/G-103-runtime-kit-family.md)
(family x target = the punkbin artifact matrix), G-006 (punkbin artifact consent). (family x target = the punkbin artifact matrix), G-006 (punkbin artifact consent).
## Notes ## Notes
@ -64,7 +64,8 @@ dimension), G-102 (achieved 2026-07-21 - driver shape settled; target becomes a
loads - G-103/G-066 Notes); the linux expectation stays no-accumulation loads - G-103/G-066 Notes); the linux expectation stays no-accumulation
(unlink-while-mapped) but is UNVERIFIED until a runtime exists. (unlink-while-mapped) but is UNVERIFIED until a runtime exists.
- 2026-07-22: punk-runtime grew the cross-platform staging surface this goal - 2026-07-22: punk-runtime grew the cross-platform staging surface this goal
will consume (user-approved; details in G-103 Progress 2026-07-22): will consume (user-approved; details in the archived G-103 Progress
2026-07-22):
fetch/list/use -platform <punkbin platform-dir name> with local-platform fetch/list/use -platform <punkbin platform-dir name> with local-platform
default (PUNK_RUNTIME_PLATFORM env override), foreign fetch name-required, default (PUNK_RUNTIME_PLATFORM env override), foreign fetch name-required,
list !TARGET-MISMATCH integrity flag from the G-103 metadata target field, list !TARGET-MISMATCH integrity flag from the G-103 metadata target field,

6
goals/G-108-buildsuite-debug-tier.md

@ -44,9 +44,11 @@ TCL_COMPILE_STATS similarly must be absent (not =0) for release performance.
-mode record with distinct artifact names (e.g. tclcore-dbg1.summary/.log); -mode record with distinct artifact names (e.g. tclcore-dbg1.summary/.log);
never part of the default gate composite; a run that produces no totals never part of the default gate composite; a run that produces no totals
still fails its step (G-107 semantics). still fails its step (G-107 semantics).
- Kit family debug members follow G-103's family definition; this goal only - Kit family debug members follow G-103's family definition (achieved
2026-07-22 - see goals/archive/G-103-runtime-kit-family.md); this goal only
requires the feasibility outcome plus naming convention (-dbg<n>) — full requires the feasibility outcome plus naming convention (-dbg<n>) — full
family production may land with/after G-103. family production landed under G-103 (kit-family/kit-family-artifacts
suite steps) - debug members extend that settled shape.
- Debug tiers are opt-in build invocations (-D flags / named steps), not new - Debug tiers are opt-in build invocations (-D flags / named steps), not new
copy-and-tweak suite trees, unless implementation shows a variant tree is copy-and-tweak suite trees, unless implementation shows a variant tree is
cleaner (sources.config precedent). cleaner (sources.config precedent).

3
goals/G-110-sharedlib-extraction-cache.md

@ -75,7 +75,8 @@ prototype); (2) a suite core patch to the zipfs load path
loads use the cache; (3) upstream conversation (a third option next to loads use the cache; (3) upstream conversation (a third option next to
TIPs 741/709). TIPs 741/709).
Relationships: G-103 (family runtimes are the heaviest consumer - every kit Relationships: G-103 (achieved 2026-07-22 - see
goals/archive/G-103-runtime-kit-family.md; family runtimes are the heaviest consumer - every kit
battery load), G-101 (Metakit 8.6 kits share the copy-to-temp shape), battery load), G-101 (Metakit 8.6 kits share the copy-to-temp shape),
G-066/G-067/G-109 (binary modpod .tm artifacts), G-105/G-060 (per-platform G-066/G-067/G-109 (binary modpod .tm artifacts), G-105/G-060 (per-platform
characterization of the existing behaviour), Tcl TIPs 741/709. characterization of the existing behaviour), Tcl TIPs 741/709.

3
goals/G-115-declarative-vfs-composition.md

@ -28,7 +28,8 @@ Precedents already in the tree that make this credible:
with overlay/anti mechanics is proven machinery in this codebase. with overlay/anti mechanics is proven machinery in this codebase.
- tomlish is vendored, and toml is the accepted format for punkshell-context - tomlish is vendored, and toml is the accepted format for punkshell-context
configuration (the 2026-07-20 toml drop applies only to dependency-free configuration (the 2026-07-20 toml drop applies only to dependency-free
BUILDSUITE BOOTSTRAP configs - recorded in G-103 Context). BUILDSUITE BOOTSTRAP configs - recorded in G-103 Context; achieved
2026-07-22, archived at goals/archive/G-103-runtime-kit-family.md).
Relationship to the punkbin third-class question (G-004 Notes 2026-07-22): Relationship to the punkbin third-class question (G-004 Notes 2026-07-22):
declarative composition pulling per-package artifacts is the declarative composition pulling per-package artifacts is the

47
goals/G-103-runtime-kit-family.md → goals/archive/G-103-runtime-kit-family.md

@ -1,6 +1,6 @@
# G-103 runtime kit family from buildsuites: plain / punk / bi kits with attached batteries + artifact metadata # G-103 runtime kit family from buildsuites: plain / punk / bi kits with attached batteries + artifact metadata
Status: active Status: achieved 2026-07-22
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 (punk-runtime list/use - renamed under G-097, achieved 2026-07-21) 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 (punk-runtime list/use - renamed under G-097, achieved 2026-07-21)
Goal: buildsuites produce a defined FAMILY of runnable, self-contained runtime kits - executables whose info library and core batteries live in the initially attached zip, depending on no external filesystem tree: (1) a PLAIN tclsh kit carrying loadable Thread, tclvfs with as many vfs::* packages as we have, and tcllib+tcllibc; (2) a PUNK kit = the plain kit with the TCLSH_PIPEREPL patch applied and ENABLED BY DEFAULT (env opt-out, not opt-in - users wanting stock behaviour take the plain kit); (3) BI (batteries-included) punk kits additionally carrying libraries WE BUILD - Tk first; tcltls (with a zig-built OpenSSL/LibreSSL backend), sqlite3/tdom/twapi as future build targets - all in the attached zip. These are the project's 'runtime' executables: punkbin candidates carrying metadata (variant, component versions, target platform, provenance) that runtime list/use subcommands can surface. Goal: buildsuites produce a defined FAMILY of runnable, self-contained runtime kits - executables whose info library and core batteries live in the initially attached zip, depending on no external filesystem tree: (1) a PLAIN tclsh kit carrying loadable Thread, tclvfs with as many vfs::* packages as we have, and tcllib+tcllibc; (2) a PUNK kit = the plain kit with the TCLSH_PIPEREPL patch applied and ENABLED BY DEFAULT (env opt-out, not opt-in - users wanting stock behaviour take the plain kit); (3) BI (batteries-included) punk kits additionally carrying libraries WE BUILD - Tk first; tcltls (with a zig-built OpenSSL/LibreSSL backend), sqlite3/tdom/twapi as future build targets - all in the attached zip. These are the project's 'runtime' executables: punkbin candidates carrying metadata (variant, component versions, target platform, provenance) that runtime list/use subcommands can surface.
Acceptance: suite_tcl90 produces named artifacts for at least plain, punk, and one bi (+Tk) kit; each verified self-contained from a path with no external Tcl visible (info library resolves into the attached zip; package require checks for Thread, vfs + representative vfs::* packages, tcllib module + tcllibc acceleration engaged; bi adds Tk create/destroy) with the checks recorded here; the punk kit demonstrates piperepl active by default and disabled via the documented env opt-out, the plain kit demonstrates stock behaviour (no patch); artifact metadata (variant, versions, target, source provenance) is emitted alongside the binaries in the punkbin layout and surfaced by the runtime scriptset's list/use; the naming scheme for family members is documented, with piperepl-patched runtime executables carrying 'punk' in the name to distinguish them from unpatched (e.g tclsh905punk.exe - the tcl-patchlevel / punk-version / separator questions resolved and the decision recorded here) and mapvfs.config consuming the punk/bi runtimes under the decided names; the 8.6 family variant is explicitly deferred to the G-101 container investigation (static vfs / metakit patching questions). Acceptance: suite_tcl90 produces named artifacts for at least plain, punk, and one bi (+Tk) kit; each verified self-contained from a path with no external Tcl visible (info library resolves into the attached zip; package require checks for Thread, vfs + representative vfs::* packages, tcllib module + tcllibc acceleration engaged; bi adds Tk create/destroy) with the checks recorded here; the punk kit demonstrates piperepl active by default and disabled via the documented env opt-out, the plain kit demonstrates stock behaviour (no patch); artifact metadata (variant, versions, target, source provenance) is emitted alongside the binaries in the punkbin layout and surfaced by the runtime scriptset's list/use; the naming scheme for family members is documented, with piperepl-patched runtime executables carrying 'punk' in the name to distinguish them from unpatched (e.g tclsh905punk.exe - the tcl-patchlevel / punk-version / separator questions resolved and the decision recorded here) and mapvfs.config consuming the punk/bi runtimes under the decided names; the 8.6 family variant is explicitly deferred to the G-101 container investigation (static vfs / metakit patching questions).
@ -394,14 +394,43 @@ Verified on both payloads directly AND through the rewrapped polyglot
run-guard/env-override incl run's immunity to it); roundtrip pin PASS; layout run-guard/env-override incl run's immunity to it); roundtrip pin PASS; layout
copy + .ps1 twin refreshed; project 0.17.9. copy + .ps1 twin refreshed; project 0.17.9.
Remaining for acceptance: ### 2026-07-22 increment: kit-wrap trial PASS - acceptance complete, goal achieved
- exercise the new mapvfs entries with an actual kit wrap (punk9_beta / The mapvfs consumption was exercised with real kit builds (user go-ahead;
punk9bi_beta) - entries landed 2026-07-22, the wrap trial is the next quiet tree, no punk shells locking bin exes): make.tcl project built and
increment (kit builds touch user-facing bin/ kits; beta-trial convention deployed punk9_beta.exe (tclsh9.0.5-punk.exe + punk9wintk905.vfs, 28.9 MB)
applies). and punk9bi_beta.exe (tclsh9.0.5-punk-bi.exe + punk9win_for_tkruntime.vfs,
- record the 8.6-family deferral note against G-101 when closing (the 58.3 MB). The user's own earlier same-day build had already wrapped them
acceptance's explicit deferral - no work item here). (punkcheck reported no-change on the agent's confirming run - two
independent builds agree). Probes run UNDER each kit:
- both: patchlevel 9.0.5, tcl_library //zipfs:/app/tcl_library (merged
runtime+vfs image), PIPEREPL MACHINERY PRESENT (the punk-family basis
carries into wrapped kits), vfs 1.4.2, md5 2.0.9 + tcllibc 2.0 engaged,
punk::args 0.12.6 (vfs payload side), Tk 9.0.2 with widget
create/destroy.
- Thread resolves to 3.0.7: the runtime's attached battery wins over the
vfs payload's legacy thread3.0.1 exactly as designed (versioned package
resolution over the union image).
- punk9bi_beta's Tk necessarily comes from the RUNTIME's attached image
(punk9win_for_tkruntime.vfs carries no Tk by design) - the bi battery
demonstrably serves a real kit.
Remaining-work resolution (both items closed):
- kit-wrap trial of the mapvfs entries: DONE (this increment). Interactive
beta trial and punk9_beta/punk9bi_beta promotion remain ordinary
*_beta-convention user activities, outside this contract.
- 8.6-family deferral pointer recorded against G-101 at closing (see G-101
Notes 2026-07-22).
Post-achievement follow-throughs (not acceptance items): punkbin
publication of the family -rN artifacts remains user-gated (the
defaults.txt flip process is ready - pointer left in G-067's channel notes); the tcltls bi-battery line (crypto backend under the
zig-only policy) loses its goal home with this archive - flagged for a
candidate goal decision; punk9wintk905.vfs still carries the legacy
thread3.0.1 payload dir (harmless - runtime 3.0.7 wins - cleanup can ride
any future payload refresh).
- 2026-07-22: punkbin layout contract gained a root-level platforms.txt - 2026-07-22: punkbin layout contract gained a root-level platforms.txt
discovery manifest (generated by punkbin src/build_sha1sums.tcl; committed discovery manifest (generated by punkbin src/build_sha1sums.tcl; committed
locally in punkbin 7b8a244, push = user decision) - raw-file artifact locally in punkbin 7b8a244, push = user decision) - raw-file artifact
Loading…
Cancel
Save