Skip to content

iOS realities the fakes do not model

Every one of these was found by running against hardware, not by reasoning. None of it was found by a fake, which is why a change to the digest, resolution or the device lifecycle is not believed until it has been run for real.

They are split by mechanic rather than kept as one list because almost none of it is needed to answer a given question, and a file that is read in full every time is a file that gets skimmed.

file what is in it
simulator-lifecycle runtimes, devices, simctl boot, and the window Xcode 27 renamed
device-and-wda launching the runner, USB against Wi-Fi, deep links, and what a snapshot costs
perception-geometry rects, isVisible, identity against value, and roles that are a bet on the framework
third-party-apps the habits that broke perception the first time it left Settings
compound-controls pickers, wheels, steppers, and the wrappers around them
screenshots-and-annotation points against pixels, on the one output a caller trusts by eye
unreachable-content Flutter canvases and WebViews, where there is no tree at any price

Two things that are not here. A note about one particular app, written for the agent to read while driving it, belongs in agent/ios_agent/skills/apps/. A note that exists because the digest drops something belongs in a fix to ios_mcp/perception/: this directory is the record of what it costs to encode one app’s habits somewhere they cannot be tested.