Decision
For Socket’s Apple bootstrap workflows, XcodeGen is the only supported authoring path for Xcode projects.
Do not retain, recommend, or add a standard Xcode-created-project fallback. Do not hand-edit generated .pbxproj files.
Why
The project specification needs one clear, reviewable source of truth. A split between generated project specs and manual Xcode project creation/editing introduces silent drift, makes bootstrap behavior non-deterministic, and leaves no reliable ownership model for build settings, target graphs, schemes, and local-package dependencies.
Required changes
- Make
project.yml (and its referenced .xcconfig, entitlement, scheme, and resource files) the authoritative project definition.
- Generate every Xcode project through
xcodegen generate.
- Remove the standard Xcode project-creation / manual-project fallback from Apple bootstrap guidance and scripts.
- Treat an unavailable
xcodegen binary as a clear blocked prerequisite, not a reason to switch project-authoring models.
- Keep the generated
.pbxproj checked in but never manually edited.
- Ensure workspace composition also stays declarative where possible; do not make users rely on hand-maintained generated-project state.
- Update validation and tests to enforce the policy.
Acceptance criteria
- Every supported native-app bootstrap run produces an XcodeGen spec and generates its
.xcodeproj from it.
- No bootstrap documentation presents manual Xcode project creation as an alternate supported route.
- The workflow fails clearly when XcodeGen is unavailable.
- Tests cover the generated-project-only contract.
This is a deliberate architecture boundary, not a temporary preference.
Decision
For Socket’s Apple bootstrap workflows, XcodeGen is the only supported authoring path for Xcode projects.
Do not retain, recommend, or add a standard Xcode-created-project fallback. Do not hand-edit generated
.pbxprojfiles.Why
The project specification needs one clear, reviewable source of truth. A split between generated project specs and manual Xcode project creation/editing introduces silent drift, makes bootstrap behavior non-deterministic, and leaves no reliable ownership model for build settings, target graphs, schemes, and local-package dependencies.
Required changes
project.yml(and its referenced.xcconfig, entitlement, scheme, and resource files) the authoritative project definition.xcodegen generate.xcodegenbinary as a clear blocked prerequisite, not a reason to switch project-authoring models..pbxprojchecked in but never manually edited.Acceptance criteria
.xcodeprojfrom it.This is a deliberate architecture boundary, not a temporary preference.