Skip to content

Improve Xcode 27 scene migration skill from real-app feedback - #663

Open
jfversluis wants to merge 2 commits into
mainfrom
jfversluis-improve-xcode27-migration-skill
Open

jfversluis wants to merge 2 commits into
mainfrom
jfversluis-improve-xcode27-migration-skill

Conversation

@jfversluis

@jfversluis jfversluis commented Oct 9, 2026 •

Copy link
Copy Markdown
Member

Summary

Incorporates scene-lifecycle migration feedback from MauiDay/event-app: .NET SDK 11.0.100-preview.6.26359.118, Microsoft.iOS 26.5.11720-net11-p6, Xcode 26.6, iOS + Android targets, and no custom lifecycle/URL/shortcut code. The guidance now covers .NET 11 generally, in preparation for GA: Preview 6 is cited only as historical evidence, and the actual GA SDK/workload/MAUI artifacts and APIs must be rechecked. Scope remains scene migration; no iOS 27.1 feature, foldable or iPhone Duo layout work is added.

  • Require inspecting the built bundle's UIApplicationSceneManifest, configuration and registered delegate. The real run's successful incremental build retained a stale Info.plist even after touching the source; document invalidating the active obj directory's AppManifest.plist and _CompileAppManifest.inputs (or cleaning), rebuilding and reinspecting the output.
  • Verify MauiUISceneDelegate in the app-resolved Microsoft.Maui.dll for the selected .NET 11 release; check custom forwarding APIs separately. Never apply the .NET 10 MAUI 10.0.110 pin to .NET 11.
  • Add a simple-app fast path and explicitly skip all Mac Catalyst work when no maccatalyst TFM exists.
  • Add the adjacent Preferences/NSUserDefaults privacy check: uncomment the applicable NSPrivacyAccessedAPICategoryUserDefaults reason CA92.1, preserving other declarations.
  • Document runtime startup verification and simctl process-log inspection for UIScene life cycle is now required. Any DEVELOPER_DIR override is scoped to simulator commands, never dotnet build.
  • Extend the read-only audit with simple-migration candidate guidance and per-platform source SceneDelegate.cs/UIApplicationSceneManifest presence. Existing statuses/exit codes remain unchanged; source presence is explicitly not built/runtime certification, and incomplete scans cannot claim the simple path.

Validation

  • All 79 Node migration audit, fixture-manifest and acceptance tests pass on Node 24.15.0, including a representative net11.0-android;net11.0-ios sample directory before/after scene configuration and incomplete-scan handling.
  • CI-pinned skill-validator static check passes for all 24 skills. Nonblocking size/numbered-step warnings remain; SKILL.md stays below the 500-line authoring limit.
  • Added three eval scenarios for .NET 11 GA preparation, stale built manifests and simulator-only Xcode selection. Updated the acceptance instrument SHA-256 in both qualification gates; acceptance tests pass.
  • git diff --check passes.
  • LLM evaluations were not executed: contribution guidance requires a credential-isolated environment, which this shared local environment is not. No app/device runtime test is claimed; the real-app observations above are reported feedback, not a new reproduction.

Document built-manifest verification, Preview 6 checks, simple-app migration, privacy declarations and simulator runtime diagnostics. Add source configuration audit reporting and regression coverage.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 9d94a8d6-a05e-4fbc-8e5e-d341256890c7
@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

Expert Code Review — PR #663

Methodology: 2 independent reviewers (1 failed — reduced coverage, no tiebreaker) with adversarial consensus.

Result: 1 finding posted as an inline comment (1 moderate, 0 minor).

Discarded findings:

  • Custom delegate base classes may still be classified as simple migrations — raised by 1 reviewer; discarded under the required 2-reviewer threshold.
  • Shell examples may need stronger handling for repository-derived placeholder values — raised by 1 reviewer; discarded under the required 2-reviewer threshold.

CI status: At review time, all 8 completed substantive checks passed; 1 evaluation check was skipped and the review workflow job remained in progress.

Test coverage: The PR adds focused Node tests and evaluation scenarios for simple migration, stale manifests, runtime verification, and incomplete scans. It does not cover nonstandard scene-delegate filenames or configuration-specific manifest filenames, which is the consensus gap reported inline.

Generated by Expert Code Review · 2 independent reviewers with adversarial consensus

Generated by Expert Code Review (auto) for #663 · copilot · gpt56 · 188.5 AIC · ⌖ 12.5 AIC · ⊞ 37.7K · ◷

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Expert Code Review: 1 consensus finding posted inline. See the lean summary comment for methodology, CI status, coverage assessment, and discarded findings.

Generated by Expert Code Review (auto) for #663 · copilot · gpt56 · 188.5 AIC · ⌖ 12.5 AIC · ⊞ 37.7K

} else if (entry.isFile() && extname(path).toLowerCase() === '.cs') {
} else if (entry.isFile()) {
const platform = /(?:^|\/)Platforms\/(iOS|MacCatalyst)\//.exec(name)?.[1];
if (platform && !appleHeads.has(platform))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 MODERATE — 2/2 consensus: The audit only recognizes the exact conventional filenames SceneDelegate.cs and Info.plist. A valid scene delegate in ExistingSceneDelegate.cs, or a configuration-specific manifest such as Info.Release.plist selected via ApplicationManifest, is therefore reported as missing even though it may be active. That can send the migration down the simple path and lead to duplicate delegates or edits to the wrong manifest. Detect scene delegates by registration/inheritance regardless of filename and resolve/report applicable plist candidates (or explicitly mark the result ambiguous); add coverage for nonstandard delegate and conditionally selected manifest names.

Treat .NET 11 as the general compatibility scope while preserving Preview 6 as historical evidence. Require checking GA SDK, workload, MAUI assembly and APIs instead of extrapolating preview support.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 9d94a8d6-a05e-4fbc-8e5e-d341256890c7

This branch has not been deployed

No deployments
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.

1 participant