@@ -19,7 +19,19 @@ Read the current state first:
1919crill doctor --json
2020```
2121
22- When the machine has no operator session yet, stop and tell the user exactly:
22+ Completion rule: ` gate.session ` from ` crill doctor --json ` must be ` ok ` .
23+
24+ If ` gate.reachable ` is ` fail ` , or ` gate.session.extra.reason ` is
25+ ` gate_unreachable ` / ` server_unreachable ` , stop on the gate/network problem.
26+ Do not tell the operator to log in again yet. Ask them to restore gate reachability,
27+ then resume with:
28+
29+ ``` bash
30+ crill doctor --json
31+ ```
32+
33+ When ` gate.session ` is missing, invalid, or bound to a different gate, stop
34+ and tell the user exactly:
2335
2436``` bash
2537Run ` crill auth login < email> ` in your terminal first, then continue from this onboarding contract.
@@ -34,11 +46,16 @@ Goal: one preferred provider is chosen and persisted for future scans.
3446Inspect available auth sources:
3547
3648``` bash
37- crill provider status
49+ crill provider status --json
3850```
3951
4052Rules:
4153
54+ 0 . If ` providers.default ` from ` crill doctor --json ` is already ` ok ` , keep it
55+ and continue, unless the immediately previous first scan failed on the first
56+ LLM decision. In that failure case, re-enter Phase 2 and require a fresh
57+ provider recovery step instead of trusting the saved default again.
58+
42591 . If exactly one provider is clearly available, tell the operator which one
4360 was detected and persist it:
4461
@@ -77,9 +94,16 @@ explicit `--provider` flag overrides it.
7794
7895## Phase 3 — iOS Device Setup
7996
80- Goal: one real iOS device is selected and usable for ` crill ` .
97+ Goal: one real iOS device is selected, connected, and not obviously blocked on
98+ host-side signing/provider readiness.
8199
82- If no saved iOS device is present yet, run:
100+ Completion rule: ` home.saved-ios-device ` from ` crill doctor --json ` must be ` ok ` .
101+ This proves the saved device is still connected and signing/provider readiness
102+ looks plausible; it does not replace ` crill setup --ios ` if later app listing
103+ or scan output shows a real Appium/WDA/trust blocker.
104+
105+ If no saved iOS device is present yet, or the saved one is no longer connected,
106+ run:
83107
84108``` bash
85109crill setup --ios
@@ -152,6 +176,11 @@ crill report runs/<timestamp>/
152176The golden path is ` scan -> report ` . ` crill runs audit ` is maintainer
153177follow-up, not part of the participant default path.
154178
179+ If the first LLM decision fails, stop and return to provider recovery instead
180+ of letting the scan continue with blind back-navigation. Do not trust the
181+ existing ` providers.default == ok ` row alone after that failure; require a
182+ fresh provider recovery step first.
183+
155184## Recovery Rules
156185
1571861 . Prefer current ` crill ` output over stale memory.
0 commit comments