From 65c94d33a68a815853e3e9fb27ab9a63370f7ab7 Mon Sep 17 00:00:00 2001 From: Julian Noble Date: Sun, 2 Aug 2026 07:39:34 +1000 Subject: [PATCH] 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 --- GOALS-archive.md | 6 +++++- GOALS.md | 4 ---- goals/G-110-sharedlib-extraction-cache.md | 6 +++++- goals/G-130-32bit-windows-buildsuites.md | 17 +++++++++++------ goals/G-131-boot-payload-autodetection.md | 18 ++++++++++++------ goals/G-141-libfetch-target-selection.md | 5 +++-- goals/G-147-libfetch-revision-check.md | 3 ++- .../G-101-tcl86-kit-container-strategy.md | 0 goals/archive/G-153-metakit-punk-zig-port.md | 2 +- 9 files changed, 39 insertions(+), 22 deletions(-) rename goals/{ => archive}/G-101-tcl86-kit-container-strategy.md (100%) diff --git a/GOALS-archive.md b/GOALS-archive.md index 9bcc6968..d250ab43 100644 --- a/GOALS-archive.md +++ b/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= -Dtclsh86=' 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. diff --git a/GOALS.md b/GOALS.md index 41b6269f..fabbd52d 100644 --- a/GOALS.md +++ b/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 diff --git a/goals/G-110-sharedlib-extraction-cache.md b/goals/G-110-sharedlib-extraction-cache.md index c562171c..06b2caa0 100644 --- a/goals/G-110-sharedlib-extraction-cache.md +++ b/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. diff --git a/goals/G-130-32bit-windows-buildsuites.md b/goals/G-130-32bit-windows-buildsuites.md index 87171d8e..d7537273 100644 --- a/goals/G-130-32bit-windows-buildsuites.md +++ b/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. diff --git a/goals/G-131-boot-payload-autodetection.md b/goals/G-131-boot-payload-autodetection.md index 1a36929a..a863c91f 100644 --- a/goals/G-131-boot-payload-autodetection.md +++ b/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 diff --git a/goals/G-141-libfetch-target-selection.md b/goals/G-141-libfetch-target-selection.md index 53052d0f..6263bf04 100644 --- a/goals/G-141-libfetch-target-selection.md +++ b/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. diff --git a/goals/G-147-libfetch-revision-check.md b/goals/G-147-libfetch-revision-check.md index e5b1bee6..e21f97b0 100644 --- a/goals/G-147-libfetch-revision-check.md +++ b/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. diff --git a/goals/G-101-tcl86-kit-container-strategy.md b/goals/archive/G-101-tcl86-kit-container-strategy.md similarity index 100% rename from goals/G-101-tcl86-kit-container-strategy.md rename to goals/archive/G-101-tcl86-kit-container-strategy.md diff --git a/goals/archive/G-153-metakit-punk-zig-port.md b/goals/archive/G-153-metakit-punk-zig-port.md index 4433a460..eb4819c2 100644 --- a/goals/archive/G-153-metakit-punk-zig-port.md +++ b/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).