Browse Source

G-101 achieved flip: archive move + index swap + reference sweep

Pure-rename move goals/G-101-tcl86-kit-container-strategy.md ->
goals/archive/ (content edits landed in the prior commit); GOALS.md entry
-> GOALS-archive.md record (acceptance as achieved). Live-tier sweep:
G-131 Depends-on rewritten (the metakit arm now EXISTS - kithead step,
kithead.c/boot.tcl = the mk4 half of its detection; zipfs-backport open
items move there); G-130 both pending-tense sites updated (mk4 decided,
ix86 head = follow-on parity item 4); G-110 gains the measured
dll-from-vfs temp-copy fact; G-141/G-147 survey mentions gain achieved
markers; archived G-153 record+detail Scope path fixed (goals/ ->
goals/archive/, the sanctioned broken-path fix). xref report: no
unlinked pair loses its only bridge (annotated pairs are one-directional
with live links). goals_lint clean (82 active / 72 archived).

Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
master
Julian Noble 1 week ago
parent
commit
65c94d33a6
  1. 6
      GOALS-archive.md
  2. 4
      GOALS.md
  3. 6
      goals/G-110-sharedlib-extraction-cache.md
  4. 17
      goals/G-130-32bit-windows-buildsuites.md
  5. 18
      goals/G-131-boot-payload-autodetection.md
  6. 5
      goals/G-141-libfetch-target-selection.md
  7. 3
      goals/G-147-libfetch-revision-check.md
  8. 0
      goals/archive/G-101-tcl86-kit-container-strategy.md
  9. 2
      goals/archive/G-153-metakit-punk-zig-port.md

6
GOALS-archive.md

