Tree:
43973fa5fd
master
v0.1a
${ noResults }
1 Commits (43973fa5fdbb68482fdaff9530e5ce7ff7fca73f)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
71e3c96387 |
G-177 + G-178 drafted (proposed): punk::args scalability - cost decoupling and multi-provider safety
Drafted from a measured scalability review asking what breaks if every command - including third-party libraries - carries punk::args documentation. Baseline probes (punk91, 58 registered namespaces / 693 definitions) found three cost centres and one governance gap; the two goals split them by kind. G-177 (engine, measurable): the resolved-spec caches key on the whole raw definition text (~args:2152, the author's own todo), so ~4 full-text hashes ride every parse call - an isolation probe shows the ENTIRE per-call growth with documentation size sits in those keys (220 B definition 28.8us vs 9776 B definition of identical argument shape 56.8us; resolve 1.5 -> 29.6us). Registry membership is lists with a nested-loop ldiff behind a length-equality early-out that never fires in a stock session (registered=58 loaded=60 - argdoc namespaces enter loaded_packages un-registered and registration is not deduped), so update_definitions costs 9.3us at R=100 and 2515us at R=2000 while being called per ensemble subcommand. The scan phase is eager and global (15us per definition). Acceptance is six machine-independent ratio pins (1.15x doc-size independence, 2x registry-size independence, early-out liveness plus its false-positive, O(1) scan, 40% raw-text residency drop, byte-identical corpus renders) rather than absolute times, so the suite pins the complexity class and survives hardware changes. G-178 (governance, policy): flat global id namespace with silent collisions (the "last will silently win" todo at ~args:5137), non-idempotent registration into a foreign namespace variable, no definition format-level declaration, and third-party help text that is tstr-evaluated with -allowcommands at resolve time - documentation that runs code. Split from G-177 per the goals/AGENTS.md rule that a goal must be summarizable by title and Scope alone. Overlap survey (goals_xref paths + score): Related lines to G-175 (disjoint - it owns how many times a render resolves, G-177 owns what one resolve costs), G-044/G-050 (latency consumers), G-075 (shared id-lookup path), G-167 + G-056 (both deliberately change render output, which G-177 pins byte-identical - whichever lands second re-baselines the characterization), G-046 (archived predecessor whose display-field deferral is why the residual doc-size tax is purely the cache keys). No archived follow-on disposition required flipping. goals_lint clean (81 active-index goals / 97 archived). Claude-Session: https://claude.ai/code/session_01Y5vEJUZkD4p8jmEFEBVhLi Assisted-by: harness=claude; primary-model=claude-opus-5[1m]; api-location=anthropic.com |
1 week ago |