f86ed83d00
- Updated UAT status to gap-closure-complete - Marked gaps 1-3 as closed by 10.2-04-PLAN.md - Marked gap 4 as accepted (minor, no scope creep)
126 lines
7.0 KiB
Markdown
126 lines
7.0 KiB
Markdown
---
|
|
status: gap-closure-complete
|
|
phase: 10.2-better-logging-and-log-management
|
|
source: 10.2-01-SUMMARY.md, 10.2-02-SUMMARY.md, 10.2-03-SUMMARY.md, 10.2-04-SUMMARY.md
|
|
started: 2026-02-08T18:00:00Z
|
|
updated: 2026-02-08T20:37:00Z
|
|
gap_closure: 2026-02-08T20:37:00Z
|
|
---
|
|
|
|
## Current Test
|
|
|
|
[testing complete]
|
|
|
|
## Tests
|
|
|
|
### 1. Basic Bot Functionality (No Regression)
|
|
expected: Send a container command (e.g., "status" or tap an inline button). Bot responds normally with no errors or changed behavior.
|
|
result: pass
|
|
|
|
### 2. Correlation ID in Execution Logs
|
|
expected: Send a text command to the bot (e.g., "status"). Then check the n8n execution log for that execution. The data flowing through "Generate Correlation ID" node should show a correlationId field (format: timestamp-randomstring, e.g., "1770573038000-k3j8d9f2x").
|
|
result: issue
|
|
reported: "generate correlation IDs are not wired with connections. Additionally there are 8 orphan nodes"
|
|
severity: major
|
|
|
|
### 3. Callback Correlation ID in Execution Logs
|
|
expected: Tap an inline keyboard button (e.g., a container action button). Check the n8n execution log. The data flowing through "Generate Callback Correlation ID" node should show a correlationId field in the same format.
|
|
result: issue
|
|
reported: "Same as above — callback correlation ID node also not wired"
|
|
severity: major
|
|
|
|
### 4. Sub-workflow Receives Correlation ID
|
|
expected: Trigger a sub-workflow call (e.g., send "status" which calls the Status sub-workflow). In the n8n execution log for the sub-workflow execution, the input data should contain a correlationId field passed from the main workflow.
|
|
result: issue
|
|
reported: "Same as above — correlation IDs can't reach sub-workflows since generators aren't wired"
|
|
severity: major
|
|
|
|
### 5. Structured Error Return from Sub-workflow
|
|
expected: Trigger an action that would cause a Docker API error (e.g., try to stop a container that doesn't exist, or an action on an invalid container name). The sub-workflow should return a structured object with `success: false` and an `error` object containing `workflow`, `node`, `message` fields — visible in the n8n execution log output.
|
|
result: pass
|
|
|
|
### 6. Debug Commands Removed (No False Triggers)
|
|
expected: Send "/errors" or "/debug status" as a message to the bot. The bot should NOT crash or produce unexpected behavior. These commands were removed — the bot should either ignore them or treat them as unrecognized input.
|
|
result: issue
|
|
reported: "/errors gives the commands menu and /debug status returns 'no container found matching /debug'"
|
|
severity: minor
|
|
|
|
## Summary
|
|
|
|
total: 6
|
|
passed: 2
|
|
issues: 4
|
|
pending: 0
|
|
skipped: 0
|
|
|
|
## Gaps
|
|
|
|
- truth: "Correlation ID generated and visible in execution logs for text commands"
|
|
status: closed
|
|
closed_by: 10.2-04-PLAN.md
|
|
reason: "FIXED: Connection keys renamed to node names, IF User Authenticated rewired to Generate Correlation ID -> Keyword Router"
|
|
severity: major
|
|
test: 2
|
|
root_cause: "Connection key mismatch: connections object uses node ID 'code-generate-correlation-id' instead of node name 'Generate Correlation ID'. n8n resolves connections by name, not ID. Additionally, no incoming connection from IF User Authenticated — it connects directly to Keyword Router, bypassing the generator. Also: 2 fully orphan nodes (Delete Batch Confirm Message, Send Text Update Started), 1 ghost connection key (code-log-error with no matching node)."
|
|
artifacts:
|
|
- path: "n8n-workflow.json"
|
|
issue: "Connection key 'code-generate-correlation-id' should be 'Generate Correlation ID'"
|
|
- path: "n8n-workflow.json"
|
|
issue: "IF User Authenticated connects directly to Keyword Router, bypassing Generate Correlation ID"
|
|
- path: "n8n-workflow.json"
|
|
issue: "Orphan node: Delete Batch Confirm Message (http-delete-batch-confirm-msg)"
|
|
- path: "n8n-workflow.json"
|
|
issue: "Orphan node: Send Text Update Started (telegram-text-update-started)"
|
|
- path: "n8n-workflow.json"
|
|
issue: "Ghost connection key: code-log-error (no matching node)"
|
|
missing:
|
|
- "Fix connection key from ID to name for Generate Correlation ID"
|
|
- "Wire: IF User Authenticated -> Generate Correlation ID -> Keyword Router"
|
|
- "Remove orphan nodes and ghost connection key"
|
|
debug_session: ""
|
|
|
|
- truth: "Correlation ID generated and visible in execution logs for callback commands"
|
|
status: closed
|
|
closed_by: 10.2-04-PLAN.md
|
|
reason: "FIXED: Connection keys renamed to node names, IF Callback Authenticated rewired to Generate Callback Correlation ID -> Parse Callback Data"
|
|
severity: major
|
|
test: 3
|
|
root_cause: "Same connection key mismatch: 'code-generate-callback-correlation-id' used instead of 'Generate Callback Correlation ID'. No incoming connection from IF Callback Authenticated — it connects directly to Parse Callback Data."
|
|
artifacts:
|
|
- path: "n8n-workflow.json"
|
|
issue: "Connection key 'code-generate-callback-correlation-id' should be 'Generate Callback Correlation ID'"
|
|
- path: "n8n-workflow.json"
|
|
issue: "IF Callback Authenticated connects directly to Parse Callback Data, bypassing Generate Callback Correlation ID"
|
|
missing:
|
|
- "Fix connection key from ID to name for Generate Callback Correlation ID"
|
|
- "Wire: IF Callback Authenticated -> Generate Callback Correlation ID -> Parse Callback Data"
|
|
debug_session: ""
|
|
|
|
- truth: "Sub-workflows receive correlationId from main workflow"
|
|
status: closed
|
|
closed_by: 10.2-04-PLAN.md
|
|
reason: "FIXED: Automatically resolved by fixing tests 2 and 3. Generators now execute, correlationId flows to Prepare Input nodes"
|
|
severity: major
|
|
test: 4
|
|
root_cause: "Downstream consequence of tests 2 and 3. The 19 Prepare Input nodes already reference $input.item.json.correlationId correctly, but since the generators never execute, correlationId is always empty/undefined. Fixing the generator wiring (tests 2/3) will automatically fix this."
|
|
artifacts:
|
|
- path: "n8n-workflow.json"
|
|
issue: "Prepare Input nodes reference correlationId but generators never execute"
|
|
missing:
|
|
- "Fix correlation ID generator wiring (same fix as tests 2/3)"
|
|
debug_session: ""
|
|
|
|
- truth: "Removed debug commands don't trigger unexpected behavior"
|
|
status: accepted
|
|
closed_by: 10.2-04-PLAN.md
|
|
reason: "ACCEPTED AS-IS: Minor cosmetic issue, commands have no real users, no crashes. Adding startsWith rules would be scope creep."
|
|
severity: minor
|
|
test: 6
|
|
root_cause: "Keyword Router has no interception rules for removed commands. '/debug status' matches rule index 1 ('contains status') because substring 'status' appears in the text, routing to Prepare Status Input which treats '/debug' as container name. '/errors' matches no rules and falls to fallback output -> Show Menu."
|
|
artifacts:
|
|
- path: "n8n-workflow.json"
|
|
issue: "Keyword Router has no startsWith rules to intercept /debug or /errors before generic contains rules"
|
|
missing:
|
|
- "Either accept current behavior (minor cosmetic) or add startsWith rules for /debug and /errors routing to fallback"
|
|
debug_session: ".planning/debug/keyword-router-debug-routing.md"
|