- app-punkscript 1.0 -> 1.1: 'script -e <script> ?args...?' - ::argv0 '-e', trailing args in ::argv, errorInfo to stderr + exit 1 on error, usage error + exit 1 when no script follows (never interactive fall-through, never stock's argv-swallow + stdin-read misparse); stdin never read by the form itself; a non-empty final result is echoed (stdin-form one-shot ergonomics, so return-valued one-liners like 'dev projects.work *x*' emit)
- boot core 0.3.0 -> 0.4.0: a top-level first argument of exactly '-e' reclassifies to 'script -e' ahead of the G-032 unknown-first-arg refusal on script-default kits (tool-style kits keep '-e' routed to their processor; '<punkexe> tclsh -e ...' keeps deliberate stock parity per G-118); the unknown-first refusal hint and the degraded plain help now name the -e forms
- moduledoc punkexe 0.4.0 -> 0.5.0: (script)::punkexe::script declares the oneliner @form (both forms explicitly named - punk::args renames _default to the FIRST named @form args-included); top-level prose documents the reclassification; tclsh boundary text points at the live forms
- tests: scriptexec.test gains 10 -e pins (both surfaces, argv0/argv, piped stdin read+unread, no-arg usage error on both surfaces, errorInfo+exit 1, result echo, tclsh -e stock-parity boundary); launcherhelp.test pins the refusal hint's -e pointer; 49/49 green on the rebaked punk902z/punksys/punk86 (stamps boot_core=0.4.0); the named acceptance invocations and the full matrix also run by hand on the baked kits
- DOX: -e bullets in src/vfs, src/lib, src/tests/shell and bin AGENTS.md; root AGENTS.md tclsh -e pitfall parenthetical now records the live punk-kit forms + the ad-hoc 'src script -e' option; README script-subcommand bullet; ARCHITECTURE.md entry-point/script/tclsh sections (G-077 leaves the in-flux list)
- CHANGELOG + punkproject 0.50.0
Assisted-by: harness=opencode; primary-model=openrouter/moonshotai/kimi-k3; api-location=openrouter.ai
Root README, src/README, src/AGENTS.md (full-build guidance, provenance command
list incl. bakehouse's default-on dirty gate, punk-exe-hosted builds,
verification), src/modules + src/lib + src/vfs + src/tests + src/tests/shell +
src/runtime AGENTS.md workflow references, and the rebuild-instruction comments
in scriptexec.test/tclshcmd.test. G-104's G-058 mention gains its archive
marker. Historical CHANGELOG entries untouched; goal-file contract texts
(G-005/G-006/G-057 Acceptance mention 'make.tcl project') left for
proposal-first user approval - the deprecated alias keeps them executable.
Layout make.tcl copies are punkcheck-synced build outputs - they refresh via
the normal sync channels in the acceptance build, never hand-edited.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
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
Finalises the G-062 achieved flip staged by the prior session (punkshell
0.12.1): LICENSE.txt (BSD-2-Clause, Julian Marcel Noble 2023-2026) at the
repo root, README/punkproject.toml/AGENTS.md license declarations, index
record to GOALS-archive.md and detail file to goals/archive/.
Archive-loss prevention, from the G-015 incident (its achieved-status
verification parenthetical was silently dropped by the 2026-07-11 two-tier
restructure's Status-line normalisation; the text is restored to the G-015
archive file's Notes with provenance):
- root AGENTS.md 'Doc Restructures': deleted-line conservation check before
committing bulk doc migrations, structured-field-normalisation hazard
(relocate prose to body sections first), moves separated from edits
- goals/AGENTS.md: lintable header field grammar (one line per field, bare
Status values), flip-time verification evidence recorded in the body, the
archive move content-identical, and a new archive-time reference sweep:
pending-tense mentions of the archived goal updated in the live tier, and
actionable archived notes pointed to from the affected live goal's Notes
- GOALS.md maintenance rules: achieved-flip clause extended to require the
evidence write-up and the reference sweep
Retroactive reference sweep over all 12 archived goals (25 live detail
files): pending-tense fixes (G-002 G-008 G-013 G-016 G-017 G-021 G-022
G-031 G-042 G-044 G-050 - G-017's Goal/Acceptance annotated as
gate-satisfied, contract meaning unchanged), forward pointers pushed from
archived notes (G-062 license-seeding follow-on -> G-012/G-027, G-037
vendorlib/vfs drift semantics -> G-024, G-058 static-baseline mechanism ->
G-005), and one 'Archived-goal references' Notes bullet per remaining
referencing file so every live mention of an archived goal is resolvable
without consulting the archive index.
scriptlib/developer/goals_lint.tcl (new, plain tclsh): validates detail-file
header grammar, strict status values in both tiers, orphan rules in both
directions, Status/Scope mirror consistency, plus an informational (never
fatal) warning for live files referencing an archived goal with no
achieved/archive marker - baseline now zero warnings. Root AGENTS.md
scriptlib/developer ownership note widened to cover developer utilities.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com