Acceptance verified in full against the fixture punkbin server
(PUNKBIN_URL override): ahead/behind verdicts naming both revisions
(behind with fetch+use guidance), current annotation preserved,
pre-family no-basis note + sha1 hash-identity, no-name-fetch one-line
divergence note; ps1/bash verdict-line parity asserted per scenario;
runtimecmd roundtrip pin green; bin/AGENTS.md runtime-manager contract
records the surface. Suite evidence in the detail file's flip record.
Activation and flip both 2026-07-25 (user-directed activation; overlap
survey re-run at activation - only G-033 related, already recorded; no
new Related lines). Detail file: status achieved + activation/flip
evidence records (the goals/ -> goals/archive/ move itself rode the
previous commit as a pure 100% rename; this commit carries the flip's
content edits). Index entry moved to GOALS-archive.md. Reference sweep:
G-033's G-119 note updated to landed-state wording with the archive
path (its package-mode docs must not contradict the shipped freshness
contract on naming); goals_lint clean (83 active / 37 archived);
goals_xref report carries no G-119-bridged unlinked pairs.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Acceptance: Every item in the "Issue list" section carries a recorded user decision (fix / document-as-intended / wontfix) and the decided fixes and documentation have landed; the tclsh subcommand's user-facing contract is documented in a durable doc location (not TEMP_REFERENCE); tclshcmd.test covers the decided pipe-testable behaviours; and the dorepl/console-reopen path either has a console-driven test or a recorded decision that G-106-style coverage is not required.
Acceptance: Every item in the "Issue list" section carries a recorded user decision (fix / document-as-intended / wontfix) and the decided fixes and documentation have landed; the tclsh subcommand's user-facing contract is documented in a durable doc location (not TEMP_REFERENCE); tclshcmd.test covers the decided pipe-testable behaviours; and the dorepl/console-reopen path either has a console-driven test or a recorded decision that G-106-style coverage is not required.
Scope: src/scriptapps/bin/punk-runtime.ps1 + punk-runtime.bash (+ rewrapped bin/punk-runtime.cmd); bin/AGENTS.md (runtime-manager contract); src/tests/modules/punk/mix/testsuites/scriptwrap/ (roundtrip pin; behavioural fixture surface settled in the work)
Acceptance: against a fixture punkbin server (PUNKBIN_URL override): list -remote prints explicit ahead/behind verdicts naming both revisions (behind adds fetch+use update guidance) and keeps the (= server default) annotation for current; a pre-family active (no toml, no -rN name) yields a stated no-revision-basis note or its sha1 hash-identity when it value-matches a server artifact; a no-name fetch prints a one-line active-vs-default note on divergence; both payloads deliver identical verdict lines (fixture surface settled: shell/testsuites/binscripts/runtimecmd_freshness.test + testsupport/httpfixture.tcl); the runtimecmd roundtrip pin stays green; bin/AGENTS.md's runtime-manager contract records the new surface.
Scope: src/scriptapps/bin/punk-runtime.ps1 + punk-runtime.bash (+ rewrapped bin/punk-runtime.cmd); bin/AGENTS.md (runtime-manager contract); src/tests/modules/punk/mix/testsuites/scriptwrap/ (roundtrip pin; behavioural fixture surface settled in the work)
Scope: src/scriptapps/bin/punk-runtime.ps1 + punk-runtime.bash (+ rewrapped bin/punk-runtime.cmd); bin/AGENTS.md (runtime-manager contract); src/tests/modules/punk/mix/testsuites/scriptwrap/ (roundtrip pin; behavioural fixture surface settled in the work)
Goal: punk-runtime states the relationship between the ACTIVE runtime and the SERVER DEFAULT whenever both are known - current / ahead / behind / incomparable - so an operator is never silently ahead of or behind the curated recommendation. Today use/list record and display each fact separately (the active's revision only via its beside-toml summary, the default only as a row annotation), and a no-name fetch reports on the default artifact alone ("No download required"), leaving active r2 with default r1 and active r1 with default r3 equally invisible. The comparison uses revision fields where both sides carry them (active: beside-toml revision/name for materialized working copies, -rN parsed from the name for artifact-named actives; default: -rN parsed from its defaults.txt name), with sha1 VALUE-matching of local runtimes against the server sha1sums as the identity fallback for runtimes with no revision basis (pre-family).
Goal: punk-runtime states the relationship between the ACTIVE runtime and the SERVER DEFAULT whenever both are known - current / ahead / behind / incomparable - so an operator is never silently ahead of or behind the curated recommendation. Today use/list record and display each fact separately (the active's revision only via its beside-toml summary, the default only as a row annotation), and a no-name fetch reports on the default artifact alone ("No download required"), leaving active r2 with default r1 and active r1 with default r3 equally invisible. The comparison uses revision fields where both sides carry them (active: beside-toml revision/name for materialized working copies, -rN parsed from the name for artifact-named actives; default: -rN parsed from its defaults.txt name), with sha1 VALUE-matching of local runtimes against the server sha1sums as the identity fallback for runtimes with no revision basis (pre-family).
Acceptance: against a fixture server (PUNKBIN_URL override): (1) active materialized from r2 with server default r1 -> list -remote prints an explicit ahead verdict naming both revisions; (2) active r1 with default r2 -> behind verdict plus update guidance (fetch + use); (3) active == default -> the existing (= server default) annotation or an equivalent current verdict; (4) a pre-family active (no toml, no -rN name) yields a stated no-revision-basis note - or its hash-identity when its sha1 matches a server artifact - rather than silence or a crash; (5) a no-name fetch prints a one-line active-vs-default note when the two diverge. Both payloads deliver identical verdicts (ps1/bash parity), the runtimecmd roundtrip pin stays green, and bin/AGENTS.md's runtime-manager contract records the new surface.
Acceptance: against a fixture server (PUNKBIN_URL override): (1) active materialized from r2 with server default r1 -> list -remote prints an explicit ahead verdict naming both revisions; (2) active r1 with default r2 -> behind verdict plus update guidance (fetch + use); (3) active == default -> the existing (= server default) annotation or an equivalent current verdict; (4) a pre-family active (no toml, no -rN name) yields a stated no-revision-basis note - or its hash-identity when its sha1 matches a server artifact - rather than silence or a crash; (5) a no-name fetch prints a one-line active-vs-default note when the two diverge. Both payloads deliver identical verdicts (ps1/bash parity), the runtimecmd roundtrip pin stays green, and bin/AGENTS.md's runtime-manager contract records the new surface.
@ -36,3 +36,33 @@ value-matching identifies it against the server listing).
docs and this goal's runtime-manager contract are sibling sections of
docs and this goal's runtime-manager contract are sibling sections of
bin/AGENTS.md - the mode docs and the freshness-verdict contract must not
bin/AGENTS.md - the mode docs and the freshness-verdict contract must not
contradict each other on naming (artifact-named actives, -rN parsing).
contradict each other on naming (artifact-named actives, -rN parsing).