From a39c63d11394d46ca3468e509d2f5f054c19776e Mon Sep 17 00:00:00 2001 From: Julian Noble Date: Sun, 2 Aug 2026 21:26:00 +1000 Subject: [PATCH] G-031 outputs: core 0.2.1 delivered (vfscommon), modpod mirror + templates repack promoted Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com --- .../modules/punk/mix/templates-0.2.0.tm | Bin 363525 -> 364797 bytes .../src/vfs/_config/punkboot_core.tcl | 77 ++++++++++++++++-- .../src/vfs/_vfscommon.vfs/punkboot/core.tcl | 77 ++++++++++++++++-- .../modules/punk/mix/templates-0.2.0.tm | Bin 363525 -> 364797 bytes src/vfs/_vfscommon.vfs/punkboot/core.tcl | 28 +++++-- 5 files changed, 160 insertions(+), 22 deletions(-) diff --git a/src/bootsupport/modules/punk/mix/templates-0.2.0.tm b/src/bootsupport/modules/punk/mix/templates-0.2.0.tm index 60c18fad1c8ee6228921ef7f26ea93e31c49ec3b..1db630caf3dc107fc95ce6638172e770a157c43e 100644 GIT binary patch delta 45048 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 diff --git a/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/vfs/_config/punkboot_core.tcl b/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/vfs/_config/punkboot_core.tcl index 2140eaf9..41e20475 100644 --- a/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/vfs/_config/punkboot_core.tcl +++ b/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/vfs/_config/punkboot_core.tcl @@ -40,8 +40,9 @@ #core also boots a kit when sourced directly as its main.tcl. # ------------------------------------------------------------------------------ namespace eval ::punkboot { - #boot-core identity (G-031; G-025 stamping is the planned reporting vehicle) - variable core_version 0.1.0 + #boot-core identity (G-031; stamped into kits + reported by the G-025 + #buildinfo surfaces) + variable core_version 0.2.1 } if {![info exists ::punkboot::launch_args]} { namespace eval ::punkboot [list variable launch_args $::argv] @@ -1479,6 +1480,35 @@ if {![info exists ::punkboot::launch_defaults]} { catch {package require __src_mode_tm_scan__} } + #--------------------------------------------------------------- + #Boot running-state surface (G-031 registration model - the single boot + #"running state" surface G-089 anticipated). Post-boot consumers (e.g + #punk::buildinfo, scriptlib resolution) read facts the boot derived + #instead of re-deriving or guessing. Dict keys: core_version, main_script, + #package_modes, proj_scope, proj_root, kit_payload_base, and (src mode + #only) src_project_root. + #--------------------------------------------------------------- + set boot_payload_base "" + if {$zipkit_mountbase ne ""} { + set boot_payload_base $zipkit_mountbase + } elseif {[info exists ::tcl::kitpath] && $::tcl::kitpath ne ""} { + set boot_payload_base $::tcl::kitpath + } elseif {$has_cookfs_attached} { + set boot_payload_base $cookbase + } + set boot_state_dict [dict create \ + core_version $::punkboot::core_version \ + main_script $::punkboot::main_script \ + package_modes $package_modes \ + proj_scope $proj_scope \ + proj_root $proj_root \ + kit_payload_base $boot_payload_base \ + ] + if {[info exists src_project_root]} { + dict set boot_state_dict src_project_root $src_project_root + } + namespace eval ::punkboot [list variable boot_state $boot_state_dict] + #--------------------------------------------------------------- #Subcommand selection (G-031 registration model) #Built-ins (tclsh/shellspy/punk/shell/script) ship with this core; a thin @@ -1492,7 +1522,7 @@ if {![info exists ::punkboot::launch_defaults]} { # script invocation (default), or the name of a known # subcommand to receive the whole arglist as its arguments #--------------------------------------------------------------- - set builtin_subcommands [list tclsh shellspy punk shell script] + set builtin_subcommands [list tclsh shellspy punk shell script buildinfo] set known_subcommands $builtin_subcommands foreach k [dict keys $::punkboot::project_subcommands] { if {$k in $builtin_subcommands} { @@ -1633,7 +1663,11 @@ if {![info exists ::punkboot::launch_defaults]} { } shellspy { #pass through to shellspy commandline processor - package require app-shellspy + #graceful when a derived kit does not carry the app package (0.2.1) + if {[catch {package require app-shellspy} errM]} { + puts stderr "shellspy: this kit does not carry the app-shellspy package ($errM)" + exit 1 + } } punk { #The punk executable must also support running commands piped into stdin. @@ -1649,10 +1683,16 @@ if {![info exists ::punkboot::launch_defaults]} { if {[llength $subcommand_arglist]} { #puts stdout "main.tcl launching app-punkshell with args: $subcommand_arglist" - package require app-punkshell + if {[catch {package require app-punkshell} errM]} { + puts stderr "punk: this kit does not carry the app-punkshell package ($errM)" + exit 1 + } } else { #punk interactive shell - package require app-repl + if {[catch {package require app-repl} errM]} { + puts stderr "punk: this kit does not carry the app-repl package ($errM)" + exit 1 + } } } script { @@ -1661,12 +1701,18 @@ if {![info exists ::punkboot::launch_defaults]} { #no shellfilter stacks/transforms, no interactive fallback, honest exit codes. #The launch plumbing must emit nothing on stdout/stderr (exec-style callers). set ::tcl_interactive 0 - package require app-punkscript + if {[catch {package require app-punkscript} errM]} { + puts stderr "script: this kit does not carry the app-punkscript package ($errM)" + exit 1 + } } shell { #app-punkshell supports running a script and maintaining an interactive shell afterwards # or just launching an interactive shell if no script is specified - package require app-punkshell + if {[catch {package require app-punkshell} errM]} { + puts stderr "shell: this kit does not carry the app-punkshell package ($errM)" + exit 1 + } #if {[llength $subcommand_arglist]} { # #run script and maintain interactive shell. # package require app-punkshell @@ -1675,6 +1721,21 @@ if {![info exists ::punkboot::launch_defaults]} { # package require app-repl #} } + buildinfo { + #G-025: machine-parseable build/identity report. The single + #implementation is punk::buildinfo - this arm is the thin + #exe-subcommand wrapper. Stdout carries only the report; honest + #exit code; no repl fallthrough (G-015-compatible). + if {[llength $subcommand_arglist]} { + puts stderr "buildinfo: takes no arguments" + exit 2 + } + if {[catch {package require punk::buildinfo} errM]} { + puts stderr "buildinfo: the punk::buildinfo module is not available in this kit/context ($errM)" + exit 1 + } + exit [punk::buildinfo::main] + } default { #a project-declared subcommand (thin-main customization point): the #handler script runs in this frame, ::argv/::argc already hold the diff --git a/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/vfs/_vfscommon.vfs/punkboot/core.tcl b/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/vfs/_vfscommon.vfs/punkboot/core.tcl index 2140eaf9..41e20475 100644 --- a/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/vfs/_vfscommon.vfs/punkboot/core.tcl +++ b/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/vfs/_vfscommon.vfs/punkboot/core.tcl @@ -40,8 +40,9 @@ #core also boots a kit when sourced directly as its main.tcl. # ------------------------------------------------------------------------------ namespace eval ::punkboot { - #boot-core identity (G-031; G-025 stamping is the planned reporting vehicle) - variable core_version 0.1.0 + #boot-core identity (G-031; stamped into kits + reported by the G-025 + #buildinfo surfaces) + variable core_version 0.2.1 } if {![info exists ::punkboot::launch_args]} { namespace eval ::punkboot [list variable launch_args $::argv] @@ -1479,6 +1480,35 @@ if {![info exists ::punkboot::launch_defaults]} { catch {package require __src_mode_tm_scan__} } + #--------------------------------------------------------------- + #Boot running-state surface (G-031 registration model - the single boot + #"running state" surface G-089 anticipated). Post-boot consumers (e.g + #punk::buildinfo, scriptlib resolution) read facts the boot derived + #instead of re-deriving or guessing. Dict keys: core_version, main_script, + #package_modes, proj_scope, proj_root, kit_payload_base, and (src mode + #only) src_project_root. + #--------------------------------------------------------------- + set boot_payload_base "" + if {$zipkit_mountbase ne ""} { + set boot_payload_base $zipkit_mountbase + } elseif {[info exists ::tcl::kitpath] && $::tcl::kitpath ne ""} { + set boot_payload_base $::tcl::kitpath + } elseif {$has_cookfs_attached} { + set boot_payload_base $cookbase + } + set boot_state_dict [dict create \ + core_version $::punkboot::core_version \ + main_script $::punkboot::main_script \ + package_modes $package_modes \ + proj_scope $proj_scope \ + proj_root $proj_root \ + kit_payload_base $boot_payload_base \ + ] + if {[info exists src_project_root]} { + dict set boot_state_dict src_project_root $src_project_root + } + namespace eval ::punkboot [list variable boot_state $boot_state_dict] + #--------------------------------------------------------------- #Subcommand selection (G-031 registration model) #Built-ins (tclsh/shellspy/punk/shell/script) ship with this core; a thin @@ -1492,7 +1522,7 @@ if {![info exists ::punkboot::launch_defaults]} { # script invocation (default), or the name of a known # subcommand to receive the whole arglist as its arguments #--------------------------------------------------------------- - set builtin_subcommands [list tclsh shellspy punk shell script] + set builtin_subcommands [list tclsh shellspy punk shell script buildinfo] set known_subcommands $builtin_subcommands foreach k [dict keys $::punkboot::project_subcommands] { if {$k in $builtin_subcommands} { @@ -1633,7 +1663,11 @@ if {![info exists ::punkboot::launch_defaults]} { } shellspy { #pass through to shellspy commandline processor - package require app-shellspy + #graceful when a derived kit does not carry the app package (0.2.1) + if {[catch {package require app-shellspy} errM]} { + puts stderr "shellspy: this kit does not carry the app-shellspy package ($errM)" + exit 1 + } } punk { #The punk executable must also support running commands piped into stdin. @@ -1649,10 +1683,16 @@ if {![info exists ::punkboot::launch_defaults]} { if {[llength $subcommand_arglist]} { #puts stdout "main.tcl launching app-punkshell with args: $subcommand_arglist" - package require app-punkshell + if {[catch {package require app-punkshell} errM]} { + puts stderr "punk: this kit does not carry the app-punkshell package ($errM)" + exit 1 + } } else { #punk interactive shell - package require app-repl + if {[catch {package require app-repl} errM]} { + puts stderr "punk: this kit does not carry the app-repl package ($errM)" + exit 1 + } } } script { @@ -1661,12 +1701,18 @@ if {![info exists ::punkboot::launch_defaults]} { #no shellfilter stacks/transforms, no interactive fallback, honest exit codes. #The launch plumbing must emit nothing on stdout/stderr (exec-style callers). set ::tcl_interactive 0 - package require app-punkscript + if {[catch {package require app-punkscript} errM]} { + puts stderr "script: this kit does not carry the app-punkscript package ($errM)" + exit 1 + } } shell { #app-punkshell supports running a script and maintaining an interactive shell afterwards # or just launching an interactive shell if no script is specified - package require app-punkshell + if {[catch {package require app-punkshell} errM]} { + puts stderr "shell: this kit does not carry the app-punkshell package ($errM)" + exit 1 + } #if {[llength $subcommand_arglist]} { # #run script and maintain interactive shell. # package require app-punkshell @@ -1675,6 +1721,21 @@ if {![info exists ::punkboot::launch_defaults]} { # package require app-repl #} } + buildinfo { + #G-025: machine-parseable build/identity report. The single + #implementation is punk::buildinfo - this arm is the thin + #exe-subcommand wrapper. Stdout carries only the report; honest + #exit code; no repl fallthrough (G-015-compatible). + if {[llength $subcommand_arglist]} { + puts stderr "buildinfo: takes no arguments" + exit 2 + } + if {[catch {package require punk::buildinfo} errM]} { + puts stderr "buildinfo: the punk::buildinfo module is not available in this kit/context ($errM)" + exit 1 + } + exit [punk::buildinfo::main] + } default { #a project-declared subcommand (thin-main customization point): the #handler script runs in this frame, ::argv/::argc already hold the diff --git a/src/vfs/_vfscommon.vfs/modules/punk/mix/templates-0.2.0.tm b/src/vfs/_vfscommon.vfs/modules/punk/mix/templates-0.2.0.tm index 60c18fad1c8ee6228921ef7f26ea93e31c49ec3b..1db630caf3dc107fc95ce6638172e770a157c43e 100644 GIT binary patch delta 45048 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 diff --git a/src/vfs/_vfscommon.vfs/punkboot/core.tcl b/src/vfs/_vfscommon.vfs/punkboot/core.tcl index 98151603..41e20475 100644 --- a/src/vfs/_vfscommon.vfs/punkboot/core.tcl +++ b/src/vfs/_vfscommon.vfs/punkboot/core.tcl @@ -42,7 +42,7 @@ namespace eval ::punkboot { #boot-core identity (G-031; stamped into kits + reported by the G-025 #buildinfo surfaces) - variable core_version 0.2.0 + variable core_version 0.2.1 } if {![info exists ::punkboot::launch_args]} { namespace eval ::punkboot [list variable launch_args $::argv] @@ -1663,7 +1663,11 @@ if {![info exists ::punkboot::launch_defaults]} { } shellspy { #pass through to shellspy commandline processor - package require app-shellspy + #graceful when a derived kit does not carry the app package (0.2.1) + if {[catch {package require app-shellspy} errM]} { + puts stderr "shellspy: this kit does not carry the app-shellspy package ($errM)" + exit 1 + } } punk { #The punk executable must also support running commands piped into stdin. @@ -1679,10 +1683,16 @@ if {![info exists ::punkboot::launch_defaults]} { if {[llength $subcommand_arglist]} { #puts stdout "main.tcl launching app-punkshell with args: $subcommand_arglist" - package require app-punkshell + if {[catch {package require app-punkshell} errM]} { + puts stderr "punk: this kit does not carry the app-punkshell package ($errM)" + exit 1 + } } else { #punk interactive shell - package require app-repl + if {[catch {package require app-repl} errM]} { + puts stderr "punk: this kit does not carry the app-repl package ($errM)" + exit 1 + } } } script { @@ -1691,12 +1701,18 @@ if {![info exists ::punkboot::launch_defaults]} { #no shellfilter stacks/transforms, no interactive fallback, honest exit codes. #The launch plumbing must emit nothing on stdout/stderr (exec-style callers). set ::tcl_interactive 0 - package require app-punkscript + if {[catch {package require app-punkscript} errM]} { + puts stderr "script: this kit does not carry the app-punkscript package ($errM)" + exit 1 + } } shell { #app-punkshell supports running a script and maintaining an interactive shell afterwards # or just launching an interactive shell if no script is specified - package require app-punkshell + if {[catch {package require app-punkshell} errM]} { + puts stderr "shell: this kit does not carry the app-punkshell package ($errM)" + exit 1 + } #if {[llength $subcommand_arglist]} { # #run script and maintain interactive shell. # package require app-punkshell