Skip to content

fix(phase6): unconditional post-Learn capture + ban cold-boot on Deliver failure (#618 iter)#718

Merged
jjackson merged 1 commit into
mainfrom
feat/618-path-a-probe
Jun 5, 2026
Merged

fix(phase6): unconditional post-Learn capture + ban cold-boot on Deliver failure (#618 iter)#718
jjackson merged 1 commit into
mainfrom
feat/618-path-a-probe

Conversation

@jjackson
Copy link
Copy Markdown
Owner

@jjackson jjackson commented Jun 5, 2026

Iteration on #717's #618 probe. Run 20260605-2138 exposed the deeper bug: on a Deliver-leg failure the Phase-6 agent ran mobile_ensure_avd_running (cold-boot) to "recover" — which wiped the post-Learn state and reset the device PIN, wedging the rest of the run on the Android auth prompt (com.android.systemui). The agent's post-failure dump was the PIN screen, not the CommCare home — so the probe captured nothing, and this cold-boot is the engine behind #618's per-run thrashing (failure → cold-boot → state loss → re-register → give up).

Two fixes in app-screenshot-capture:

  1. Capture the post-Learn landing unconditionally at Deliver-leg start (journey-deliver/00-postlearn-landing.xml), before any Deliver recipe or remediation — so the Phase 6 Deliver leg: journey-learn lands in CommCare home, connect-resume-opp asserts Connect jobs-list visible — inter-leg navigation gap #618 ground truth is captured no matter what fails next. Classifies the pathway (nsv_home_screen=Path A vs connect_fragment_jobs_list=Path B).
  2. Never cold-boot / re-bootstrap to recover a Deliver-leg failure. A Deliver landing on the CommCare home is the Phase 6 Deliver leg: journey-learn lands in CommCare home, connect-resume-opp asserts Connect jobs-list visible — inter-leg navigation gap #618 nav gap (expected), not a device-infra failure; cold-boot resets the PIN and blocks recovery. Capture + record incomplete + STOP. Re-bootstrap stays reserved for the Learn-leg PersonalID-wipe row only.

The logout probe now triggers off the unconditional Path-A detection (not a connect-resume-opp-specific failure, which didn't match the agent running journey-deliver.yaml). Full suite green.

…ot on Deliver-leg failure

Iteration on the #618 probe (run 20260605-2138 exposed the deeper bug). On a
Deliver-leg failure the Phase-6 agent ran mobile_ensure_avd_running (cold-boot)
to "recover" — which WIPED the post-Learn state and RESET the device PIN,
wedging the rest of the run on the system auth prompt (com.android.systemui).
That destroyed the Path-A landing before the probe could capture it (the
agent's post-failure dump was the PIN screen, not the CommCare home), and is
the engine behind #618's per-run thrashing (failure → cold-boot → state loss →
re-register → give up).

Two fixes in app-screenshot-capture:
- Capture the post-Learn landing UNCONDITIONALLY at Deliver-leg start
  (journey-deliver/00-postlearn-landing.xml) — before any Deliver recipe or
  remediation — so the #618 ground truth is captured regardless of what
  fails next. The dump classifies the pathway (nsv_home_screen=Path A vs
  connect_fragment_jobs_list=Path B).
- NEVER cold-boot / re-bootstrap to recover a Deliver-leg failure. A Deliver
  landing on the CommCare home is the #618 nav gap (expected), NOT a device-
  infra failure; cold-boot resets the PIN and blocks all recovery. Capture +
  record incomplete + STOP. Re-bootstrap stays reserved for the Learn-leg
  CommCareSetupActivity/PersonalID-wipe row only.

The #618 logout probe now triggers off the unconditional Path-A landing
detection (not a connect-resume-opp-specific failure, which didn't match the
agent running journey-deliver.yaml). Full suite green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jjackson jjackson enabled auto-merge June 5, 2026 22:53
@jjackson jjackson merged commit e2dd5f1 into main Jun 5, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant