Browse Source

G-121 achieved 2026-07-26: flip + archive record + reference sweep

Acceptance verified in full (evidence recorded in the detail file's Progress
section): bakelist under plain tclsh + punk902z with per-entry presence and
deployed state; selective 'bake punk91' refreshing only that kit's _build/bin
artifacts and punkcheck records (stat + punkcheck diffs, negative grep clean);
unknown-name no-build errors; bare bake kit-set parity; help/workflow contract
updates; maketclbakelist.test 4 PASS; punkshell 0.24.0 minor bump.

Index entry moved to GOALS-archive.md. Reference sweep: no pending-tense
live-tier mentions existed; mapvfs.config pointer updated to the archive path;
forward-pointing notes pushed as back-pointers to the live goals they serve
(G-024 parsed-model reader swap, G-023 scheme-expansion entry point, G-115
per-kit payload detail, G-057 single-kit icon verification, G-028 deployed
-state reporting sibling, G-101 kit-type non-assumption).

Detail-file move to goals/archive/ follows in the adjacent commit as a pure
rename (root AGENTS.md Doc Restructures).

Claude-Session: https://claude.ai/code/session_01Jz7wkUsknJzyuJ3tgMaL2t
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
master
Julian Noble 5 days ago
parent
commit
c172912f4b
  1. 4
      GOALS-archive.md
  2. 3
      GOALS.md
  3. 1
      goals/G-023-version-named-binaries.md
  4. 1
      goals/G-024-mapvfs-toml.md
  5. 1
      goals/G-028-file-locker-identification.md
  6. 1
      goals/G-057-kit-icon-embedding.md
  7. 1
      goals/G-101-tcl86-kit-container-strategy.md
  8. 1
      goals/G-115-declarative-vfs-composition.md
  9. 61
      goals/G-121-bakelist-selective-bake.md
  10. 4
      src/runtime/mapvfs.config

4
GOALS-archive.md

