1.8 KiB
1.8 KiB
Verification
Final checklist before considering an ExtremePackaging change done.
When applying these rules, always:
- Check the current target structure matches the active manifest
- Foundation: SharedModels, AppColors, AppFont
- Design System: AppTheme
- Verify new targets follow naming conventions
- Ensure imports and declared dependencies flow from Apps to Features to Infrastructure to Foundation, never from a lower layer to a higher one
- Create test targets for all new source targets
- Update Package.swift using closure-with-local-variables pattern:
- Define
deps,allProducts, andtargetsusinglet variable: [Type] = { ... }()pattern - NEVER use inline array definitions
- Use descriptive variable names for each dependency, product, and target
- Group by purpose/layer with comment headers (
// ---------- Header ----------) - Separate platform-specific code with
#if os(iOS) || os(macOS)
- Define
- Run
swift buildto verify package integrity - Verify Package.swift follows all formatting rules:
- Trailing commas in arrays
- Grouped dependencies (OpenAPI, Vapor, Apple-only)
- Grouped products (base, appleOnly)
- Grouped targets (modelTargets, apiTargets, uiTargets)
- Check platform separation in
Package.swiftuses#if os(), not#if canImport(). (Inside Swift source files,#if canImport(UIKit)/#if canImport(AppKit)is the correct idiom; the manifest is the only placecanImportis forbidden.) - Verify
.when(platforms:)used for platform-specific dependencies within targets - For font/resource targets:
- Confirm
.process()used for resources (NOT.copy()) - Verify
Bundle.moduleused (NOTBundle.main) - Check CoreText registration implemented with error handling
- Ensure registration called in app init before UI renders
- Verify no Info.plist font registration used
- Confirm