testsAndMisc/docs/superpowers/contracts/steam-compatibility-split-2026-08-17.json
Krzysztof kuhy Rudnicki 2c95425a60 steam_compatibility: split 663 -> 140 + 199 + 156 + 124 + 103
Grouped by the state each function touches rather than by size:

  steam_requirements.sh  199  requirement parsing, scoring, and the hardware
                              detection that feeds it
  steam_report.sh        156  the run loop and the cache it reads
  steam_api.sh           124  library discovery, Steam and ProtonDB calls
  steam_credentials.sh   103  credentials, usage text, presentation helpers

The grouping was forced by the SC2034 writer/reader rule, not chosen. Two
arrangements were discarded: detect_system alone in a lib writes the three
SYSTEM_* globals without reading them, and load_cache_map alone writes
CACHE_MAP without reading it. Both were fixed by putting the writer next to
its reader - detect_system beside score_game, load_cache_map beside main.

Verified: all 33 functions verbatim; every lib passes shellcheck standalone
with no suppression; and the script actually runs - `--help` prints the usage
block and exits 0, which is what proves the four source lines resolve and
main still dispatches.

Over-cap files 26 -> 25.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011w2Pj4Ek3ZNMQVYcFHgXDY
2026-08-17 14:32:41 +02:00

17 lines
1.1 KiB
JSON

{
"title": "Split steam_compatibility.sh 663 -> 140 + four libraries",
"objective": "steam_compatibility.sh is over the 250-line cap with no deployed copy. Split it into an entry script plus libraries grouped by the state each touches, so that no file assigns a global it never reads - the SC2034 constraint that decides where a shell seam can fall in this repo.",
"acceptance_criteria": [
"All five resulting files are under 250 lines; the over-cap total falls 26 -> 25",
"All 33 top-level functions are verbatim",
"Every library passes shellcheck standalone with no suppression",
"The script runs: --help prints usage and exits 0 through the split source graph"
],
"out_of_scope": [
"The API paths, which need Steam credentials and a network round-trip",
"libre_translate.sh and diagnose_pacman_hook_stall.sh, both parked",
"The phone_focus_mode scripts and the pacman-wrapper pair"
],
"verifier": "bash meta/scripts/verify_shell_split.sh for the verbatim claim; bash steam_compatibility.sh --help for the runtime claim; shellcheck standalone on each library; bash ~/utils/scripts/check_file_length.sh --all."
}