Browse Source

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
master
Julian Noble 1 week ago
parent
commit
99222c238c
  1. 56
      goals/G-153-metakit-punk-zig-port.md

56
goals/G-153-metakit-punk-zig-port.md

@ -3,7 +3,7 @@
Status: active 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) 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. 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 ## 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 - Related: G-026 (proposed) and G-063 (proposed) - fork-boundary provenance and
per-package licence records; metakit is MIT/X11 (license.terms retained in per-package licence records; metakit is MIT/X11 (license.terms retained in
the snapshots and in ported sources; root LICENSE lands with first port). the snapshots and in ported sources; root LICENSE lands with first port).
- Patch-audit inventory (from G-101's reference survey, KitCreator/mk4tcl/ - Patch-audit inventory: NINE files in KitCreator/mk4tcl/patches/all/ (the
patches/all/ vs metakit 2.4.9.7): 64-bit filespace, 32/64 fix, original planning count of eight, from G-101's reference survey, was off by
unregisterchans, fixeventchannels, shared-obj linker, ranlib/ar (eight files one; Acceptance wording amended to nine per user approval 2026-08-02).
total). The pooryorick 2.4.9.8 baseline already absorbed at least the channel Audit COMPLETE - see Progress increment 3 and the disposition table in
unregistration and stdint fixed-width types (per the fork-difference analysis metakit_punk src/reference/AGENTS.md: zero to port, every live lineage
in metakit_punk src/reference/AGENTS.md); the 64-bit filespace and already absorbed by the 2.4.9.8 baseline, three autoconf-era rejects.
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.
- Draft sources.config record for suite_tcl86 (name/dir chosen to match the - 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): gitea repo name; dir names are recipe-coupled per that file's header):
`source metakit git https://www.gitea1.intx.com.au/jn/metakit <commit> metakit` `source metakit git https://www.gitea1.intx.com.au/jn/metakit <commit> 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 Consumer reference + future smoke vehicle for the mk4too surface; the
kit is also a live mk4-starkit container specimen for the G-101 work. 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: 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 - Static-embed shape (Tcl_StaticPackage) into a kit-class shell copy, or its
blocker recorded here. blocker recorded here.
- Fork commit pinned + ready-to-land sources.config and build.zig.zon record - 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).

Loading…
Cancel
Save