SynCal — fleet issue
_Last refreshed: 2026-06-12 (supersedes the 2026-06-11 version of this file). Re-verified against state files generated 2026-06-11T20:30:04Z and run logs through 2026-06-11T20:15Z._
Status (one line): Unhealthy because App Store version 1.0.0 is REJECTED with App Review state UNRESOLVED_ISSUES; not auto-healed because this is a human App Review rejection, not a build/archive/upload defect — the fleet doctor has no automated remediation for it (Not auto-healing (fixable=false, autoHeal=true); verify verdict: {"app":"SynCal","isRealFix":false,"confidence":"high","reasoning":"No fix attempted"}).
Root cause & evidence
The build/upload pipeline is healthy; the blocker is downstream, in App Review.
Failing log line (the blocking check, from state/asc-review.json → apps.SynCal.checks[0], generated_at: 2026-06-11T20:30:04Z):
Latest review submission has unresolved issues in App Review
Full blocking check object (state/asc-review.json → apps.SynCal):
{
"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 },
"submission": {
"id": "01ab9848-0044-4961-8139-f66e6d611514",
"state": "UNRESOLVED_ISSUES",
"submittedDate": "2026-05-28T16:38:57.151Z"
},
"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 binary pipeline is fine.
state/asc.json→SynCalshowslatest_build_state: "VALID"for build 4, and the build-4 run log (state/runs/SynCal-2026-06-09T20-52-13Z.log) ends cleanly:EXPORT SUCCEEDED→[04:53:33] BUILD READY — held for your review (build 4). - The most recent doctor pass (
state/runs/SynCal-2026-06-11T20-15-00Z.log) found nothing to rebuild:[04:15:00] no new changes since last build (b8c0c610f8896792bceef7b9d73abc0fdabb9c0f); skipping. - An App Review
UNRESOLVED_ISSUESrejection is a human reviewer decision requiring someone to read the Resolution Center message and act in App Store Connect. The doctor correctly attempted no fix (fixable=falseeven thoughautoHeal=true), matching the verify verdict (isRealFix=false, "No fix attempted", confidence high).
Corroborating state (all as of 2026-06-11/12):
state/asc.json→SynCal:app_store_state: "REJECTED",version_string: "1.0.0",latest_build_number: "4",latest_build_state: "VALID", uploaded2026-06-10T09:07:22-07:00,build_count: 3,asc_id: 6774228993, bundlecom.zzxwill.SynCal, ASC name "SynCal - Calendar Sync".state/asc-live.json→"SynCal": false(not live/on sale — consistent with a rejected version).state/fleet.json→apps.SynCal:enrolled: true,last_build_status: "success",last_build_number: 4,last_upload_status: "held_for_review",in_flight: "pending_review",pending_review_build: 4,pending_review_ipa: "/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SynCal/build/export/SynCal.ipa",last_commit_built: b8c0c610f8896792bceef7b9d73abc0fdabb9c0f. (last_verify_status: "skipped_device_offline"— "iPhone Air not connected" — is informational, NOT the unhealthy cause.)- Note the build-4 reconciliation:
asc.jsonalready shows build 4 VALID on App Store Connect, whilefleet.jsonstill marks build 4 as locallyheld_for_review/in_flight: pending_review— the upload happened outside the fleet publish step, so fleet state is stale and should be cleared during remediation (step 5 below).
Claude-ready fix prompt
This is an App Review rejection — do NOT change app code speculatively. Read the actual rejection reason first, then act. Concretely:
- Read the rejection. In App Store Connect → My Apps → "SynCal - Calendar Sync" (
asc_id 6774228993, bundlecom.zzxwill.SynCal, account kentlecheltjtk95@gmail.com) → App Review / Resolution Center, open review submission01ab9848-0044-4961-8139-f66e6d611514(submitted 2026-05-28). Capture the exact reviewer message and cited Review Guideline. For a calendar-sync utility, likely causes: insufficient EventKit privacy purpose strings, missing/unreachable privacy-policy URL, Guideline 2.1 sign-in/demo-account requirement (calendar-account OAuth — reviewers need a demo account or a no-login path), or metadata/screenshots not matching functionality.
- Decide whether build 4 already addresses the rejection. Build 4 (commit
b8c0c610f8896792bceef7b9d73abc0fdabb9c0f) is already uploaded and VALID on App Store Connect. Inspect that commit at/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SynCal. If it addresses the reviewer's cited issue, attach build 4 to version 1.0.0 in App Store Connect, reply in Resolution Center, and resubmit. If not, proceed to step 3.
- Address the cited issue by type:
- Metadata / privacy / demo-account (no code change): fix the listing directly in App Store Connect — App Privacy section, privacy-policy URL, screenshots, and (if Guideline 2.1) supply working demo credentials in App Review Information. The calendar purpose strings exist as
INFOPLIST_KEY_*build settings in/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SynCal/SynCal.xcodeproj/project.pbxproj(INFOPLIST_KEY_NSCalendarsUsageDescription,INFOPLIST_KEY_NSCalendarsFullAccessUsageDescription); only edit them if the reviewer specifically flags them. - Build defect (crash, broken sync, permission flow): apply the minimal fix under
/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SynCal/SynCal/, bumpCURRENT_PROJECT_VERSIONto 5 in/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SynCal/SynCal.xcodeproj/project.pbxproj(build 4 is already on ASC), then archive + export + upload via/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SynCal/Makefile(fastlane config in/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SynCal/fastlane, export config/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SynCal/ExportOptions.plist, ASC API key~/private_keys/AuthKey_K4J825WNC7.p8, key IDK4J825WNC7, issueref4f5cc6-4152-436c-861d-fe7082529f1a).
- Resubmit version 1.0.0 with the appropriate build from App Store Connect, replying to the Resolution Center thread; this moves the version out of
UNRESOLVED_ISSUES/REJECTED.
- Re-sync fleet state afterwards so
state/asc.json,state/asc-review.json,state/asc-live.json, andstate/dashboard.htmlreflect the new state, and clear the staleapps.SynCal.in_flight/pending_review_build/pending_review_ipa/pending_review_sincefields instate/fleet.json(build 4 is already on ASC). The blocking review check should then clear.
Relevant paths (absolute):
/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apple-apps-fleet/state/asc-review.json— the failing review check (load-bearing rejection)/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apple-apps-fleet/state/asc.json— ASC build truth (app_store_state: REJECTED, build 4 VALID)/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apple-apps-fleet/state/asc-live.json— live flags (SynCal: false)/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apple-apps-fleet/state/fleet.json—apps.SynCalpipeline state (stalepending_review_*for build 4)/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apple-apps-fleet/state/runs/SynCal-2026-06-09T20-52-13Z.log— clean build-4 log (EXPORT SUCCEEDED,BUILD READY — held for your review (build 4))/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apple-apps-fleet/state/runs/SynCal-2026-06-11T20-15-00Z.log— latest doctor pass (no new changes; skipping)/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SynCal— Xcode source project (project, Makefile, fastlane, ExportOptions.plist)/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SynCal/SynCal.xcodeproj/project.pbxproj—MARKETING_VERSION/CURRENT_PROJECT_VERSIONandINFOPLIST_KEY_*calendar purpose strings/Users/zzxwill/Programming/go/src/zzxwill/apple-apps/apps/SynCal/build/export/SynCal.ipa— exported build-4 IPA (already uploaded to ASC)/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 → apps.SynCal: build 4 (latest_build_number: "4", latest_build_state: "VALID", version 1.0.0, uploaded 2026-06-10T09:07:22-07:00). This is the latest build that reached App Store Connect as a VALID binary; the failure is at the App Review layer, not the build. If a new code fix is needed, the next build number should be 5.