--- phase: 16-api-migration task: UAT total_tasks: 6 plans + UAT status: paused last_updated: 2026-02-09T17:47:48.705Z --- v1.4 milestone PAUSED. Phase 16 code was built and pushed, but UAT revealed that the Unraid GraphQL API on the user's server (Unraid 7.2.x) only has `start` and `stop` Docker mutations. The `updateContainer`, `updateContainers`, and `updateAllContainers` mutations exist in the Unraid API source code (GitHub commit 277ac42046) but only ship in Unraid 7.3+ which has not been released yet. v1.3 workflows have been restored to n8n and are running in production. The v1.4 work is preserved on branch `gsd/v1.0-unraid-api-native`. - Phase 15 (Infrastructure Foundation): 2/2 plans complete — Container ID Registry, Token Encoder/Decoder, GraphQL Normalizer, Error Handler - Phase 16 Plan 01: Container Status migration (n8n-status.json) — WORKING - Phase 16 Plan 02: Container Actions migration (n8n-actions.json) — WORKING (start/stop/restart) - Phase 16 Plan 03: Container Update migration (n8n-update.json) — BLOCKED (updateContainer mutation doesn't exist on 7.2.x) - Phase 16 Plan 04: Batch UI migration (n8n-batch-ui.json) — WORKING - Phase 16 Plan 05: Main workflow routing migration (n8n-workflow.json) — PARTIALLY WORKING (queries work, batch update mutation doesn't exist) - Phase 16 Plan 06: Gap closure (text command paths) — WORKING but had paired item bugs (fixed in debug) - UAT: 6/9 tests passed, 3 blocked on missing updateContainer mutation - Debug fixes committed: batch cancel wiring, text command paired item fix (.first().json), batch confirmation HTTP node - v1.3 workflows restored to n8n (all 8 workflows, HTTP 200) - STATE.md and ROADMAP.md updated to reflect pause - Wait for Unraid 7.3 release (ships updateContainer, updateContainers, updateAllContainers mutations) - Re-run `/gsd:verify-work 16` to validate update operations work with 7.3 - Fix any remaining issues from UAT re-test - Phase 17 (Cleanup): Remove docker-socket-proxy artifacts, container logs feature - Phase 18 (Documentation): Update docs for Unraid API-native architecture - PAUSE v1.4 rather than maintain hybrid Docker proxy + GraphQL architecture - ROLLBACK to v1.3 workflows on n8n for stable production use - v1.4 work preserved on branch (mutation signatures match what 7.3 will ship) - The `DOCKER:UPDATE_ANY` API key permission exists because permission system was defined before mutations shipped - Container update internally calls legacy Bash script (`/usr/local/emhttp/plugins/dynamix.docker.manager/scripts/update_container`) - Unraid 7.3 not released — `updateContainer` mutation unavailable on current server (7.2.x) - No workaround that maintains the "fully Unraid API native" architecture goal The entire v1.4 milestone was about replacing Docker socket proxy with Unraid's GraphQL API. Status queries and start/stop/restart all migrated successfully and passed UAT. But container updates (single, batch, update-all) require a mutation that only exists in Unraid 7.3+. The user decided to pause rather than maintain a hybrid architecture. When Unraid 7.3 ships, the existing Phase 16 code should work as-is since the mutation signatures in our code match what the API source defines. UAT also uncovered 3 bugs that were diagnosed and fixed by parallel debug agents: 1. Batch cancel button: Route Callback output 20 was wired to empty array 2. Text commands: Paired item breakage after GraphQL chain expansion (.item.json → .first().json) 3. Batch confirmation buttons: Telegram node double-serialized reply_markup (converted to HTTP Request) These fixes are committed on the branch and will be ready when v1.4 resumes. When Unraid 7.3 releases: 1. Check `__type(name: "DockerMutations")` introspection to confirm updateContainer is available 2. Switch to branch `gsd/v1.0-unraid-api-native` 3. Push v1.4 workflows to n8n 4. Run `/gsd:verify-work 16` — the 3 previously-blocked tests should now pass 5. Continue to Phase 17 (Cleanup) and Phase 18 (Documentation)