@ -296,9 +296,13 @@ Scope: src/project_layouts/ (.fossil-settings payloads); src/make.tcl (thin-layo
Acceptance: dev project.new from each binary-affected layout (project-0.1, plus one injection-only layout e.g basic) completes its trailing fossil initial commit cleanly (FOSSIL_HOME diverted, no binary prompt/abort); the generated project's versioned .fossil-settings carries binary-glob with the recorded value; the seeding path (hand-authored per layout vs derived via the make.tcl template refresh) is decided and documented in this file; the G-136 relationship (icon payload is binary - same abort class) is recorded. (Achieved with a companion crlf-glob payload extension: a second abort class - CRLF endings on injected bootsupport content - surfaced once the binary aborts were fixed; decisions and verification in the archived detail file.)
### G-153 [achieved 2026-08-02] metakit_punk zig port: fork-as-upstream Mk4tcl for the 8.6 kit container → detail: goals/archive/G-153-metakit-punk-zig-port.md
Scope: external fork repo c:/repo/jn/metakit_punk (gitea jn/metakit - the port itself lands there); src/buildsuites/suite_tcl86/sources.config and src/buildsuites/suite_tcl86/build.zig.zon (ready-to-land metakit records drafted in the detail file; landing them is G-101-era consumption); TEMP_REFERENCE/{metakit_jnorthrup,metakit_pooryorick,KitCreator} (read-only patch/boot-chain reference - machine-local); goals/G-101-tcl86-kit-container-strategy.md (consumer decision record)
Scope: external fork repo c:/repo/jn/metakit_punk (gitea jn/metakit - the port itself lands there); src/buildsuites/suite_tcl86/sources.config and src/buildsuites/suite_tcl86/build.zig.zon (ready-to-land metakit records drafted in the detail file; landing them is G-101-era consumption); TEMP_REFERENCE/{metakit_jnorthrup,metakit_pooryorick,KitCreator} (read-only patch/boot-chain reference - machine-local); goals/archive/G-101-tcl86-kit-container-strategy.md (consumer decision record)
Acceptance: in c:/repo/jn/metakit_punk under the pinned zig 0.16.0, 'zig build' and 'zig build test' pass for both x86_64-windows and x86-windows with the 32-bit tests executed natively on the x64 host (WoW64); the KitCreator mk4tcl patch set (nine patches vs 2.4.9.7) is audited against the 2.4.9.8 baseline with a per-patch disposition recorded (ported as fork commits citing origin / already present in baseline / rejected with reason); the Mk4tcl binding builds as a stubs-linked dll against the same tcl core-8-6-branch pin suite_tcl86 carries and suite-built tclsh86t loads it - package require Mk4tcl plus an mk::file open/set/select/close round trip - with the transcript recorded in this file; an mk4 datafile written by the x86_64 build reads back identically under the ix86 build and vice versa; a static-embed shape (archive registerable via Tcl_StaticPackage) links into a copy of the kit-class shell target or its blocker is recorded here; the fork commit is pinned with ready-to-land sources.config and build.zig.zon record text captured in this file; and metakit_punk's root LICENSE lands with the first ported sources (MIT/X11 retained).
### G-154 [achieved 2026-08-02] tclparser_punk zig build: fork-as-upstream parser dll for kits and the G-070 oracle → detail: goals/archive/G-154-tclparser-punk-zig-build.md
Scope: external fork repo c:/repo/jn/tclparser_punk (gitea jn/tclparser - the build lane lands there); src/buildsuites/suite_tcl90/sources.config and src/buildsuites/suite_tcl90/build.zig.zon (ready-to-land tclparser records drafted in the detail file; landing them is suite-consumption era); src/buildsuites/suite_tcl86/sources.config and src/buildsuites/suite_tcl86/build.zig.zon (same - the 8.6 records); src/vendorlib_tcl8/win32-x86_64/tclparser1.8 and src/vfs/*/lib_tcl9/tclparser1.9 (vendored third-party parser packages - replacement targets at consumption, not touched by this goal); goals/G-070-pure-tcl-tclparser.md (consumer - parity oracle and corpus seed)
Acceptance: In c:/repo/jn/tclparser_punk under the pinned zig 0.16.0, 'zig build' (lazy zon tcl pins, no local source trees) and 'zig build dual' pass, producing tcl9tclparser19.dll and tclparser19t.dll for both windows arches; 'zig build test -Dtclsh9=<tclsh> -Dtclsh86=<tclsh>' passes the ported 114-case upstream suite for both generations under suite-built shells with the transcript recorded in this file; both upstream snapshots are landed byte-frozen with the provenance table and root LICENSE (license.terms verbatim); a punk kit-class shell for each generation loads the built dll and completes a parse-command round trip recorded in this file; and the fork commit is pinned with ready-to-land sources.config and build.zig.zon record text for both suites captured in this file.
### G-101 [achieved 2026-08-02] kit container strategy for zig-built Tcl 8.6 runtimes (no zipfs) → detail: goals/archive/G-101-tcl86-kit-container-strategy.md
Scope: investigation + decision record under src/buildsuites/suite_tcl86/ (or successor mechanism); src/buildsuites/suite_tcl86/patches/ (tracked sdx wrap.tcl provenance capture); TEMP_REFERENCE/{metakit_jnorthrup,KitCreator,kbs,sdx,tcl9} (read-only guidance - inventory in the detail file); src/runtime/mapvfs.toml ('kit' type consumers); src/make.tcl kit-wrap path (as consumer); bin/sdx.kit (the tracked wrapping tool - provenance is part of this goal)
Acceptance: the candidate containers are assessed and recorded here against punkshell's kit expectations (compatibility with make.tcl's 'kit' wrap path or a documented replacement path; boot-time vfs mount without an installed Tcl; loading binary dlls from or via the container; buildable from source under the zig-only policy); one strategy is demonstrated end-to-end - a kit wrapped from the suite-built 8.6 runtime boots on a path without any Tcl installation and runs a script from inside its vfs; the decision, rationale, and the follow-on work needed to reach punk86-kit parity are recorded in this file.

4
GOALS.md

@ -329,10 +329,6 @@ Detail: goals/G-089-scriptlib-kits-and-modes.md
Scope: src/modules/shellfilter-999999.0a1.0.tm (stack placement, insert_transform, junctions); src/modules/shellthread-999999.0a1.0.tm (worker park/adoption/termination); src/tests/modules/ (new characterization suites); README.md ('very unripe parts' note)
Detail: goals/G-090-shellfilter-shellthread-audit.md
### G-101 [active] kit container strategy for zig-built Tcl 8.6 runtimes (no zipfs)
Scope: investigation + decision record under src/buildsuites/suite_tcl86/ (or successor mechanism); src/buildsuites/suite_tcl86/patches/ (tracked sdx wrap.tcl provenance capture); TEMP_REFERENCE/{metakit_jnorthrup,KitCreator,kbs,sdx,tcl9} (read-only guidance - inventory in the detail file); src/runtime/mapvfs.toml ('kit' type consumers); src/make.tcl kit-wrap path (as consumer); bin/sdx.kit (the tracked wrapping tool - provenance is part of this goal)
Detail: goals/G-101-tcl86-kit-container-strategy.md
### G-105 [proposed] buildsuite cross-target builds (zig -target): linux first, WSL-verified
Scope: src/buildsuites/suite_tcl90/ (target parameterization of recipe + driver; per-target out prefixes); src/buildsuites/ (layout/naming decision: target is an INVOCATION DIMENSION, suite folders stay version-named - no per-target tree copies); bin/runtime platform-dir naming alignment (punkshell's win32-x86_64-style names vs zig triples); punkbin per-target artifact layout (with G-103 metadata carrying the target); local WSL as the first cross-verification environment
Detail: goals/G-105-buildsuite-cross-target.md

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

@ -77,7 +77,11 @@ TIPs 741/709).
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 (achieved 2026-08-02 - see
goals/archive/G-101-tcl86-kit-container-strategy.md; Metakit 8.6 kits share
the copy-to-temp shape, now concrete in the suite-built mk4 kit-head - its
demonstration measured thread2813t.dll loading from a kit vfs through that
very temp-copy mechanism),
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.

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

@ -61,10 +61,14 @@ the other's generation.
- Depends on: G-105 - the target-as-invocation-dimension mechanism and the
punkshell-platform-dir vs zig-triple naming mapping. This goal is a consumer of that
decision and a second exercise of it after linux.
- Related: G-101 - which container a suite-built 8.6 runtime can be wrapped into is
decided there, not here. THIS GOAL PRODUCES RUNTIMES, NOT KITS: kit/container type is
deliberately out of Scope, so a 32-bit runtime that is not yet wrappable still satisfies
it. The two meet when G-101's decision lands.
- Related: G-101 (achieved 2026-08-02 - see
goals/archive/G-101-tcl86-kit-container-strategy.md) - which container a suite-built
8.6 runtime is wrapped into was decided there, not here: mk4, demonstrated end-to-end
on the x64 suite (kithead step -> tclsh8.6.18-mk4-r1.exe). THIS GOAL PRODUCES
RUNTIMES, NOT KITS: kit/container type is deliberately out of Scope, so a 32-bit
runtime that is not yet wrappable still satisfies it. The meeting point is now
concrete: the win32-ix86 head is G-101's follow-on parity item 4, and the metakit
side of its kithead machinery is dual-arch-proven already (G-153 interchange).
- G-103 (achieved 2026-07-22 - see goals/archive/G-103-runtime-kit-family.md) defines the
artifact-metadata contract the Scope and Acceptance above name: a published runtime's
record carries its target, which for this goal must name the 32-bit platform.
@ -157,5 +161,6 @@ the other's generation.
directions, the ix86 Mk4tcl dll smoke-passing under the luck 8.6.10 shell, and
the static-embed shell measured import-identical to stock tclsh86ts (this
goal's C++-embed/no-new-imports prediction upgraded to a direct measurement) -
the 8.6 kit-side consumer of this goal's runtimes once G-101 decides the
container.
the 8.6 kit-side consumer of this goal's runtimes; G-101 (achieved
2026-08-02) decided mk4 and demonstrated the x64 kit-head - the ix86 head
is its recorded follow-on parity item 4.

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

@ -72,12 +72,18 @@ independently-written branches.
deliberately NOT superseded: it is small, it is the last blocker for baking a working kit
on a third-party runtime (see its Notes for the measured chain), and it delivers that on
its own well before a both-capabilities runtime exists.
- Depends on: G-101 - for the metakit arm to exist at all on a suite-built runtime. An 8.6
binary carrying both needs metakit AND the androwish zipfs backport compiled in (both
surveyed there and both additive); a 9 binary carrying metakit needs the mk4tcl port that
goal costed at ~23 `Tcl_Size` call sites plus one `Tcl_ChannelType` and five
`Tcl_ObjType` initialisers. This goal runs ALONGSIDE G-101's decision - it does not wait
on it to be designed - but it cannot complete before that port work.
- Depends on: G-101 (achieved 2026-08-02 - see
goals/archive/G-101-tcl86-kit-container-strategy.md) - and the metakit arm now EXISTS
on a suite-built runtime: suite_tcl86's `kithead` step builds
tclsh8.6.18-mk4-r1.exe (static Mk4tcl + static vfs, preinit boot from the
exe's own attached container), and its build_kithead86/kithead.c + boot.tcl
are the mk4 half of the detection this goal generalises. Its Decision names
mk4 the DEFAULT without closing the container question - exactly this
goal's framing - and moves the zipfs-backport arm's open items (8.6.18
applicability, zig buildability, self-mount hook location) here as
G-131-era work. The 9-side mk4tcl port cost stays as surveyed there (~23
`Tcl_Size` call sites plus one `Tcl_ChannelType` and five `Tcl_ObjType`
initialisers).
- 2026-08-02: G-153 (achieved 2026-08-02 - see
goals/archive/G-153-metakit-punk-zig-port.md) delivered that port work - the
fork-as-upstream metakit_punk repo builds the storage engine + Mk4tcl under the

5
goals/G-141-libfetch-target-selection.md

@ -126,5 +126,6 @@ has no equivalent of "materialize what this checkout needs".
G-115 (recorded above); G-005/G-023/G-024/G-101/G-131/G-077/G-061 surfaced
as sibling-path adjacency only (G-024's format interest arrives via the
G-127/G-115 coordination; G-024 achieved 2026-07-31 -
goals/archive/G-024-mapvfs-toml.md). Non-path relations G-006/G-065/G-004/G-123/G-027
from the libfetch reference sweep.
goals/archive/G-024-mapvfs-toml.md; G-101 achieved 2026-08-02 -
goals/archive/G-101-tcl86-kit-container-strategy.md). Non-path relations
G-006/G-065/G-004/G-123/G-027 from the libfetch reference sweep.

3
goals/G-147-libfetch-revision-check.md

@ -39,5 +39,6 @@ edit stays manual. Consent keying is inherited unchanged from the fetch path
src/runtime/libpackages.toml, bin/packages/,
src/tests/shell/testsuites/punkexe/maketcllibfetch.test - strongest live
intersections G-141 (direct sibling), G-005/G-006/G-023/G-101/G-131
(sibling-path adjacency only); G-142 relation from the libfetch
(sibling-path adjacency only; G-101 since achieved 2026-08-02 -
goals/archive/G-101-tcl86-kit-container-strategy.md); G-142 relation from the libfetch
coordination clause in its contract; no contract-level conflicts found.

0
goals/G-101-tcl86-kit-container-strategy.md → goals/archive/G-101-tcl86-kit-container-strategy.md

2
goals/archive/G-153-metakit-punk-zig-port.md

@ -1,7 +1,7 @@
# G-153 metakit_punk zig port: fork-as-upstream Mk4tcl for the 8.6 kit container
Status: achieved 2026-08-02
Scope: external fork repo c:/repo/jn/metakit_punk (gitea jn/metakit - the port itself lands there); src/buildsuites/suite_tcl86/sources.config and src/buildsuites/suite_tcl86/build.zig.zon (ready-to-land metakit records drafted in the detail file; landing them is G-101-era consumption); TEMP_REFERENCE/{metakit_jnorthrup,metakit_pooryorick,KitCreator} (read-only patch/boot-chain reference - machine-local); goals/G-101-tcl86-kit-container-strategy.md (consumer decision record)
Scope: external fork repo c:/repo/jn/metakit_punk (gitea jn/metakit - the port itself lands there); src/buildsuites/suite_tcl86/sources.config and src/buildsuites/suite_tcl86/build.zig.zon (ready-to-land metakit records drafted in the detail file; landing them is G-101-era consumption); TEMP_REFERENCE/{metakit_jnorthrup,metakit_pooryorick,KitCreator} (read-only patch/boot-chain reference - machine-local); goals/archive/G-101-tcl86-kit-container-strategy.md (consumer decision record)
Goal: the punkshell-maintained metakit fork (c:/repo/jn/metakit_punk - gitea jn/metakit - pooryorick 2.4.9.8 porting baseline with the dead upstreams preserved as in-repo reference snapshots) builds standalone under the pinned zig toolchain as a Tcl-agnostic C++ core library plus the Mk4tcl binding in both loadable-dll and static-embed shapes, for win32-x86_64 and win32-ix86 alike, and a suite-built 8.6 shell loads and exercises the dll - so the G-101 mk4 container candidate rests on a first-party, commit-pinned, provenance-carrying source referenced by the buildsuites the punkzip way (gitea commit pin in sources.config plus zon tarball record) rather than on dead third-party upstreams or a wholesale vendor copy.
Acceptance: in c:/repo/jn/metakit_punk under the pinned zig 0.16.0, 'zig build' and 'zig build test' pass for both x86_64-windows and x86-windows with the 32-bit tests executed natively on the x64 host (WoW64); the KitCreator mk4tcl patch set (nine patches vs 2.4.9.7) is audited against the 2.4.9.8 baseline with a per-patch disposition recorded (ported as fork commits citing origin / already present in baseline / rejected with reason); the Mk4tcl binding builds as a stubs-linked dll against the same tcl core-8-6-branch pin suite_tcl86 carries and suite-built tclsh86t loads it - package require Mk4tcl plus an mk::file open/set/select/close round trip - with the transcript recorded in this file; an mk4 datafile written by the x86_64 build reads back identically under the ix86 build and vice versa; a static-embed shape (archive registerable via Tcl_StaticPackage) links into a copy of the kit-class shell target or its blocker is recorded here; the fork commit is pinned with ready-to-land sources.config and build.zig.zon record text captured in this file; and metakit_punk's root LICENSE lands with the first ported sources (MIT/X11 retained).

Loading…
Cancel
Save