Rule proofs — the canonical behaviour-preservation arguments
One document per fixable rule: the current, construction-grade,
source-cited argument for why applying the rule preserves behaviour (or which
narrower contract — validity restoration, structural-only, display-contract,
render-equivalence — it preserves instead). This is the current-state home
for proofs, the way ARCHITECTURE.md is for structure: the dated
docs/decisions.md entries record why at the time, the audit trail lives in
../behavior_preservation.md (verdicts, refutations, remediations), and rule
docstrings carry a summary pointing here.
The bar (the maintainer’s standing principle): a fixable rule’s claim must hold by construction for novel tools — Galaxy-source or spec citations, never corpus absence. Corpus incidence sizes impact; it never establishes soundness.
Galaxy-source cites refer to the local clone .local/galaxy-src (dev @
c6e0ee3, 2026-06-01) unless a release_* branch is named; release branches
are fetched shallow into the same clone.
Coverage is guarded: galaxy-tool-refactor-registry/tests/test_proof_documents.py
fails CI naming any fixable rule without a <code>.md here, so a new fixable
rule cannot ship proofless.
Beyond the per-rule documents, behavior-gate.md is the
composition-level argument for the upgrade default: why the gated walk
crosses no applicable, un-fixed must_fix boundary for any tool. The same
guard test pins it to the live registries (every RuntimeGatedFix and every
UPGRADE_CODEMODS step must be covered), so a new auto-fix or upgrade step
cannot join the gate without extending the argument.
- GTR001 — Canonical 4-space indentation (fmt)
- GTR002 — Reorder
<param>attributes (codemod) - GTR004 — Empty-element shorthand (fmt)
- GTR005 — Reorder
<tool>attributes (codemod) - GTR006 — FixTypos (codemod)
- GTR007 — UpdateProfile: declare the newest valid profile
- GTR008 — Upgrade19_01: synthesize required output names (19.01 → 19.05)
- GTR009 — Upgrade24_0: hoist identical element filters (24.0 → 24.1)
- GTR010 — Upgrade24_1 — format/ftype normalization
- GTR011 — Upgrade25_1: drop
<trackster_conf>(25.1 → 26.0) - GTR012 — UpgradeToLatest: the iterative upgrade orchestrator
- GTR013 — Reorder
<tool>children (codemod) - GTR014 — from_work_dir whitespace strip (runtime-gated)
- GTR015 — format=”input” → format_source (runtime-gated)
- GTR016 — Inline deprecated interpreter= (runtime-gated)
- GTR017 — Normalize boolean case (codemod)
- GTR018.1 — Wrap
<command>in CDATA (partition fix) - GTR019.1 — Wrap
<help>in CDATA (partition fix) - GTR020.1 — Single-quote command vars (partition fix)
- GTR035.1 — Trim requirement-version whitespace (partition fix)
- GTR036 — Replace deprecated
<output type="data">(codemod) - GTR037 — Drop redundant
<param name>(codemod) - GTR089.1 — Repair invalid
<help>RST (partition fix) - GTR092 — Convert RST
<help>to Markdown (opt-in command) - GTR093 — Upgrade21_09 — collection_type / stdio / has_size (upgrade step)
- GTR094 — TokenizeVersion: @TOOL_VERSION@/@VERSION_SUFFIX@ extraction (opt-in command)
- GTR096: FixTestParamQualification, qualify a flat 24.2 test param name
- GTR097 — UpgradeToValid: the minimal-bump orchestrator
- The behavior gate: the modernize walk’s soundness argument