diff --git a/GOALS.md b/GOALS.md index dd204111..c097e327 100644 --- a/GOALS.md +++ b/GOALS.md @@ -373,3 +373,7 @@ Detail: goals/G-109-libunknown-manifest-multiname-tm.md ### G-110 [proposed] Shared-lib extraction cache: single content-addressed user cache vs per-run temp copies (investigation) 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 [proposed] 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-0.1.5.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 diff --git a/goals/G-111-modpod-tidy-tests.md b/goals/G-111-modpod-tidy-tests.md new file mode 100644 index 00000000..3cfb2a94 --- /dev/null +++ b/goals/G-111-modpod-tidy-tests.md @@ -0,0 +1,74 @@ +# G-111 modpod tidy: fix/remove tar-era remnants + first test baseline + +Status: proposed +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-0.1.5.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. + +## Context + +Drafted 2026-07-21 during the modpod binary-.tm characterization session +(G-066 Notes hold the characterization; G-109/G-110 were split out of the +same session). The user: modpod "was beaten into shape from [the] earlier +tarjar system that operated on .tm files that were tar archives ... there may +be cruft from the earlier iteration that we should tidy, and I'm not sure +what tests are in place for modpod." + +TEST FINDING: none exist anywhere. The modpod project +(c:/repo/jn/tclmodules/modpod, fossil-only like tomlish - vendor-into- +shellspy workflow) has no test directories; shellspy has no modpod suites +(nearest neighbour is src/tests/modules/zipper - a different module, and the +natural harness precedent for where modpod suites can live). The zip surface +that works today (modpod::lib::make_zip_modpod + the self-mount stub + +modpod::system::make_mountable_zip) was proven by the 2026-07-21 +characterization runs but has zero automated coverage. + +DEFECT INVENTORY (canonical modpod-999999.0a1.0.tm, line refs at drafting; +the tar-era connect/get family is dead-or-broken while the zip stub path is +the live surface): + +- L102: `puts stderr "modpod::connect--->>$args"` debug output in connect. +- L144: `set con(type,...)` typo for `connected` (writes a stray array); + ~L170 compounds it (`$con(package,$modpod)` - undefined var references). +- L149-150: malformed `set unwrapped_tm_file [file join ...] "..."` (3-arg + set - runtime error if reached) followed by a value-less + `set connected(tmfile,$modpodpath)` (reads an unset entry). +- L194: connect's tar path calls `::modpod::system::tar::readHeader` - no + tar namespace exists anywhere in the file (caught, so every wrapped-tar + connect falls through to "not a valid modpod"). +- L294: `is_valid_tm_version` uses `$versionparts` vs its `$versionpart` + argument - the substitution error fires BEFORE the catch, so the proc + always errors. +- L598: `connect_if_not` has misplaced brackets + (`[lindex [modpod::connect $podpath]] 0]`) - runtime error when reached. +- L652: `myfullname` returns `$::tarjar::connected(fullpackage,$script)` - + always errors under modpod. +- `get`: wrapped-pod branch is a "not implemented" stderr stub. +- tarjar-named comments/messages/placeholder token (L632/647/650/659) - + cosmetic; disposition = rename or deliberate-keep note. + +TARJAR-SYSTEM INVENTORY (assess-only in this goal; per the user 2026-07-21, +old tarjar material at c:/tclmodules/main - which also holds the +intermediate 'tarpack' generation (tarpack-1.1.x + loadscripts; lineage +tarjar -> tarpack -> modpod) - is to be PRESERVED and partly migrated +manually, so nothing here is deletable cruft by default): + +- src/vendormodules/tarjar-2.4.3.tm (a tar-format .tm; carries the + .TclSoCache code recorded as G-110 prior art) + _aside/tarjar-2.3.tm. +- src/modules/_build/#tarjar-tarjar-2.3/ unwrapped tree (docs, todo, + loadscript, loader snippets) + _build/tarjar-2.3.tm. +- punk::mix cli-999999.0a1.0.tm: #tarjar-* module-type build branch + (~L240/719-796/1037) - dead if no #tarjar source dirs remain in scanned + trees, but coupled to the preservation question. +- libunknown skip-globs for #tarjar-* (harmless/defensive - likely keep). + +Relationships: precursor to G-109 (manifest emission edits the same module - +tidy first so it lands on sound code); G-066/G-067 (modpod generation + +publish consumers); G-110 (tarjar .TclSoCache prior art lives inside the +vendored tarjar tm - preserve access to it); G-034 (8.6 mount path - the 8.6 +leg of the testsuite). + +## Notes + +- 2026-07-21: drafted from the session findings and approved + (user: "approved - apply G-111").