Completion increment: fork pushed by the user; pin
16d2f460b89dfd819aa08ceb97dfebf37b9fa55a; ready-to-land
sources.config/zon records made concrete for both suites (zig-fetch
hash tclparser_punk-0.1.0-aKPixmovFABEMo61xgv1YjUqdgqe41ZiB-EucAgmM-We);
'zig build dual' re-verified via the lazy zon pins alone; kit-shell
load + parse round trips recorded (punk902z Tcl 9.0.2, punksys Tcl
8.6.13) PLUS beyond-acceptance ix86 runtime verification under the
32-bit verification kits (punkluck86 8.6.10, punk91ix86 9.1b0, WoW64)
- combined dll coverage Tcl 8.6.10/8.6.13/8.6.18 + 9.0.2/9.0.5/9.1b0,
x64 and ix86.
Achieved flip per the GOALS.md maintenance rules (acceptance met in
full, judged against the detail file; flagged in the session report -
the goal went proposed->achieved without an active phase): index entry
moved to GOALS-archive.md; reference sweep applied - G-070 (Scope both
tiers, Context, Related line gain the achieved/archive marker),
G-069/G-101/G-130 Notes gain pointers to the archived file (G-130's
also records the ix86 runtime verification its verification kits
enabled). The detail-file move goals/ -> goals/archive/ lands as the
adjacent pure-rename commit.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
G-153 [proposed]: fork-as-upstream metakit port under the pinned zig -
standalone core + Mk4tcl dll/static shapes, win32-x86_64 + win32-ix86
from day one, KitCreator patch audit vs the 2.4.9.8 baseline, dll smoke
under suite-built tclsh86t (the sdx-circularity probe enabler), mk4
x64<->ix86 interchange check, and ready-to-land sources.config/zon
record text for suite consumption. Non-contract Notes: G-101 records
metakit_punk as the mk4 porting vehicle superseding the TEMP_REFERENCE
metakit trees; G-130 gains the measured UCRT linkage + OS-floor
statement (Win10 zero-prereq, Win7/8.x need KB2999226, XP/2000
structurally out), the Windows 2000 placement with the luck-specimen
Win2k-clean import measurement, the SSE2 (pentium4) cpu-baseline rider,
and the lane-mechanics inventory (standardTargetOptions present;
critcl/baselines/punkres-PE32/punkbin-folder/twapi-x86 gaps); G-131
points at G-153 for its metakit arm. goals_lint clean.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Status active -> achieved 2026-07-31 (acceptance walk in the detail
file); index entry moved to GOALS-archive.md; live-tier sweep: achieved
markers on the G-127/G-130/G-131/G-141 Related lines and the G-006
absorption note (interim trust flags libfetch + punk-runtime named);
actionable-note pushes to G-105 (server surfaces ready for cross-target
artifacts), G-101 (8.6 tier riding the mechanism; tclkit86bi sidecars),
G-067 (provenance/consent patterns to inherit), G-127 (the
no-alternate-mapvfs-seam finding from the e2e demonstration). xref
report: no unlinked pair had G-123 as its only bridge. Detail-file
rename to goals/archive/ follows as its own pure-rename commit.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Clears the 5 informational goals_lint warnings, all on this file: G-096, G-098,
G-099, G-100 and G-103 were referenced with no achieved/archive marker anywhere.
The check reads a 3-line window around each G-<n> mention for
achieved|archive|landed and ORs across every mention in the file, so ONE marked
mention clears an id. That matters here: G-103's only mentions are in Scope
(index-canonical) and Acceptance (detail-canonical), both proposal-first. Neither
is touched - the marker goes in Notes per the goals/AGENTS.md Archive rules,
carrying the archive path and stating what G-103 contributes (the artifact-
metadata contract those two lines name: a published runtime's record carries its
target, which for this goal must name the 32-bit platform).
G-096/G-098/G-099/G-100 are marked in place in Context. That mention is pure
history - the phrasing was already factual rather than pending-tense - so a
compact "all achieved and archived" is proportionate to the rules' guidance
rather than four inline archive paths.
Context paragraph reflowed to the file's ~90-char wrap (the marker insertion had
pushed one line to ~118). Body lines now top out at 97, a pre-existing line; the
1180-char maximum is the Acceptance line, single-line by header grammar and
unchanged.
goals_lint clean (84 active-index goals, 50 archived).
Claude-Session: https://claude.ai/code/session_01Y1diJnhjUxKgEG6EwYAzxj
Assisted-by: harness=claude; primary-model=claude-opus-5[1m]; api-location=anthropic.com
Activation (user-directed this session) through achieved flip in one lifecycle
change-set: index entry moved to GOALS-archive.md (Scope relocated verbatim;
title preserved with the [achieved] status transform; Detail: line becomes the
archive detail pointer - the standard flip transformations), detail file gains
the activation survey Related: notes (G-114 prevention-side sibling, G-128
sibling PE surface), the advisory-as-drafted open-decision resolution, and the
full Progress/verification records (live bake evidence on
punkluck86/punk91ix86/punk86/punkshell902, the zint real finding, 92.6ms avg
scan cost, suite results). Reference sweep pushes the archived file's
actionable notes to G-024 (toml schema home), G-131 (one-vocabulary +
runtime_caps), G-127 (target-addressing adoption), G-130 (subdir exemption for
32-bit growth), G-123 (publication citation), G-114 (detection-side sibling).
Detail file moves to goals/archive/ in the following pure-rename commit.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Detail file: Status flipped, Context table corrected (the LUCK backport HAS a
::zipfs ensemble - just no root subcommand), Progress + verification records
added (both 32-bit kits boot and resolve from their mounts, four 64-bit kits
byte-identical before/after, unattributable-mount stderr report demonstrated,
both zip offset conventions verified on the backport, kitmountpoint.test 4/4,
full suite at the exec-14.3-only baseline). Index entry moved to GOALS-archive.
Reference sweep: achieved/archive markers added at the G-129 mentions in G-101,
G-024, G-130 and G-131 (pending-tense Approach line rewritten); forward-pointing
notes pushed to their targets - G-131 gets the factored-derivation shape,
measured mount tables, app/main.tcl hook and the LUCK both-capability probe row;
G-123 gets the bin/AGENTS.md kit-wrappable requirements as its publication
criterion pointer.
Claude-Session: https://claude.ai/code/session_01UEgomWq6kA6c4A8GswqqGW
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Two goals from the third-party 32-bit kit investigation, plus the finding that kept G-129
independent.
G-129 Notes: the developer asked whether G-129 is needed to support baking with third-party
kits. It is - it is the LAST blocker. The chain is: read the runtime's attached payload
(G-124, achieved), do not let the boot-precondition gate falsely refuse it (G-125, achieved,
plus the punkboot::utils 0.4.0 third-convention fix), then have the baked kit FIND that
payload at boot (G-129). Measured by running punk_main.tcl's detection logic verbatim under
bin/runtime/win32-ix86/tclsh8.6.10-luck-zip.exe: has_zipfs is 0, the //zipfs:/app branch is
never computed, the kitpath branch is skipped, and NO internal module or lib paths are
added - while tcl::zipfs::mount really does report the archive mounted at the exe path. So
the failure is not "mounted somewhere unexpected and mis-resolved", it is "concluded there
is no zipfs at all". This corrects an earlier recommendation to fold G-129 into G-131:
folding would have parked third-party kit baking behind a much larger goal that needs a
runtime carrying two container capabilities, which in turn needs G-101's port work.
G-130 - 32-bit windows runtimes from the buildsuites, both Tcl generations. The motivation
is supply, not architectural completeness: old, firewalled or sandboxed systems (industrial
ones especially) are where 32-bit persists, they cannot fetch what they need, and a machine
carrying binary Tcl modules built for only one major forces the runtime to match the
modules. No single supplier keeps current 32-bit windows Tcl available for both majors.
Acceptance keeps the binary-extension gate the developer asked for - each runtime must LOAD
a real 32-bit extension, not merely start - because accepting drop-in modules is the whole
point; twapi 4.7.2 inside the LUCK runtime is a 32-bit dll already in the tree for the 8.6
side. Both generations are required before the goal is met, since the motivating case is
precisely that the machine's modules dictate the generation. KIT/CONTAINER TYPE IS
DELIBERATELY OUT OF SCOPE - this goal produces runtimes, not kits; that question is G-101's.
Sequencing per the developer: before or around the FreeBSD work, because a bitness change is
likelier to surface recipe assumptions than another OS at the same bitness. Recorded as
verified: punk::platform::local already reports win32-ix86 from a 32-bit interpreter and
make.tcl derives the matching host/target/store, so no platform-canon work is needed.
G-131 - one runtime, either payload: boot-time container autodetection (metakit or zipfs).
Today a runtime's container is fixed when the runtime is ACQUIRED, so deliverables multiply
by container: per platform, per generation, per container. If the boot detected what is
attached, the container would become a bake-time choice and the count would collapse to
platform x generation. Drafted to EXTEND G-129 rather than supersede it, and to depend on
G-101 for the metakit arm to exist at all on a suite-built runtime. Its zipfs obligation is
only that G-129's derivation still holds when reached through container detection. Carries
two constraints found during the survey: the design must be preinit-shaped from the start,
because G-101's Tcl 9 survey found the proc tclInit override the tclkit lineage relies on is
dead in 9.1 and tcl_libPath is gone; and it explicitly rejects KitCreator's compile-time
KIT_STORAGE_MK4/_ZIP/_CVFS switch - the closest prior art - because a compile-time answer
still produces one binary per container. Scope names src/make.tcl's kit_type_mismatch check,
whose premise (a runtime implies one container) this goal makes false. cookfs and other
exotics are out of scope by the developer's decision.
Assisted-by: harness=claude; primary-model=claude-opus-5[1m]; api-location=anthropic.com