From bdc2737586a6a2841c9d745560f916d89a482bc5 Mon Sep 17 00:00:00 2001 From: Julian Noble Date: Sun, 2 Aug 2026 18:25:29 +1000 Subject: [PATCH] G-031: activate (status proposed -> active) Contract extension approved earlier today (guidance deliverables, runtime-queryable boot-core moduledoc, startup-script collision gate); work begins with the collision-gate increment. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com --- GOALS.md | 2 +- goals/G-031-componentized-kit-boot.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/GOALS.md b/GOALS.md index 42afb639..547ffdb6 100644 --- a/GOALS.md +++ b/GOALS.md @@ -173,7 +173,7 @@ Detail: goals/G-028-file-locker-identification.md Scope: src/make.tcl (test-module packaging step); src/tests/ (source of truth); src/modules/test/ (generated #modpod targets); src/modules/punk/mix/ (modpod tooling as needed) Detail: goals/G-029-testmodules-from-srctests.md -### G-031 [proposed] Componentized kit boot: thin project-owned main + shared layout-owned boot core +### G-031 [active] Componentized kit boot: thin project-owned main + shared layout-owned boot core 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) Detail: goals/G-031-componentized-kit-boot.md diff --git a/goals/G-031-componentized-kit-boot.md b/goals/G-031-componentized-kit-boot.md index 9457e6b8..e241b5cb 100644 --- a/goals/G-031-componentized-kit-boot.md +++ b/goals/G-031-componentized-kit-boot.md @@ -1,6 +1,6 @@ # G-031 Componentized kit boot: thin project-owned main + shared layout-owned boot core -Status: proposed +Status: active 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/_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.