Tree:
fa483ec2e3
master
v0.1a
${ noResults }
2 Commits (fa483ec2e3cfa83c66c2553b714a043fec5052c5)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
7cdf5b2323 |
G-149 achieved: punk::args configurable multi-form synopsis hint labels (punk::args 0.17.0)
The per-form hint labels rendered beside a multi-form definition's synopsis lines in the usage/arg_error table (hard-coded ' i -form N ...' previously) are now a template substituted per form: %formindex% is replaced with the form's 0-based ordinal, %formname% with its name, and an empty template suppresses the labels entirely (the cell keeps just the Synopsis: label, as single-form renders always have). Both acceptance arms landed. Definition side: new '@cmd -formhint <template>' key - rides the existing arbitrary-key cmd_info merge (no resolver change), round-trips through resolved_def, not display -deferred; documented in the define -help directive-options. Caller side: new -formhint option on arg_error (manual parser + PUNKARGS block) pulled into usage via its existing resolved_def opts pull; supplied-empty (suppress) is distinct from not-supplied (the option declares no -default, so an unsupplied usage call passes nothing through). Precedence: caller > definition > built-in default, whose template substitutes to the exact prior bytes. Motivation (G-143 origin): script-level (script) ids - make.tcl's - are unreachable from any repl, so the repl-oriented 'i' hint was not actionable there. Scope decisions pinned: single-form renders never carry hint labels; the -return string renderer has no hint column and is unchanged. Byte-identity for unconfigured definitions proven by pre/post capture diff of 'punk::args::usage ::punk::args::parse' (identical bytes, through the usage pass-through path). Tests: new formhint.test (9 tests - default labels, directive/caller/suppression matrix, parse -error path, single-form + string-renderer scope); full punk/args subtree 302/0-fail on BOTH tclsh90 9.0.3 and the punk86 kit (8.6); punk/ns subtree 115/115 (cmdhelp consumer). make.tcl help untouched until promotion (maketclhelp.test still pins the bootsupport hint). Goals: G-149 activated at user direction then flipped achieved 2026-08-05 + archived (index record newest-first, detail file to goals/archive with Progress evidence and 1 follow-on: make.tcl adoption after a bootsupport promotion => open). Activation-freshness survey recorded the G-167 relationship (same renderer surface - composition note both sides); reference sweep updated G-151/G-167 mentions; goals_lint clean, no orphaned xref pairs. punkshell 0.55.0 + CHANGELOG. Bootsupport/vfscommon snapshots unchanged until promotion + bake. Claude-Session: https://claude.ai/code/session_01QgaxV27VZkmEec7oNbEVFc Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
5 days ago |
|
|
ac8e26ab20 |
G-167 drafted: punk::args version-delta availability - unavailable @forms for shape deltas, unavailable option names for flag deltas
New proposed goal (user-approved wording, from the post-G-073 design discussion 2026-08-05): version/context deltas of a command's interface become declarable and honestly surfaced without delta computation, layered by delta kind. An @form may be declared unavailable - participating in candidacy/diagnosis, displayed annotated, tailored formunavailable rejection when only unavailable forms match, silent resolution to the available form when both match (the first sanctioned exception to G-041's no-silent-preference rule: documentation never competes with reality), -form selection displays but refuses parse. Option NAMES may be declared unavailable (the G-073 mirror at the option-name level) with pointed tailored rejection. The default render stays on available forms plus an AUTOMATED note enumerating unavailable shapes (name + authored note + navigation hint - no computed delta; user display decision relaxing the strict G-073 display-among-peers principle for shape deltas only, since named things keep per-name display via the option/choice layers). formstatus gains an additive 'available' field (G-152 contract) as the machine surface, and authoring guidance prescribes -choiceunavailable for subcommand-shaped deltas so the same concept never surfaces through two inconsistent paths. Detail file records the layered-model rationale, the silent-preference exception scope, the two-paths trap prescription, era authoring via shared -form tags (one form per version era - linear), engine seams, and the relations/overlap survey (G-073 foundation, G-166 sibling surface, G-152/G-041/G-074/G-150/G-149/G-044/G-055). Acceptance and the lsearch -stride adoption candidate are agent-derived for user review; status proposed. goals_lint clean (82 active / 85 archived). Claude-Session: https://claude.ai/code/session_01QgaxV27VZkmEec7oNbEVFc Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
5 days ago |