Browse Source

G-111 proposed: modpod tidy - fix/remove tar-era remnants + first test baseline

User-approved goal from the modpod characterization session. The modpod module
carries broken tar-era code (undefined tar::readHeader connect path,
::tarjar::connected reference, con/connected + versionpart typos, malformed
set/lindex constructs, debug stderr, unimplemented wrapped get) while the live
zip surface (make_zip_modpod + self-mount stub) has ZERO automated tests
anywhere - the detail file inventories both with line refs.

Preservation-aware by design: tarjar-system artifacts (vendored tarjar-2.4.3.tm
carrying the G-110 .TclSoCache prior art, the _build #tarjar tree, cli
#tarjar-* build branch, libunknown skip-globs) are assess-only with
per-item user-confirmed dispositions - old tarjar material at
c:/tclmodules/main (incl the intermediate tarpack generation) is preserved and
migrated manually by the user, outside this goal.

Acceptance: defects dispositioned + recorded, tarjar grep clean-or-deliberate,
testsuite (wrap -> require from disk + zipfs paths, binary payload, unwrapped
redirect, both -offsettype forms) passing on tcl9 kit + 8.6 (or recorded G-034
limitation), re-vendored into shellspy.

Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
master
Julian Noble 1 week ago
parent
commit
50a74bc124
  1. 4
      GOALS.md
  2. 74
      goals/G-111-modpod-tidy-tests.md

4
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) ### 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 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 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

74
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").
Loading…
Cancel
Save