- Extract device action execution into artemis/mcp action layer:
typed ActionResult, capability manifest with startup validation,
AdbActuator as the single physical implementation, in-memory
ActionSession (replaces stdio subprocess MCP in validator), and
McpActionExecutor preserving the legacy executor contract.
adb_server keeps its external stdio/SSE surface unchanged and now
reuses the actuator implementation; import-time side effects moved
into configure_stdio_mode().
- Capability-gated prompt assembly (prompt_assembly.py): tool enums and
teaching segments render per available backend tools; full-set output
is byte-identical to the previous static text (locked by tests).
- Admin console task queue: serial worker replaced by a per-device
concurrent dispatcher (ARTEMIS_CONCURRENCY_MODE=global restores
serial semantics), per-session cancellation, strict device binding on
enqueue, unified stdio piping with tee to trace stdout.log, and
shutdown cleanup of all active runs. Fix _pid_exists exception order
so PermissionError is treated as alive.
- mcp_server reliability: spawn watchdog kills runners stuck before
interpreter startup and releases device reservations; task state
reconcile uses psutil liveness, prefers runner-reported pids, and
adds a 45s startup grace to stop false failure reports on Windows;
conversation_id is now optional end-to-end; explicit device_serial is
validated at submission.
- CLI install now writes ~/.claude/rules/artemis.md for Claude Code and
migrates/removes the legacy CLAUDE.md injection block; ~/.claude.json
is never rewritten when it fails to parse.
- Tests: Windows-portable stdio lifecycle and path assertions; new
suites for action layer, prompt assembly, spawn watchdog, and task
reconcile (895 passed, 3 skipped).
- Implement DevicePool and DeviceExecutionLock concurrency modes (per-device FIFO vs global serialization)
- Extend ArtemisClient SDK and CLI with explicit device targeting and concurrency strategy configuration
- Add server lifecycle management (artemis restart, stop, status) with cross-platform PID discovery
- Update MCP server tools to support multi-device dispatch, trace tagging, and per-device execution
- Enhance Showcase UI with step-by-step visual replay, playback speed controls, and device serial badges
- Add comprehensive unit test coverage and edge-case verification scripts
Persist and publish recoverable provider retries so temporary 503 and throttling events remain visible in live and historical task streams.
Aggregate repeated retries into an expandable action card, preserve terminal pause recovery, harden Windows worker isolation and output forwarding, and retain reliable Android hierarchy fallbacks with regression coverage.