Browse Source
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.commaster
2 changed files with 78 additions and 0 deletions
@ -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…
Reference in new issue