@ -182,3 +182,7 @@ Acceptance: (1) `make.tcl bake` on a clean checkout produces kits byte-comparabl
### G-104 [achieved 2026-07-25] make.tcl buildsuite surface: list / info / build → detail: goals/archive/G-104-maketcl-buildsuite-surface.md
Scope: src/make.tcl (buildsuite subcommand group); src/buildsuites/*/ (suite self-description contract: an 'info'/describe affordance per suite - suite.tcl action or manifest record); documentation (make.tcl help text, src/buildsuites README/AGENTS)
Acceptance: list shows suite_tcl90 (and any copied tree) with descriptions sourced from the suites themselves; info renders the sources.config-derived table plus zig pin and products for a named suite; build forwards arguments and streams driver output, exiting with the driver's status; the surface works when make.tcl runs under a plain tclsh and under punk kit executables; help text documents the group; the self-description contract is documented where suite authors will find it (src/buildsuites docs) and holds for a tree created by copying suite_tcl90.
### G-121 [achieved 2026-07-26] make.tcl bakelist + selective bake: list configured kits, bake by name → detail: goals/archive/G-121-bakelist-selective-bake.md
Scope: src/make.tcl (bake @values + new bakelist subcommand; SUBOPTS/SUMMARIES/HELPTEXTS/SUBGROUPS, help/workflow text); src/runtime/mapvfs.config (as read; todo-comment retirement); src/tests/shell/testsuites/punkexe/ (bakelist characterization if feasible); layout make.tcl copies via established sync channels
Acceptance: `make.tcl bakelist` under a plain tclsh and under a punk kit executable lists every kit output configured in the runtime mapping with name, kit type, runtime (present/missing), vfs folder and a deployed-state indication (bin copy absent/current/stale vs the build product), and `bakelist <kitname>` filters to the named entries; `make.tcl bake <kitname ...>` builds and deploys only the named kit(s) - a recorded verification shows the named kit's artifacts refreshing while other kits' _build/bin artifacts and punkcheck records are untouched - and an unknown name errors without building, listing the configured names; bare `make.tcl bake` processes the same kit set as before the change; help/workflow text documents both per the update contract and the mapvfs.config todo comment is retired to point here; a piped bakelist characterization test lands under punkexe if feasible (else the infeasibility is recorded here); project version minor-bumped with a CHANGELOG entry.

3
GOALS.md

@ -393,6 +393,3 @@ Detail: goals/G-115-declarative-vfs-composition.md
Scope: src/buildsuites/suite_tcl90/ (build_tcltls module + crypto-backend build, sources.config + build.zig.zon source records, kit-family bi payload + metadata extension, test_gate record step); src/vfs kit payloads carrying vendored tcltls binaries (current-state reference + recorded disposition only - removal stays G-004-era work); punkbin (as eventual artifact destination via the G-067 library class); consumers punk::imap4 / punk::netbox (package require tls) as verification context
Detail: goals/G-116-suite-built-tcltls.md
### G-121 [active] make.tcl bakelist + selective bake: list configured kits, bake by name
Scope: src/make.tcl (bake @values + new bakelist subcommand; SUBOPTS/SUMMARIES/HELPTEXTS/SUBGROUPS, help/workflow text); src/runtime/mapvfs.config (as read; todo-comment retirement); src/tests/shell/testsuites/punkexe/ (bakelist characterization if feasible); layout make.tcl copies via established sync channels
Detail: goals/G-121-bakelist-selective-bake.md

1
goals/G-023-version-named-binaries.md

@ -90,3 +90,4 @@ binary-artifacts repository). Revisit when the accumulation actually bites.
icon-embedding step hooks the same kit wrap steps; its ordering constraint
(icon the stub before payload append) interacts with this goal's every-build
rewrite cadence.
- G-121 (archived) recorded that scheme-expanded output names should enter the parsed mapping model as expansions (::punkboot::lib::mapvfs_kit_outputs) so generated names join the bakelist / bake-by-name surface automatically when this goal lands - see goals/archive/G-121-bakelist-selective-bake.md

1
goals/G-024-mapvfs-toml.md

@ -75,3 +75,4 @@ with the G-014 direction of toml + tomlish for declared configuration.
goal owns the runtime-to-vfs-to-executable mapping and schemes. Design the two as sibling
grammars in one toml family (shared conventions, not two dialects); G-115's
vendorlib_vfs.toml fold/supersede decision should cite this goal's scheme format.
- G-121 (archived) delivered the shared parsed-mapping reader (::punkboot::lib::mapvfs_parse + mapvfs_kit_outputs): the bake kit machinery, bakelist and the bake/bakelist argdoc kit-name choices all consume the model, never the file format - this goal's toml conversion swaps the reader implementation underneath that surface, and bakelist is where its per-entry validation errors surface (runtime/vfs missing rows) - see goals/archive/G-121-bakelist-selective-bake.md

1
goals/G-028-file-locker-identification.md

@ -83,3 +83,4 @@ the kind of file this fails on.
resource update hits the same locked-target failure class when an inspected
or running kit is being re-wrapped - the locker-report helper covers the icon
step's failures as well as deploy's.
- G-121 (archived) shipped bakelist's deployed-state column (bin/<kit> vs src/_build: current|stale|absent|nobuild) - the reporting sibling of this goal's acting-path deploy-failure naming; a locked-exe deploy failure shows afterwards as deployed=stale - see goals/archive/G-121-bakelist-selective-bake.md

1
goals/G-057-kit-icon-embedding.md

@ -84,3 +84,4 @@ delete-then-write). Requirements sketch agreed 2026-07-10:
version/copyright resources from punkproject.toml - when it is drafted as a
goal, reconcile with G-025's kit stamp and G-117's embedded artifact record
so the three provenance surfaces tell one story.
- G-121 (archived) parameterized the wrap steps this goal's acceptance runs through: 'make.tcl bake <kitname>' now rebuilds a single kit for cheap icon-override verification, and a per-kit icon override would slot into bakelist's filtered per-kit detail - see goals/archive/G-121-bakelist-selective-bake.md

1
goals/G-101-tcl86-kit-container-strategy.md

@ -97,3 +97,4 @@ wrap), and only worth activating once G-099/G-100 land.
exist; current kit downloads already use bare tclkit for console builds). Any
future zero-flash launcher takes the w-suffix convention (punkw) rather than
-gui/-cli (which in kit lineage encode Tk linkage, not subsystem).
- G-121 (archived) built bakelist/selective-bake over the parsed mapping without assuming zip-only types ('kit'-type entries list and bake by name), so 8.6 container entries join that surface automatically - see goals/archive/G-121-bakelist-selective-bake.md

1
goals/G-115-declarative-vfs-composition.md

@ -59,3 +59,4 @@ for telling the two apart).
declaration are the same design space (toml-declared, pinned, provenance-tracked
external content) - G-065's upstreams feed the sources, this goal's declarations
materialize the folder. Keep the schemas aligned.
- G-121 (archived) noted per-kit payload detail as a candidate later addition to bakelist's per-kit view (name filtering doubles as detail) once this goal's declaration surface exists - see goals/archive/G-121-bakelist-selective-bake.md

61
goals/G-121-bakelist-selective-bake.md

@ -1,6 +1,6 @@
# G-121 make.tcl bakelist + selective bake: list configured kits, bake by name
Status: active
Status: achieved 2026-07-26
Scope: src/make.tcl (bake @values + new bakelist subcommand; SUBOPTS/SUMMARIES/HELPTEXTS/SUBGROUPS, help/workflow text); src/runtime/mapvfs.config (as read; todo-comment retirement); src/tests/shell/testsuites/punkexe/ (bakelist characterization if feasible); layout make.tcl copies via established sync channels
Goal: make.tcl can report and selectively execute the configured kit matrix: `bakelist` lists the configured kit outputs (name, kit type, runtime with presence, vfs folder, deployed state) with optional per-kit name filtering, and `bake <kitname ...>` bakes and deploys exactly the named kits - bare `bake` unchanged (all configured kits). Both consume the PARSED mapping model, not the file format, so the G-024 toml conversion slides underneath without changing the surface.
Acceptance: `make.tcl bakelist` under a plain tclsh and under a punk kit executable lists every kit output configured in the runtime mapping with name, kit type, runtime (present/missing), vfs folder and a deployed-state indication (bin copy absent/current/stale vs the build product), and `bakelist <kitname>` filters to the named entries; `make.tcl bake <kitname ...>` builds and deploys only the named kit(s) - a recorded verification shows the named kit's artifacts refreshing while other kits' _build/bin artifacts and punkcheck records are untouched - and an unknown name errors without building, listing the configured names; bare `make.tcl bake` processes the same kit set as before the change; help/workflow text documents both per the update contract and the mapvfs.config todo comment is retired to point here; a piped bakelist characterization test lands under punkexe if feasible (else the infeasibility is recorded here); project version minor-bumped with a CHANGELOG entry.
@ -57,6 +57,65 @@ kit-state divergence.
already rejected 'kits' as colliding with kit runtimes; `bakelist` is
self-locating next to `bake`.
## Progress
- 2026-07-26 ALL ACCEPTANCE ITEMS VERIFIED - achieved flip. Shipped in punkshell
0.24.0 (src/make.tcl; git commit "G-121: make.tcl bakelist + selective bake").
Both surfaces (and the argdoc kit-name choices) consume the shared parsed
mapping model ::punkboot::lib::mapvfs_parse / mapvfs_kit_outputs /
mapvfs_match_outputs - the bake kit machinery's inline parse was replaced by
the same helper, so the G-024 toml conversion swaps the reader underneath.
- Verification evidence (native Tcl 9.0.3 tclsh90 driving the working tree on
windows win32-x86_64; punk902z kit exe via the punkexe suite):
- bakelist under plain tclsh AND under punk902z: all 10 configured entries
listed with name, type (kit|zip|zipcat), runtime + presence, vfs folder,
deployed state; runtime=missing rows for tclsh90magic and the linux
tclkit; piped output ESC-free (G-113). `bakelist punk91` filters to the
named row and adds the per-kit detail block (resolved paths/sizes/mtimes).
Deployed-state content-compare path proven live: equal bytes with
differing mtimes classified current.
- selective refresh: after deleting src/_build/punk91.exe, `bake -confirm 0
punk91` rebuilt and deployed punk91 only. Recorded stat diff over ALL of
src/_build and bin: only punk91.exe, punk91.exe.vfs, raw_tclsfe-x64.exe
and bin/punk91.exe changed. punkcheck diffs (src/_build, bin, src/vfs
.punkcheck) mention only punk91's records; negative grep for every other
kit/vfs name (punk905, punk9_beta, punk9bi, punkbi, punksys, punk86,
punkmagic, punk902z, punkshell902, their vfs folders) clean. vfslibs phase
narrowed with printed skip notes for unselected vfs folders.
- unknown name: `bake nosuchkit` and `bakelist nosuchkit` exit 1 before any
build, listing the configured names; a flag-looking unknown adds the
flags-before-names hint (punk::args consumes options before values, so
`bake -confirm 0 punk91` is the canonical order).
- bare `bake -confirm 0`: same kit set as pre-change (punkbi, punksys,
punk86, punk91, punk905, punk9_beta, punk902z, punk9bi_beta processed;
the 2 historical missing-runtime warnings; no selective narrowing).
- characterization test landed: src/tests/shell/testsuites/punkexe/
maketclbakelist.test - 4 PASS under punk902z (full-report row/vocabulary +
ESC-free, filtered detail, unknown-name errors on both surfaces with the
no-build guarantee); maketclcolour.test still 3 PASS.
- help/workflow text updated per the update contract (workflow verified
normal + PUNKBOOT_PLAIN=1, width <= 100); mapvfs.config todo retired to
point here; project version minor-bumped 0.23.3 -> 0.24.0 with CHANGELOG
entry; layout make.tcl copies synced via make.tcl packages; degraded-mode
(PUNKBOOT_PLAIN) dispatch carries trailing kit names for bake/bakelist.
- Design outcomes worth keeping:
- Discoverability nicety implemented: configured kit names render as
punk::args choices on bake/bakelist (-choicerestricted 0 - informational
only; handler validation stays authoritative and works when the mapping
cannot be parsed at define time).
- The enumeration helper replicates the kit loop's naming including the
duplicate-appname `<appname>_<runtime>` disambiguation; parity assumes the
config keeps appnames unique (broken-config edge documented in the helper
comment).
- Dash-runtime ('-') entries list (runtime "-", no runtime file) but the kit
loop's historical existence-filter still never builds them - pre-existing
dead path, deliberately unchanged here.
- Selective bake fail-fasts on a selected kit whose runtime/vfs is missing;
bare bake keeps the historical warn-and-continue for the full set.
- runtime_materialization_warning's toml-revision core moved to
::punkboot::lib::runtime_materialization_check, shared with bakelist's
rtrev=r<cur><r<max> notes tag (the reporting complement noted below).
## Notes
- 2026-07-25 (landed separately, same day as drafting): make.tcl bake now

4
src/runtime/mapvfs.config

@ -66,8 +66,8 @@ tclsfe-x64.exe {punk9wintk903.vfs punk91 zip}
# punk test suites - so new-runtime behaviour can be trialled interactively. Drop _beta on acceptance.
# (punk905_beta trialled and PROMOTED to punk905 2026-07-21.)
#'make.tcl bakelist ?kitname ...?' lists the kit outputs configured here (runtime/vfs presence +
# deployed state); 'make.tcl bake ?kitname ...?' bakes/deploys only the named kits (G-121 -
# see goals/G-121-bakelist-selective-bake.md; wish originally recorded in archived G-104).
# deployed state); 'make.tcl bake ?kitname ...?' bakes/deploys only the named kits (G-121, achieved -
# see goals/archive/G-121-bakelist-selective-bake.md; wish originally recorded in archived G-104).
#5
tclsh905.exe {punk9wintk905.vfs punk905 zip}

Loading…
Cancel
Save