From 2fc292f428b60394cef45ec3b6a26407f4c9b2f5 Mon Sep 17 00:00:00 2001 From: Julian Noble Date: Mon, 3 Aug 2026 03:02:54 +1000 Subject: [PATCH] G-111 ACHIEVED 2026-08-03: flip + archive record + live-tier reference sweep Acceptance fully met: per-defect dispositions recorded, module tarjar-free, suite green (punk91 7/7, tclsh90 7/7, punk86 6/7 with the 8.6 zipfs limitation recorded per G-034), 0.1.6 re-vendored with suite passing, tarjar-artifact dispositions user-confirmed (all five keeps, none deleted). Index entry moved to GOALS-archive.md; sweep updates pending-tense mentions in G-029/G-109/G-157 and pushes actionable findings to G-034 (redirect = zero-dep load path; 8.6 vfs::zip dll-load measured) and G-110 (8.6 copy-to-temp datapoint). Detail-file rename to goals/archive/ follows as a pure-move commit. Claude-Session: https://claude.ai/code/session_0156PuejSCGjgeGb7jiABrDU Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com --- GOALS-archive.md | 4 ++++ GOALS.md | 4 ---- goals/G-029-testmodules-from-srctests.md | 8 +++++--- goals/G-034-modpod-codeinterp-tcl86.md | 9 +++++++++ goals/G-109-libunknown-manifest-multiname-tm.md | 11 ++++++++--- goals/G-110-sharedlib-extraction-cache.md | 11 +++++++++-- goals/G-111-modpod-tidy-tests.md | 16 +++++++++++----- goals/G-157-exeless-kits-materialized.md | 4 +++- 8 files changed, 49 insertions(+), 18 deletions(-) diff --git a/GOALS-archive.md b/GOALS-archive.md index 403477da..c5d3a56c 100644 --- a/GOALS-archive.md +++ b/GOALS-archive.md @@ -20,6 +20,10 @@ Do not edit archived entries except to fix a broken path. If an archived goal is ## Archived goals +### G-111 [achieved 2026-08-03] modpod tidy: fix/remove tar-era remnants + first test baseline → detail: goals/archive/G-111-modpod-tidy-tests.md +Scope: modpod canonical source (c:/repo/jn/tclmodules/modpod fossil checkout, src/modules/modpod-999999.0a1.0.tm) with re-vendor into shellspy (src/vendormodules/modpod-*.tm + bootsupport copies via established channels); punkshell-side tarjar artifacts ASSESSED ONLY (cli #tarjar-* module-type branch, libunknown skip-globs, vendored tarjar-2.4.3.tm, src/modules/_build/#tarjar-tarjar-2.3 - dispositions individually user-confirmed, preservation-aware per the c:/tclmodules/main manual-migration intent); new modpod testsuite (home settled in the work; shellspy src/tests/modules/ harness is the natural fit) +Acceptance: each enumerated tar-era defect in modpod-999999.0a1.0.tm is dispositioned with the outcome recorded here (undefined tar::readHeader connect path; ::tarjar::connected reference in myfullname; con/connected and versionpart/versionparts typos; the malformed set/lindex constructs; connect's debug stderr puts; get's unimplemented wrapped branch); after the pass a grep of the modpod module for tarjar returns nothing or only deliberate keeps recorded here; punkshell-side tarjar artifacts each carry a recorded keep/remove/migrate disposition explicitly confirmed by the user, with none deleted absent that confirmation; a modpod testsuite exists and passes on the tcl9 kit and on 8.6 (or the 8.6 limitation is recorded per G-034), covering make_zip_modpod wrap then package require from a real-disk module path and from a zipfs module path, a binary-payload load, the unwrapped #modpod-folder redirect form, and both -offsettype forms; the fixed module is re-vendored into shellspy with the suite passing there. + ### G-025 [achieved 2026-08-02] Punk executables self-report project version and build provenance → detail: goals/archive/G-025-exe-selfreport.md Scope: src/vfs/_config/punk_main.tcl (subcommand dispatch); src/make.tcl (stamping build info into the vfs); src/vfs/ (stamp payload location); src/modules/punk/ (in-shell command - the single implementation) Acceptance: the build stamps project version, runtime binary name, and vfs folder name into the kit; the built executable invoked with the version-report subcommand prints those fields machine-parseably on stdout and exits 0 with no other output (G-015-compatible; no repl fallthrough); a same-named command in the punk module returns the same fields in-process (subcommand implemented as a wrapper over it - one implementation) and works from the code interp; the report distinguishes stamped provenance from live facts: a stamped kit reports its stamp, a `src`-mode or source-tree session additionally reports the live punkproject.toml version as a distinct field when it differs, and unstamped contexts (`tclsh src/make.tcl shell`, plain tclsh with punk modules) report stamp fields explicitly absent with live runtime facts (actual `info nameofexecutable`) still provided; the report is correct when the executable file has been renamed or copied; executables built before stamping existed fail gracefully with a clear message rather than fabricating values. diff --git a/GOALS.md b/GOALS.md index a5be0ff8..acf9b1f8 100644 --- a/GOALS.md +++ b/GOALS.md @@ -337,10 +337,6 @@ Detail: goals/G-109-libunknown-manifest-multiname-tm.md Scope: investigation + decision record (goals/G-110-sharedlib-extraction-cache.md); prototype surface: punk/modpod-side loaders (modpod stub, punk boot loading - no core change required); src/buildsuites/suite_tcl90/patches/ (candidate zipfs-load core patch if adopted); TIP 741/709 relationship record Detail: goals/G-110-sharedlib-extraction-cache.md -### G-111 [active] modpod tidy: fix/remove tar-era remnants + first test baseline -Scope: modpod canonical source (c:/repo/jn/tclmodules/modpod fossil checkout, src/modules/modpod-999999.0a1.0.tm) with re-vendor into shellspy (src/vendormodules/modpod-*.tm + bootsupport copies via established channels); punkshell-side tarjar artifacts ASSESSED ONLY (cli #tarjar-* module-type branch, libunknown skip-globs, vendored tarjar-2.4.3.tm, src/modules/_build/#tarjar-tarjar-2.3 - dispositions individually user-confirmed, preservation-aware per the c:/tclmodules/main manual-migration intent); new modpod testsuite (home settled in the work; shellspy src/tests/modules/ harness is the natural fit) -Detail: goals/G-111-modpod-tidy-tests.md - ### G-114 [proposed] Per-platform tm module roots: platform-segregated binary .tm via tcl::tm::path Scope: src/vfs/_config/punk_main.tcl + src/vfs/_config/project_main.tcl + src/make.tcl (boot tm-path wiring); src/modules/punk/platform-999999.0a1.0.tm (canon names, as consumer); new per-platform tm root trees (layout/naming decision - sibling roots beside src/vendormodules_tclX / src/modules_tclX); src/project_layouts (layout seeding); modpod demonstration artifact; tree READMEs; coordinates with G-109 (manifest target-platform field stays that goal's item) Detail: goals/G-114-per-platform-tm-roots.md diff --git a/goals/G-029-testmodules-from-srctests.md b/goals/G-029-testmodules-from-srctests.md index a95be679..859f5830 100644 --- a/goals/G-029-testmodules-from-srctests.md +++ b/goals/G-029-testmodules-from-srctests.md @@ -81,6 +81,8 @@ are now fossil-tracked and must be kept in sync by hand until this goal lands. manifest-emission consumers - when G-109's manifest lands in the wrap tooling, the packaging step emits it (multi-name for test::punk::foo-style sub-packages). -- G-111 relationship: G-111's modpod tidy plus first test baseline is the - machinery-health floor this goal's generation step builds on - sequence - after it. +- G-111 relationship: the machinery-health floor is in place (G-111, + achieved 2026-08-03 - see goals/archive/G-111-modpod-tidy-tests.md): + modpod 0.1.6 is tidy and its wrap/load round-trip suite lives at + src/tests/modules/modpod/ - this goal's generation step builds on it and + can share its per-run generated fixture approach. diff --git a/goals/G-034-modpod-codeinterp-tcl86.md b/goals/G-034-modpod-codeinterp-tcl86.md index cc163742..af341b10 100644 --- a/goals/G-034-modpod-codeinterp-tcl86.md +++ b/goals/G-034-modpod-codeinterp-tcl86.md @@ -7,6 +7,15 @@ Acceptance: `dev module.templates` in an interactive 8.6 punk shell (`shell` sub ## Notes +- G-111 (achieved 2026-08-03 - see goals/archive/G-111-modpod-tidy-tests.md) landed + two facts for this goal: (a) the modpod 0.1.6 stub redirects to an extracted + #modpod-- folder beside the .tm BEFORE any mount attempt - a + zero-dependency load path usable where vfs::zip is absent + (extract-instead-of-mount; pairs with the G-124 punk::zip::unzip candidate + below, which reads the wrapped .tm directly); (b) measured on the punk86 + 8.6.17 kit MAIN interp: vfs::zip 1.0.4 is present and a dll payload loads + from a vfs::zip-mounted pod (copy-to-temp fallback; suite modpod-3.1) - the + code-interp gap remains this goal's subject. - Related: G-124 (achieved 2026-07-26 - see goals/archive/G-124-punkzip-reader.md) - the dependency-free zip READER in punk::zip (no zipfs, no vfs::zip, no tcllib) now exists as `punk::zip::members` / `punk::zip::unzip`, and is a concrete candidate for the "or use an diff --git a/goals/G-109-libunknown-manifest-multiname-tm.md b/goals/G-109-libunknown-manifest-multiname-tm.md index c24bede1..769bd353 100644 --- a/goals/G-109-libunknown-manifest-multiname-tm.md +++ b/goals/G-109-libunknown-manifest-multiname-tm.md @@ -80,6 +80,11 @@ mount path - the 8.6 leg of acceptance), TIP 590 (lowercase naming), G-110 - G-029 relationship: its generated test:: modpods become manifest consumers once this goal's emission lands in the wrap tooling (multi-name for test::punk::foo-style sub-packages). -- G-111 relationship: G-111's modpod tidy plus first test baseline is the - precursor - its cleanup and round-trip pins land before this goal's manifest - edits to the same module. +- G-111 relationship: the precursor landed (G-111, achieved 2026-08-03 - + see goals/archive/G-111-modpod-tidy-tests.md): modpod 0.1.6 is tidy + (tar-era connection API removed, stub gained the unwrapped + #modpod-folder redirect) and the wrap/load round-trip pins exist at + src/tests/modules/modpod/ - this goal's manifest edits land on sound + code. NOTE for the manifest reader design: the stub's redirect check + runs BEFORE any mount, so a manifest reader that inspects the zip tail + must tolerate the extracted-folder form too. diff --git a/goals/G-110-sharedlib-extraction-cache.md b/goals/G-110-sharedlib-extraction-cache.md index 06b2caa0..031fee65 100644 --- a/goals/G-110-sharedlib-extraction-cache.md +++ b/goals/G-110-sharedlib-extraction-cache.md @@ -108,8 +108,15 @@ characterization of the existing behaviour), Tcl TIPs 741/709. keying eliminates - tarjar is prior art for the cache-location/persistence half and a demonstration of why the keying half matters. Old tarjar material at c:/tclmodules/main is preserve/partly-migrate, handled MANUALLY by the - user (explicitly not a goal); tarjar artifacts elsewhere are not - free-to-delete (see the modpod-tidy goal when it lands). + user (explicitly not a goal); tarjar artifacts elsewhere carry + user-confirmed KEEP dispositions recorded under G-111 (achieved + 2026-08-03 - see goals/archive/G-111-modpod-tidy-tests.md), including the + vendored tarjar-2.4.3.tm this goal's prior art lives in + (vendorupdate-managed from c:/repo/jn/tarjar). +- G-111 datapoint (achieved 2026-08-03): on the punk86 8.6.17 kit a dll + inside a vfs::zip-mounted modpod loads via the copy-to-temp fallback + (suite modpod-3.1) - the extraction path this investigation costs out + exists and works on pre-zipfs runtimes too. - G-114 relationship (recorded 2026-07-24 after overlap review): the per-platform tm roots are where the binaries this cache extracts originate - content-hash keying survives same-name different-platform siblings by diff --git a/goals/G-111-modpod-tidy-tests.md b/goals/G-111-modpod-tidy-tests.md index 87ef446d..37ebfd56 100644 --- a/goals/G-111-modpod-tidy-tests.md +++ b/goals/G-111-modpod-tidy-tests.md @@ -1,6 +1,6 @@ # G-111 modpod tidy: fix/remove tar-era remnants + first test baseline -Status: active +Status: achieved 2026-08-03 Scope: modpod canonical source (c:/repo/jn/tclmodules/modpod fossil checkout, src/modules/modpod-999999.0a1.0.tm) with re-vendor into shellspy (src/vendormodules/modpod-*.tm + bootsupport copies via established channels); punkshell-side tarjar artifacts ASSESSED ONLY (cli #tarjar-* module-type branch, libunknown skip-globs, vendored tarjar-2.4.3.tm, src/modules/_build/#tarjar-tarjar-2.3 - dispositions individually user-confirmed, preservation-aware per the c:/tclmodules/main manual-migration intent); new modpod testsuite (home settled in the work; shellspy src/tests/modules/ harness is the natural fit) Goal: modpod's surviving zip-based surface is sound and tested: the tar-era broken/dead code inside the modpod module is fixed or removed with each item dispositioned, tarjar-SYSTEM artifacts elsewhere get user-confirmed preservation-aware dispositions only (old tarjar material at c:/tclmodules/main is preserved/migrated manually by the user, outside this goal), and modpod gains its first test baseline covering wrap and load round-trips including a binary payload. Acceptance: each enumerated tar-era defect in modpod-999999.0a1.0.tm is dispositioned with the outcome recorded here (undefined tar::readHeader connect path; ::tarjar::connected reference in myfullname; con/connected and versionpart/versionparts typos; the malformed set/lindex constructs; connect's debug stderr puts; get's unimplemented wrapped branch); after the pass a grep of the modpod module for tarjar returns nothing or only deliberate keeps recorded here; punkshell-side tarjar artifacts each carry a recorded keep/remove/migrate disposition explicitly confirmed by the user, with none deleted absent that confirmation; a modpod testsuite exists and passes on the tcl9 kit and on 8.6 (or the 8.6 limitation is recorded per G-034), covering make_zip_modpod wrap then package require from a real-disk module path and from a zipfs module path, a binary-payload load, the unwrapped #modpod-folder redirect form, and both -offsettype forms; the fixed module is re-vendored into shellspy with the suite passing there. @@ -157,13 +157,19 @@ gone, kept procs present) OK. source trees via package ifneeded (runtestmodules.tcl boot lines) - the harness itself consumes the unwrapped form. -Remaining for acceptance: user-confirmed dispositions for the punkshell-side -tarjar artifacts (assessment + proposals below). +2026-08-03 ACHIEVED FLIP: all acceptance items verified met - per-defect +dispositions recorded above with the module grepping tarjar-free (zero +keeps); suite green on punk91 tcl9.1 kit (7/7), native tclsh90 (7/7) and +punk86 8.6.17 (6/7, modpod-4.1 zipfs-container skip recorded per G-034 - +the 8.6 limitation clause); 0.1.6 re-vendored with the suite passing in +shellspy (git bba10012 / fossil 1b803031; kits rebaked, both report 0.1.6); +tarjar-artifact dispositions below CONFIRMED by the user 2026-08-03 ("all +five as proposed"), none deleted. -### Tarjar-system artifact assessment (2026-08-03, proposals - awaiting user confirmation) +### Tarjar-system artifact assessment (2026-08-03; dispositions CONFIRMED by user 2026-08-03, all five as proposed) Inventory verified on disk; VCS tracking checked in both git and fossil. -Nothing deleted. Proposed dispositions: +Nothing deleted. Confirmed dispositions: 1. src/vendormodules/tarjar-2.4.3.tm (TRACKED git+fossil; contains the .TclSoCache prior art G-110 references): KEEP - the G-110 investigation diff --git a/goals/G-157-exeless-kits-materialized.md b/goals/G-157-exeless-kits-materialized.md index 063ff520..9bb9ef09 100644 --- a/goals/G-157-exeless-kits-materialized.md +++ b/goals/G-157-exeless-kits-materialized.md @@ -23,7 +23,9 @@ The transparent-container set is zip today, matching G-004's zip-based .tm exception vocabulary and its content-not-extension rule (a zip-based exe-less kit follows the same content rule: allowed only if it embeds no executables). Extending the transparent set (e.g. tar) is a policy decision to record here -if it arises; tarjar disposition stays with G-111. +if it arises; the tarjar-artifact dispositions were confirmed under G-111 +(achieved 2026-08-03, all keeps - see +goals/archive/G-111-modpod-tidy-tests.md). Current tracked instances - exactly three, all sdx.kit: - bin/sdx.kit: the locally-patched 2011-era sdx that make.tcl's 'kit' wrap