# Brief for porting agents (Windows host, 2026-10-22) Read `docs/port/HANDOFF.md` and `docs/port/PORTING.md` first; this file only lists the Windows differences and the rules for parallel agents. ## Tools on this Windows PC - Whole-tree check: `bash tools/port/check_all.sh [--mac]`. - Decompile lookup: `export PATH=~/bin:$PATH; python tools/port/fn.py 'Class::Method'` (use `python`, not `python3`; `~/bin/c++filt.exe` is installed). Data: `python tools/port/readdata.py SYMBOL N FMT`. `parity-out/` is already here. - Compile check (step 5) runs on the MacBook because the headers need Apple frameworks: `tools/port/check_mac.sh port/game/X.cpp [more files]` -> prints `CHECK-OK` or the first errors per file. It syncs `port/` to `~/choc3-check` on `ssh mac` (one ssh connection per call, ~3 s). Never run anything else on the Mac. - Generated headers (`defaultfont.h` etc.) are already in the tree and gitignored. Do not commit them. - Reference headers: `choc3/cpp_src/.h` (shipped originals, copied to `port/game/`); ported engine headers in `port/include/pf`; DWARF layouts in `docs/port/types/pflib_types.txt`. ## Rules (the owner's, strict) - 1:1 port: every function from the GAME decompile (the shipped binary wins over the SDK debug build), cited `// game @0x... sdk @0x...` (game-only classes: `game @` only). No guessed constants, no hand-placed coordinates, no behaviour added, no cleanup that changes results. Read both decompiles branch by branch before and after writing. - Do not mark anything "playable"/"ready". No emulator/Wine runs, no sound, no apps launched, no simulator. - Own only the files of your package. Other agents run in parallel in the same checkout: never edit, reformat, stash, reset, checkout or delete files that are not yours, never touch `docs/port/MANIFEST.tsv` (the lead recomputes it). Shared headers (`port/include/pf/*`): a minimal fix needed by your class is allowed, but re-run `tools/port/check_mac.sh` on the whole tree before committing it and mention it in your report. - Commit locally only (never push), as you finish each class: `git add ` then `git commit -m "1:1 port: "` (identity is already `CRT `; NO Co-Authored-By, no AI attribution; if `.git/index.lock` exists wait 5 s and retry). Commit messages never mention game names beyond the class names. - Every check must pass `tools/port/check_mac.sh ` = `CHECK-OK` before the commit. - Report: classes finished, function counts, any decision or header fix, anything you could not port and why. Keep the report under 300 words.