# Changelog

## Score

- CAI 63 → 63 (+0.3)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

## Lenses

- Code Health 88 → 88 (-0.7)
- Architecture 94 → 85 (-8.9)
- Maturity 66 → 66 (+0.2)
- Readiness 49 → 51 (+2.1)
- Security 79 → 82 (+3.2)
- Performance 79 (new)

## Resolved (244)

- AXTranslationRequest.discoverRemoteElements (cognitive 30) (FBSimulatorControl/Commands/AXTranslationRequest.swift)
- AXTranslationRequest.discoverRemoteElements (cyclomatic 17) (FBSimulatorControl/Commands/AXTranslationRequest.swift)
- AXTreeWalk.resolveMarker (cognitive 20) (FBSimulatorControl/Commands/AXTreeWalk.swift)
- Boundary-crossing change coupling: IDBCommandExecutor.swift ↔ FBMacDevice+Commands.swift (CompanionLib/IDBCommandExecutor.swift)
- Boundary-crossing change coupling: ReplMethodHandler.swift ↔ Shared.swift (Companion/SwiftServer/MethodHandlers/ReplMethodHandler.swift)
- Boundary-crossing change coupling: SimulatorCrashLogCommands.swift ↔ SimulatorXCTestCommands.swift (FBSimulatorControl/Commands/SimulatorCrashLogCommands.swift)
- Boundary-crossing change coupling: SimulatorDapServerCommands.swift ↔ SimulatorXCTestCommands.swift (FBSimulatorControl/Commands/SimulatorDapServerCommands.swift)
- Boundary-crossing change coupling: SimulatorLocationCommands.swift ↔ SimulatorXCTestCommands.swift (FBSimulatorControl/Commands/SimulatorLocationCommands.swift)
- Boundary-crossing change coupling: SimulatorMemoryCommands.swift ↔ SimulatorXCTestCommands.swift (FBSimulatorControl/Commands/SimulatorMemoryCommands.swift)
- Boundary-crossing change coupling: SimulatorNotificationCommands.swift ↔ SimulatorXCTestCommands.swift (FBSimulatorControl/Commands/SimulatorNotificationCommands.swift)
- Change coupling clique: InstrumentsRunMethodHandler.swift, LaunchMethodHandler.swift, VideoStreamMethodHandler.swift, XctraceRecordMethodHandler.swift (Companion/SwiftServer/MethodHandlers/InstrumentsRunMethodHandler.swift)
- Change coupling: CompanionServiceProvider.swift ↔ CompanionServiceInterceptors.swift (Companion/SwiftServer/CompanionServiceProvider.swift)
- Change coupling: CompanionServiceProvider.swift ↔ LoggingInterceptor.swift (Companion/SwiftServer/CompanionServiceProvider.swift)
- Change coupling: DescribeMethodHandler.swift ↔ XCTestRunMethodHandler.swift (Companion/SwiftServer/MethodHandlers/DescribeMethodHandler.swift)
- Change coupling: DeviceApplicationCommands.swift ↔ DeviceDeveloperDiskImageCommands.swift (FBDeviceControl/Commands/DeviceApplicationCommands.swift)
- Change coupling: SimulatorApplicationCommands.swift ↔ SimulatorCrashLogCommands.swift (FBSimulatorControl/Commands/SimulatorApplicationCommands.swift)
- Change coupling: SimulatorConfiguration+CoreSimulator.swift ↔ SimulatorSet.swift (FBSimulatorControl/Configuration/SimulatorConfiguration+CoreSimulator.swift)
- Change coupling: SimulatorDapServerCommands.swift ↔ SimulatorDebuggerCommands.swift (FBSimulatorControl/Commands/SimulatorDapServerCommands.swift)
- Change-coupling hub: SimulatorLocationCommands.swift → SimulatorApplicationCommands.swift, SimulatorCrashLogCommands.swift, SimulatorDebuggerCommands.swift, SimulatorLogCommands.swift, SimulatorMemoryCommands.swift, SimulatorNotificationCommands.swift, SimulatorProcessSpawnCommands.swift, SimulatorVideoRecordingCommands.swift (FBSimulatorControl/Commands/SimulatorLocationCommands.swift)
- Change-coupling hub: SimulatorMemoryCommands.swift → SimulatorApplicationCommands.swift, SimulatorDapServerCommands.swift, SimulatorLogCommands.swift, SimulatorMediaCommands.swift, SimulatorNotificationCommands.swift, SimulatorProcessSpawnCommands.swift (FBSimulatorControl/Commands/SimulatorMemoryCommands.swift)
- …and 224 more

## New (416)

- AXBridgeDisplayInventory.decode (cognitive 16) (FBSimulatorControl/Commands/SimulatorDisplayInteraction.swift)
- AXBridgeDisplayInventory.decode (cyclomatic 17) (FBSimulatorControl/Commands/SimulatorDisplayInteraction.swift)
- AXBridgeUIAutomation.frontmostQuiescence (cognitive 26) (FBSimulatorControl/Accessibility/AXBridgeUIAutomation.swift)
- AXTranslationRequest.discoverRemoteElements (cognitive 33) (FBSimulatorControl/Accessibility/AXTranslationRequest.swift)
- AXTranslationRequest.discoverRemoteElements (cyclomatic 18) (FBSimulatorControl/Accessibility/AXTranslationRequest.swift)
- AXTreeWalk.resolveMarker (cognitive 20) (FBSimulatorControl/Accessibility/AXTreeWalk.swift)
- AccessibilityActionRequestTranslation.action (cyclomatic 16) (CompanionLib/SwiftServer/ValueTransformers/AccessibilityActionRequestTranslation.swift)
- AccessibilityElementFilter.keeps (cognitive 18) (FBControlCore/Accessibility/AccessibilityRequestOptions.swift)
- AccessibilityRequest.FBAXBridgeBuildNode (cognitive 47) (SimulatorFrameworkBridge/Swift/AccessibilityService.swift)
- AccessibilityRequest.FBAXBridgeBuildNode (cyclomatic 30) (SimulatorFrameworkBridge/Swift/AccessibilityService.swift)
- AccessibilityRequest.FBAXBridgeBuildTranslatorNode (cognitive 21) (SimulatorFrameworkBridge/Swift/AccessibilityService.swift)
- AccessibilityRequest.FBAXBridgeBuildTranslatorNode (cyclomatic 19) (SimulatorFrameworkBridge/Swift/AccessibilityService.swift)
- AccessibilityRequest.FBAXBridgeDispatchRequest (cognitive 56) (SimulatorFrameworkBridge/Swift/AccessibilityService.swift)
- AccessibilityRequest.FBAXBridgeDispatchRequest (cyclomatic 46) (SimulatorFrameworkBridge/Swift/AccessibilityService.swift)
- AccessibilityRequest.FBAXBridgeHitTest (cyclomatic 16) (SimulatorFrameworkBridge/Swift/AccessibilityService.swift)
- AccessibilityRequest.FBAXBridgeNodeFromSnapshot (cognitive 25) (SimulatorFrameworkBridge/Swift/AccessibilityService.swift)
- AccessibilityRequest.FBAXBridgeNodeFromSnapshot (cyclomatic 16) (SimulatorFrameworkBridge/Swift/AccessibilityService.swift)
- AccessibilityRequest.FBAXBridgeScanForAlert (cognitive 16) (SimulatorFrameworkBridge/Swift/AccessibilityService.swift)
- AccessibilityRequest.FBAXBridgeSetValue (cognitive 30) (SimulatorFrameworkBridge/Swift/AccessibilityService.swift)
- AccessibilityWaitCommand.run_with_client (cognitive 17) (idb/cli/commands/accessibility.py)
- …and 396 more

## Changes since last survey

- 300 commits — 298 feature/other, 2 fixes

## By area

- FBSimulatorControlTests/Tests — 39 commits
- FBSimulatorControl/Commands — 26 commits
- FBSimulatorControl/HID — 25 commits
- CompanionLib/SwiftServer — 17 commits
- EndToEndTests/harness.py — 16 commits
- SimulatorFrameworkBridge/Swift — 16 commits
- SimulatorFrameworkBridge/Runtime — 14 commits
- FBControlCoreTests/Tests — 10 commits
- FBSimulatorControl/Accessibility — 10 commits
- idb/common — 10 commits
- EndToEndTests/accessibility_tests.py — 8 commits
- EndToEndTests/test_accessibility.py — 8 commits
- .github/workflows — 7 commits
- CompanionTests/Tests — 7 commits
- FBSimulatorControl/CoreDevice — 6 commits
- SimulatorFrameworkBridgeLibTests/AccessibilityRuntimeTests.swift — 6 commits
- idb/grpc — 6 commits
- CompanionLib/IDBCommandExecutor.swift — 4 commits
- EndToEndTests/documentation.py — 4 commits
- FBControlCore/Applications — 4 commits

## Notable commits

- fix: Drive the accessibility tests against ReplHost's fixed screen instead of Settings
- fix: Give ReplHost a fixed screen for the accessibility tests
- change: Add a fixture whose accessibility answers block the main thread
- change: Add a harness step that denies permission prompts left on screen
- change: Add a termination deadline to Subprocess.run
- change: Add an extensible Shimulator protocol
- change: Add eject hardware button
- change: Add homebrew.py to list, install and inspect idb builds
- change: Add the install progress model
- change: Add top-level oncall or cleanup: `fbcode/idb`
- change: Advertise the compressions a companion can extract
- change: Allow frame reordering in clips explicitly
- change: Attribute Python telemetry at the writer
- change: Bind HID geometry to display targets
- change: Bind the AX quiescence monitor behind FBAXRuntime
- change: Bound a CoreDevice stream with the channel's deadline and cancellation
- change: Build every simulator XPC connection through one connector
- change: Build the hinge and orientation vendor reports in one place
- change: Call FBActivityRecord.from directly in its tests
- change: Capture the main screen when a display report cannot select a display
- …and 280 more
