`bun run script/httpapi-exercise.ts --mode coverage --fail-on-missing --fail-on-skip` (the `test:httpapi` script) fails with 38 routes that have no scenario, so `unit (linux)`/`unit (windows)` report red even when every actual unit test passes.
Confirmed pre-existing on `dev` HEAD — the route groups involved (`agentui.ts`, `batuta.ts`, `telegram.ts` under `packages/opencode/src/server/routes/instance/httpapi/groups/`) already exist there, unrelated to any of the currently open PRs (#160 Telegram, #161 WhatsApp, #162 CI-timeout fixes). It only started showing up in CI now because earlier flaky/broken unit-test steps were aborting the job before this script ever ran, masking it.
Missing scenarios (from a 2026-09-09 CI run):
```
DELETE /agentui/{id}
DELETE /batuta/{id}
DELETE /combo/{id}
DELETE /mcp/{name}
DELETE /memory/project
GET /agentui
GET /agentui/{id}
GET /batuta
GET /batuta/branches
GET /batuta/{id}/pipeline-definition
GET /combo
GET /combo/{id}/resolve
GET /config/globalPath
GET /experimental/background-job
GET /external-agent/detect
GET /global/bug-relay/telemetry
GET /mcp/{name}/catalog
GET /memory
GET /memory/project
GET /telegram
POST /agentui
POST /agentui/generate
POST /agentui/{id}/sandbox/reset
POST /agentui/{id}/test
POST /batuta
POST /batuta/{id}/delegate
POST /batuta/{id}/dispatch
POST /batuta/{id}/pipeline-chat
POST /batuta/{id}/start
POST /batuta/{id}/sync
POST /combo
POST /experimental/background-job/{id}/cancel
POST /external-agent/{id}/skill
POST /telegram/connect
POST /telegram/disconnect
PUT /batuta/{id}/pipeline-definition
PUT /global/bug-relay/telemetry
PUT /memory
```
Out of scope for #161/#162 — those PRs are being merged with `unit (linux)`/`unit (windows)` still red on this specific check, since the actual unit test suites in both now pass cleanly.
`bun run script/httpapi-exercise.ts --mode coverage --fail-on-missing --fail-on-skip` (the `test:httpapi` script) fails with 38 routes that have no scenario, so `unit (linux)`/`unit (windows)` report red even when every actual unit test passes.
Confirmed pre-existing on `dev` HEAD — the route groups involved (`agentui.ts`, `batuta.ts`, `telegram.ts` under `packages/opencode/src/server/routes/instance/httpapi/groups/`) already exist there, unrelated to any of the currently open PRs (#160 Telegram, #161 WhatsApp, #162 CI-timeout fixes). It only started showing up in CI now because earlier flaky/broken unit-test steps were aborting the job before this script ever ran, masking it.
Missing scenarios (from a 2026-09-09 CI run):
```
DELETE /agentui/{id}
DELETE /batuta/{id}
DELETE /combo/{id}
DELETE /mcp/{name}
DELETE /memory/project
GET /agentui
GET /agentui/{id}
GET /batuta
GET /batuta/branches
GET /batuta/{id}/pipeline-definition
GET /combo
GET /combo/{id}/resolve
GET /config/globalPath
GET /experimental/background-job
GET /external-agent/detect
GET /global/bug-relay/telemetry
GET /mcp/{name}/catalog
GET /memory
GET /memory/project
GET /telegram
POST /agentui
POST /agentui/generate
POST /agentui/{id}/sandbox/reset
POST /agentui/{id}/test
POST /batuta
POST /batuta/{id}/delegate
POST /batuta/{id}/dispatch
POST /batuta/{id}/pipeline-chat
POST /batuta/{id}/start
POST /batuta/{id}/sync
POST /combo
POST /experimental/background-job/{id}/cancel
POST /external-agent/{id}/skill
POST /telegram/connect
POST /telegram/disconnect
PUT /batuta/{id}/pipeline-definition
PUT /global/bug-relay/telemetry
PUT /memory
```
Out of scope for #161/#162 — those PRs are being merged with `unit (linux)`/`unit (windows)` still red on this specific check, since the actual unit test suites in both now pass cleanly.