make.tcl modules/vfscommonupdate/bootsupport regeneration for increment 2:
_vfscommon.vfs/punkboot/core.tcl regenerated from the committed _config
master (every kit's merge now carries the boot core); layout copies of
src/make.tcl (basic, project-0.1, templates modpod source) pick up the
vfscommonupdate boot-core delivery step via the modules-step sync, with the
repacked punk::mix templates-0.2.0.tm promoted to _vfscommon and bootsupport.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
punk_main.tcl is now the thin project-owned main: publishes launch_args +
main_script, declares (empty) project_subcommands and launch_defaults at
==CUSTOMIZE== points, locates the boot core and sources it. Core candidates:
<vfsroot>/punkboot/core.tcl (in-kit via the _vfscommon merge), parent-dir
punkboot/core.tcl (nested app/main.tcl, undroidwish G-129), sibling
punkboot_core.tcl master (source-tree execution - the kitmountpoint
characterization shape). punkboot_core.tcl carries the boot machinery
extracted verbatim from the monolith; delta beyond extraction: contract
preamble with serviceable defaults, normscript from ::punkboot::main_script
instead of [info script], registration-model subcommand selection (project
additions merge in, built-ins cannot be shadowed, declared noargs/unknownfirst
defaults) with a dispatching default arm, ::punkboot::core_version 0.1.0.
make.tcl vfscommonupdate now regenerates _vfscommon.vfs/punkboot/core.tcl
from the _config master.
Parity evidence: full punkexe suite 110 pass / 0 fail against freshly baked
punk902z; kitmountpoint 4/4 across 8.6-backport / 32-bit-modern / 64-bit
runtimes incl the unattributed-mount stderr pin; registration model exercised
end-to-end via a scratch kit; 11-kit default bake with only known-baseline
warnings; punk86 (metakit/starkit, tcl 8.6.17) smoke green. cookfs branch
carried verbatim - no cookfs kit is currently mapped in mapvfs.toml to
exercise it (stale bin/punk9cook.exe is an old vintage, untouched).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
make.tcl modules/bootsupport/vfscommonupdate regeneration for increment 1:
utils-0.7.0.tm replaces 0.6.2 in src/bootsupport/modules and
src/vfs/_vfscommon.vfs/modules - the collision gate is now live for
make.tcl's guarded require (probed: a bootsupport-only tm path serves
0.7.0 and a collision fixture reports ok=0 status=collision). Layout
copies of src/make.tcl (basic, project-0.1, templates modpod source +
repacked punk::mix templates-0.2.0.tm in bootsupport/vfscommon) carry the
same gate hunks via the modules-step sync channel.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
A source .vfs carrying an actual root main.tcl AND a root fauxlink resolving
to main.tcl (or several such fauxlinks) baked whichever boot script merge
traversal met last - merge_over's fauxlink branch overwrites without warning.
New punkboot::utils::vfs_startup_script_report (0.7.0) censuses root
startup-script suppliers by RESOLVED fauxlink name (empty-nominalname links
included; nested app/main.tcl exempt per G-129). make.tcl consumes it with
the same guarded-require degradation as the G-125/G-133/G-134 checks and
refuses affected kits per-kit under FAILED KITS before any build product is
written - kits from other folders proceed, deployed binaries untouched.
Fixture characterization: startupscript.test (12 tests incl. a
real-source-tree sweep proving today's folders are collision-free);
bootlibrary.test re-run green. Outputs (mint 0.7.0 + bootsupport/vfscommon
promotion) follow in a separate commit.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Scope adds src/vfs/README.md (boot-entry guidance), the punk::args moduledoc
home and the make.tcl collision gate. Goal/Acceptance now require:
project_main.tcl reborn as the commented thin-main sample, README boot-entry
sections (repo + project-0.1 layout via sync channels), a punk::args::moduledoc
package for the boot-core API shipped via _vfscommon, and per-kit bake refusal
when a source .vfs carries both a root main.tcl and a main.tcl fauxlink
(today silently traversal-order-dependent - merge_over fauxlink branch
overwrites unwarned). Approach/Alternatives/Notes record the 2026-08-02
evidence: project_main.tcl unmapped in mapvfs.toml (layout-template-only),
tomlish shared-_config + sample.vfs drop-in exhibits, moduledoc::punkexe
delivery precedent. Status remains proposed - activation is a separate flip.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
User-directed follow-on to G-155 (2026-08-02): with punkshell alpha,
single-machine build infra and no evidenced third-party users, the
identifier keep-list becomes a candidate work-list while renames are cheap.
- goals/G-156-alpha-window-identifier-alignment.md: contract (proposed) -
punkcheck installer-identity migration (mint-named surface + ledger
strategy: rewrite vs rebuildable-cache re-record), BUILDCOPY -> BAKECOPY,
buildversion.txt disposition; census tool (fossil config-db lane per
G-016 caveats + bounded scan of user-confirmed roots, punkorigin.toml
primary marker + pre-G-087 fallbacks) with committed reconcile/freeze/
retire report; reconciliation honours G-027 docs-ownership split and
feeds its requirements; window-expiry condition recorded
- GOALS.md: G-156 index entry appended (activation is a user decision)
- goals/G-155-mint-stage-vocabulary.md: Related pointer to G-156 (Notes,
non-contract)
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Pure-rename move goals/G-101-tcl86-kit-container-strategy.md ->
goals/archive/ (content edits landed in the prior commit); GOALS.md entry
-> GOALS-archive.md record (acceptance as achieved). Live-tier sweep:
G-131 Depends-on rewritten (the metakit arm now EXISTS - kithead step,
kithead.c/boot.tcl = the mk4 half of its detection; zipfs-backport open
items move there); G-130 both pending-tense sites updated (mk4 decided,
ix86 head = follow-on parity item 4); G-110 gains the measured
dll-from-vfs temp-copy fact; G-141/G-147 survey mentions gain achieved
markers; archived G-153 record+detail Scope path fixed (goals/ ->
goals/archive/, the sanctioned broken-path fix). xref report: no
unlinked pair loses its only bridge (annotated pairs are one-directional
with live links). goals_lint clean (82 active / 72 archived).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Increment 3 - the kit-head (opt-in suite step "kithead"):
- build_kithead86/kithead.c: static Mk4tcl+vfs registration, preinit
reading boot.tcl from the exe's own mk4 file, post-init main.tcl pivot
(kbskit kitInit.c reduced to the 8.6 mk4 case; the 8.6.18 headers have
no Tcl_StaticLibrary - stock tclAppInit.c's file-local compat define
mirrored).
- build_kithead86/boot.tcl: kbskit boot.tcl mk4-only/8.6-only (tclInit
override, raw mk::select hand-eval of vfsUtils/vfslib/mk4vfs, mount +
encoding remount, in-kit init.tcl, auto_path reset).
- tools/mk4kit_attach.tcl: setupvfs role under the suite dynamic shell
(mount rw, lib trees + lf-normalized boot.tcl, tclvfs scripts with the
pkgIndex vfs entry rewritten to "load {} vfs").
- build86.zig: kithead exe (core+reg/dde+stubs as tclsh86ts, two-anchor
tclAppInit overlay, engine+binding via build_mk4tcl86 pub lists, static
tclvfs w/ STATIC_BUILD); artifact bin/tclsh8.6.18-mk4-r1.exe; smoke
asserts info library INSIDE the exe. No rechan needed (vfslib memchan
rides 8.6 reflected channels).
Increment 4 - the demonstration (hermetic env, PATH=System32, bare dir):
- head boots with library inside itself on a Tcl-free path;
- the RUNNING head ran sdx and wrapped a SEPARATE COPY of itself
(self-mount rider as specified);
- the starpack runs main.tcl from inside, reads vfs data, loads a
kit-only package, and loads thread2813t.dll FROM the vfs (dll clause
measured, not inherited).
Goal detail: Progress 3+4, Assessment (four candidates vs the four kit
expectations), Decision (mk4 = the 8.6 container and punk86 default;
zipfs backport stays the recorded G-131 second arm), Follow-on-to-parity
list; Status -> achieved 2026-08-02. Archive move follows separately.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
sdx.kit runs under the suite-built tclsh86t with NO tclkit in the chain:
starkit 1.3.3 + vfs::mk4 1.10.1 resolve from the suite-installed
lib/vfs1.4.2 (tclvfs trunk ships both scripts - the fact the 2026-07-26
survey missed), Mk4tcl 2.4.9.8 is the increment-1 fork-built battery, and
the wrap surface is proven not just the launch: qwrap WROTE an mk4 kit,
lsk/unwrap read it back, and the wrapped kit itself runs under tclsh86t
mounted at its own path. Goal detail: sdx-section RESOLVED marker +
Progress increment 2 with follow-on items (make.tcl suite-shell rung;
-runtime path waits on the kit-capable head).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Land the ready-to-land fork records in both flows and build the mk4
candidate's loadable shape as a suite battery:
- sources.config: source metakit git (gitea jn/metakit) pinned at
6a92b479 (the G-153-verified tree); matching build.zig.zon .metakit
lazy record (url+hash re-verified live via zig fetch at landing).
- build_mk4tcl86/: new extension module (build_tclvfs86 conventions) -
engine static lib (q4_UNIV set, -fno-exceptions -fno-rtti) + Mk4tcl.dll
(mk4tcl.cpp + bundled mk4too.cpp, USE_TCL_STUBS + BUILD_Mk4tcl) against
the suite stub lib; package version parsed from the staged
Tcl_PkgProvide; installs lib/mk4tcl2.4.9.8/{Mk4tcl.dll,pkgIndex.tcl}.
- build86.zig: build-mk4tcl step + install hook, pkg_smoke gains Mk4tcl,
bootstrapMode source_dirs/recipe_items rows; suite.tcl required-source
+ staged recipe item lists; README deliverable + selection records.
- goal detail: Progress increment record with the verification transcript
facts.
VERIFIED: suite.tcl build -steps {install install-libraries smoke} clones
the fork from the record, builds the dll, and pkg_smoke reports
Mk4tcl:2.4.9.8 in BOTH shells (tclsh86t dynamic AND tclsh86ts static).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Flip G-101 (kit container strategy for zig-built Tcl 8.6 runtimes) to
active in both tiers per the user's activation instruction. SEQUENCING
prose updated to record the activation; goals_xref score re-run at
activation per the freshness rule - one new relationship recorded: a
Related: G-130 back-pointer (its ix86 runtimes are the second platform
the container decision must fit; G-153 delivered mk4 dual-arch).
goals_lint clean (83 active / 71 archived).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Stale 'unimplemented stub' parenthetical replaced with the achieved
dispatch semantics (c preferred, parity-tested pure-Tcl fallback
automatic, scan runs on any tclsh - G-070); the interim Context flag
noting the stale contract wording removed.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
punk::lib 0.6.0: tclparser_tcl stub replaced by delegation to
punk::tclparser; new tclparser_prefer (memoized auto c|tcl dispatch via
namespace-local parse aliases, forcible); tclscript_info and
tclword_to_scriptlist route through it; a+ -using debug puts commented
out (crashed plain tclsh); tclword_to_scriptlist PUNKARGS argdoc added.
New suites: tclparser_engine.test (20 oracle-verified pins + dispatch,
runs everywhere) and tclparser_parity.test (77-case recorded corpus +
range-walk + entry-point parity, capability-gated, oracle dir via
PUNK_TCLPARSER_ORACLE_DIR). 23/23 under tclsh 8.7a6 and 9.0.3; lib
subtree green (8.7 compat.test lpop failure proven pre-existing).
Real 8.6.13 (punksys kit): corpus parity clean; \xHH model corrected -
TIP 388 2-hex cap holds on 8.6 too, version-conditional removed from
the engine. Plain-tclsh fallback demo green both gens (auto_path
cleared): prefer->tcl, tclword_to_scriptlist correct incl nested
array-index command substitutions, output identical to the c path.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
New module punk::tclparser 0.1.0 (zero-dependency): parse
command/getstring/countnewline over byte-view scanning (modified utf-8),
same result shapes and error messages as the tclparser C library.
Deliberately does not provide package 'parser' (capability probe).
Parity vs fork oracle dlls: edge corpus 234 comparisons clean per gen;
recursive organic sweep over lib/args/ansi/textblock/tclparser sources =
50005 (Tcl 8.7a6) and 49928 (Tcl 9.0.3) command-parses, 0 fails, all
~330 error-parses per gen message-identical. Generation differences
modelled version-conditionally: \xHH 2-hex cap (8.7+), Tcl 9 bare '('
rejection in array indexes, Tcl 9 nested-brace ${name} scanning.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Activation freshness survey (goals_xref score G-070) found no new
overlaps; strong hit G-019 already Related in G-070 - reciprocal
back-pointer added to G-019 Notes. goals_lint clean (84 active / 70
archived).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Static-embed experiment (untracked build86_mk4embed.zig variant in the
suite _build staging, preserved at TEMP_REFERENCE/metakit-mk4embed/):
tclsh86ts-mk4.exe = kit-class static shell + engine + Mk4tcl + mk4too
via Tcl_StaticLibrary registration; increment-4 smoke transcript passes
identically; import table measured IDENTICAL to stock (zero new dll
deps from C++ embed - G-130 prediction now measured). Acceptance
resolution recorded at fork pin 6a92b479; remaining list EMPTY; Status
flipped achieved 2026-08-02. Archive move + index swap + reference
sweep follow in the companion commit (pure-rename discipline).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Content-identical move per the Doc Restructures rule; all flip content
edits landed in the adjacent previous commit (8683fe70).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
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
metakit_punk pushed by user; origin/master verified == local ==
6a92b479 (all increment-1..4 verifications ran at exactly this tree).
zig 0.16.0 package hash computed for the gitea archive pin; the
sources.config and build.zig.zon READY-TO-LAND records in Notes are now
concrete (landing them stays G-101-era consumption per Scope).
Remaining for acceptance: static-embed shape only.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Acceptance parenthetical amended eight -> nine patches per user
approval; Notes inventory updated to the completed-audit state.
Increment 4 (metakit_punk a714cda/fbbeaf3/6a92b47): binding ported
byte-identical + single own-commit fork edit (univ.h include); 'zig
build mk4tcl' stubs-linked dll vs the suite tcl pin (lazy zon dep +
-Dtcl-src both verified); tclsh86t 8.6.18 smoke transcript recorded
(package require 2.4.9.8 + mk::file round trip + mk4too surface +
read-back) - PLUS the ix86 dll passing the same smoke under the luck
8.6.10 win32-ix86 shell. Version policy recorded: package provide
stays 2.4.9.8, fork versions the repo. Remaining: static-embed shape,
pin capture (push pending).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
G-154 (proposed): fork-as-upstream tclparser build lane at
c:/repo/jn/tclparser_punk - tcltk-depot parser 1.9 porting baseline
with the aspect chiselapp fossil lineage as a second byte-frozen
snapshot, dual-generation stubs dlls (tcl9tclparser19.dll /
tclparser19t.dll) dual-arch under the pinned zig 0.16.0, upstream
114-case testsuite gate. Seed increment verified green 2026-08-02
(fork commits 7c18555 + 16d2f46): builds via suite-matching lazy zon
tcl pins AND standalone, dual step, gate transcript Total 114
Passed 112 Skipped 2 Failed 0 both generations. Detail file carries
the upstream-landscape survey, draft suite consumption records, and
remaining acceptance items (push+pin, kit-shell load transcript).
G-070: Scope (both tiers), Acceptance reference clause and Context
repointed from the never-materialised TEMP_REFERENCE tclparser tree
to the fork repo (snapshots + dll oracle + corpus seed); Related
note to G-154 added.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
metakit_punk 07ca657 + e8ae8a3. All nine KitCreator mk4tcl patches
dispositioned vs the 2.4.9.8 baseline (table in the fork's
src/reference/AGENTS.md): zero to port - live lineages already
absorbed, compilewithcvs superseded (CONST86 + guarded
Tcl_GetErrorLine), three autoconf rejects. Count correction flagged:
the set is nine, not the Acceptance parenthetical's eight (audited
superset; wording amendment is a user call). mk4too decision recorded
(user): the fork Mk4tcl dll bundles mk4too - both upstream builds do,
oomk depends on the surface, and mk4tcl.cpp does not even link without
it (unguarded MkView in mk::view open/new). oomk 0.3.5 wayback-
recovered (final 2008-2018 artifact) and vendored as fork consumer
reference. Remaining: Mk4tcl dll + smoke, static-embed, pin capture.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
metakit_punk 07ca657: all nine KitCreator mk4tcl patches dispositioned
vs the 2.4.9.8 baseline (table in the fork's src/reference/AGENTS.md);
zero to port - live lineages already absorbed, compilewithcvs
superseded, three autoconf rejects. Count correction flagged: the set
is nine, not the eight in the Acceptance parenthetical (audited
superset; wording amendment is a user call). Second mk4too-bundling
data point (KitCreator matches upstream CMake) recorded for the dll
milestone. Remaining: Mk4tcl dll + smoke, static-embed, pin capture.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com