- 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)
7.0 KiB
status, phase, source, started, updated, gap_closure
| status | phase | source | started | updated | gap_closure |
|---|---|---|---|---|---|
| gap-closure-complete | 10.2-better-logging-and-log-management | 10.2-01-SUMMARY.md, 10.2-02-SUMMARY.md, 10.2-03-SUMMARY.md, 10.2-04-SUMMARY.md | 2026-02-08T18:00:00Z | 2026-02-08T20:37:00Z | 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"