Tree:
3abfe674fa
master
v0.1a
${ noResults }
1 Commits (3abfe674fa23fcaae7ec8a71e9c1e6ddcd99775c)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
39e0ec2ba7 |
G-084 achieved: settled cross-member -multiple rejection + value-parsekey integrity + storage-key attribution (punk::args 0.24.0, project 0.61.0)
G-084 increment 2 + achieved flip - parsekey completeness closed: Cross-member -multiple on a shared-parsekey option group is now a DEFINE-TIME error unless ALL members belong to one @opts group marked -parsekeymode error (G-083 mutual exclusivity makes per-member collection well-defined; a single -multiple member with its own parsekey is unrestricted). This settles the G-084 cross-member accumulation decision as rejection rather than accumulate-in-received-order: collection on one storage key is ambiguous (collect-vs-replace undefined), and rejection eliminates the silent loss without new collection semantics. The check runs AFTER the G-053 canonicalisation so range forms verdict correctly ({0 1} replace-shape allowed; a pre-canonicalisation placement would raise a raw non-boolean error for any range form). Value -parsekey integrity settled at define time: duplicate value parsekeys rejected (trailing values consume positionally - the shared slot silently overwrote), dash-led value parsekeys rejected (they landed in the options namespace of result/received and aborted parse with an internal error in the option-shaped validation paths; every option storage key is dash-led, so this one rule also removes all cross-class collisions). parse_status/parse_report storage-key attribution: parse_status_build now resolves a storage key claimed by exactly ONE argument (value -parsekey, declared option -parsekey, '='-suffixed optset tail) back to that argument, so argstatus/Source report received with the value-in-effect instead of default/0. Shared-parsekey groups stay unresolved - the remaining recorded display gap (engine-level per-member tracking; archived as the goal's open Follow-on). undefine/undefine_deflist now return "" (previously the whole internal cache dict to any caller capturing the value). define -help documents -parsekey for the first time (rename semantics for options and values, leader rejection, shared groups and -parsekeymode, last-defined-member defaults precedence, the -multiple rule, value-key uniqueness/non-dash). Moduledoc tclcore comment corrected (leader -parsekey settled as rejection, not pending). Internal sweep: dead values-loop identifiers removed (val_ident/val_ident_is_parsekey/values-side seen_pks), leader reverse map removed (VAL_NAMES-driven build), dead parsekey-from--default derivation removed, stale pre-G-084 comments corrected. Tests: parsekey_shared_key_multiple_rejected strengthened (message pins, {0 1}/{0 4} range coverage, the -parsekeymode error escape hatch incl collection and optionconflict); new parsekey_value_parsekey_integrity, parsereport_storagekey_attribution, parsestatus_storagekey_attribution; inc-1 comment damage repaired (duplicated block, eaten G-083 provenance lines, stale GAP-era comment); 2026-08-08 future-dating normalized to 2026-08-07 in touched files (CHANGELOG 0.59.0/0.60.0 headers corrected likewise; the underlying commits landed 2026-08-07 AEST). Goal flip (user-approved): the Goal line's accumulate wording amended to the settled define-time-rejection design; G-084 flipped achieved 2026-08-07 and archived (detail -> goals/archive/, index -> GOALS-archive.md, reference sweep applied - G-167 survey note gains achieved markers for G-053/G-083/G-084; Follow-on recorded: shared-group per-member received attribution => open). Detail file gains ## Progress (inc 1 + inc 2 + flip evidence). src/tests/modules/AGENTS.md punk/args index updated to the settled-pin state. Project 0.60.0 -> 0.61.0 + CHANGELOG (value -parsekey support and the define-time integrity rules are user-visible shell behaviour; G-053 precedent). punk::args 0.23.0 -> 0.24.0. Suites: punk/args 401/0; modules tree 1313 pass / 11 constraint-skipped / 0 fail (zig-built tclsh90s 9.0.5); testbody_lint clean; goals_lint clean; punkboot version-parsing 81/81; make.tcl projectversion consistency OK. Claude-Session: https://claude.ai/code/session_01QgaxV27VZkmEec7oNbEVFc Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
6 days ago |