--- status: verifying trigger: "Single container update via inline keyboard fails with execution errors on both main workflow and container update sub-workflow" created: 2026-02-09T00:00:00Z updated: 2026-02-09T00:30:00Z --- ## Current Focus hypothesis: CONFIRMED - Three bugs in n8n-update.json causing update flow failure test: Push fixed workflow and trigger update via inline keyboard expecting: Update should complete without execution errors next_action: User triggers update to verify fix ## Symptoms expected: Tapping "Update" on inline keyboard confirmation should trigger container update via GraphQL API actual: Execution errors on both main workflow and update sub-workflow after confirmation dialog errors: (1) "Unknown argument 'filter' on field 'Docker.containers'" (2) "missing data.docker.containers" (3) Wrong node reference in Return Error reproduction: Tap Update on container submenu, confirm, observe error started: After Phase 16 migration (Docker socket proxy -> Unraid GraphQL API) ## Eliminated - hypothesis: Credential ID issue (placeholder "unraid-api-key-credential-id") evidence: n8n resolves credentials by name on push; actual n8n has correct ID "6DB4RZZoeF5Raf7V" timestamp: 2026-02-09 - hypothesis: ContainerId format is wrong (PrefixedID with colon) evidence: The PrefixedID format is correct and used by the mutation; the issue is the query using a nonexistent filter arg timestamp: 2026-02-09 - hypothesis: Main workflow "Prepare Text Action Input" error is related evidence: Execution 1516 was triggered by text command "Start dup", not an update callback - separate bug timestamp: 2026-02-09 ## Evidence - timestamp: 2026-02-09 checked: n8n execution 1498 (main workflow, callback update flow) found: Flow reaches "Execute Callback Update" which calls update sub-workflow; sub-workflow fails with "missing data.docker.containers" error implication: Error originates in update sub-workflow, propagates back to main workflow - timestamp: 2026-02-09 checked: n8n execution 1500 (update sub-workflow) found: "Query Single Container" node sends GraphQL query with `filter: { id: "..." }` argument. Unraid API responds HTTP 400: "Unknown argument 'filter' on field 'Docker.containers'" implication: The `filter` argument does not exist in Unraid GraphQL API schema. All working queries use `query { docker { containers { ... } } }` without filter - timestamp: 2026-02-09 checked: Working queries in n8n-actions.json, n8n-status.json found: All working nodes query ALL containers without filter, then filter client-side implication: Unraid GraphQL API only supports listing all containers, no server-side filtering - timestamp: 2026-02-09 checked: Update sub-workflow flow routing found: Main workflow passes containerId (resolved by name). Sub-workflow's "Has Container ID?" = true, routes to "Query Single Container" (broken filter). The "no container ID" path through "Query All Containers" works correctly implication: Direct ID path is always taken and always fails - timestamp: 2026-02-09 checked: "Return Error" node code found: References `$('Format Pull Error')` but node is actually named "Format Update Error" implication: Error path would also fail with "node not found" if reached - timestamp: 2026-02-09 checked: "Capture Pre-Update State" node found: Reads `data.image` (lowercase) from normalizer but normalizer outputs `Image` (capitalized) implication: currentImage would always be empty string even if normalizer worked ## Resolution root_cause: Three bugs in n8n-update.json: 1. PRIMARY: "Query Single Container" uses nonexistent GraphQL `filter` argument on `Docker.containers`. Unraid API does not support server-side filtering - returns HTTP 400. 2. SECONDARY: "Return Error" node references `$('Format Pull Error')` but node is named "Format Update Error" (leftover from pre-migration naming). 3. MINOR: "Capture Pre-Update State" reads `data.image` but normalizer outputs `data.Image` (case mismatch). fix: | 1. Changed "Query Single Container" jsonBody from filter-based query to same all-containers query used by working nodes 2. Rewrote "Normalize Single Container" to fetch all containers, then filter client-side by containerId from trigger data 3. Fixed "Return Error" node reference from `$('Format Pull Error')` to `$('Format Update Error')` 4. Fixed "Capture Pre-Update State" property access from `data.image` to `data.Image` verification: Pushed to n8n (HTTP 200). Awaiting user test of inline keyboard update flow. files_changed: - /home/luc/Projects/unraid-docker-manager/n8n-update.json