Skip to content

feat(solo): review approved VS AI production flow and shared avatar framing - #87

Draft
orbyteon wants to merge 10 commits into
mainfrom
feature/solo-vs-ai-production-20260901
Draft

feat(solo): review approved VS AI production flow and shared avatar framing#87
orbyteon wants to merge 10 commits into
mainfrom
feature/solo-vs-ai-production-20260901

Conversation

@orbyteon

@orbyteon orbyteon commented Sep 5, 2026

Copy link
Copy Markdown
Owner

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.

Player-facing changes

  • Integrates the existing canonical Solo number-duel flow with the approved cartoon production presentation: preparation, secret/keypad entry, distinct difficulty choices, visible actor/target guesses and feedback, useful ranges, chronological history, and results.
  • Incorporates the human-reviewed P0 clarity/liveness work, automatic AI progression, and P0.2 readable automatic pacing. No mandatory reveal/Continue permission taps are restored. Terminal outcomes remain available for Back/Rematch.
  • Keeps DuelRules and the four AI strategies as the rules/strategy authorities; readable presentation and lifecycle cancellation sit around them.
  • Applies the approved EN/EL typography, glyph containment and single-message-owner revision.
  • Resolves the selected Onboarding avatar through one shared profile resolver, including safe fallback and padding-aware portrait framing for Solo/Daily Hunt. The approved identity persists instead of a screen substituting a different avatar.

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:

  • At 2aea43c14c92f3303d9112fa8d59dcc1f878bcbd, Marinos accepted Solo gameplay, pacing and typography; a shared-avatar blocker remained.
  • The functional shared-avatar correction was then accepted for persistence, identity resolution and mapping.
  • Marinos explicitly accepted the final shared-avatar scale/framing at this exact head, 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:

  • Artifact: INTERNAL_SOLO_SHARED_AVATAR_SCALE_RETEST_DEVELOPMENT.apk
  • Local evidence folder: SVAI_SHARED_AVATAR_SCALE_APK_20260904_01 (external to repositories; not uploaded by this PR).
  • Size: 126,024,446 bytes.
  • SHA-256: 61381A9820408BB0EBAD68094E45C0B6F29418900E5CF8CF80D96AED8CAB47F5.
  • This is a Development/internal playtest artifact, not a signed release candidate or release authorization.

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.

main currently 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; from Assets/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)

@G9MaGiC G9MaGiC left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants