Browse Source

G-129 achieved 2026-07-27: flip + archive record + reference sweep

Detail file: Status flipped, Context table corrected (the LUCK backport HAS a
::zipfs ensemble - just no root subcommand), Progress + verification records
added (both 32-bit kits boot and resolve from their mounts, four 64-bit kits
byte-identical before/after, unattributable-mount stderr report demonstrated,
both zip offset conventions verified on the backport, kitmountpoint.test 4/4,
full suite at the exec-14.3-only baseline). Index entry moved to GOALS-archive.

Reference sweep: achieved/archive markers added at the G-129 mentions in G-101,
G-024, G-130 and G-131 (pending-tense Approach line rewritten); forward-pointing
notes pushed to their targets - G-131 gets the factored-derivation shape,
measured mount tables, app/main.tcl hook and the LUCK both-capability probe row;
G-123 gets the bin/AGENTS.md kit-wrappable requirements as its publication
criterion pointer.

Claude-Session: https://claude.ai/code/session_01UEgomWq6kA6c4A8GswqqGW
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
master
Julian Noble 4 days ago
parent
commit
1fd8af5465
  1. 4
      GOALS-archive.md
  2. 4
      GOALS.md
  3. 4
      goals/G-024-mapvfs-toml.md
  4. 5
      goals/G-101-tcl86-kit-container-strategy.md
  5. 6
      goals/G-123-thirdparty-runtime-tiers.md
  6. 74
      goals/G-129-kitboot-mountpoint-derivation.md
  7. 8
      goals/G-130-32bit-windows-buildsuites.md
  8. 16
      goals/G-131-boot-payload-autodetection.md

4
GOALS-archive.md

