Repository navigation
Fix Guitar Hero first-run controller tutorial deadlock - #140
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4866e2d81e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| def _guitar_hero_factory(cfg: dict) -> GameProfile: | ||
| return GuitarHeroV2Profile(dict(cfg)) | ||
| return GuitarHeroV3Profile(dict(cfg)) |
There was a problem hiding this comment.
Export V3 through the public GuitarHeroProfile alias
When callers use the public from ps2_autopilot.profiles import GuitarHeroProfile entry point rather than build_profile, they still receive GuitarHeroV2Profile because profiles/__init__.py continues to alias and export V2. Those callers therefore bypass this tutorial fix, while tests/test_profile_registry.py::test_registry_selects_guitar_hero_v2_and_aliases also fails because build_profile now returns an exact V3 instance but the test still expects V2. Update the public export/alias and its registry regression alongside this factory activation.
Useful? React with 👍 / 👎.
Live failure
The first supervised Guitar Hero V2 run reached GH1's
USING THE GUITAR CONTROLLERfirst-run instruction card. The card contains multiple colored guitar/fret illustrations in the lower half of the frame. V2's color-only receptor search incorrectly accepted those decorations as a coherent note highway, reportedtrack note highway, and never pressed the card's required Continue input.V3 fix
L2GuitarHeroV3Profilein the registry while retaining diagnostic maturityRegression coverage
Adds synthetic first-run-card tests that include decorative five-color fret markers, proving tutorial ownership preempts false gameplay, emits one L2 initially, retries only after the bounded timeout, and does not claim ordinary dark frames.
Evidence boundary
This fixes the exact first live blocker shown in the retained user capture. The rest of the GH lifecycle remains diagnostic until setlist/difficulty/highway/results paths are proven live.