The kit launch surface dogfoods punk::args. Boot core 0.2.1 -> 0.3.0:
new built-in 'help' subcommand + '-help' / '<subcommand> -help' render
tabled usage from the moduledoc::punkexe ids plus live registrations
(per-kit resolved_def clones (script)::punkexe.launcher/.launcherhelp);
unknown first arg naming no existing file (and no lib:* reference) is
refused with usage (stderr exit 1) instead of a silent script attempt;
buildinfo enforces its no-arguments contract through punk::args (pinned
one-liner + tabled usage, exit 2 unchanged). Registration extension
::punkboot::project_subcommand_info (summary/argsid/package/parse -
documented by moduledoc::punkboot 0.2.0): project subcommands appear in
help by registration alone and may opt arguments into declared parsing.
Carve-outs: tool-style kits keep help flags routed to their processor
(tomlish parity); tclsh intercepts a help flag only as sole argument
(stock dash parity); argsid-less registrations keep -help passthrough.
G-030 degradation doctrine: lazy guarded requires (normal boots never
load punk::args), PUNKBOOT_PLAIN=1 hook, plain-list fallback, rendering
degrades independently of parsing. 8.6 trap fixed en route: punk::args
choices-grid render needs punk::lib's lpop shim - guarded require added
(verified tabled help on metakit punk86).
moduledoc::punkexe 0.4.0: (script)::punkexe::help definition; top-level
refusal rule + help discovery; per-subcommand -help notes; buildinfo
rejection shape; passthrough-vs-parsed decision recorded.
Verified on zipfs (punk902z, punk91) and metakit (punk86) kits;
launcherhelp.test 22/22 (incl fake-thin-main registration harness +
metakit leg); punkexe subtree 140/136/4skip/0fail; full suite failures
(4) are pre-existing in untouched subsystems. Goal flipped achieved +
archive record + live-tier sweep (G-038 rewrite, pointers to G-077 and
G-089); detail-file move to goals/archive follows as a pure rename.
Layout _config trio + _vfscommon core seed hand-swept (byte-identical
to masters). GOALS.md staged as the G-032-removal hunk only - the
uncommitted G-159 draft entry is left to its author.
Claude-Session: https://claude.ai/code/session_01Y1diJnhjUxKgEG6EwYAzxj
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Both goals flip achieved with full acceptance verification recorded in their
detail files (G-031: componentized boot proven on punkshell kits, a generated
project and tomlish; G-025: buildinfo stamp/report verified across kit,
renamed-copy, code-interp, tclsh-hosted and unstamped contexts). Detail files
move to goals/archive/ (pure renames; flip edits committed with the move);
index entries move GOALS.md -> GOALS-archive.md records. Reference sweep per
goals/AGENTS.md Archive rules: pending-tense mentions rewritten with archive
markers and actionable outcomes pushed to G-018, G-023, G-026, G-032
(registration model + buildinfo now concrete render sources), G-038 (piped
exitinfo quirk re-measured and recorded as its territory), G-089
(boot_state IS the packagemode hint surface), G-131 (mains collapsed - land
detection in the core), G-137 (stamp exists - reconcile RT_VERSION against
it). goals_lint clean (81 active, 75 archived).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Activation and achievement same day at user direction ('activate and
start on it'). Activation freshness survey (goals_xref score G-033)
recorded in the detail file: G-043's one-directional reference is the
only unlinked real relationship; G-123/G-127/G-131 overlap by
punk_main.tcl/bin co-location only.
Detail file gains the Progress record (option (a) inline-walk
decision, verification evidence on the rebaked punk91 kit, the
moduledoc-0.1.1 live-help note and the pending vfscommonupdate
promotion) and moves content-identical to goals/archive/; index entry
moves GOALS.md -> GOALS-archive.md.
Reference sweep: G-016/G-047 relationship notes point at the archive
and the ::punkboot::proj_root_find delivery; G-032's Approach now
says the packagemode leader text is LIVE and its remaining lane is
rendering/parse wiring; G-089's Related note records that the visitor
root walk it rides is live, remains defined post-boot, and that the
boot-interface packagemode hint it needs is still absent; G-031 gains
the fork-drift datapoint (proj: landed in punk_main.tcl only,
project_main.tcl still lacks src mode and proj:); G-018/G-035/G-043
mentions gain achieved/archive markers.
goals_lint clean (85 active, 51 archived), architecture_lint clean.
Claude-Session: https://claude.ai/code/session_0156PuejSCGjgeGb7jiABrDU
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
- GOALS.md: "Goals-system: v2" front matter; canonical "Goals system versions"
section; Scope structure rule (elements separated by '; ' at top level,
commas only inside parens/braces); Child DOX Index note in root AGENTS.md
- goals_lint.tcl: new finding for top-level commas in Scope lines
(paren/brace depth-aware)
- goals_xref.tcl: repo-local configuration via goals/xref.conf (path roots,
stop words, file extensions, reference containers, module dirs,
bare_path_roots, prefix_anchors); defaults byte-identical to previous
behaviour (verified on this tree)
- goals/AGENTS.md: cross-repo goal references drop the G- prefix; xref.conf
documented in Verification
- Scope delimiter normalisation across GOALS.md, GOALS-archive.md and all
detail files, live and archived: 224 lines, top-level commas only;
conservation verified (goals_xref report byte-identical pre/post, diff
hunks are Scope lines only). Archived tier converted under explicit user
approval; sanctioned exception recorded in GOALS-archive.md.
Assisted-by: harness=opencode; primary-model=openrouter/moonshotai/kimi-k3; api-location=openrouter.ai
Raw mode on twapi-less windows runtimes made dependable and quiet: lazy
singleton server (tsv-shared per process, spawn no longer at module
load), parent-pid self-reaping (no orphan pwsh), the 20s
keepalive-without-pinger and the first-message listener kill (reader
Close disposing the pipe stream) both fixed, disableraw served on
no-inputmode runtimes (8.6 path), enable confirmed via live tcl9
-inputmode before return, script resolution env -> argv0 -> module-dir
-> embedded copy (pwd fallback gone; kits need no scriptlib on disk).
PUNK_PS_CONSOLEMODE_DEBUG=1 for diagnostics both sides.
scriptlib/utils/pwsh reconciled: canonical consolemode_server_async.ps1
rewritten (protocol enableraw|disableraw|ping|exit, parent-pid watch,
posh-git MIT attribution for the C# snippet), five experiment variants
retired (consolemode_server.ps1, *_async1.ps1, *_async.2ps1,
consolemode.ps1, consolemode_enableraw.ps1), README labels the folder.
New console suite psfallback.test pins the embedded-copy/file sync and
the resolution chain. punk::repl stale comment fix (no behaviour
change). Verified per the recipe recorded in the goal detail file:
hidden-console selftests on suite tclsh90spr + zipfs kit tclsh90sprzip
(25s-idle survival, stop/respawn, zero orphans), live make.tcl-shell and
bare-repl sessions driven by injected keystrokes (console mode
0x1E7<->0x1E1 read externally), embedded-resolution forced run, console
testsuite 76/76. G-106 acceptance met - achieved flip recorded in the
detail file; archive move follows in the next commit.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
New goal (user-approved wording): make.tcl bakes a curated scriptlib into
kit vfs app/scriptlib so standalone binaries have working lib: scripts, with
precedence following the packagemode mental model - kit-internal-wins only
for the default 'internal' launch, src/dev modes putting the live project
scriptlib first, and proj: (G-033) adding the visited project's scriptlib.
Context records the 2026-07-18 findings: kit-internal resolver branch never
exercised (no build path exists), not-overridable policy scoped to default
mode per user direction, missing boot->runtime packagemode hint, cookfs
mount-root gap, and the out-of-scope app-shellspy mapping. goals_lint clean.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com