SumRaceKids — fleet issue
Status (one line, 2026-06-12 doctor run): Still unhealthy — App Store version 1.0.0 (build 1) remains REJECTED / review state UNRESOLVED_ISSUES (submission 176858f9-10c6-480c-8830-88107225bb47, asc-review sync 2026-06-11T20:30:04Z); not auto-healed because clearing a human App Review rejection is not automatable (fixable=false, autoHeal=true; verify verdict: {"app":"SumRaceKids","isRealFix":false,"confidence":"high","reasoning":"No fix attempted"}). A Resolution Center reply was sent 2026-06-10 — still waiting on Apple (day 2); no code change or rebuild needed yet. Failing check: Latest review submission has unresolved issues in App Review (state/asc-review.json → apps.SumRaceKids.checks[0]).
*Previous update (2026-06-11):*
Status (one line, 2026-06-11 doctor run): Still unhealthy — App Store version 1.0.0 (build 1) remains REJECTED / review state UNRESOLVED_ISSUES (submission 176858f9-10c6-480c-8830-88107225bb47, asc-review sync 2026-06-10T20:19:37Z); not auto-healed because clearing a human App Review rejection is not automatable (fixable=false, autoHeal=true; verify verdict: {"app":"SumRaceKids","isRealFix":false,"confidence":"high","reasoning":"No fix attempted"}). A Resolution Center reply was already sent on 2026-06-10 (see below) — currently waiting on Apple; no code change or rebuild needed yet. Failing check: Latest review submission has unresolved issues in App Review (state/asc-review.json → apps.SumRaceKids.checks[0]).
*Previous update (2026-06-10):*
Status (one line): ✅ Replied to App Review on 2026-06-10 at 23:30 (UTC+8) / 15:30 UTC — now waiting for Apple's response. The rejection was Guideline 2.1 (Information Needed) re: Guideline 1.3 (Kids Category): Apple asked four questions (third-party analytics? third-party ads? data sharing? any other data collection?). Reply sent via App Store Connect Resolution Center answering "no" to all four (app is fully offline, no third-party SDKs, no data collection — verified against source). No code or binary change needed; build 1 stays as-is. ASC state will remain REJECTED / UNRESOLVED_ISSUES until App Review processes the reply (typically 1–2 days).
*Original triage note below (pre-reply, 2026-06-09):*
Status (one line): Unhealthy because App Store version 1.0.0 (build 1) is REJECTED with App Review state UNRESOLVED_ISSUES; not auto-healed because clearing a human App Review rejection requires reading the reviewer's message and acting in App Store Connect — the binary is VALID and there is no build/archive/upload defect to fix, so the doctor took no action (Not auto-healing (fixable=false, autoHeal=true); verify verdict isRealFix=false / "No fix attempted", confidence high).
Root cause & evidence
The build/upload pipeline is healthy — the blocker is downstream, in App Review. The submitted binary reached App Store Connect as a VALID build (state/asc.json → SumRaceKids: latest_build_state: "VALID", latest_build_number: "1", build_count: 1, uploaded 2026-05-27T07:23:02-07:00). A rebuild cannot clear a reviewer rejection, so re-running the pipeline is pointless — this is why fixable=false.
Failing log line (from state/asc-review.json → apps.SumRaceKids, generated_at: 2026-06-09T20:30:02Z):
Latest review submission has unresolved issues in App Review
Full blocking check object (state/asc-review.json → apps.SumRaceKids):
{
"reviewState": "UNRESOLVED_ISSUES",
"nextAction": "Resolve the outstanding App Review issues in App Store Connect, then resubmit if needed.",
"summary": { "errors": 1, "warnings": 0, "infos": 1, "blocking": 1 },
"checks": [
{
"severity": "error",
"message": "Latest review submission has unresolved issues in App Review",
"remediation": "Resolve the outstanding App Review issues in App Store Connect, then resubmit if needed.",
"field": null
}
]
}
Why auto-heal could not act: the fleet doctor only auto-heals build/archive/upload/signing regressions. An App Review UNRESOLVED_ISSUES / REJECTED decision is a human reviewer outcome with no automated remediation path. The matching workflow diagnosis was Not auto-healing (fixable=false, autoHeal=true), and the verify step returned {"app":"SumRaceKids","isRealFix":false,"confidence":"high","reasoning":"No fix attempted","risks":""} — i.e. the doctor correctly attempted no fix.
Corroborating state:
state/asc.json→SumRaceKids:app_store_state: "REJECTED",version_string: "1.0.0",latest_build_number: "1",latest_build_state: "VALID",build_count: 1, uploaded2026-05-27T07:23:02-07:00,asc_id: 6773766461,asc_name: "Sum Race Kids", bundlecom.zhouzhengxi.sumgame.state/asc-live.json→"SumRaceKids": false(not live / not on sale — consistent with a rejected version).state/fleet.json→appshas noSumRaceKidskey — this app was never enrolled in the fleet build pipeline (the onlysum*entry is the unrelatedsumsum). So there are no per-app pipeline run logs understate/runs/and no held build; everything known about its health comes from the ASC sync files above. The doctor still triaged it from the ASC truth and filed this issue.- Source on disk is a WKWebView wrapper around a bundled HTML/JS game:
/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SumRaceKids/SumRaceKids/GameWebView.swiftloads local web resources; the game assets live in the siblingapps/sum-game/directory (app.jsx,car.jsx,index.html,privacy.html, etc.). This matters because web-wrapper kids' apps are frequent App Review targets (Guideline 2.5.2 minimal-functionality / web-only, 4.2 minimum functionality, 1.3 Kids Category, 5.1.x privacy).
This issue file documents the blocker; no app code was changed and nothing was uploaded (per the doctor's no-touch policy).
Claude-ready fix prompt
This is an App Review rejection — do NOT blindly change app source and do NOT blindly bump/rebuild to "clear" it. The build (build 1) is already VALID; rebuilding will not move it out of UNRESOLVED_ISSUES. Read the actual rejection reason first, then act.
- Read the rejection. In App Store Connect → My Apps → "Sum Race Kids" (
asc_id 6773766461, bundlecom.zhouzhengxi.sumgame) → App Review → Resolution Center. Capture the exact reviewer message and the cited Review Guideline. For a kids' math game that is a WKWebView wrapper around bundled HTML/JS, the most likely causes are:
- Guideline 2.5.2 / 4.2 — minimum functionality / "app is primarily a web view / could be a website." Demonstrate native value (offline play, native UI chrome, no links out to the open web).
- Kids Category (1.3 / 5.1.4) — no behavioral advertising, no third-party analytics, no external links or purchasing outside a parental gate; a compliant privacy policy is required.
- 5.1.1 Privacy — privacy policy URL missing/unreachable, or the App Privacy ("data collection") answers don't match the app. A
privacy.htmlexists atapps/sum-game/privacy.html— confirm it is actually hosted at the URL entered in ASC and is reachable. - 2.3.x — screenshots/metadata don't match the shipped app.
- Classify the rejection into metadata/console-only vs. a real build change:
- Metadata / privacy / availability / review-info (no code change): Fix the listing directly in App Store Connect — update the privacy policy URL, App Privacy answers, age rating / Kids Category settings, screenshots, or review notes as the reviewer requires. Then go to step 4. The metadata source of record for this app is
/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SumRaceKids/fastlane/Deliverfileand theapps/SumRaceKids/fastlane/metadata tree; corrected metadata can be pushed withmake deliver(runsfastlane deliver) from/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SumRaceKids/.
- Build defect (crash, broken gameplay, web-only minimal-functionality, missing parental gate, links leaving the app): Make the minimal source fix:
- Web game assets:
/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/sum-game/(app.jsx,car.jsx,screens.jsx,index.html,privacy.html,styles.css). - Native wrapper:
/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SumRaceKids/SumRaceKids/GameWebView.swift,RootView.swift,SumRaceKidsApp.swift. - Then bump the build number: set
CURRENT_PROJECT_VERSIONfrom1to2in/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SumRaceKids/SumRaceKids.xcodeproj/project.pbxproj(and in/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SumRaceKids/project.ymlif the project is regenerated via xcodegen —make gen). KeepMARKETING_VERSION = 1.0.0unless the reviewer requires a new version string.
- Archive, export, and upload the new build (only if step 2 produced a code change). From
/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SumRaceKids/:
make archive→make export→make upload(usesxcrun altool --upload-appwithExportOptions.plist), or run the existingsubmit.sh/full_submit.shhelper scripts in that directory. Confirm the new build reachesVALIDin ASC before resubmitting.
- Resubmit version 1.0.0 (with build 1 if metadata-only, or the new build 2 if rebuilt) for review from App Store Connect. This moves the version out of
UNRESOLVED_ISSUES/REJECTED.
- Enroll in the fleet pipeline (recommended). This app is missing from
state/fleet.json→apps, so the doctor can only see its ASC state, never its build/commit health. Add aSumRaceKidsentry (mirror the shape of an enrolled app such asSynCal) and ensure/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SumRaceKids/.fleet/config.shis wired up, so future runs can pipeline it.
- Re-sync ASC truth after any change so
state/asc.json,state/asc-review.json,state/asc-live.json,state/fleet.json, andstate/dashboard.htmlreflect the new state (run the fleet asc-sync + dashboard steps). The blocking review check should then clear.
Relevant paths (all absolute):
/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apple-apps-fleet/state/asc-review.json— the failing review check (load-bearing rejection: "Latest review submission has unresolved issues in App Review")/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apple-apps-fleet/state/asc.json— ASC build truth (app_store_state: REJECTED, last known-good build 1 VALID,asc_id 6773766461)/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apple-apps-fleet/state/asc-live.json— live/on-sale flags (SumRaceKids: false)/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apple-apps-fleet/state/fleet.json— pipeline state (NOSumRaceKidskey — app not enrolled)/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SumRaceKids— Xcode source project (Makefile, ExportOptions.plist, fastlane, submit.sh, full_submit.sh, project.yml, RESUME.md)/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SumRaceKids/SumRaceKids.xcodeproj/project.pbxproj— version/build numbers (MARKETING_VERSION = 1.0.0,CURRENT_PROJECT_VERSION = 1, bundlecom.zhouzhengxi.sumgame)/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SumRaceKids/SumRaceKids/GameWebView.swift— native WKWebView wrapper (relevant to 2.5.2 / minimal-functionality rejections)/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/sum-game— bundled HTML/JS game assets, includingprivacy.html/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SumRaceKids/fastlane/Deliverfile— metadata/deliver config (make deliver)/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apple-apps-fleet/state/dashboard.html— dashboard render
Last known-good build number
From state/asc.json → SumRaceKids: build 1 (latest_build_number: "1", latest_build_state: "VALID", version 1.0.0, uploaded 2026-05-27T07:23:02-07:00). This is the last (and only) build that reached App Store Connect as a VALID binary. The rejection is at the App Review layer, not the build, so build 1 is the last known-good build. If a code fix is required to address the reviewer, the next build should be 2 (CURRENT_PROJECT_VERSION = 2).