The ::package override (the 'epoch' subcommand and controlled 'forget')
now installs via commandstack::rename_command -renamer punk::libunknown
instead of the former 'rename ::package :📦:' + namespace-import
mechanism. Both live ::package overrides (this and
punk::packagepreference's) now share one managed stack whatever the
install order - stack removals and third-party renames re-link correctly
instead of operating on the wrong command (previously commandstack's
::package stack believed the packagepreference wrapper was live while
libunknown's unmanaged import actually was; restore_original would have
stranded :📦:).
Migration deltas (exactly the set enumerated in the goal Context):
- the override body runs at :: - the four bare epoch_incr_pkg/epoch_incr_tm
calls are fully qualified (the old namespace-import execution context is
gone)
- the dead 'variable has_package_files' declaration dropped (its only use
was already commented out; the module-load probe stays)
- the two :📦: delegation sites (forget arm, default arm) now
delegate via COMMANDSTACKNEXT; :📦: no longer exists (nothing in
the tree called it)
- init does 'package require commandstack' (a no-op when already provided
- e.g whenever punk::packagepreference::install ran first, as in
punkshell boot; resolvable via tm paths in every other real init
context - bootsupport and the common vfs both carry commandstack-0.7.1)
- re-entry guard is now a stack query for the punk::libunknown record
(same 'already done' notice; the old ::punk::libunknown::package
proc-existence check tested a proc that no longer exists)
- init argdoc reworded; file renamed libunknown-0.2.4.tm ->
libunknown-0.3.0.tm (git mv + fossil mv) with Meta/manpage/provide-block
version updates and a changelog entry per the in-file bump procedure.
Behaviour of every subcommand arm is unchanged: all increment-1 BEHAVIOUR
pins in packageoverride.test passed byte-identically; only its four
MARKED-TO-FLIP install-shape pins flipped as fenced (origin ::package, no
:📦: residue, managed stack records - 1 solo, 2 in both
packagepreference interop orders). discovery.test and packageoverride.test
child interps now pre-source the source-tree commandstack by path (their
tm paths are cleared); libsearch/shadowing children resolve commandstack
via inherited parent paths and needed no changes.
Two out-of-scope items recorded as open Follow-ons in the goal (Scope
amendment needed if pursued): boot-site commandstack pre-sourcing
(punkboot core.tcl / make.tcl / punk::repl / punk::lib child-seeding - to
preserve the minimal-untracked epoch intent exactly) and make.tcl's
'info commands ::punk::libunknown::package' skip-guard modernization
(old kits still satisfy it; switch to a package-provide check before or
with the 0.3.0 bootsupport/kit promotion).
Goal Scope mirrors updated to the new filename (rename anticipated in the
Scope text). Project 0.62.2 -> 0.63.0 + CHANGELOG.
Suites: libunknown tree + loadedlib 42/42; full modules tree 1346 total /
1335 pass / 11 constraint-skipped / 0 fail (zig-built tclsh90s 9.0.5);
testbody_lint 1699 clean; goals_lint clean (80 active-index / 96
archived); make.tcl projectversion consistency OK (and that run itself
exercised the bootsupport-0.2.4 transition path live).
Claude-Session: https://claude.ai/code/session_01QgaxV27VZkmEec7oNbEVFc
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com