# Changelog

## Score

- CAI 49 → 74 (+25.3)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

## Lenses

- Code Health 90 → 89 (-0.4)
- Architecture 98 → 92 (-6.2)
- Maturity 65 → 66 (+1.1)
- Readiness 50 → 70 (+19.7)
- Security 30 → 89 (+59.0)
- Domain Modelling 95 → 100 (+5.2)
- Performance 100 (new)

## Resolved (119)

- AccountSelectionPolicy.mergingQuotaAccounts (cognitive 20) (Packages/QuotioCore/Sources/QuotioDomain/Accounts/AccountModels.swift)
- AmpQuotaFetcher.fetch (cognitive 16) (Packages/QuotioCore/Sources/QuotioInfrastructure/Quota/AmpQuotaFetcher.swift)
- AmpQuotaFetcher.parse (cognitive 29) (Packages/QuotioCore/Sources/QuotioInfrastructure/Quota/AmpQuotaFetcher.swift)
- AmpQuotaFetcher.parse (cyclomatic 28) (Packages/QuotioCore/Sources/QuotioInfrastructure/Quota/AmpQuotaFetcher.swift)
- AntigravityQuotaFetcher.fetchModels (cognitive 25) (Packages/QuotioCore/Sources/QuotioInfrastructure/Quota/AntigravityQuotaFetcher.swift)
- Change coupling: DashboardScreen.swift ↔ SettingsScreen.swift (Packages/QuotioCore/Sources/QuotioPresentation/Screens/DashboardScreen.swift)
- ClassTooLong: CompositionRoot (Quotio/App/CompositionRoot.swift)
- ClassTooLong: DashboardScreen (Packages/QuotioCore/Sources/QuotioPresentation/Screens/DashboardScreen.swift)
- ClaudeDesktopCredentialReader.activeOrganization (cognitive 21) (Packages/QuotioCore/Sources/QuotioInfrastructure/Quota/ClaudeDesktopCredentialReader.swift)
- ClaudeDesktopCredentialReader.bestCredential (cognitive 17) (Packages/QuotioCore/Sources/QuotioInfrastructure/Quota/ClaudeDesktopCredentialReader.swift)
- CodexQuotaFetcher.mapUsage (cognitive 38) (Packages/QuotioCore/Sources/QuotioInfrastructure/Quota/CodexQuotaFetcher.swift)
- CodexQuotaFetcher.mapUsage (cyclomatic 18) (Packages/QuotioCore/Sources/QuotioInfrastructure/Quota/CodexQuotaFetcher.swift)
- CompositeCodexQuotaCredentialLoader.credentials (cognitive 31) (Packages/QuotioCore/Sources/QuotioInfrastructure/Quota/CompositeCodexQuotaCredentialLoader.swift)
- CompositeCodexQuotaCredentialLoader.credentials (cyclomatic 20) (Packages/QuotioCore/Sources/QuotioInfrastructure/Quota/CompositeCodexQuotaCredentialLoader.swift)
- CopilotQuotaFetcher.fetch (cognitive 25) (Packages/QuotioCore/Sources/QuotioInfrastructure/Quota/CopilotQuotaFetcher.swift)
- CopilotQuotaFetcher.fetch (cyclomatic 18) (Packages/QuotioCore/Sources/QuotioInfrastructure/Quota/CopilotQuotaFetcher.swift)
- CopilotQuotaFetcher.map (cognitive 16) (Packages/QuotioCore/Sources/QuotioInfrastructure/Quota/CopilotQuotaFetcher.swift)
- DevinQuotaFetcher.tomlString (cognitive 27) (Packages/QuotioCore/Sources/QuotioInfrastructure/Quota/DevinQuotaFetcher.swift)
- DevinQuotaFetcher.tomlString (cyclomatic 19) (Packages/QuotioCore/Sources/QuotioInfrastructure/Quota/DevinQuotaFetcher.swift)
- Documentation: no architecture or design documentation (README.md)
- …and 99 more

## New (149)

