b74fb3c19c
- Gap 1: Format Stop/Start/Restart missing statusCode 304 check - Gap 2: Build Batch Keyboard reads action instead of actionType - Gap 3: /list not implemented in Keyword Router (minor) - Gap 4: Build Cancel Return Submenu references wrong predecessor Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
143 lines
6.3 KiB
Markdown
143 lines
6.3 KiB
Markdown
---
|
|
status: diagnosed
|
|
phase: 10.1-aggressive-workflow-modularization
|
|
source: [10.1-02-SUMMARY.md, 10.1-03-SUMMARY.md, 10.1-04-SUMMARY.md, 10.1-05-SUMMARY.md, 10.1-06-SUMMARY.md]
|
|
started: 2026-02-08T14:20:00Z
|
|
updated: 2026-02-08T14:35:00Z
|
|
---
|
|
|
|
## Current Test
|
|
|
|
[testing complete]
|
|
|
|
## Tests
|
|
|
|
### 1. Text stop with full container name
|
|
expected: Send "stop <container>" (full name). Container stops, success message returned.
|
|
result: pass
|
|
|
|
### 2. Text stop with partial name (single match)
|
|
expected: Send "stop <partial>" where only one container matches. Should resolve and stop without disambiguation.
|
|
result: issue
|
|
reported: "Booklore is currently stopped. I entered stop book and I get a failure message instead of container is already stopped"
|
|
severity: major
|
|
|
|
### 3. Text stop with partial name (multiple matches)
|
|
expected: Send "stop <ambiguous>" where multiple containers match. Should show disambiguation keyboard to choose which one.
|
|
result: issue
|
|
reported: "I do get a 'found multiple containers' message, but the message says multiple all and there's no keyboard letting me choose"
|
|
severity: major
|
|
|
|
### 4. Text stop with unknown name
|
|
expected: Send "stop nonexistent". Should return "no containers found" or similar error message.
|
|
result: pass
|
|
|
|
### 5. Text status with partial name
|
|
expected: Send "status <partial>". Should return container status as plain text (no inline keyboard buttons).
|
|
result: pass
|
|
|
|
### 6. Container list via /list
|
|
expected: Send /list. Should show paginated container list with inline keyboard.
|
|
result: issue
|
|
reported: "list returns the commands available, not a list of anything"
|
|
severity: minor
|
|
|
|
### 7. Container list pagination
|
|
expected: From container list, test next/prev page buttons.
|
|
result: pass
|
|
note: Accessed via "status" command (no args), not /list. Pagination works.
|
|
|
|
### 8. Select container from list (inline callback)
|
|
expected: From container list, tap a container name. Should show container details with action buttons.
|
|
result: pass
|
|
|
|
### 9. Inline stop via status keyboard
|
|
expected: From container status view, tap Stop button. Should show confirmation dialog.
|
|
result: pass
|
|
note: User noted this executes much faster than text stop command.
|
|
|
|
### 10. Confirmation dialog — confirm stop
|
|
expected: From confirmation dialog, tap Yes/Confirm. Container stops, success message.
|
|
result: pass
|
|
|
|
### 11. Confirmation dialog — cancel
|
|
expected: From confirmation dialog, tap Cancel. Returns to container status view.
|
|
result: issue
|
|
reported: "Cancel from the confirmation dialog does not work"
|
|
severity: major
|
|
|
|
### 12. Text batch stop
|
|
expected: Send "stop <name1> <name2>". Both containers stop, batch results shown.
|
|
result: pass
|
|
|
|
### 13. Container logs via text
|
|
expected: Send "logs <container>". Should return recent log lines as formatted text.
|
|
result: pass
|
|
|
|
### 14. Container start via text
|
|
expected: Send "start <container>" (stopped container). Container starts, success message.
|
|
result: pass
|
|
|
|
### 15. Update container via inline keyboard
|
|
expected: From container status view, tap Update. Shows confirmation, executes update on confirm.
|
|
result: pass
|
|
|
|
## Summary
|
|
|
|
total: 15
|
|
passed: 11
|
|
issues: 4
|
|
pending: 0
|
|
skipped: 0
|
|
|
|
## Gaps
|
|
|
|
- truth: "Stopping an already-stopped container returns helpful 'already stopped' message"
|
|
status: failed
|
|
reason: "User reported: Booklore is currently stopped. I entered stop book and I get a failure message instead of container is already stopped"
|
|
severity: major
|
|
test: 2
|
|
root_cause: "Format Stop Result (and Start/Restart) in n8n-actions.json only checks response.message/response.error but not response.statusCode. Docker returns HTTP 304 for already-stopped containers. With onError:continueRegularOutput, the 304 passes through but isn't detected as 'already stopped'."
|
|
artifacts:
|
|
- path: "n8n-actions.json"
|
|
issue: "Format Stop Result, Format Start Result, Format Restart Result nodes missing statusCode check"
|
|
missing:
|
|
- "Add statusCode 304 check: treat as success with 'already stopped/started' message"
|
|
- "Also handle 404 (not found) and 500 (server error) distinctly"
|
|
|
|
- truth: "Multiple container matches show disambiguation keyboard for user selection"
|
|
status: failed
|
|
reason: "User reported: I do get a 'found multiple containers' message, but the message says multiple all and there's no keyboard letting me choose"
|
|
severity: major
|
|
test: 3
|
|
root_cause: "Build Batch Keyboard node in n8n-workflow.json reads $json.action (which is 'multiple' — the routing label) instead of $json.actionType (which contains the actual action like 'stop'). This causes message text 'multiple all?' and callback_data 'bexec:multiple:...' which won't be recognized by callback handler."
|
|
artifacts:
|
|
- path: "n8n-workflow.json"
|
|
issue: "Build Batch Keyboard node uses $json.action instead of $json.actionType"
|
|
missing:
|
|
- "Change const action = $json.action to const action = $json.actionType in Build Batch Keyboard"
|
|
|
|
- truth: "/list command shows container list"
|
|
status: failed
|
|
reason: "User reported: list returns the commands available, not a list of anything"
|
|
severity: minor
|
|
test: 6
|
|
root_cause: "The /list command was never implemented in the Keyword Router. The router only recognizes: status, restart, start, stop, update, update all, logs. Unrecognized commands fall through to 'Show Menu' (help text). The 'status' command with no args correctly shows the container list."
|
|
artifacts:
|
|
- path: "n8n-workflow.json"
|
|
issue: "Keyword Router has no route for 'list' command"
|
|
missing:
|
|
- "Either add 'list' as alias for 'status' in Keyword Router, or document that 'status' is the correct command"
|
|
|
|
- truth: "Cancel button on confirmation dialog returns to container status view"
|
|
status: failed
|
|
reason: "User reported: Cancel from the confirmation dialog does not work"
|
|
severity: major
|
|
test: 11
|
|
root_cause: "Build Cancel Return Submenu node uses hardcoded $('Prepare Cancel Return').item.json reference. When cancel comes from confirmation dialog, data flows through Prepare Cancel From Confirm instead, so the node reference fails. Both paths output same data structure but the node only references one."
|
|
artifacts:
|
|
- path: "n8n-workflow.json"
|
|
issue: "Build Cancel Return Submenu node references wrong predecessor for confirmation cancel path"
|
|
missing:
|
|
- "Change $('Prepare Cancel Return').item.json to $input.item.json in Build Cancel Return Submenu"
|