Tree:
2ce3edc390
master
v0.1a
${ noResults }
5 Commits (2ce3edc3905f8e6ba52396e6aee3431e4e636ce8)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
2ce3edc390 |
punk-runtime: 'platforms ?-remote?' action - server platform discovery via punkbin platforms.txt
Raw-file artifact servers have no directory listing, so served-platform
discovery rides a root-level platforms.txt manifest, now part of the
punkbin layout contract (generated by punkbin's src/build_sha1sums.tcl;
committed in punkbin locally - 7b8a244 - push remains the maintainer's
call; third-party mirrors using the layout carry the same file).
Both payloads in parity (rewrapped; roundtrip pin PASS; layout copy +
.ps1 twin refreshed): 'platforms' lists local bin/runtime/* folders with
the local platform marked; 'platforms -remote' fetches the manifest
(cached-copy fallback), marks local platform / local-dir presence /
local-only dirs, and points at 'list -remote -platform <name>' for
per-platform runtimes. Servers without the manifest get an actionable
message naming the -platform escape hatch and the canon reference
('help platforms'). Verified end-to-end through the wrapped cmd against
a file:// mirror simulation of the local punkbin checkout, including the
no-manifest fallback path. Project 0.18.2.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
|
1 week ago |
|
|
cae9f36d3e |
Canonical punkshell platform names: punk::platform module, help topic, tree sync (G-105 groundwork)
Survey outcome (punkbin vs punkshell platform folders): five naming sites had drifted - punkbin folders, bin/runtime, vendorlib_tclX dirs, the punkboot platform_generic snips (an old platform::generic copy), and the Tcl platform package itself whose outputs vary by version (1.1.x renamed modern macOS to 'macos', aarch64/amd64 pass through unmapped). Canon: <os>-<cpu> punkshell platform-dir names, cpu normalized amd64->x86_64 and aarch64->arm64 (arm = 32-bit; on macosx arm folds to arm64 - Apple silicon is 64-bit only), os macos->macosx. The universal 'macosx' name is the runtime-tier convention (punkbin + bin/runtime keep one macOS folder, per make.tcl's existing collapse); per-arch macosx-x86_64/macosx-arm64 serve the lib tier. - new module punk::platform 0.1.0: platforms (canonical records with status supported/dormant/recognized + tiers), normalize, local ?-tier lib|runtime? - full PUNKARGS argdocs. Tcl's platform package stays the raw identifier underneath. - punk 0.2.7: 'help platforms' topic (alias 'platform'; all prefixes mutually ambiguous so they fall through to command lookup, per the env/environment precedent) - canon table with the local interpreter marked and raw platform-package identifiers for comparison. - boot: punkboot platform_punk (inline normalization copy, sync-comment contract with the module) in punk_main.tcl/project_main.tcl/make.tcl; all platform-dir call sites switched to it. make.tcl exercised live; main.tcl copies brace-verified. - vendorlib_tcl8/9 synchronized to canon: freebsd-amd64 -> freebsd-x86_64 (READMEs updated), freebsd-arm64/linux-arm64/macosx-arm64 added, tcl8's untracked-empty linux-arm now tracked + tcl9 gains linux-arm, stray untracked macosx-arm empties removed, msys-x86_64 marked dormant pending a utility decision, top-level READMEs state the canon contract. - punk-runtime bash prongs emit canonical names: aarch64 -> linux-arm64 (no fetch default until punkbin carries that folder), arch-aware freebsd/openbsd/netbsd/dragonflybsd via normalized cpu tokens. Rewrapped; roundtrip pin PASS; layout copy + .ps1 twin refreshed. Flagged for user decisions (recorded in G-105 Notes): punkbin linux-arm holds an arm64-named kit (recommend linux-arm64 folder at next arm publish; artifacts immutable), msys-x86_64 disposition, optional platform-1.1.x re-vendor, src/vfs stays mapvfs-categorized (recommend a mapvfs platform column when cross-wraps land, not a .vfs tree restructure). Project 0.18.0. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
1 week ago |
|
|
d3bfc4484c |
G-103/G-105 groundwork: punk-runtime -platform surface, help action, no-args usage
Cross-build staging surface (both payloads in parity, rewrapped polyglot, layout copy + .ps1 twin refreshed, roundtrip pin PASS): - fetch/list/use accept -platform <p> (punkbin platform-DIR names, never zig triples); resolution: -platform arg > PUNK_RUNTIME_PLATFORM env > detected local platform; shape-only lowercase validation (server URL paths are case-sensitive - ps1 uses -cnotmatch; default -notmatch is case-insensitive and passed Win32-X86_64-class typos in testing). - foreign fetch requires an explicit runtime name (fetch defaults only make sense for the platform you stand on). - use -platform manages that folder's active.toml/materialization - the marker travels with the folder when deployed (provisioning story; unix exec bits restored at deploy time). - list flags !TARGET-MISMATCH when a runtime's metadata target disagrees with the folder it sits in (cross-fetch misfiling guard). - run stays LOCAL ONLY: rejects a leading -platform, ignores the env override, later args pass through to the runtime untouched. - new 'help' action (actions, options, env vars, examples) and a real usage block on no-args invocation (was a bare action list). - bash FreeBSD platform dir aligned to punkbin's actual freebsd-x86_64 (was freebsd-amd64; the G-105 platform-dir naming-alignment item). Verified on both payloads directly and through the wrapped cmd: noargs, help, local list unchanged, foreign use-materialization + mismatch flags, foreign-fetch refusal, run guard, env override (and run's immunity to it), bad-name validation. Project 0.17.9. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
1 week ago |
|
|
61cf903dd9 |
G-103: punk-runtime list/use surface artifact metadata; use materializes -rN artifacts
Scriptset extension (ps1 + bash payloads in parity, rewrapped polyglot, layout-shipped copy + untracked .ps1 twin refreshed, roundtrip pin PASS): - list: per-runtime summary parsed from the <rootname>.toml metadata record beside each runtime (variant, tcl patchlevel, revision, piperepl on/off, from=<artifact> on materialized working copies). - use <artifact-r<N>-name>: materializes the immutable artifact into its WORKING name (minus -r<N>) with the metadata toml copied alongside, then selects it - the G-103 naming decision's artifact->working mapping, so republishing never churns consumers. use <workingname> unchanged. - fetch of -r<N> artifacts also retrieves the metadata toml from punkbin (absence tolerated for pre-family runtimes). - rootname handling strips only .exe (dotted patchlevels break last-dot stripping for extensionless unix names); same exe_split fix applied to family_artifacts.tcl artifact/toml naming for the G-105 cross-target future. Candidate listing excludes directories and .log files (parity cleanup; bash side previously listed directories). Verified on the wrapped bin/punk-runtime.cmd (powershell 5 branch) and the bash payload under git-bash: all three family members materialized from their -r1 artifacts with metadata shown in list, and 'punk-runtime run' launched the active punk family runtime (9.0.5, piperepl machinery, //zipfs:/app/tcl_library). Project 0.17.7. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
1 week ago |
|
|
099ac699e3 |
G-097: bin utility naming sweep - punk-bits, punk-runtime, punk-tclargs, selfsign
The remaining pre-policy punkshell-own bin utilities take the punk- prefix (bin/AGENTS.md policy, G-096); external-tool wrappers (dtplite/sdx/kettle) and getpunk stay unprefixed. No behaviour changes ride along. - runtime scriptset: sources/toml renamed (src/scriptapps/bin/punk-runtime.*), the eight ps1 usage/guidance messages now say punk-runtime.cmd, the bash payload's filename-derivation comment example updated; REWRAPPED -> bin/punk-runtime.cmd (checkfile clean) with the .ps1 twin regenerated as a byte-copy. The roundtrip + checkfile pins retarget the new names and pass. - tclargs + bits: sources/tomls renamed; bin artifacts moved BYTE-FAITHFULLY (git mv, no rewrap): a pre-rename drift check showed both carry pre-template-refresh wraps (477-byte delta = the template's 2025 wmic-deprecation timestamp fix; runtime was in sync). Regenerating them is a behaviour change and is deliberately not smuggled into the rename - recorded in the goal. Fresh .ps1 twins cut from the current .cmds; stale untracked bits.bat/bits.ps1/tclargs.ps1/runtime.ps1 removed. - selfsign experiments: SELFSIGN.PS1 -> punk-selfsign.ps1 (case normalized), wrap toml + cert-create script renamed; the four untracked bin experiment scripts renamed on disk; the exported .cer is not a script and keeps its name. - runtimebash_wsl.test: functional staged-filename sites updated (bash ./punk-runtime.bash; solo-fixture cp) along with comments. - Docs: bin/AGENTS.md (examples, policy paragraph records the sweep, runtime contract section, pin pointer corrected to runtimecmd_roundtrip.test), src/scriptapps/AGENTS.md, root AGENTS.md, README.md, src/README.md, untracked bin/runtime/README.md, G-060 reference, libunknown comment (src copy; root modules/ + bootsupport copies catch up on their re-vendor cycles). Suites green: scriptwrap + binscripts 26 run / 25 passed / 1 constraint-skip / 0 failed - the roundtrip pin passes against the renamed artifact. Discovered and recorded for user decision (goal Progress): the project LAYOUT stores ship stale utility copies - runtime.cmd (2025-era payload) and getzig.cmd (the G-096 rename missed this channel) - so generated projects still receive old-named utilities; folding the layout channel into this goal's scope vs a layout-sync mechanism is flagged. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
1 week ago |
|
|
e6be532938 |
runtime.cmd: list -remote for the unix payload + PUNKBIN_URL override (punkshell 0.8.0)
- bash/zsh payload gains list -remote parity with the powershell payload: local-vs-server sha1 comparison table (Same version / UPDATE AVAILABLE / not listed on server, plus remote-only entries), falling back to a cached sha1sums.txt with a warning when the server is unreachable (the powershell version has no cached fallback - candidate backport) - both payloads: artifact server base url overridable via PUNKBIN_URL (mirrors/testing - also what makes the new feature testable offline) - first real catch for the 512-byte label guard: the payload growth pushed the template's :exit_multishell target label across a boundary from its callsite (checkfile ERROR at wrap time); fixed with a documented byte-alignment spacer comment at the end of runtime.bash, and the resize-the-spacer workflow recorded in bin/AGENTS.md - bin/runtime.cmd regenerated via scriptwrap (roundtrip pin green; multishell suite 9 pass + 1 skip on 9.0.3 and 8.7); runtime.bash syntax-checked under bash and zsh; windows list/use/run sanity re-verified Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
7f32862d2f |
runtime.cmd: active-runtime selection (use subcommand + active.toml), bash checksum parity, scriptset moved to src/scriptapps/bin (punkshell 0.7.0)
- run no longer launches the last runtime alphabetically: resolution is PUNK_ACTIVE_RUNTIME env override -> bin/runtime/<platform>/active.toml (constrained single-key toml, written by the new 'use <name>' subcommand, marked with * in list, covered by the existing bin/* VCS ignores) -> sole installed candidate -> error listing candidates. First fetch sets active only when none recorded; later fetches never steal it. Stale active (file removed) reported with reselect guidance. - bash/zsh payload fetch reaches checksum parity with the powershell payload: fetches sha1sums.txt, locates the stored hash, skips when the local copy matches, downloads to .tmp and installs only on sha1 match; sha1 tool detection (sha1sum/shasum/sha1/openssl) with refusal of unverified downloads when none present; optional runtime-name argument added (fetch <name>) - fixes: powershell "stored hash from sha1sums.txt" printed an undefined variable ($storedhash -> $stored_sha1); bash MSYS branch invalid assignment (interp = ...); candidate listings for run/list/use exclude .tmp leftovers and non-runtime files (a stray .txt could previously be selected by run) - runtime scriptset sources relocated to src/scriptapps/bin (proper home alongside getzig.*); bin/runtime.cmd regenerated via scriptwrap from the new location - roundtrip test path updated, suite green on 9.0.3 (8 pass + unix-gated skip), runtime.bash syntax-checked under bash and zsh - verified live on windows: multiple-runtimes-no-active errors with candidates (previously silently launched tksfe-twapi-x64), use/list/run against tclsfe-x64 and env override to tclsh902z, fetch no-steal + first-fetch auto-set, checksum-match no-download path - docs: bin/AGENTS.md documents the fetch/use/run contract and updated generated-polyglot workflow paths; src/scriptapps/AGENTS.md scriptset-home wording updated Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |