docs(afk-sleep-work): add window mouse-click trap warning, task-scaled timeouts, and background tasks

This commit is contained in:
Bluscream committed 2026-10-02 00:43:49 +02:00
1 parent 289db75cb6
commit 5029ce5e8b
1 file changed
+12 -3
+12 -3
View File
@@ -33,8 +33,12 @@ The primary failure mode of unattended runs is wedging on a blocking command.
> (see [`code-languages/bash.md` §3](skills-public/code-languages/bash.md)). > (see [`code-languages/bash.md` §3](skills-public/code-languages/bash.md)).
> An unattended loop that never satisfies its exit condition hangs the session indefinitely. > An unattended loop that never satisfies its exit condition hangs the session indefinitely.
- **Use tool-native blocking:** Flags like `--wait`, `--no-detach`, or task completion events over polling. - **Tool-native blocking & harness background tasks:** Prefer flags like `--wait`, `--no-detach`, or
- **Enforce hard timeouts:** Wrap uncertain or long-running commands: `timeout 300s <command>`. dispatch long-running jobs as harness background tasks/daemons (with reactive completion notifications)
so the synchronous execution loop never gets wedged.
- **Enforce task-scaled timeouts:** Never run unbounded commands. Scale timeouts deliberately based on
estimated task duration (e.g. `timeout 30s` for quick checks, `timeout 180s` for tests, `timeout 15m` for
large builds) to prevent infinite hangs on deadlocks or network stalls.
- **Mandatory non-interactive flags:** Supply `-y`, `--yes`, `--batch`, `--headless`, `CI=1`, or - **Mandatory non-interactive flags:** Supply `-y`, `--yes`, `--batch`, `--headless`, `CI=1`, or
`DEBIAN_FRONTEND=noninteractive`. Never let a tool prompt `[y/N]` (see [`cli-tooling.md` §2](skills-public/cli-tooling.md)). `DEBIAN_FRONTEND=noninteractive`. Never let a tool prompt `[y/N]` (see [`cli-tooling.md` §2](skills-public/cli-tooling.md)).
- **Bounded retries with hypothesis variation:** Never rerun the same failing command unchanged. Cap retries - **Bounded retries with hypothesis variation:** Never rerun the same failing command unchanged. Cap retries
@@ -77,7 +81,12 @@ When targets are shielded by splash launchers, web wrappers, or login dialogs:
| :--- | :--- | :--- | | :--- | :--- | :--- |
| **1. Direct Bypass (Best)** | Run child binary directly | Inspect `ps aux` or wrapper configs while the launcher runs to extract child binary path and arguments, then execute it directly. | | **1. Direct Bypass (Best)** | Run child binary directly | Inspect `ps aux` or wrapper configs while the launcher runs to extract child binary path and arguments, then execute it directly. |
| **2. CLI / Config Flags** | Suppress launcher UI | Pass switches like `-nosplash`, `-nolauncher`, `-batch`, `--skip-intro`, or set `SkipLauncher=true` in `.ini`/`.json` configs. | | **2. CLI / Config Flags** | Suppress launcher UI | Pass switches like `-nosplash`, `-nolauncher`, `-batch`, `--skip-intro`, or set `SkipLauncher=true` in `.ini`/`.json` configs. |
| **3. GUI Automation (Fallback)** | Drive the window | Identify window (`xdotool`, `ydotool`, or desktop MCP), capture screenshot/dump, send keys/clicks, and verify state change with a timeout guard. | | **3. GUI Automation (Fallback)** | Drive the window | Target window non-interactively (`wmctrl -lp`, `xdotool search --name <name>`, Wayland tree, or desktop MCP), capture screenshot/dump, send keys/clicks, and verify state change with a timeout guard. |
> [!WARNING]
> **Beware mouse-click traps in window utilities:** Never run `xwininfo`, `xprop`, `xdotool selectwindow`,
> or ImageMagick `import` without explicit window IDs or query flags (`-root`, `-name`, `-id`). Without them,
> these tools pause and wait indefinitely for the user to click a window, hanging unattended execution instantly.
--- ---