# Changelog

## Score

- CAI 69 → 70 (+1.4)
- Rubric changed (rubric-2026.10.1 → rubric-2026.10.5) — scores are not directly comparable.

## Lenses

- Code Health 78 → 96 (+18.0)
- Architecture 95 → 99 (+3.7)
- Maturity 80 → 80 (-0.1)
- Readiness 57 → 51 (-6.0)
- Security 73 → 85 (+12.1)
- Domain Modelling 100 (new)
- Performance 100 → 100 (+0.0)

## Resolved (268)

- ARExperienceManager.createARConfiguration (cognitive 21) (Sources/Presentation/AR/ARExperienceManager.swift)
- ClassTooLong: GamingAppTemplate (Sources/EntertainmentTemplates/EntertainmentTemplates.swift)
- ClassTooLong: LearningAppTemplate (Sources/EducationTemplates/EducationTemplates.swift)
- ClassTooLong: TaskManagementAppTemplate (Sources/ProductivityTemplates/ProductivityTemplates.swift)
- ClassTooLong: TravelAppTemplate (Sources/TravelTemplates/TravelTemplates.swift)
- Documentation: no usage examples (Benchmarks/README.md)
- Documentation: written for insiders (Examples/EcommerceExample/README.md)
- Duplicate type definition with conflicting primary key types. The `Course` type is defined twice: once with `id: UUID` and once with `id: String`.
- Duplicate type definition with conflicting primary key types. The `Lesson` type is defined twice: once with `id: UUID` and once with `id: String`.
- Duplicate type definition with conflicting primary key types. The `Order` type is defined twice: once with `id: String` and once with `id: UUID`.
- Duplicate type definition with conflicting primary key types. The `Product` type is defined twice: once with `id: String` and once with `id: UUID`. This creates ambiguity for consumers regarding the identity format.
- Duplicate type definition with conflicting primary key types. The `Quiz` type is defined twice: once with `id: UUID` and once with `id: String`.
- Duplicate type definition with conflicting properties. The `PaymentMethod` type is defined twice: once with standard payment details (`id`, `type`, `last4`) and once with only an `icon` property. This suggests a missing or split definition.
- Duplicate type definition with conflicting property types. The `CourseLevel` type is defined twice, with the `color` property being `Color` in one and `String` in the other.
- Duplicate type definition with conflicting property types. The `OrderStatus` type is defined twice, with the `color` property being `String` in one and `Color` in the other.
- Duplicate type definition with conflicting structure. The `CartItem` type is defined twice: once with primitive fields (`productId: String`) and once with a composite object (`product: Product`) and `UUID` id. This breaks type consistency.
- Duplicated block (10 lines × 2) (Sources/CommerceTemplates/ECommerceTemplate.swift)
- Duplicated block (10 lines × 2) (Sources/FinanceTemplates/FinanceAppTemplate.swift)
- Duplicated block (10 lines × 2) (Sources/FinanceTemplates/FinanceAppTemplate.swift)
- Duplicated block (10 lines × 2) (Sources/Infrastructure/Performance/MemoryTracker.swift)
- …and 248 more

## New (15)

- Duplicated block (14–15 lines × 3) (Templates/EcommerceApp/Sources/EcommerceApp/CommerceModels.swift)
- Duplicated block (15–20 lines × 2) (Templates/EcommerceApp/Sources/EcommerceApp/CommerceProfileView.swift)
- Duplicated block (5 lines × 2) (Templates/EcommerceApp/Sources/EcommerceApp/CommerceStore.swift)
- Duplicated block (50 lines × 2) (Templates/SocialMediaApp/Sources/SocialMediaApp/DataManager.swift)
- Duplicated block (6 lines × 3) (Templates/EcommerceApp/Sources/EcommerceApp/CommerceModels.swift)
- Low cohesion: CommerceStore (LCOM4 4) (Templates/EcommerceApp/Sources/EcommerceApp/CommerceStore.swift)
- Low cohesion: EducationLearningStore (LCOM4 4) (Templates/EducationApp/Sources/EducationApp/EducationApp.swift)
- Low cohesion: TravelPlannerOperationsStore (LCOM4 5) (Templates/TravelPlannerApp/Sources/TravelPlannerApp/TravelPlannerApp.swift)
- Members sharing a duplicated core (19 members, 50+ identical tokens) (Templates/AIAssistantApp/Sources/AIAssistantApp/AIAssistantApp.swift)
- Members sharing a duplicated core (4 members, 50+ identical tokens) (Templates/AIAssistantApp/Sources/AIAssistantApp/AIAssistantApp.swift)
- Members sharing a duplicated core (6 members, 50+ identical tokens) (Templates/BookingReservationsApp/Sources/BookingReservationsApp/BookingReservationsApp.swift)
- MethodTooLong: DataManager.seedPreviewState (Templates/SocialMediaApp/Sources/SocialMediaApp/DataManager.swift)
- Off the main sequence: CleanArchitectureAppDomain
- Off the main sequence: TemplateScaffold
- Repeated repair: Templates/CleanArchitectureApp/Sources/CleanArchitectureAppDomain/ProfileDraft.swift (Templates/CleanArchitectureApp/Sources/CleanArchitectureAppDomain/ProfileDraft.swift)

## Changes since last survey

- 93 commits — 79 feature/other, 14 fixes

## By area

- (root) — 24 commits
- Templates/AIAssistantApp — 10 commits
- Templates/CleanArchitectureApp — 9 commits
- .github/workflows — 8 commits
- Sources/TemplateScaffold — 7 commits
- Templates/SocialMediaApp — 5 commits
- (repo) — 4 commits
- Templates/EcommerceApp — 3 commits
- docs/images — 3 commits
- .github/brand — 2 commits
- Templates/PrivacyVaultApp — 2 commits
- scripts/capture-screenshots.sh — 2 commits
- .github/ISSUE_TEMPLATE — 1 commit
- Documentation/Assets — 1 commit
- Examples/QuickStart — 1 commit
- Sources/CLI — 1 commit
- Sources/Infrastructure — 1 commit
- Templates/BookingReservationsApp — 1 commit
- Templates/EducationApp — 1 commit
- Templates/FitnessApp — 1 commit

## Notable commits

- fix: fix(clean-architecture): bound profile names and require visible text
- fix: fix(clean-architecture): cap the HTTP response size the client reads
- fix: fix(clean-architecture): count the Braille blank as invisible in names
- fix: fix(clean-architecture): never send a profile update without a body
- fix: fix(clean-architecture): reject name characters that draw nothing
- fix: fix(clean-architecture): report the name scalar limit as its own issue
- fix: fix(cli): move the @main command out of main.swift
- fix: fix(education): stop percentage labels from trapping on NaN or infinity
- fix: fix(privacy-vault): wire vault actions to the UI
- fix: fix(scaffold): refuse names that clash with names in the template
- fix: fix(scaffold): reject every reserved Swift keyword as a project name
- fix: fix(scripts): capture screenshots on a fixed iPhone 17 Pro simulator
- fix: fix(social-media): draw sample post media without network access
- fix: fix(templates): drop unused third-party dependencies
- change: Merge pull request #22: narrow the repository to twenty tested templates and a rewritten create-ios-app
- change: Merge pull request #26 from muhittincamdali/ci/shared-workflows-1.1.0
- change: chore(editorconfig): match the indentation Xcode uses for project files
- change: chore(release): prepare 3.0.0
- change: chore(scripts): add a simulator test runner for template packages
- change: chore(scripts): add simulator screenshot capture
- …and 73 more
