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
Scope: src/vfs/_config/ (punk_main.tcl, project_main.tcl restructure); src/vfs/_vfscommon.vfs (boot core delivery); src/project_layouts/ (thin-main skeleton, via established sync channels)
Goal: the per-project vfs main script becomes a thin project-owned file - declare the application's subcommands and launch defaults at clearly commented customization points, then hand over to a shared layout-owned boot core (vfs mounts, package modes and paths, libunknown, src-mode modpod registration) and default dispatch pulled in from within the kit - so project developers add app-specific subcommands without wading through or forking ~1000 lines of boot boilerplate, and boot improvements reach derived projects as pull-updatable payload instead of dying in vintage forks (tomlish_main.tcl: ~20 custom lines carrying a stale 500-line 2025 copy of the rest).
Acceptance: punkshell's own kits boot through a thin main plus shared boot core with behaviour parity - package modes including src mode, existing tclsh/shellspy/punk/shell/script dispatch semantics, and supported vfs types (zipfs/metakit/cookfs) all unchanged; a project-specific subcommand is added by editing only the thin main at a commented customization point (proven end-to-end in a derived project - tomlish replacing its forked main is the natural first); the boot core ships as layout-owned payload (via _vfscommon/layout channels) and the thin main as a project-owned skeleton, per the G-027 ownership classification; the boot core is versioned/identifiable so a kit can report which boot-core vintage it carries (ties to G-025 stamping).
Scope: src/vfs/_config/ (punk_main.tcl, project_main.tcl restructure); src/vfs/_vfscommon.vfs (boot core delivery); src/project_layouts/ (thin-main skeleton + README guidance, via established sync channels); src/vfs/README.md (boot-entry guidance); src/modules/punk/args/moduledoc/ (boot-core API moduledoc); src/make.tcl (startup-script collision gate)
Goal: the per-project vfs main script becomes a thin project-owned file - declare the application's subcommands and launch defaults at clearly commented customization points, then hand over to a shared layout-owned boot core (vfs mounts, package modes and paths, libunknown, src-mode modpod registration) and default dispatch pulled in from within the kit - so project developers add app-specific subcommands without wading through or forking ~1000 lines of boot boilerplate, and boot improvements reach derived projects as pull-updatable payload instead of dying in vintage forks (tomlish_main.tcl: ~20 custom lines carrying a stale 500-line 2025 copy of the rest). The boot surface an application developer writes against is documented at the point of use (commented thin main, src/vfs README boot-entry guidance) and runtime-queryable from any kit carrying the boot core.
Acceptance: punkshell's own kits boot through a thin main plus shared boot core with behaviour parity - package modes including src mode, existing tclsh/shellspy/punk/shell/script dispatch semantics, and supported vfs types (zipfs/metakit/cookfs) all unchanged; a project-specific subcommand is added by editing only the thin main at a commented customization point (proven end-to-end in a derived project - tomlish replacing its forked main is the natural first); the boot core ships as layout-owned payload (via _vfscommon/layout channels) and the thin main as a project-owned skeleton, per the G-027 ownership classification; the boot core is versioned/identifiable so a kit can report which boot-core vintage it carries (ties to G-025 stamping); developer guidance ships with the split - project_main.tcl is reborn as the heavily commented thin-main sample (its monolith vintage retired) and src/vfs/README.md (repo and project-0.1 layout copies, via the established sync channels) gains a boot-entry section covering the recommended _config/<name>_main.tcl-behind-the-fauxlink path, the supported plain root main.tcl alternative, the inertness of unreferenced _config files, and the one-startup-script rule; the boot-core API is runtime-queryable - a punk::args::moduledoc package (sibling of moduledoc::punkexe) documenting the thin-main contract and the post-boot ::punkboot surface ships via _vfscommon, so a kit answers boot-API queries the same way it answers launch-surface queries today; bake refuses to build a kit whose source .vfs carries both a root main.tcl and a root fauxlink resolving to main.tcl (per-kit refusal naming both files, other kits proceed), replacing today's silent traversal-order-dependent outcome, with the check unit-covered.
## Context
@ -52,6 +52,19 @@ permanently own - a thousand lines of boot code.
in. Default-subcommand and no-args behaviour are declared, not hardcoded
(a shell-like default remains the punkshell behaviour; a tool-like default
such as tomlish's -help injection becomes a declared choice).
- Documentation delivery: the thin main IS the primary sample - project_main.tcl
reborn with heavily commented customization points, retiring its 901-line