One parsed-mapping model (::punkboot::lib::mapvfs_parse / mapvfs_kit_outputs /
mapvfs_match_outputs) now backs the kit surfaces - the bake machinery, the new
bakelist report and the bake/bakelist argdoc kit-name choices all consume the
model, never the file format, so the G-024 toml conversion can swap the reader
underneath.
- bakelist ?kitname ...? (informational SUBGROUP): kit name, type, runtime with
presence, vfs folder, deployed state of bin/<kit> vs src/_build/<kit>
(current|stale|absent|nobuild; size/mtime fast path, byte-compare when in
doubt), anomalies as trailing key=value notes (runtime=missing, vfs=missing,
rtrev=r<cur><r<max> via the shared runtime_materialization_check core).
Name filtering doubles as per-kit detail (resolved paths/sizes/mtimes).
- bake ?kitname ...?: selective kit assembly - unknown names error before any
build listing the configured names (flag-order hint included); selected-but-
unbuildable kits (missing runtime/vfs) fail fast; runtime BUILDCOPY/caps
probe/vfs cksums/vfslibs phase all narrow to the selected kits so other kits'
_build/bin artifacts and punkcheck records stay untouched. Bare bake
unchanged (verified full-set run). Deprecated alias vfs mirrors the values.
- argdocs: SUBVALUES/VALUES_SYNOPSES mechanism, kitname choices enumerated from
the mapping at define time (-choicerestricted 0, degrade-safe), block-form
help values; SUMMARIES/HELPTEXTS/SUBOPTS/SUBGROUPS/known_commands/plain
gethelp/workflow text updated per the update contract; degraded-mode
(PUNKBOOT_PLAIN) dispatch collects trailing kit names.
- mapvfs.config todo comment retired to point at G-121.
- piped characterization: src/tests/shell/testsuites/punkexe/maketclbakelist.test
(full-report row/vocabulary + ESC-free, filtered detail, unknown-name errors
on both surfaces with the no-build guarantee) - 4 PASS; maketclcolour.test
still 3 PASS.
- selective-refresh verification (recorded in the goal file): forced punk91
rebuild + deploy via 'bake -confirm 0 punk91'; stat diffs over src/_build and
bin show only punk91.exe, punk91.exe.vfs, raw_tclsfe-x64.exe and bin/punk91.exe
changed; .punkcheck diffs mention only punk91's records (negative grep for
all other kit/vfs names clean).
- docs: src/AGENTS.md work-guidance bullet; ARCHITECTURE.md build-entry
subcommand list refreshed (bake/bakehouse naming + bakelist, stale in-flux
G-112 mention dropped); CHANGELOG 0.24.0 + punkproject.toml minor bump.
Claude-Session: https://claude.ai/code/session_01Jz7wkUsknJzyuJ3tgMaL2t
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Acceptance verified in full: all 11 issue-list items dispositioned
(2026-07-24) with decided fixes landed (items 3/4/5/9 in 0.20.0, items 1/7
via the G-117-cycle patch rev, item 10 docs in 0.20.1, item 11 console test)
and items 2/6/8 documented-as-intended in the item-10 definitions; durable
doc home = punk::args::moduledoc::punkexe; tclshcmd.test 19 piped tests
green vs punk902z + punk9_beta; dorepl console-reopen path console-driven
(punkconsole gate, 21/21 with PUNK_TEST_CONSOLE=1).
Flip: detail file status achieved 2026-07-25 + flip evidence record; entry
moved to GOALS-archive.md; detail file to goals/archive/. Reference sweep:
ARCHITECTURE.md tclsh bullet marked achieved + G-118 removed from the
in-flux launch-surface list; G-031/G-032/G-077/G-120 notes updated with
archive markers and landed-state wording (G-032 now points at the shipped
punkexe moduledoc ids as its source material; G-077 notes the boundary text
to update when -e lands). goals_lint clean, architecture_lint clean,
goals_xref report carries no G-118-bridged unlinked pairs.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
New punk::args::moduledoc::punkexe 0.1.0: (script)::punkexe dispatch
definition (package modes, subcommand enumeration, default reclassification)
+ (script)::punkexe::tclsh full contract (stock arg-form parity incl the
deliberate no -e boundary (G-077), lib: refusal, piperepl ::tclsh state
array + env gates, intended divergences recorded per item decisions 2/6/8)
+ summary definitions for script/shell/punk/shellspy. G-032-compatible: the
launcher help/parse wiring renders from these ids later.
punk::args 0.12.7: update_definitions handles tag-prefixed id namespaces
first-class - namespace_docpackages consulted with the tagged key (usage/
real_id on registered-but-unloaded (script)::* ids no longer no-such-id),
generic tag strip for the real-namespace probes, unqualified-ns warning no
longer fires for tag ids. args/ns/repl suites 352 pass 0 fail.
punk::repl 0.5.3: code-interp setup catch-requires the punkexe moduledoc
beside tclcore (both sites) so the docs are queryable in any punk shell.
ARCHITECTURE.md: tclsh subcommand bullet in the boot/launch chain
(architecture_lint clean). punkproject 0.20.1 + CHANGELOG.
Verified: fresh-interp usage-first render (real_id path); rebuilt punk902z
kit self-carries 0.1.0 (5298-char tclsh render); piped punk session renders
(script)::punkexe with no manual require.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
New root ARCHITECTURE.md: descriptive, pointer-first map of boot/launch, interp/thread topology, console abstraction, module loading, build/provenance/kits and the test harness - own lane beside DOX (what you must do) and the goals system (what changed and why). In-flux subsystems documented as goal pointers only.
scriptlib/developer/architecture_lint.tcl validates the doc's reference contract: backticked repo paths exist, G-<id> references resolve against both goal indexes, 400-line size budget. Plain tclsh, no deps, mutation-tested.
Root AGENTS.md: Child DOX Index entry, Closeout item 5 (update-or-prune described mechanisms + run the linter), scriptlib/developer inventory.
Assisted-by: harness=opencode; primary-model=openrouter/moonshotai/kimi-k3; api-location=openrouter.ai