From b353339bd86d065342bc0645c12abef657831be7 Mon Sep 17 00:00:00 2001 From: server Date: Wed, 15 Apr 2026 17:35:02 +0200 Subject: [PATCH] Add GM smoke compare workflow for pack profiling --- docs/pack-profile-analysis.md | 38 ++ scripts/compare-pack-profile-gm-smoke.py | 728 +++++++++++++++++++++++ 2 files changed, 766 insertions(+) create mode 100755 scripts/compare-pack-profile-gm-smoke.py diff --git a/docs/pack-profile-analysis.md b/docs/pack-profile-analysis.md index 91126e9..253149b 100644 --- a/docs/pack-profile-analysis.md +++ b/docs/pack-profile-analysis.md @@ -67,6 +67,44 @@ To run a full `pck` vs `m2p` comparison in one go: The script captures both runs back-to-back and writes a combined compare report into the same output directory. +## Real game-flow smoke compare + +Startup-only runs are useful for bootstrap regressions, but they do not show the +real hot path once the client reaches `login`, `loading`, and `game`. + +For that case, use the CH99 GM smoke compare wrapper: + +```bash +python3 scripts/compare-pack-profile-gm-smoke.py \ + --left-label pck-only \ + --left-runtime-root /path/to/runtime-pck \ + --right-label secure-mixed \ + --right-runtime-root /path/to/runtime-m2p \ + --master-key /path/to/master.key \ + --sign-pubkey /path/to/signing.pub \ + --account-login admin +``` + +What it does: + +- copies the built client into a temporary workspace outside the repository +- stages each runtime into that workspace +- temporarily updates the selected GM account password and map position +- auto-logins through the special GM smoke channel (`11991` by default) +- enters game, performs one deterministic GM warp, archives `pack_profile.txt` +- restores the account password and the character map/position afterward +- deletes the temporary workspace unless `--keep-workspaces` is used + +Archived outputs per run: + +- raw report: `/