From 99222c238c254f3e1771a5b1fb695c17dc469c8f Mon Sep 17 00:00:00 2001 From: Julian Noble Date: Sun, 2 Aug 2026 05:15:30 +1000 Subject: [PATCH] G-153: Acceptance count amendment (nine, approved); increment 4 - dll clause met Acceptance parenthetical amended eight -> nine patches per user approval; Notes inventory updated to the completed-audit state. Increment 4 (metakit_punk a714cda/fbbeaf3/6a92b47): binding ported byte-identical + single own-commit fork edit (univ.h include); 'zig build mk4tcl' stubs-linked dll vs the suite tcl pin (lazy zon dep + -Dtcl-src both verified); tclsh86t 8.6.18 smoke transcript recorded (package require 2.4.9.8 + mk::file round trip + mk4too surface + read-back) - PLUS the ix86 dll passing the same smoke under the luck 8.6.10 win32-ix86 shell. Version policy recorded: package provide stays 2.4.9.8, fork versions the repo. Remaining: static-embed shape, pin capture (push pending). Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com --- goals/G-153-metakit-punk-zig-port.md | 56 +++++++++++++++++++++------- 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/goals/G-153-metakit-punk-zig-port.md b/goals/G-153-metakit-punk-zig-port.md index 32994abe..48f27b36 100644 --- a/goals/G-153-metakit-punk-zig-port.md +++ b/goals/G-153-metakit-punk-zig-port.md @@ -3,7 +3,7 @@ Status: active 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) 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 (eight 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). +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). ## Context @@ -100,15 +100,12 @@ section) and as the proof that a zig-built Mk4tcl works at all. - Related: G-026 (proposed) and G-063 (proposed) - fork-boundary provenance and per-package licence records; metakit is MIT/X11 (license.terms retained in the snapshots and in ported sources; root LICENSE lands with first port). -- Patch-audit inventory (from G-101's reference survey, KitCreator/mk4tcl/ - patches/all/ vs metakit 2.4.9.7): 64-bit filespace, 32/64 fix, - unregisterchans, fixeventchannels, shared-obj linker, ranlib/ar (eight files - total). The pooryorick 2.4.9.8 baseline already absorbed at least the channel - unregistration and stdint fixed-width types (per the fork-difference analysis - in metakit_punk src/reference/AGENTS.md); the 64-bit filespace and - fixeventchannels lineage are the likely live ones. Audit each; x86_64 - correctness hinges on the 64-bit set, and the linker/ranlib ones are expected - autoconf-era rejects. +- Patch-audit inventory: NINE files in KitCreator/mk4tcl/patches/all/ (the + original planning count of eight, from G-101's reference survey, was off by + one; Acceptance wording amended to nine per user approval 2026-08-02). + Audit COMPLETE - see Progress increment 3 and the disposition table in + metakit_punk src/reference/AGENTS.md: zero to port, every live lineage + already absorbed by the 2.4.9.8 baseline, three autoconf-era rejects. - Draft sources.config record for suite_tcl86 (name/dir chosen to match the gitea repo name; dir names are recipe-coupled per that file's header): `source metakit git https://www.gitea1.intx.com.au/jn/metakit metakit` @@ -233,11 +230,42 @@ tclkit86bi - full provenance in the fork's src/reference/AGENTS.md. Consumer reference + future smoke vehicle for the mk4too surface; the kit is also a live mk4-starkit container specimen for the G-101 work. +Increment 4 landed 2026-08-02 (metakit_punk a714cda + fbbeaf3 + 6a92b47): the +Mk4tcl-dll acceptance clause is MET. Binding ported byte-identical (mk4tcl, +mk4too, dead stubtcl.h shim, upstream tcl/tests scripts) with exactly ONE +fork source edit in its own commit (mk4tcl.h "../src/univ.h" -> "univ.h" + +include path - layout-driven, marker comment at the site). 'zig build +mk4tcl': stubs-linked dll (USE_TCL_STUBS + BUILD_Mk4tcl -> DLLEXPORT) vs a +tclstub86 lib compiled from the pinned tcl source (TCLSTUBOBJS set); tcl +source = lazy zon dep on the SAME core-8-6-branch checkout 1d1d5cbd91 +suite_tcl86 pins (verified) OR -Dtcl-src override (verified against the +suite's live tcl86 checkout). Version policy recorded per the Notes item: +package provide stays upstream-shaped 2.4.9.8 (source + pkgIndex agree); +fork releases version the REPO, not the Tcl package. Smoke transcript +(zig build smoke -Dtclsh=.../out/bin/tclsh86t.exe, x64 dll): + tclsh: .../suite_tcl86/out/bin/tclsh86t.exe + tcl: 8.6.18 (threaded=1) + Mk4tcl: 2.4.9.8 + cursors: db.people!0 db.people!1 + OK mk::get set-updated row -> GB + OK mk::select country Spain -> 1 + OK mk::get by cursor -> Paco Pena + OK mk::view size -> 2 + OK mk4too view size -> 2 + OK mk4too view get -> Paco Pena + OK reopen view size -> 2 + OK reopen get row0 -> {John Williams} GB + smoke_mk4tcl: PASS +BONUS beyond the clause: the win32-ix86 dll (-p zig-out/x86) passes the +identical smoke under the third-party luck tclsh8.6.10 win32-ix86 shell +(8.6.10 vs 8.6.18 headers, msvcrt-mingw shell loading the UCRT zig dll - +the stubs contract exercised across patchlevel AND CRT lineage; transcript +identical to the above but tclsh/tcl lines reading tclsh8.6.10-luck-zip.exe +/ 8.6.10). + Remaining for acceptance: -- Mk4tcl binding as stubs-linked dll against the suite tcl core-8-6-branch pin - (1d1d5cbd91; lazy zon dep + -Dtcl-src option per Approach) + tclsh86t load - and mk::file round-trip transcript recorded here. - Static-embed shape (Tcl_StaticPackage) into a kit-class shell copy, or its blocker recorded here. - Fork commit pinned + ready-to-land sources.config and build.zig.zon record - text captured here (drafts above become concrete once the port is pushed). + text captured here (drafts above become concrete once the port is pushed; + 7 commits pending push as of increment 4).