Files
Michał Pierzchała bd42b2602f fix(ios): serve regular --depth from every snapshot backend (#2431)
* fix(ios): serve regular --depth from every snapshot backend

A regular depth-capped request was refused on every runner backend but the
recursive tree: the query sweep past depth 1 and private AX at any depth
returned no capture, so a plan pinned or deferred to private AX (custom
actions, a private AX verdict on the session, the XCTest channel penalty)
fell through to the synthetic sparse root, which the daemon then rejected as
"regular iOS snapshot presentation requires a valid viewport".

Presentation already applies the presented-depth cut to whatever hierarchy a
backend acquired, and a depth-capped regular capture is a subset of the
unscoped one from the same backend, so the refusal protected nothing the
unscoped answer did not already disclose through truncated/effectiveDepth.
Delete the gate, declare private AX as regular-depth=presentation-cut, and
record the rule in ADR 0004.

Closes #2403

* test(ios): prove a private-AX-pinned plan serves regular --depth through acquisition

The presentation-package test passes with the old backend depth gate restored,
because it calls presentation directly. This runner-bundle test pins private
AX, asks for regular depth 1 against the launched host app, and requires the
plan to reach acquisition and presentation: a private-ax verdict that is not
sparse, more than one node, a real root rect, and a payload no larger than the
unscoped capture from the same backend. With the gate restored the plan logs
SNAPSHOT_BACKEND_DEPTH_UNSUPPORTED and returns the zero-rect sparse root, and
the test fails.
2026-09-10 11:21:01 +02:00

54 lines
1.2 KiB
JSON

{
"backends": [
{
"name": "tree",
"forceable": true,
"supportsRawProjection": true,
"regularDepth": "presented-frontier",
"hittable": "geometric-actionability",
"deepExtension": "no",
"depthLadder": "n/a",
"availability": {
"simulator": true,
"physicalDevice": true
},
"knownGaps": [
{
"id": "deep-extension",
"owner": "iOS snapshot maintainers",
"trackingIssue": 1635,
"expiresOn": "2027-03-31"
}
]
},
{
"name": "queries",
"forceable": false,
"supportsRawProjection": false,
"regularDepth": "flat",
"hittable": "geometric-actionability",
"deepExtension": "n/a",
"depthLadder": "n/a",
"availability": {
"simulator": true,
"physicalDevice": true
},
"knownGaps": []
},
{
"name": "private-ax",
"forceable": true,
"supportsRawProjection": true,
"regularDepth": "presentation-cut",
"hittable": "geometric-actionability",
"deepExtension": "yes",
"depthLadder": "yes",
"availability": {
"simulator": true,
"physicalDevice": false
},
"knownGaps": []
}
]
}