Files
unraid-docker-manager/.planning/phases/16-api-migration/16-UAT.md
T
Lucas Berger 07aeace1fd fix(16): resolve 3 UAT issues — update flow, batch cancel, text commands
- Fix update sub-workflow: remove unsupported GraphQL filter arg, fix node
  reference (Format Pull Error → Format Update Error), fix field case
  (data.image → data.Image)
- Fix batch cancel: connect Route Callback output 20 (batchcancel) to
  Prepare Batch UI Input (was empty connection array)
- Fix text commands: change .item.json to .first().json for paired item
  breakage after GraphQL chain expansion; convert Send Batch Confirmation
  from Telegram node to HTTP Request to fix double-serialized reply_markup

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 12:28:21 -05:00

5.4 KiB

status, phase, source, started, updated
status phase source started updated
diagnosed 16-api-migration 16-01-SUMMARY.md, 16-02-SUMMARY.md, 16-03-SUMMARY.md, 16-04-SUMMARY.md, 16-05-SUMMARY.md, 16-06-SUMMARY.md 2026-02-09T16:00:00Z 2026-02-09T16:20:00Z

Current Test

[testing complete]

Tests

1. View Container List

expected: Send a status/list command to the bot. You see a list of containers with names and states (running/stopped). Response completes within a few seconds. result: pass

2. View Container Status Submenu

expected: Tap a container from the list. You see a detail submenu showing the container's name, state, and action buttons (Start/Stop/Restart/Update). result: pass

3. Start a Stopped Container

expected: From a stopped container's submenu, tap Start. You see a success message confirming the container was started. result: pass

4. Stop a Running Container

expected: From a running container's submenu, tap Stop. You see a success message confirming the container was stopped. result: pass

5. Restart a Container

expected: From a container's submenu, tap Restart. You see a success message confirming the container was restarted (internally this is a stop + start sequence). result: pass

6. Start an Already-Running Container

expected: From an already-running container's submenu, tap Start. You see a message like "already started" (NOT an error). This is idempotent behavior. result: pass note: UI correctly hides Start button when container is already running — no idempotent case possible via UI

7. Update a Single Container

expected: From a container's submenu, tap Update. The bot begins updating the container. You see a result message indicating success (updated) or "already up to date" if no update was available. result: issue reported: "This does not work. It gets past the confirmation window but then there are execution errors on the main flow and container update flows" severity: blocker

8. Batch Container Selection UI

expected: Trigger the batch selection flow (e.g. batch/update-all command). You see an inline keyboard listing containers with checkboxes. You can toggle containers on/off and navigate pages if many containers exist. result: issue reported: "Batch selection works, but the cancel button on the batch confirmation does not work" severity: major

9. Text Command: Action on Container

expected: Send a text command like "start plex" or "stop sonarr". The bot performs the action and returns a success/error message — same behavior as the inline keyboard path. result: issue reported: "Start and stop text commands do not work, and additionally batch text command confirmation dialog has no actionable buttons to proceed" severity: blocker

Summary

total: 9 passed: 6 issues: 3 pending: 0 skipped: 0

Gaps

  • truth: "User can update a single container via inline keyboard and see success/up-to-date message" status: fixed reason: "User reported: This does not work. It gets past the confirmation window but then there are execution errors on the main flow and container update flows" severity: blocker test: 7 root_cause: "3 bugs in n8n-update.json: (1) Query Single Container used unsupported filter argument, (2) Return Error referenced nonexistent Format Pull Error node, (3) Capture Pre-Update State had case mismatch data.image vs data.Image" artifacts:

    • path: "n8n-update.json" issue: "GraphQL filter argument not supported by Unraid API; node reference and field case bugs" missing:
    • "Remove filter from GraphQL query, filter client-side in normalizer"
    • "Fix node reference to Format Update Error"
    • "Fix field case to data.Image" debug_session: ".planning/debug/update-flow-errors.md"
  • truth: "Cancel button on batch confirmation returns user to previous state" status: fixed reason: "User reported: Batch selection works, but the cancel button on the batch confirmation does not work" severity: major test: 8 root_cause: "Route Callback switch node output index 20 (batchcancel) wired to empty connection array [] — dead end. All other batch outputs (14-19) correctly connected to Prepare Batch UI Input." artifacts:

    • path: "n8n-workflow.json" issue: "Route Callback output 20 (batchcancel) had empty connection array" missing:
    • "Connect output 20 to Prepare Batch UI Input matching other batch outputs" debug_session: ".planning/debug/batch-cancel-broken.md"
  • truth: "Text commands (start/stop) perform actions and batch text command shows actionable confirmation" status: fixed reason: "User reported: Start and stop text commands do not work, and additionally batch text command confirmation dialog has no actionable buttons to proceed" severity: blocker test: 9 root_cause: "Two bugs: (1) Phase 16-06 GraphQL chain expansion breaks paired item tracking — $('NodeName').item.json fails after Execute Match sub-workflow. (2) Send Batch Confirmation Telegram node double-serializes reply_markup, Telegram silently ignores malformed buttons." artifacts:

    • path: "n8n-workflow.json" issue: "Prepare Text Action Input and Prepare Batch Execution use .item.json which fails after paired item break; Send Batch Confirmation uses Telegram node that double-serializes reply_markup" missing:
    • "Change .item.json to .first().json in Prepare Text Action Input and Prepare Batch Execution"
    • "Convert Send Batch Confirmation from Telegram node to HTTP Request node" debug_session: ".planning/debug/text-commands-broken.md"