GTR016 — Inline deprecated interpreter= (runtime-gated)
Contract: behaviour-preserving (provable subset).
Claim
<command interpreter="I">S rest</command> →
<command>I '$__tool_directory__/S' rest</command> reproduces legacy runtime
behaviour for any non-empty interpreter value when S is a literal leading
script token.
Proof — verbatim interpolation in every composition form Galaxy ever shipped
Prepend form:
command_line = interpreter + " " + command_lineafter an unquoted abspath replace — byte-identicalrelease_16.04(evaluation.py:478-484) throughrelease_20.01(:509-514).Token-splice form:
replace(executable, f"{interpreter} {shlex.quote(abs_executable)}", 1)—release_20.09(:501) throughdev:781-787today (still honored forlegacy_defaultstools; the attribute was never removed).The forms coincide exactly when the script is the rendered line’s first content token — the bucket-A gate. Every form gates on
if interpreter:, so an empty attribute was always ignored (the codemod bails).Positional splice anchored past leading
##comments; mixed-content<command>skipped (the audited break classes).
Scope boundary
Cheetah-leading commands (split()[0] of the rendered line is statically
unknowable) and interpreter="". The shlex.quote-vs-literal-quote bound is
accepted and documented (admin-controlled install paths).
History
Single-token-standard-interpreter conservatism removed by §39 (the verbatim-composition proof); bucket C dissolved (25 → A, 26 → B).