- AccountQuotaCardV2.accountHeader (cognitive 35) (Packages/QuotioCore/Sources/QuotioPresentation/Quota/ProviderQuotaView.swift)
- AccountQuotaCardV2.accountHeader (cyclomatic 23) (Packages/QuotioCore/Sources/QuotioPresentation/Quota/ProviderQuotaView.swift)
- AccountRow.body (cognitive 33) (Packages/QuotioCore/Sources/QuotioPresentation/Components/AccountRow.swift)
- AccountRow.body (cyclomatic 29) (Packages/QuotioCore/Sources/QuotioPresentation/Components/AccountRow.swift)
- AccountsSettingsScreen.body (cognitive 26) (Packages/QuotioCore/Sources/QuotioPresentation/Settings/AccountsSettingsScreen.swift)
- AccountsSettingsScreen.body (cyclomatic 27) (Packages/QuotioCore/Sources/QuotioPresentation/Settings/AccountsSettingsScreen.swift)
- AppSettingsPage.body (cognitive 21) (Packages/QuotioCore/Sources/QuotioPresentation/Settings/AppSettingsPage.swift)
- AppSettingsPage.body (cyclomatic 16) (Packages/QuotioCore/Sources/QuotioPresentation/Settings/AppSettingsPage.swift)
- Boundary-crossing change coupling: RootNavigationView.swift ↔ CompositionRoot.swift (Packages/QuotioCore/Sources/QuotioPresentation/App/RootNavigationView.swift)
- Boundary-crossing change coupling: StatusBarManager.swift ↔ QuotioApp.swift (Packages/QuotioCore/Sources/QuotioPresentation/MenuBar/StatusBarManager.swift)
- Change coupling: QuotaCard.swift ↔ QuotaScreen.swift (Packages/QuotioCore/Sources/QuotioPresentation/Components/QuotaCard.swift)
- Change coupling: QuotioCLIBackend.swift ↔ AccountsScreenModel.swift (Packages/QuotioCore/Sources/QuotioInfrastructure/QuotioCLI/QuotioCLIBackend.swift)
- Change coupling: QuotioCLIBackend.swift ↔ QuotioCLIServerProcess.swift (Packages/QuotioCore/Sources/QuotioInfrastructure/QuotioCLI/QuotioCLIBackend.swift)
- Change coupling: config.rs ↔ tests.rs (apps/cli/src/config.rs)
- CompanionConnectionSetupView.body (cognitive 18) (Packages/QuotioCore/Sources/QuotioPresentation/Settings/CompanionConnectionSetupView.swift)
- Coverage not measured — Swift suite
- DisplayNames.metricLabel (cognitive 16) (apps/ios/Sources/QuotioMobile/DisplayNames.swift)
- DisplayNames.resetHint (cognitive 16) (apps/ios/Sources/QuotioMobile/DisplayNames.swift)
- Duplicated block (10 lines × 2) (Packages/QuotioCore/Sources/QuotioPresentation/Components/AgentConfigSheet.swift)
- Duplicated block (10 lines × 2) (Packages/QuotioCore/Sources/QuotioPresentation/MenuBar/StatusBarMenuRenderer.swift)
- …and 129 more

## Changes since last survey

- 300 commits — 148 feature/other, 152 fixes

## By area

- apps/cli — 145 commits
- Packages/QuotioCore — 101 commits
- apps/macos — 18 commits
- apps/ios — 14 commits
- .github/workflows — 11 commits
- (root) — 7 commits
- Packages/QuotioHostClient — 3 commits
- .codex/environments — 1 commit

## Notable commits

- fix: fix(accounts): classify originless helper accounts as native
- fix: fix(accounts): continue discovery after a native source fails
- fix: fix(accounts): display fetched labels for local providers
- fix: fix(accounts): group matching login sources
- fix: fix(accounts): honor disable capability in monitor rows
- fix: fix(accounts): honor native source suppression during quota collection
- fix: fix(accounts): keep custom provider references read-only
- fix: fix(accounts): keep every login source under one account identity
- fix: fix(accounts): keep local Warp mirrors read-only
- fix: fix(accounts): preserve disabled helper accounts during deduplication
- fix: fix(accounts): preserve independent Antigravity local selection
- fix: fix(accounts): preserve provider settings during key rotation
- fix: fix(accounts): reconcile usage by identity and omit failed probes
- fix: fix(accounts): register only verified native sources
- fix: fix(accounts): resume provider naming after an explicit label reset
- fix: fix(accounts): retain failed borrowed accounts in monitor
- fix: fix(accounts): retain first-refresh identity and native profile names
- fix: fix(accounts): retain refresh lineage after concurrent removal
- fix: fix(accounts): retry native discovery and isolate source failures
- fix: fix(accounts): scope native permissions to their source location
- …and 280 more
