From 197f55f1b212ff4c161e3c84dbffe20afd617657 Mon Sep 17 00:00:00 2001 From: Julian Noble Date: Wed, 22 Jul 2026 12:53:22 +1000 Subject: [PATCH] punk-runtime list -remote: local column uses the shared candidate filter (ps1) The powershell payload's list -remote built its local-file dict with an older inline filter (only .txt/.tm excluded), so active.toml, artifact metadata tomls and stray .log files showed as local runtimes in the server comparison. Now routed through Get-PunkRuntimeCandidates - the same filter 'list'/'use' use (directories, *_BUILDCOPY*, .txt/.toml/ .tm/.tmp/.log excluded) and the bash payload's -remote loop already used (list_candidates). Verified against the LIVE pushed punkbin: no toml/log leakage, comparison rows correct; 'platforms -remote' also live-verified over the network (all five served platforms). Rewrapped; roundtrip pin PASS; layout copy + .ps1 twin refreshed. Project 0.18.3. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com --- CHANGELOG.md | 4 ++++ bin/punk-runtime.cmd | 7 ++++++- punkproject.toml | 2 +- .../vendor/punk/project-0.1/bin/punk-runtime.cmd | 7 ++++++- src/scriptapps/bin/punk-runtime.ps1 | 7 ++++++- 5 files changed, 23 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4387ea71..5ac0891e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ The latest `## [X.Y.Z]` header must match the `version` field in `punkproject.to Entries are newest-first; one bullet per notable change. See the root `AGENTS.md` "Project Versioning" section for the bump policy. +## [0.18.3] - 2026-07-22 + +- `bin/punk-runtime.cmd` `list -remote` (powershell payload): the local column now uses the shared runtime-candidate filter, so `active.toml`, artifact metadata tomls, stray `.log` files, `.tmp`/build copies and directories no longer appear as local runtimes in the server comparison (bash payload already filtered). + ## [0.18.2] - 2026-07-22 - `bin/punk-runtime.cmd`: new `platforms ?-remote?` action - lists local `bin/runtime/*` platform folders (local platform marked), or the platforms the artifact server serves via the server's new root-level `platforms.txt` discovery manifest (raw-file servers have no directory listing; the manifest is now part of the punkbin layout contract, generated by punkbin's maintenance script, and third-party mirrors using the layout carry the same file). Local presence marked, cached-copy fallback, actionable message for pre-convention servers. diff --git a/bin/punk-runtime.cmd b/bin/punk-runtime.cmd index 72a3cadc..93b076e1 100755 --- a/bin/punk-runtime.cmd +++ b/bin/punk-runtime.cmd @@ -2915,7 +2915,12 @@ function psmain { $localdict = @{} if (test-path -Path $archfolder -Type Container) { - $dircontents = (get-childItem -Path $archfolder -File | Where-object Name -Notlike '*_BUILDCOPY.*' | Where-object {-not ($(".txt",".tm") -contains $_.Extension) }) + #shared candidate filter (bash payload parity - its -remote loop + #already uses list_candidates): excludes directories, build + #copies and .txt/.toml/.tm/.tmp/.log support files, so + #active.toml / metadata tomls / stray logs never show as + #local runtimes in the comparison + $dircontents = Get-PunkRuntimeCandidates $archfolder foreach ($f in $dircontents) { $local_sha1 = Get-FileHash -Path $(${f}.FullName) -Algorithm SHA1 $localdict[$f.Name] = ${local_sha1}.Hash diff --git a/punkproject.toml b/punkproject.toml index d88e31ae..b9f45fdb 100644 --- a/punkproject.toml +++ b/punkproject.toml @@ -1,4 +1,4 @@ [project] name = "punkshell" -version = "0.18.2" +version = "0.18.3" license = "BSD-2-Clause" diff --git a/src/project_layouts/vendor/punk/project-0.1/bin/punk-runtime.cmd b/src/project_layouts/vendor/punk/project-0.1/bin/punk-runtime.cmd index 72a3cadc..93b076e1 100644 --- a/src/project_layouts/vendor/punk/project-0.1/bin/punk-runtime.cmd +++ b/src/project_layouts/vendor/punk/project-0.1/bin/punk-runtime.cmd @@ -2915,7 +2915,12 @@ function psmain { $localdict = @{} if (test-path -Path $archfolder -Type Container) { - $dircontents = (get-childItem -Path $archfolder -File | Where-object Name -Notlike '*_BUILDCOPY.*' | Where-object {-not ($(".txt",".tm") -contains $_.Extension) }) + #shared candidate filter (bash payload parity - its -remote loop + #already uses list_candidates): excludes directories, build + #copies and .txt/.toml/.tm/.tmp/.log support files, so + #active.toml / metadata tomls / stray logs never show as + #local runtimes in the comparison + $dircontents = Get-PunkRuntimeCandidates $archfolder foreach ($f in $dircontents) { $local_sha1 = Get-FileHash -Path $(${f}.FullName) -Algorithm SHA1 $localdict[$f.Name] = ${local_sha1}.Hash diff --git a/src/scriptapps/bin/punk-runtime.ps1 b/src/scriptapps/bin/punk-runtime.ps1 index 552312d5..812f42e0 100644 --- a/src/scriptapps/bin/punk-runtime.ps1 +++ b/src/scriptapps/bin/punk-runtime.ps1 @@ -667,7 +667,12 @@ function psmain { $localdict = @{} if (test-path -Path $archfolder -Type Container) { - $dircontents = (get-childItem -Path $archfolder -File | Where-object Name -Notlike '*_BUILDCOPY.*' | Where-object {-not ($(".txt",".tm") -contains $_.Extension) }) + #shared candidate filter (bash payload parity - its -remote loop + #already uses list_candidates): excludes directories, build + #copies and .txt/.toml/.tm/.tmp/.log support files, so + #active.toml / metadata tomls / stray logs never show as + #local runtimes in the comparison + $dircontents = Get-PunkRuntimeCandidates $archfolder foreach ($f in $dircontents) { $local_sha1 = Get-FileHash -Path $(${f}.FullName) -Algorithm SHA1 $localdict[$f.Name] = ${local_sha1}.Hash