Files
Conal Mullan 6ce0a46095 FIX: dewatermark --setup crash, migrate script dedup, and a CI gate for undefined names
`tools/dewatermark.py --setup` aborted with `NameError: get_runpod_config` before
doing any work — the helper is defined nowhere in the repo. Replaced with the
`load_dotenv()` + `os.getenv("RUNPOD_API_KEY")` pattern `tools/upscale.py` already
uses in the same function. Verified: setup now runs and finds the existing
template/endpoint.

Follow-up cleanup to the _migrate_common refactor (#85):
- `_migrate_common.load_mapping` was a stub returning raw JSON, so any caller
  would KeyError on `mapping["skip_commands"]`. Nothing hit it because both
  scripts shadowed it with a local copy. Promoted the real normalizing version
  (handles `None`, coerces skip lists to sets) and dropped both local copies.
- Dropped the duplicate `find_repo_root` from both scripts; the shared one is
  equivalent and has a better error message.
- Dropped the unused `yaml_quote` import from migrate_to_kiro.py.

Verified behaviour-neutral: `migrate_to_codex.py --force` and
`migrate_to_kiro.py --force` produce byte-identical output trees before and after.

New Lint Python workflow gates on undefined names (F821/F811/F822/F823) across
scripts/ and tools/. Scoped to rules where a hit is a real defect — the repo has
~800 unused-import and unused-local warnings that are not worth gating on.
Confirmed against the tagged v0.20.0 tree, where it reports 26 errors including
both `write_text` sites that broke the Codex and Kiro migrations.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 22:06:30 +01:00
..