@ -206,3 +206,7 @@ Acceptance: punk::zip extracts to a target directory from (a) a plain zip, (b) a
### G-125 [achieved 2026-07-27] A kit that cannot boot is not deployed: extraction failure gates the bake instead of warning past it → detail: goals/archive/G-125-unbootable-kit-deploy-gate.md ### G-125 [achieved 2026-07-27] A kit that cannot boot is not deployed: extraction failure gates the bake instead of warning past it → detail: goals/archive/G-125-unbootable-kit-deploy-gate.md
Scope: src/make.tcl (kit extraction outcome handling, deploy step gating, the no-extraction BUILD-WARNING as the current behaviour being replaced); src/modules/punkboot/utils-999999.0a1.0.tm (the boot-precondition predicate, called guardedly from make.tcl as vcs_dirty_warnings is); src/tests/modules/punkboot/utils/ (predicate characterization over directory fixtures); src/tests/shell/testsuites/punkexe/ (characterization of the make.tcl-side gate reporting); src/AGENTS.md (bake failure-mode documentation) Scope: src/make.tcl (kit extraction outcome handling, deploy step gating, the no-extraction BUILD-WARNING as the current behaviour being replaced); src/modules/punkboot/utils-999999.0a1.0.tm (the boot-precondition predicate, called guardedly from make.tcl as vcs_dirty_warnings is); src/tests/modules/punkboot/utils/ (predicate characterization over directory fixtures); src/tests/shell/testsuites/punkexe/ (characterization of the make.tcl-side gate reporting); src/AGENTS.md (bake failure-mode documentation)
Acceptance: when extraction from the source runtime yields nothing and the kit's .vfs does not itself supply a bootable tcl library, the kit is recorded in FAILED KITS with a reason naming the cause and NEITHER src/_build nor bin receives a new artifact - the previously deployed kit is left untouched, verified by mtime and byte comparison across such a run; a kit whose .vfs legitimately supplies its own tcl library still builds and deploys, so the gate tests for the boot precondition rather than for the extraction step having run; the check is cheap enough to run on every kit and executes no artifact; the condition and its remedy are documented in src/AGENTS.md; existing punkexe suites pass unchanged and the gate itself is characterized. Acceptance: when extraction from the source runtime yields nothing and the kit's .vfs does not itself supply a bootable tcl library, the kit is recorded in FAILED KITS with a reason naming the cause and NEITHER src/_build nor bin receives a new artifact - the previously deployed kit is left untouched, verified by mtime and byte comparison across such a run; a kit whose .vfs legitimately supplies its own tcl library still builds and deploys, so the gate tests for the boot precondition rather than for the extraction step having run; the check is cheap enough to run on every kit and executes no artifact; the condition and its remedy are documented in src/AGENTS.md; existing punkexe suites pass unchanged and the gate itself is characterized.
### G-129 [achieved 2026-07-27] Kit boot finds its payload wherever the archive mounted, not only at //zipfs:/app → detail: goals/archive/G-129-kitboot-mountpoint-derivation.md
Scope: src/vfs/_config/punk_main.tcl and src/vfs/_config/project_main.tcl (vfs capability detection plus mount-point derivation for the kit's internal module/lib path assembly - both carry the same code today); src/runtime/mapvfs.config (an active kit entry per verification runtime); bin/runtime/win32-ix86/ (the two third-party 32-bit runtimes that verify it - read-only input); src/tests/shell/testsuites/punkexe/ (characterization of the derivation); src/AGENTS.md + bin/AGENTS.md (what a runtime must provide to be kit-wrappable)
Acceptance: a kit baked from a runtime that mounts its attached archive at the executable's own path boots and resolves its own payload with no external package paths in play - the kit's internal modules/ and lib/ trees appear in tcl::tm::list and auto_path and a package that exists only inside the kit resolves - with bin/runtime/win32-ix86/tclsh8.6.10-luck-zip.exe recorded here as that verification runtime; a kit baked from bin/runtime/win32-ix86/tclsh9.1b0-tclsfe.exe (32-bit, modern //zipfs:/app convention) boots the same way, proving the 32-bit target itself needs nothing special and that the derivation did not regress the ordinary case; punkshell's existing 64-bit kits are unaffected, verified by comparing each kit's internal tcl::tm::list and auto_path entries before and after the change across at least one zipfs kit and one starkit-family kit (identical); a runtime that has an attached archive the boot cannot locate says so on stderr rather than continuing silently with no internal paths, which is today's failure shape; and the runtime requirements for kit-wrapping - which zipfs commands and mount conventions are supported - are documented in bin/AGENTS.md.

4
GOALS.md

@ -403,10 +403,6 @@ Detail: goals/G-127-crosstarget-vfs-bake.md
Scope: src/tools/punkres/ (vendored zig source - tool name settled in the work - with provenance and licence records); src/make.tcl (mechanism selection at the G-057 seam, sharing G-126's tool build step); bin/tools/zig* (pinned toolchain as consumed); bin/punkres.exe (untracked build output); src/tests/ (characterization - icon replaced, payload intact, idempotent, overlay-unsafe refusal); TEMP_REFERENCE/tcl-sfe (read-only reference for the resource structures) Scope: src/tools/punkres/ (vendored zig source - tool name settled in the work - with provenance and licence records); src/make.tcl (mechanism selection at the G-057 seam, sharing G-126's tool build step); bin/tools/zig* (pinned toolchain as consumed); bin/punkres.exe (untracked build output); src/tests/ (characterization - icon replaced, payload intact, idempotent, overlay-unsafe refusal); TEMP_REFERENCE/tcl-sfe (read-only reference for the resource structures)
Detail: goals/G-128-portable-pe-resource-stamping.md Detail: goals/G-128-portable-pe-resource-stamping.md
### G-129 [active] Kit boot finds its payload wherever the archive mounted, not only at //zipfs:/app
Scope: src/vfs/_config/punk_main.tcl and src/vfs/_config/project_main.tcl (vfs capability detection plus mount-point derivation for the kit's internal module/lib path assembly - both carry the same code today); src/runtime/mapvfs.config (an active kit entry per verification runtime); bin/runtime/win32-ix86/ (the two third-party 32-bit runtimes that verify it - read-only input); src/tests/shell/testsuites/punkexe/ (characterization of the derivation); src/AGENTS.md + bin/AGENTS.md (what a runtime must provide to be kit-wrappable)
Detail: goals/G-129-kitboot-mountpoint-derivation.md
### G-130 [proposed] 32-bit windows runtimes from the buildsuites, both Tcl generations ### G-130 [proposed] 32-bit windows runtimes from the buildsuites, both Tcl generations
Scope: src/buildsuites/suite_tcl90/ and src/buildsuites/suite_tcl86/ (the win32-ix86 target invocation and any recipe or flag divergence 32-bit forces); src/buildsuites/ (target dimension as settled by G-105 - no per-target tree copies); bin/runtime/win32-ix86/ (output tier - already holds the third-party comparison runtimes); punkbin per-target artifact layout with G-103 metadata carrying the target Scope: src/buildsuites/suite_tcl90/ and src/buildsuites/suite_tcl86/ (the win32-ix86 target invocation and any recipe or flag divergence 32-bit forces); src/buildsuites/ (target dimension as settled by G-105 - no per-target tree copies); bin/runtime/win32-ix86/ (output tier - already holds the third-party comparison runtimes); punkbin per-target artifact layout with G-103 metadata carrying the target
Detail: goals/G-130-32bit-windows-buildsuites.md Detail: goals/G-130-32bit-windows-buildsuites.md

4
goals/G-024-mapvfs-toml.md

@ -62,7 +62,9 @@ with the G-014 direction of toml + tomlish for declared configuration.
- Design direction from the developer, recorded 2026-07-27: the toml move is where NAMED - Design direction from the developer, recorded 2026-07-27: the toml move is where NAMED
GROUPINGS of entries should be considered, since toml gives the structure the current GROUPINGS of entries should be considered, since toml gives the structure the current
line format cannot. The prompt for it was verification kits - two third-party 32-bit line format cannot. The prompt for it was verification kits - two third-party 32-bit
runtimes were added to the win32-ix86 tier to verify G-129's boot-mount derivation, and runtimes were added to the win32-ix86 tier to verify G-129's boot-mount derivation
(achieved 2026-07-27 - see goals/archive/G-129-kitboot-mountpoint-derivation.md; the
entries are punkluck86 + punk91ix86), and
they want to sit as active entries while being obviously a verification set rather than they want to sit as active entries while being obviously a verification set rather than
shipped products. Grouping would also give `make.tcl bake` and `bakelist` a name to shipped products. Grouping would also give `make.tcl bake` and `bakelist` a name to
select on beyond per-kit names (the G-121 selective-bake surface takes kit names today), select on beyond per-kit names (the G-121 selective-bake surface takes kit names today),

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

@ -336,7 +336,10 @@ to the suite-built 8.6 runtime, as undroidwish does.
`tcl::zipfs::root`, cannot call a bare `zipfs`, and must not assume a codethread `tcl::zipfs::root`, cannot call a bare `zipfs`, and must not assume a codethread
can see zipfs at all. can see zipfs at all.
- MOUNT CONVENTION: it mounts the executable's attached archive at the EXECUTABLE'S - MOUNT CONVENTION: it mounts the executable's attached archive at the EXECUTABLE'S
OWN PATH, not at `//zipfs:/app` - the reason G-129 exists. OWN PATH, not at `//zipfs:/app` - the reason G-129 exists (achieved 2026-07-27 - see
goals/archive/G-129-kitboot-mountpoint-derivation.md: the boot now derives the mount
base from the runtime's own mount table, and the undroidwish family's `app/main.tcl`
in-archive startup hook is served by a second fauxlink in punk8win.vfs).
- WHERE THE SELF-MOUNT LIVES IS AN OPEN QUESTION. Stock `win/tclAppInit.c:192` and - WHERE THE SELF-MOUNT LIVES IS AN OPEN QUESTION. Stock `win/tclAppInit.c:192` and
`unix/tclAppInit.c:130` call `Tclzipfs_Init` only under `#ifdef TCL_TEST`, so the `unix/tclAppInit.c:130` call `Tclzipfs_Init` only under `#ifdef TCL_TEST`, so the
boot-time self-mount is in the vanillatclsh/undroidwish application main rather boot-time self-mount is in the vanillatclsh/undroidwish application main rather

6
goals/G-123-thirdparty-runtime-tiers.md

@ -96,3 +96,9 @@ see goals/archive/G-058-static-runtime-packages.md).
- Signing deferred by user decision 2026-07-26 ("server trust ... with - Signing deferred by user decision 2026-07-26 ("server trust ... with
signing for down the track") - flag a dedicated signing/attestation goal signing for down the track") - flag a dedicated signing/attestation goal
when the first genuinely external tier or server appears. when the first genuinely external tier or server appears.
- G-129 (archived) wrote the kit-wrappable runtime requirements into
bin/AGENTS.md ("Kit-wrappable runtime requirements (G-129)") - the
criterion this goal's publication decisions would cite - and left the two
win32-ix86 third-party specimens wrapped as active verification kits
(punkluck86 / punk91ix86); see
goals/archive/G-129-kitboot-mountpoint-derivation.md.

74
goals/G-129-kitboot-mountpoint-derivation.md

@ -1,6 +1,6 @@
# G-129 Kit boot finds its payload wherever the archive mounted # G-129 Kit boot finds its payload wherever the archive mounted
Status: active Status: achieved 2026-07-27
Scope: src/vfs/_config/punk_main.tcl and src/vfs/_config/project_main.tcl (vfs capability detection plus mount-point derivation for the kit's internal module/lib path assembly - both carry the same code today); src/runtime/mapvfs.config (an active kit entry per verification runtime); bin/runtime/win32-ix86/ (the two third-party 32-bit runtimes that verify it - read-only input); src/tests/shell/testsuites/punkexe/ (characterization of the derivation); src/AGENTS.md + bin/AGENTS.md (what a runtime must provide to be kit-wrappable) Scope: src/vfs/_config/punk_main.tcl and src/vfs/_config/project_main.tcl (vfs capability detection plus mount-point derivation for the kit's internal module/lib path assembly - both carry the same code today); src/runtime/mapvfs.config (an active kit entry per verification runtime); bin/runtime/win32-ix86/ (the two third-party 32-bit runtimes that verify it - read-only input); src/tests/shell/testsuites/punkexe/ (characterization of the derivation); src/AGENTS.md + bin/AGENTS.md (what a runtime must provide to be kit-wrappable)
Goal: a punk kit boots from wherever its attached archive actually mounted, so a runtime whose zipfs mounts at the executable's own path rather than at //zipfs:/app - as the androwish/undroidwish 8.6 backport does - yields a kit that finds its own modules and libs. The boot derives the mount point from the runtime's own mount list and detects zipfs by a command every generation provides, instead of keying on tcl::zipfs::root (a 9-era command absent from the 8.6 backport) and a compiled-in //zipfs:/app. Goal: a punk kit boots from wherever its attached archive actually mounted, so a runtime whose zipfs mounts at the executable's own path rather than at //zipfs:/app - as the androwish/undroidwish 8.6 backport does - yields a kit that finds its own modules and libs. The boot derives the mount point from the runtime's own mount list and detects zipfs by a command every generation provides, instead of keying on tcl::zipfs::root (a 9-era command absent from the 8.6 backport) and a compiled-in //zipfs:/app.
Acceptance: a kit baked from a runtime that mounts its attached archive at the executable's own path boots and resolves its own payload with no external package paths in play - the kit's internal modules/ and lib/ trees appear in tcl::tm::list and auto_path and a package that exists only inside the kit resolves - with bin/runtime/win32-ix86/tclsh8.6.10-luck-zip.exe recorded here as that verification runtime; a kit baked from bin/runtime/win32-ix86/tclsh9.1b0-tclsfe.exe (32-bit, modern //zipfs:/app convention) boots the same way, proving the 32-bit target itself needs nothing special and that the derivation did not regress the ordinary case; punkshell's existing 64-bit kits are unaffected, verified by comparing each kit's internal tcl::tm::list and auto_path entries before and after the change across at least one zipfs kit and one starkit-family kit (identical); a runtime that has an attached archive the boot cannot locate says so on stderr rather than continuing silently with no internal paths, which is today's failure shape; and the runtime requirements for kit-wrapping - which zipfs commands and mount conventions are supported - are documented in bin/AGENTS.md. Acceptance: a kit baked from a runtime that mounts its attached archive at the executable's own path boots and resolves its own payload with no external package paths in play - the kit's internal modules/ and lib/ trees appear in tcl::tm::list and auto_path and a package that exists only inside the kit resolves - with bin/runtime/win32-ix86/tclsh8.6.10-luck-zip.exe recorded here as that verification runtime; a kit baked from bin/runtime/win32-ix86/tclsh9.1b0-tclsfe.exe (32-bit, modern //zipfs:/app convention) boots the same way, proving the 32-bit target itself needs nothing special and that the derivation did not regress the ordinary case; punkshell's existing 64-bit kits are unaffected, verified by comparing each kit's internal tcl::tm::list and auto_path entries before and after the change across at least one zipfs kit and one starkit-family kit (identical); a runtime that has an attached archive the boot cannot locate says so on stderr rather than continuing silently with no internal paths, which is today's failure shape; and the runtime requirements for kit-wrapping - which zipfs commands and mount conventions are supported - are documented in bin/AGENTS.md.
@ -33,7 +33,7 @@ bracket the problem:
| provenance | Lean Undroidwish Construction Kit | apnadkarni/tcl-sfe releases | | provenance | Lean Undroidwish Construction Kit | apnadkarni/tcl-sfe releases |
| Tcl | 8.6.10 | 9.1b0 | | Tcl | 8.6.10 | 9.1b0 |
| `tcl::zipfs::root` | absent | `//zipfs:/` | | `tcl::zipfs::root` | absent | `//zipfs:/` |
| `::zipfs` ensemble | absent | present | | `::zipfs` ensemble | present, but no `root` subcommand (corrected 2026-07-27) | present |
| mount point | `<exe>` | `//zipfs:/app` | | mount point | `<exe>` | `//zipfs:/app` |
| `[info library]` | `<exe>/tcl8.6` | `//zipfs:/app/tcl_library` | | `[info library]` | `<exe>/tcl8.6` | `//zipfs:/app/tcl_library` |
| zipfs in child/thread interps | none | present | | zipfs in child/thread interps | none | present |
@ -139,3 +139,73 @@ the source tree, not from a kit payload - which is what made the gap easy to mis
that have to be dropped in, and no single source ships current Tcl for both major that have to be dropped in, and no single source ships current Tcl for both major
versions. That is separate work; this goal only ensures a 32-bit third-party runtime can versions. That is separate work; this goal only ensures a 32-bit third-party runtime can
carry a kit, and leaves two verification specimens in the win32-ix86 tier for it. carry a kit, and leaves two verification specimens in the win32-ix86 tier for it.
## Progress
2026-07-27 - implemented and verified in one pass; every Acceptance clause met
(implementation commit 191d8ff4, punkshell 0.28.0). Detail:
- Boot derivation (punk_main.tcl + project_main.tcl, identical copies): zipfs presence
keys on `tcl::zipfs::mount`; the mount base comes from the new factored
`::punkboot::zipfs_kit_mountbase` (mount-table entry whose archive file is
`[info nameofexecutable]`, accepting the backport's drive-prefix-stripped spelling;
fallback = the mount containing `[info script]`; helpers `zipfs_mount_pairs` +
`path_within`; all remain defined post-boot for probing). The starkit quick-search line
that called `[zipfs root]/app/tcl_library` (an ERROR on the backport - no root
subcommand anywhere) uses the derived base; internal_paths gains the derived base when
no zipfs volume root covers it; the internal-only simulate-kit discriminator recognises
a script under the derived mount as kit-internal. starkit/cookfs branches untouched,
per Approach.
- Measured mount tables: both generations return flat {mountpoint archivefile} pairs.
LUCK 8.6.10 backport: mountpoint = the exe path itself, archive-file column WITHOUT the
windows drive prefix (/repo/... for C:/repo/...). tcl-sfe 9.1b0/9.0.x: //zipfs:/app +
full exe path.
- Boot-script hook (the second blocker, found during verification): the LUCK/undroidwish
family only auto-runs `app/main.tcl` INSIDE the attached archive (embedded
`/app/main.tcl` string in the exe) and ignores a root main.tcl - without it the kit
fell through to stock tclsh argv handling and main.tcl never ran. punk8win.vfs now
carries an `app/main.tcl` fauxlink beside the root one. Enabling that nested fauxlink
required make.tcl's merge_over to resolve fauxlink targets against the link file's own
directory (the fauxlink module's documented symlink semantics; identical for the
root-level links that were previously the only ones).
- Scope extension (flagged for user ratification, G-125 precedent): src/make.tcl was
necessarily touched - the runtime capability probe keyed has_zipfs on tcl::zipfs::root
(same defect class on the build side: it refused zip assembly for the backport with
"runtime ... doesn't have zipfs capability"; the block also rode a body-less
`if {![catch ..]}` that only worked because piped-stdin tclsh continues past command
errors) and the merge_over fauxlink base fix above. Also outside drafted Scope:
src/vfs/punk8win.vfs/app/ (the new fauxlink), src/vfs/AGENTS.md,
src/tests/shell/AGENTS.md, ARCHITECTURE.md (docs), and the layout/templates-modpod
synced copies of the boot mains + make.tcl.
- Kit names (agent-chosen, open to rename): punkluck86 / punk91ix86.
### Verification records (2026-07-27)
- bin/punkluck86.exe (LUCK runtime + punk8win.vfs, zip concat assembly): boots from the
exe-path mount; tcl::tm::list carries <exe>/modules; auto_path carries <exe>/lib +
<exe>/lib_tcl8 plus the runtime's own archive-internal trees (tcl8.6, tcl8/8.x -
correctly classified internal now); punk::args 0.12.7 resolves from
<exe>/modules/punk/args-0.12.7.tm; TCLLIBPATH-derived external paths stripped (default
internal mode); the `script` subcommand runs app-punkscript from the payload. Remaining
noise is expected 32-bit/8.6.10 degradations (no usable twapi -> is_interactive warning,
tsv unavailable notes), not boot-path issues.
- bin/punk91ix86.exe (tcl-sfe 9.1b0 32-bit + punk9win_for_tkruntime.vfs): modern
//zipfs:/app trees, punk::args from inside the mount, clean stderr - the 32-bit target
itself needed nothing special.
- 64-bit kits unaffected: punk905 + punk902z (zipfs) and punksys + punk86 (starkit
family) rebaked with the new boot; full probe output (tcl::tm::list + auto_path +
stderr) byte-identical to pre-change captures of the deployed kits. punk86 also
carries the new inert app/main.tcl payload file - no path or behaviour change.
- Attached-but-unattributable stderr report: tclkit902 (zipfs commands, empty mount
table) with a freshly mkzip'd foreign archive mounted, then sourcing the working-tree
punk_main.tcl - reports the archive and full mount table on stderr, continues booting
on the metakit branch, and the foreign mount contributes no kit paths.
- Both zip offset conventions boot on the backport: the deployed concat kit AND a
zipfs-mkimg (file-relative offsets) image of the same tree both mount and resolve -
recorded in bin/AGENTS.md so future zipfs-capable-host bakes are known-safe.
- Characterization: src/tests/shell/testsuites/punkexe/kitmountpoint.test (4/4;
self-gates on the untracked runtimes); punkexe subtree 69 tests, 0 fail; full suite
1171 tests with only the documented exec-14.3 baseline failure.
- Runtime requirements documented: bin/AGENTS.md "Kit-wrappable runtime requirements
(G-129)" + src/AGENTS.md pointer, src/vfs/AGENTS.md boot contract, ARCHITECTURE.md
boot-chain bullet, src/tests/shell/AGENTS.md suite doc.

8
goals/G-130-32bit-windows-buildsuites.md

@ -67,9 +67,11 @@ the other's generation.
- Related: G-123 - the artifacts publish through the runtime-tier mechanism, and - Related: G-123 - the artifacts publish through the runtime-tier mechanism, and
`punk-runtime.cmd list -platform win32-ix86` is where a user would see suite-built `punk-runtime.cmd list -platform win32-ix86` is where a user would see suite-built
runtimes appear beside the third-party ones. runtimes appear beside the third-party ones.
- Related: G-129 - the third-party 8.6 specimen in this tier is what exposed punkshell's - Related: G-129 (achieved 2026-07-27 - see goals/archive/G-129-kitboot-mountpoint-derivation.md)
kit-boot mount-point assumption. That is a boot-path concern and separate from producing - the third-party 8.6 specimen in this tier is what exposed punkshell's kit-boot
the runtime, but both goals use the same two specimens. mount-point assumption. That is a boot-path concern and separate from producing the
runtime, but both goals use the same two specimens, now wrapped as the active
verification kits punkluck86 + punk91ix86.
- Related: G-018 (superseded) - plain zig-built tclsh kits carrying no punk infrastructure; - Related: G-018 (superseded) - plain zig-built tclsh kits carrying no punk infrastructure;
the same "punkshell as a Tcl supplier, not only a shell" direction this goal serves. the same "punkshell as a Tcl supplier, not only a shell" direction this goal serves.
- `punk::platform::local` already reports `win32-ix86` correctly from a 32-bit interpreter - `punk::platform::local` already reports `win32-ix86` correctly from a 32-bit interpreter

16
goals/G-131-boot-payload-autodetection.md

@ -33,9 +33,10 @@ independently-written branches.
## Approach ## Approach
- Extend, do not rewrite. G-129 lands the zipfs derivation and unblocks third-party kit - Extend, do not rewrite. G-129 (achieved 2026-07-27 - see
baking on its own; this goal generalises the same step to metakit and turns the branch goals/archive/G-129-kitboot-mountpoint-derivation.md) landed the zipfs derivation and
set into one detection decision. unblocked third-party kit baking on its own; this goal generalises the same step to
metakit and turns the branch set into one detection decision.
- PREINIT-SHAPED FROM THE START. G-101's Tcl 9 survey found that the `proc tclInit` - PREINIT-SHAPED FROM THE START. G-101's Tcl 9 survey found that the `proc tclInit`
override - which is what the tclkit lineage's boot.tcl IS - is dead in 9.1 override - which is what the tclkit lineage's boot.tcl IS - is dead in 9.1
(tclInterp.c:619-622) and `tcl_libPath` is gone. A design that works on both generations (tclInterp.c:619-622) and `tcl_libPath` is gone. A design that works on both generations
@ -95,3 +96,12 @@ independently-written branches.
probes `runtime_caps` for has_zipfs/has_starkit/has_cookfs and treats disagreement with probes `runtime_caps` for has_zipfs/has_starkit/has_cookfs and treats disagreement with
the target kit type as an error condition; with both-capability runtimes that disagreement the target kit type as an error condition; with both-capability runtimes that disagreement
becomes the normal case. becomes the normal case.
- G-129 (archived) recorded material this goal builds on - see
goals/archive/G-129-kitboot-mountpoint-derivation.md: the derivation is already factored
as the requested standalone step (`::punkboot::zipfs_kit_mountbase` + `zipfs_mount_pairs`
+ `path_within`, defined post-boot) so the metakit arm can be added beside it; the
measured mount-table shapes for both zipfs generations and the undroidwish-family
`app/main.tcl` in-archive startup hook (punk8win.vfs carries fauxlinks for both boot
conventions) are in its Progress records; and make.tcl's capability probe now keys
has_zipfs on `tcl::zipfs::mount` (the LUCK backport probes has_zipfs 1 + has_starkit 1 -
already a both-capability row this goal's mismatch-check work must accommodate).

Loading…
Cancel
Save