feat(solo): review approved VS AI production flow and shared avatar framing - #87
feat(solo): review approved VS AI production flow and shared avatar framing#87orbyteon wants to merge 10 commits into
Conversation
G9MaGiC
left a comment
There was a problem hiding this comment.
Reviewed Solo PR #87 at 60d998d against main ebac6e6. No blocking findings identified in the code review.
The two reported regressions are addressed:
- NumberManager no longer reactivates the scene's shared stop/rematch control after secret submission. RenderResult limits its visibility to MatchResult, and the scene-wired regression test covers completion and rematch. Persistent legacy ExitToMenu listeners are disabled before wiring RestartMatch.
- RecordOpponentMove retains the last revealed AI display range and stores the next range separately. RevealOpponentOutcome publishes it at the feedback phase. The guess-only history row also conceals the pending outcome. The EditMode regression verifies range publication and reset.
Also reviewed automatic transition cancellation and suspension, terminal result accounting, Lock/last-licks routing, leave confirmation, input validation, and the shared avatar resolver across Solo/Home/Daily Hunt/Settings.
Verified evidence:
- CI run 33983705158: Static integrity, Provisioner tests, Duel rule tests, Unity credentials, EditMode and Android compile all succeeded. EditMode: 228/228 passed.
- Production Visual Integrity run 33983705159 succeeded.
- PlayMode run 33984299569, job 101354897766: logs identify source CI 33983705158, requested head 60d998d, refs/pull/87/merge, and tested merge bae17e9. Results: 97 passed, 0 failed, 2 skipped out of 99. The skips are the explicit Onboarding and Settings capture fixtures, not Solo regression tests.
- Independently ran node --test tools/test/*.test.mjs on the checked-out head: 123 passed, 0 failed, 0 skipped.
Non-blocking documentation follow-up: the PR description still names cd2cd07 as head, seven commits, and unverified CI. Please refresh the current review/checkpoint section with 60d998d and the linked successful runs while keeping historical device acceptance clearly attributed to its original commit.
This is code-review approval for #87 only. I did not run a new device playtest or verify the external historical APK/capture bundle. #88 still needs its final review after #87 is merged and #88 is retargeted to updated main. Draft status and merge coordination remain with the author; no merge was performed.
Review intent and verified provenance
Draft for review only. Marinos authorized preparing this PR, not merging it or enabling auto-merge. No source changes, test reruns, captures or builds were performed for PR preparation.
mainatebac6e6b3f55106183e9ed616d0ce485c716dd0e.feature/solo-vs-ai-production-20260901atcd2cd0799f45b4a5dca06ff83facd54b320eeb65.Player-facing changes
Scope and boundaries
Includes Solo production integration/sole visual owner, approved Solo resources and reference contract, static Greek fallback-font correction, focused/integration tests, and the existing capture/build support. Removes the retired duplicate HolDuelBoardLayout owner; Git detects its metadata move to SoloDuelVisuals.
Shared-file changes are explicit: Main Menu profile binding, Daily Hunt profile header, Settings/profile integration, menu/entry wiring and cross-screen tests. These belong to the recorded integration/avatar corrections; this is not a claim that every changed file is under a Solo directory.
No changes in this comparison to
Assets/SCRIPT/Core,Assets/SCRIPT/PvP,playfab, scenes, ProjectSettings, or Daily Hunt SDF assets. No wallet/Shop/public matchmaking feature, release configuration, APK, logs or disposable evidence is committed. No PR65 branch merge or unrelated legacy asset-family transfer is proposed.Recorded human acceptance
Recorded in the working conversation, not represented as a GitHub approving review:
2aea43c14c92f3303d9112fa8d59dcc1f878bcbd, Marinos accepted Solo gameplay, pacing and typography; a shared-avatar blocker remained.cd2cd0799f45b4a5dca06ff83facd54b320eeb65, and authorized its remote backup and subsequent review preparation.Existing local validation and artifact provenance
Development validation was performed previously through Unity 2022.3.62f3 in disposable validation projects. The history records focused production-flow/liveness/pacing/layout/avatar validation, EN/EL viewport work at 720x1280, 1080x1920, 1080x2400 and 1179x2556, and internal Android playtest builds.
Exact historical results must not be relabeled as a fresh full-suite result on this final head. For example, the recorded P0.1 aggregated viewport gate was 1 passed / 0 failed / 92 not run (7.517 s) before subsequent pacing/typography/avatar revisions. Earlier complete-suite and Node counts likewise belong to their earlier candidates. A complete final-head XML/count bundle was not re-established during this PR preparation; reviewers should use the checkpoint-specific evidence, not infer green from this description.
The existing final internal shared-avatar-scale retest APK was inspected read-only:
INTERNAL_SOLO_SHARED_AVATAR_SCALE_RETEST_DEVELOPMENT.apkSVAI_SHARED_AVATAR_SCALE_APK_20260904_01(external to repositories; not uploaded by this PR).61381A9820408BB0EBAD68094E45C0B6F29418900E5CF8CF80D96AED8CAB47F5.Known TMP underline and UI touch-target warning families were recorded separately as non-causal in the local validation history. They are not globally suppressed or claimed absent.
GitHub CI and remaining review gates
At creation, current PR CI is not yet verified. Existing local evidence does not satisfy or bypass current GitHub CI.
Retain the existing repository CI policy: Static integrity, Provisioner tests, Duel rule tests, Unity credential gate, EditMode, Android compile check, and the subsequent PlayMode gate for visual changes must produce their applicable successful results on the PR comparison. Missing credentials/infrastructure failures or skipped substantive work are not a pass. No preview label, workflow dispatch, rerun or release build is requested here.
maincurrently requires one approving GitHub review. Recorded human gameplay/visual acceptance is not that formal approval. Both this PR and its dependent Main Menu PR remain drafts; merge and auto-merge are not authorized.Exact verified 104-record comparison manifest
Assets/Editor/SoloDuelLocalCaptureBuild.cs(added)Assets/Editor/SoloDuelLocalCaptureBuild.cs.meta(added)Assets/SCRIPT/Design/DailyHuntVisuals.cs(modified)Assets/SCRIPT/Design/MainMenuHomeVisuals.cs(modified)Assets/SCRIPT/Design/PanelPlayCaptureBootstrap.cs(modified)Assets/SCRIPT/Design/PlayerProfileAvatarResolver.cs(added)Assets/SCRIPT/Design/PlayerProfileAvatarResolver.cs.meta(added)Assets/SCRIPT/Design/SettingsVisuals.cs(modified)Assets/SCRIPT/Design/SoloDuelVisuals.cs(added)Assets/SCRIPT/Design/SoloDuelVisuals.cs.meta(renamed; fromAssets/SCRIPT/RuntimeUI/HolDuelBoardLayout.cs.meta)Assets/SCRIPT/Design/SoloSearchCaptureBootstrap.cs(modified)Assets/SCRIPT/Design/SoloSearchVisuals.cs(modified)Assets/SCRIPT/FakeMatchmaking.cs(modified)Assets/SCRIPT/GameManager.cs(modified)Assets/SCRIPT/Localization/L10n.cs(modified)Assets/SCRIPT/MenuManager.cs(modified)Assets/SCRIPT/NumberManager.cs(modified)Assets/SCRIPT/RuntimeUI/ExtrasRuntimeWiring.cs(modified)Assets/SCRIPT/RuntimeUI/HolDuelBoardLayout.cs(removed)Assets/SCRIPT/RuntimeUI/SoloBoardPresentationState.cs(modified)Assets/Tests/EditMode/OnboardingProfileTests.cs(modified)Assets/Tests/EditMode/SoloBoardPresentationStateTests.cs(modified)Assets/Tests/EditMode/SoloProductionPolicyTests.cs(added)Assets/Tests/EditMode/SoloProductionPolicyTests.cs.meta(added)Assets/Tests/PlayMode/DailyHuntCartoonVisualsPlayModeTests.cs(modified)Assets/Tests/PlayMode/FirstLaunchSoloEndToEndPlayModeTests.cs(added)Assets/Tests/PlayMode/FirstLaunchSoloEndToEndPlayModeTests.cs.meta(added)Assets/Tests/PlayMode/MainMenuPlayVisualsPlayModeTests.cs(modified)Assets/Tests/PlayMode/PanelPlayCapturePlayModeTests.cs(modified)Assets/Tests/PlayMode/ProductionSymbolPlayModeTests.cs(modified)Assets/Tests/PlayMode/ResponsiveUIFoundationPlayModeTests.cs(modified)Assets/Tests/PlayMode/SettingsVisualsPlayModeTests.cs(modified)Assets/Tests/PlayMode/SoloBoardPresenterPlayModeTests.cs(modified)Assets/Tests/PlayMode/SoloDuelLocalCapturePlayer.cs(added)Assets/Tests/PlayMode/SoloDuelLocalCapturePlayer.cs.meta(added)Assets/Tests/PlayMode/SoloDuelVisualsPlayModeTests.cs(added)Assets/Tests/PlayMode/SoloDuelVisualsPlayModeTests.cs.meta(added)Assets/Tests/PlayMode/SoloProductionFlowPlayModeTests.cs(added)Assets/Tests/PlayMode/SoloProductionFlowPlayModeTests.cs.meta(added)Assets/Tests/PlayMode/SoloSearchCartoonVisualsPlayModeTests.cs(modified)Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset(modified)Assets/newdesign/Resources/solo/production/solo_background_v1.png(added)Assets/newdesign/Resources/solo/production/solo_background_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_decorations_v1.png(added)Assets/newdesign/Resources/solo/production/solo_decorations_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_history_board_v1.png(added)Assets/newdesign/Resources/solo/production/solo_history_board_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_history_correct_icon_v1.png(added)Assets/newdesign/Resources/solo/production/solo_history_correct_icon_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_history_correct_v1.png(added)Assets/newdesign/Resources/solo/production/solo_history_correct_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_history_down_icon_v1.png(added)Assets/newdesign/Resources/solo/production/solo_history_down_icon_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_history_high_v1.png(added)Assets/newdesign/Resources/solo/production/solo_history_high_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_history_low_v1.png(added)Assets/newdesign/Resources/solo/production/solo_history_low_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_history_up_icon_v1.png(added)Assets/newdesign/Resources/solo/production/solo_history_up_icon_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_input_field_v1.png(added)Assets/newdesign/Resources/solo/production/solo_input_field_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_interaction_board_v2.png(added)Assets/newdesign/Resources/solo/production/solo_interaction_board_v2.png.meta(added)Assets/newdesign/Resources/solo/production/solo_key_backspace_icon_v1.png(added)Assets/newdesign/Resources/solo/production/solo_key_backspace_icon_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_key_clear_icon_v1.png(added)Assets/newdesign/Resources/solo/production/solo_key_clear_icon_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_keypad_key_v1.png(added)Assets/newdesign/Resources/solo/production/solo_keypad_key_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_opponent_card_shell_v1.png(added)Assets/newdesign/Resources/solo/production/solo_opponent_card_shell_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_opponent_medallion_v1.png(added)Assets/newdesign/Resources/solo/production/solo_opponent_medallion_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_opponent_speech_bubble_v2.png(added)Assets/newdesign/Resources/solo/production/solo_opponent_speech_bubble_v2.png.meta(added)Assets/newdesign/Resources/solo/production/solo_player_avatar_v1.png(added)Assets/newdesign/Resources/solo/production/solo_player_avatar_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_player_card_shell_v1.png(added)Assets/newdesign/Resources/solo/production/solo_player_card_shell_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_player_chip_v1.png(added)Assets/newdesign/Resources/solo/production/solo_player_chip_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_primary_cta_v1.png(added)Assets/newdesign/Resources/solo/production/solo_primary_cta_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_prompt_ribbon_v1.png(added)Assets/newdesign/Resources/solo/production/solo_prompt_ribbon_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_reaction_emoji_v1.png(added)Assets/newdesign/Resources/solo/production/solo_reaction_emoji_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_tip_board_v1.png(added)Assets/newdesign/Resources/solo/production/solo_tip_board_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_tip_bulb_v1.png(added)Assets/newdesign/Resources/solo/production/solo_tip_bulb_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_title_sparkle_v1.png(added)Assets/newdesign/Resources/solo/production/solo_title_sparkle_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_trophy_v1.png(added)Assets/newdesign/Resources/solo/production/solo_trophy_v1.png.meta(added)Assets/newdesign/Resources/solo/production/solo_vs_burst_v2.png(added)Assets/newdesign/Resources/solo/production/solo_vs_burst_v2.png.meta(added)Assets/newdesign/screen-map.md(modified)design/references/hol-cartoon-ui-v1/04-solo-duel-approved-contract.md(added)design/references/hol-cartoon-ui-v1/04-solo-duel-approved.png(added)tools/solo/audit-solo-duel-captures.mjs(added)tools/solo/capture-solo-duel.ps1(added)tools/test/mainmenu-assets.test.mjs(modified)tools/test/solo-duel-capture-tooling.test.mjs(added)