From fc2376ca5dec2d2e6966efc25f058b5a1d37fc6c Mon Sep 17 00:00:00 2001 From: Julian Noble Date: Thu, 30 Jul 2026 19:57:05 +1000 Subject: [PATCH] G-139: derived-project story recorded; layout samplesuite1 sketch retired The decision (per the acceptance, recorded in the goal detail): derived projects obtain library binaries via the SAME fetch entrypoint by default - generated projects receive make.tcl (libfetch + the PACKAGES phase) through the established layout-sync/G-027 channels and declare their artifacts in their own src/runtime/libpackages.toml; the copy-and-tweak in-project suite build per G-104's self-description contract remains the documented alternative (a tcllib/tcllibc-only suite needs no Tcl source tree - critcl bundles its headers). The pre-G-096 samplesuite1 sketch in the project-0.1 layout (download_and_build.config, mingw64/gcc-era, self-described as SKETCH ONLY) is removed and replaced by src/buildsuites/README.md in the layout, documenting both routes for generated projects - the disposition the goal Approach named. Goal Progress also records the r1 publication (punkbin ee571ed, pushed) and the live canonical-origin libfetch verification. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com --- goals/G-139-punkbin-library-consumption.md | 57 ++++++++++++++----- .../project-0.1/src/buildsuites/README.md | 36 ++++++++++++ .../samplesuite1/download_and_build.config | 57 ------------------- .../samplesuite1/tcl/empty_project_source.txt | 0 .../samplesuite1/tk/empty_project_source.txt | 0 5 files changed, 78 insertions(+), 72 deletions(-) create mode 100644 src/project_layouts/vendor/punk/project-0.1/src/buildsuites/README.md delete mode 100644 src/project_layouts/vendor/punk/project-0.1/src/buildsuites/samplesuite1/download_and_build.config delete mode 100644 src/project_layouts/vendor/punk/project-0.1/src/buildsuites/samplesuite1/tcl/empty_project_source.txt delete mode 100644 src/project_layouts/vendor/punk/project-0.1/src/buildsuites/samplesuite1/tk/empty_project_source.txt diff --git a/goals/G-139-punkbin-library-consumption.md b/goals/G-139-punkbin-library-consumption.md index 455b2a42..ffde1bd1 100644 --- a/goals/G-139-punkbin-library-consumption.md +++ b/goals/G-139-punkbin-library-consumption.md @@ -164,18 +164,45 @@ State at drafting worth recording: (zig Run cache keys include the env) - immaterial pre-publication, and exactly the deliberate-publish revision discipline's point; the tcl9 zips stayed byte-identical across three independent emissions. -- Remaining for acceptance: libs-step materialization of - lib_tcl/allplatforms + lib_tcl/ from the tier with - punkcheck provenance; tcllib/tcllibc vendorlib_vfs.toml (or successor) - declarations with supersedes removing tcllib1.21 (incl. nested tcllibc - 0.4 + md5c) from 8.6-family kits; punk86-family tcllib 2.0 upgrade - validated by kit-hosted runtests vs a same-day baseline (differences - dispositioned); vendored src/vendorlib_tcl8|9 tcllib-tree removal in its - own commit after a bake fed from the artifact path reproduces working - kits; a bake on a checkout without those trees shipping kits with - verifiable embedded provenance; the derived-project decision recorded - here (fetch default; in-project suite build per G-104 as the documented - alternative - the stale samplesuite1 download_and_build.config stub to be - replaced/removed when recording it). Also pending: publication of the r1 - artifacts to the real punkbin origin (user step) so libfetch's canonical - path goes live end-to-end. +- 2026-07-30 r1 PUBLISHED (user-directed): all four artifacts + sidecars + copied into the punkbin repo's lib tier, build_sha1sums.tcl generated the + per-tier sha1sums (every hash byte-identical to the staging emission; + platforms.txt untouched), committed (punkbin ee571ed) and PUSHED to the + gitea origin together with the earlier lib-tier docs commit. The canonical + fetch path verified LIVE immediately after: 'make.tcl libfetch -force' + with no server flags fetched, sha1-verified and materialized all four + artifacts from the canonical origin - no consent gate, per the acceptance. +- 2026-07-30 phase 2 increment 1 (0.31.1): PACKAGES_tcl deployment phase + (bin/packages tier -> lib_tcl/allplatforms + lib_tcl/, + punkcheck-tracked, embedded records riding along - verified deployed); + vfslibs schema gains source_root="packages" (missing-source errors name + libfetch) + replace=true (clean-slate same-name refresh - the old tcl9 + hand-drops nested md5c/tcllibc INSIDE tcllib2.0); tcllib/tcllibc kit-vfs + declarations added for the 13 trees that carried hand-drops (8 win32 tcl9 + trees get the pair + supersedes of the stray tcllibc2.0 name; punk9linux + gets only platform-neutral tcllib2.0 - its linux-built tcllibc siblings + stay, a linux lib-tier emission being future work; punk86/punk8win/ + punk8_statictwapi upgrade via supersedes of tcllib1.21; punk86bawt + refreshes its bare tcllibc). +- DERIVED-PROJECT DECISION (recorded per acceptance, 2026-07-30): fetch via + the same entrypoint is the DEFAULT - generated projects receive make.tcl + (and thus libfetch + the PACKAGES phase) through the established layout + sync/G-027 channels and declare their artifacts in their own + src/runtime/libpackages.toml; the copy-and-tweak in-project suite build + per G-104's self-description contract remains the documented alternative + (a tcllib/tcllibc-only suite needs no Tcl source tree - critcl bundles + its headers). The stale samplesuite1 sketch in the project-0.1 layout was + REMOVED and replaced by src/buildsuites/README.md in the layout, + documenting both routes (the goal-named disposition). +- Remaining for acceptance: kit switchover bake (vfslibs across the + declared trees + selective bake of unlocked kits - punk86 for the 8.6 + validation, punk905 as the tcl9 representative; punk91/punksys/punk9_beta + are live user shells this session, their vfs trees switch now and their + bakes happen at the next natural rebake); punk86 kit-hosted runtests vs + the same-day baseline (recorded: 1125 total / 1099 passed / 18 skipped / + 8 failed in 5 files - exec.test, ns/nslist, ns/nsprimitives, + zip/zipaccel, stdin/runstdin; 1960s elapsed) with differences + dispositioned; vendored src/vendorlib_tcl8|9 tcllib-tree removal in its + own commit after the artifact-path bake proves out; the post-removal + bake shipping kits whose tcllib/tcllibc provenance is verifiable from + the embedded records. diff --git a/src/project_layouts/vendor/punk/project-0.1/src/buildsuites/README.md b/src/project_layouts/vendor/punk/project-0.1/src/buildsuites/README.md new file mode 100644 index 00000000..111d351a --- /dev/null +++ b/src/project_layouts/vendor/punk/project-0.1/src/buildsuites/README.md @@ -0,0 +1,36 @@ +# src/buildsuites - building binary components for this project + +This folder is where a project keeps BUILDSUITES: self-describing recipes that +build Tcl runtimes and binary library packages from external upstream sources +with a pinned zig toolchain. Most projects never need one - the default ways to +obtain binary components are lighter: + +## Route 1 (default): fetch published artifacts + +`tclsh src/make.tcl libfetch` fetches library packages (e.g. tcllib + the +tcllibc critcl accelerators) as verified zip artifacts from the punkbin +artifact server's lib tier into the untracked `bin/packages//` input +tier, sha1-verified, and materializes them for the libs build. Declare the +artifacts your project consumes in `src/runtime/libpackages.toml` +([artifact.] entries with `name` = the immutable +`--r.zip` artifact filename and `target` = +`allplatforms` or a platform-dir name - see the punkshell repo's copy for a +worked example). Runtimes are fetched the same spirit via +`bin/punk-runtime.cmd`. The canonical punkbin origin is trusted by default; +other servers require the explicit `-trust-server` flag. + +## Route 2 (alternative): build in-project with a copied suite + +Copy a real suite tree from the punkshell repo's `src/buildsuites/` (e.g. +`suite_tcl90`) into this folder and retarget it: every suite is +COPY-AND-TWEAK by contract - its `sources.config` declares its sources, +products and pinned toolchain, and `tclsh src/make.tcl buildsuite +list|info|build ` discovers and drives it with no make.tcl edits +(the G-104 self-description contract). Note a tcllib/tcllibc-only suite is +genuinely light: critcl bundles its own Tcl headers, so building the +accelerators needs only a driving tclsh + zig + the tcllib/critcl checkouts - +no Tcl source tree. + +The pre-2026 `samplesuite1` sketch that used to live here (a mingw64/gcc-era +download_and_build.config outline) predated these mechanisms and was removed +when the fetch route landed (punkshell goal G-139). diff --git a/src/project_layouts/vendor/punk/project-0.1/src/buildsuites/samplesuite1/download_and_build.config b/src/project_layouts/vendor/punk/project-0.1/src/buildsuites/samplesuite1/download_and_build.config deleted file mode 100644 index 1e9033d5..00000000 --- a/src/project_layouts/vendor/punk/project-0.1/src/buildsuites/samplesuite1/download_and_build.config +++ /dev/null @@ -1,57 +0,0 @@ -#======================================================= -#configuration data for download and build of buildsuite -#======================================================= -#windows build mechanism: mingw64 -ucrt64 gcc -#other platforms build mechanism: gcc - - - -#------------------------------------------------------- -set buildprefix /vendorbuild/samplesuite1 -set basemakeflags [list -j 2] -set baseconfigflags [list --enable-64bit --prefix=$buildprefix] -set repofolder ~/.fossils -#------------------------------------------------------- - - - - - -SOURCEDOWNLOAD -project tcl\ - -mechanism fossil\ - -localrepo tcl.fossil\ - -branch core-8\ - -remote https://core.tcl-lang.org/tcl - -#etc. -#SOURCEDOWNLOAD tk... -#SOURCEDOWNLOAD thread... - -#SOURCEDOWNLOAD -project critcl\ - -mechanism git\ - -branch master\ - -remote http://github.com/andreas-kupries/critcl - -#SOURCEDOWNLOAD -project tclbench\ - -mechanism fossil\ - -remote https://core.tcl-lang.org/tclbench - -#CONFIGSTART tcl /win - -#CONFIGSTART tk /win -#EXTRACONFIG tk --with-tcl=$buildprefix/lib --with-tclinclude=$buildprefix/include - - -#CONFIGSTART thread ??? -#EXTRACONFIG thread --with-tcl=$buildprefix/lib --with-tclinclude=$buildprefix/include - - -#SOURCEDOWNLOAD -project zint\ - -mechanism git\ - -branch master\ - -remote https://git.code.sf.net/p/zint/code - - - - - diff --git a/src/project_layouts/vendor/punk/project-0.1/src/buildsuites/samplesuite1/tcl/empty_project_source.txt b/src/project_layouts/vendor/punk/project-0.1/src/buildsuites/samplesuite1/tcl/empty_project_source.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/src/project_layouts/vendor/punk/project-0.1/src/buildsuites/samplesuite1/tk/empty_project_source.txt b/src/project_layouts/vendor/punk/project-0.1/src/buildsuites/samplesuite1/tk/empty_project_source.txt deleted file mode 100644 index e69de29b..00000000