Acceptance: goals/AGENTS.md defines a lintable Follow-on line grammar for archived detail files with a closed disposition vocabulary covering at least open, became-goal, landed (dated), and declined (dated) - exact tokens and line shape settled in the work - and sanctions disposition-only updates to archived detail files as non-contract edits reported in completion summaries (GOALS-archive.md's do-not-edit rule stays for index records, reworded to name the carve-out); goals_lint validates the grammar - a malformed disposition token, or a disposition goal-reference to an ID present in neither index, is a finding - with existing checks unchanged; scriptlib/developer/goals_followons.tcl (plain tclsh, no dependencies, always exit 0, xref-style advisory) reports every structured follow-on with its archived-goal home and disposition, groups open items, and heuristically flags follow-on-vocabulary prose in goals/archive/ lacking a structured line; a one-time user-approved retrofit sweep (per the 2026-07-24 delimiter-normalisation precedent) converts existing goals/archive/ follow-on prose to structured lines whose dispositions reflect the live tier and landed work (e.g. the RT_VERSION follow-on parked in archived G-057 - goals/archive/G-057-kit-icon-embedding.md - resolves to its enacting live goal G-137), ambiguous items resolved with the user, and after it the report shows zero unresolved heuristic flags on the real archive (output recorded in this file); the archive-flip reference sweep and the goal-authoring workflow are amended so newly archived goals record follow-ons in the structured grammar and an agent acting on an archived follow-on (drafting its goal, or landing it directly at user direction) updates the disposition in the same work unit; the goals-system version bumps to v4 recording the convention so syncing repos port the delta.
### G-032 [achieved 2026-08-03] Kit launcher dogfoods punk::args: tabled help and parsed subcommands → detail: goals/archive/G-032-launcher-punkargs.md
Scope: src/vfs/_config/ (default dispatch); src/lib/app-punkshell and sibling app packages as touched
Acceptance: `<punkexe> -help` renders tabled usage listing all subcommands including project-registered ones, each with a summary; at least one built-in subcommand's options are declared and parsed via punk::args with tabled usage errors on invalid input (the G-015 script subcommand or the G-025 version-report subcommand are the natural candidates); a project-registered subcommand's help appears by registration alone - no edits to the shared dispatch; with punk::args or the rendering stack unloadable, boot proceeds and help degrades to a plain subcommand list; verified on both a zipfs-based and a non-zipfs kit where both remain supported.
@ -73,7 +73,7 @@ The front matter of every repo's GOALS.md declares which goals-system contract v
- v1 (2026-07): two-tier contract (summary index + detail files), detail-file header grammar, status tags, goals_lint.tcl, goals_xref.tcl.
- v2 (2026-07-24): Scope elements are '; '-separated at top level (lint-enforced); cross-repo goal references drop the G- prefix; goals_xref.tcl gains repo-local configuration (goals/xref.conf - path roots, stop words, file extensions, reference containers, module dirs, bare_path_roots, prefix_anchors).
- v3 (2026-07-25): goals_lint.tcl gains the stale-versioned-reference warning (a live-tier reference to a version-suffixed filename that is missing while a same-stem sibling exists on disk is flagged with the sibling(s) named; archive tier, globs, URLs, absolute/out-of-repo paths and the magic dev version 999999.0a1.0 are exempt; informational, never fatal); Scope-authoring guidance added to the Format section (version-stamped files referenced by glob or magic-version filename, exact versions pinned only in dated prose); this bump-policy paragraph broadened from "contract or required tooling changes" to any interpretation-affecting change.
- v4 (2026-08-03): archived-goal follow-on tracking (drafted as G-159): archived detail files carry a `## Follow-ons` section of structured `Follow-on: <item> => <disposition>` lines (closed vocabulary: open, goal G-<id>, landed YYYY-MM-DD (<where>), declined YYYY-MM-DD (<why>)); disposition-only updates to archived detail files are sanctioned non-contract edits made in the same work unit that acts on a follow-on; the achieved flip records deferred items in the grammar (reference-sweep step (c)) and the authoring workflow flips an enacted follow-on's disposition to `goal G-<new id>`; goals_lint.tcl validates the grammar (malformed line or unknown goal reference = finding); new advisory tool goals_followons.tcl enumerates dispositions and flags archived files carrying follow-on vocabulary with no structured section.
- v4 (2026-08-03): archived-goal follow-on tracking (drafted as G-159, achieved 2026-08-03 - see goals/archive/G-159-followon-disposition-tracking.md): archived detail files carry a `## Follow-ons` section of structured `Follow-on: <item> => <disposition>` lines (closed vocabulary: open, goal G-<id>, landed YYYY-MM-DD (<where>), declined YYYY-MM-DD (<why>)); disposition-only updates to archived detail files are sanctioned non-contract edits made in the same work unit that acts on a follow-on; the achieved flip records deferred items in the grammar (reference-sweep step (c)) and the authoring workflow flips an enacted follow-on's disposition to `goal G-<new id>`; goals_lint.tcl validates the grammar (malformed line or unknown goal reference = finding); new advisory tool goals_followons.tcl enumerates dispositions and flags archived files carrying follow-on vocabulary with no structured section.
Scope: src/make.tcl (sdx resolution ladder suite-shell rung - shared seam with G-157 approach step 4; kit wrap path; runtime_caps/kit_type_mismatch accommodation); src/buildsuites/suite_tcl86/ (build_kithead86 bi-class head variant, mk4kit_attach battery payloads); src/runtime/mapvfs.toml (suite-head runtime rows + kit entries); bin/runtime/win32-x86_64/ (uncommitted local materialization slot for the heads - publication is follow-on); src/tests/shell/testsuites/punkexe/ (bake-path characterization); bin/sdx.kit (consumed by the ladder - its committed status is G-157's contract, not this goal's)
Detail: goals/G-158-punk86-kit-parity.md
### G-159 [active] Trackable follow-on dispositions in archived goals
Goal: Follow-ons recorded in archived goal detail files stay trackable instead of fossilizing: each is a structured line carrying a disposition from a closed vocabulary, the disposition is updated in the same work unit that acts on the follow-on (landing it directly or drafting a goal from it), and an advisory report enumerates open follow-ons and flags unstructured follow-on prose - so "which follow-ons have not been acted on" is answered by running a tool, not by archive archaeology.
Acceptance: goals/AGENTS.md defines a lintable Follow-on line grammar for archived detail files with a closed disposition vocabulary covering at least open, became-goal, landed (dated), and declined (dated) - exact tokens and line shape settled in the work - and sanctions disposition-only updates to archived detail files as non-contract edits reported in completion summaries (GOALS-archive.md's do-not-edit rule stays for index records, reworded to name the carve-out); goals_lint validates the grammar - a malformed disposition token, or a disposition goal-reference to an ID present in neither index, is a finding - with existing checks unchanged; scriptlib/developer/goals_followons.tcl (plain tclsh, no dependencies, always exit 0, xref-style advisory) reports every structured follow-on with its archived-goal home and disposition, groups open items, and heuristically flags follow-on-vocabulary prose in goals/archive/ lacking a structured line; a one-time user-approved retrofit sweep (per the 2026-07-24 delimiter-normalisation precedent) converts existing goals/archive/ follow-on prose to structured lines whose dispositions reflect the live tier and landed work (e.g. the RT_VERSION follow-on parked in archived G-057 - goals/archive/G-057-kit-icon-embedding.md - resolves to its enacting live goal G-137), ambiguous items resolved with the user, and after it the report shows zero unresolved heuristic flags on the real archive (output recorded in this file); the archive-flip reference sweep and the goal-authoring workflow are amended so newly archived goals record follow-ons in the structured grammar and an agent acting on an archived follow-on (drafting its goal, or landing it directly at user direction) updates the disposition in the same work unit; the goals-system version bumps to v4 recording the convention so syncing repos port the delta.
@ -131,3 +131,7 @@ tooling; archive retrofit) and verified.
convention conversion; G-139 linux lib-tier emission, libfetch httpfixture
test; G-144 synopsis-override drops. Full listing reproducible via
(none - the v4 mechanism is the deliverable; derived-project propagation rides the standing goals-system version delta-porting mechanism, and the G-156 census records per-project version drift)