Skip to content

[agent-cli] smoke keeps the How line when no device is bound to photograph (llp/0035 §Lifecycle smoke) - #195

Merged
Kudo merged 2 commits into
mainfrom
kudo/issue-171-smoke-probe-how
Oct 29, 2026
Merged

Kudo merged 2 commits into
mainfrom
kudo/issue-171-smoke-probe-how

Conversation

@Kudo

@Kudo Kudo commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator

Closes #171.

Pitch

When smoke has no device to photograph, it now tells you how to get one. The screenshot row used to stop at "No ios device is bound to this worktree." It now adds the dev command that binds a device, so the next step is on the same line.

Why

smoke --ios --no-start beside a hand-run expo start with the app attached skips the screenshot with one line: No ios device is bound to this worktree. The skip itself is by design. --no-start binds nothing, and a read verb never adopts a simulator that dev did not bind (llp/0035 Decision 1, Contracts 2 and 3, §Lifecycle smoke). The row does not say what to run next, though. The registry's refusal carries a How line that names the dev command which binds a device, and the device probe of smoke kept only the first line of the error. The boot dependency in the same file keeps the How line through whatAndHow. The probe was not switched to it when the binding refusal arrived in #134.

How

probeDevice in src/smoke/smokeAsync.ts reports the refusal through whatAndHow instead of firstLine. The screenshot row now reads:

no screenshot was taken: No ios device is bound to this worktree. How: run "npx @expo/agent-cli dev --ios --detach --wait-ready", then this command again.

The app phase's inconclusive reason quotes the same probe when nothing is attached and no device is found, so it carries the How line too. No LLP text changes.

This PR does not add an Or: line that names dev --ios --device <name> for the simulator the attached app runs on. That needs the target's device name on the app connection result and a sentence in llp/0035. The status output in the issue is by design (llp/0035 §Lifecycle output: with an app connected, next keeps the plan's own action). The reload timeout is a separate mechanism and is not triaged here.

Test Plan

  • E2E smoke-test.ts: smoke --ios --no-start --no-reload against a stub dev server with one Expo Go target and no binding, screenshot enabled, empty PATH. The screenshot row is skipped, names the missing binding, and names the dev command. One e2e case and no unit case, per the test rules in AGENTS.md: the rule crosses a process boundary, and a unit case would mock a module of this package to repeat it.
  • Ran: bun run typecheck, bun run lint, bun run format:check, bun run test (5685 pass), bun run build, bun run test:e2e -- smoke-test (45 pass).

Verified on main

On main at 6d8c134 (2026-10-24), built fresh, the new e2e case fails with no screenshot was taken: No ios device is bound to this worktree. and no How line. On this branch it passes.

🤖 Generated with Claude Code

Kudo added a commit that referenced this pull request Oct 23, 2026
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Kudo
Kudo marked this pull request as ready for review October 29, 2026 12:24
Kudo added a commit that referenced this pull request Oct 29, 2026
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Kudo
Kudo force-pushed the kudo/issue-171-smoke-probe-how branch from 27a89be to 3c9d47d Compare October 29, 2026 12:37
@Kudo
Kudo requested a review from vonovak October 29, 2026 12:52
Kudo and others added 2 commits October 30, 2026 03:04
…graph (llp/0035 §Lifecycle smoke)

`smoke --ios --no-start` beside a hand-run dev server skipped the
screenshot with "No ios device is bound to this worktree." and nothing
else. The registry's refusal names the `dev` command that binds one, and
the device probe kept only its first line.

Closes #171

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Kudo
Kudo force-pushed the kudo/issue-171-smoke-probe-how branch from 3c9d47d to d8e3e5d Compare October 29, 2026 19:06
@Kudo
Kudo merged commit 9667a2b into main Oct 29, 2026
18 checks passed
@Kudo
Kudo deleted the kudo/issue-171-smoke-probe-how branch October 29, 2026 19:25
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.

smoke --ios --no-start skips the screenshot ("No ios device is bound to this worktree") although a simulator is booted and the app is connected

2 participants