docs(05-02): complete error hardening and credential migration plan
Tasks completed: 2/2 - Standardize error messages to terse format - Migrate user ID to n8n credentials system SUMMARY: .planning/phases/05-polish-deploy/05-02-SUMMARY.md
This commit is contained in:
+11
-9
@@ -9,9 +9,9 @@
|
|||||||
|
|
||||||
- **Milestone:** v1.0 — Docker Control via Telegram
|
- **Milestone:** v1.0 — Docker Control via Telegram
|
||||||
- **Phase:** 5 of 5 — Polish & Deploy (IN PROGRESS)
|
- **Phase:** 5 of 5 — Polish & Deploy (IN PROGRESS)
|
||||||
- **Plan:** 1 of 1 executed
|
- **Plan:** 2 of 3 executed
|
||||||
- **Status:** Phase 5 Plan 01 complete - NLU replaced with keyword routing
|
- **Status:** Phase 5 Plan 02 complete - Error hardening and credential migration
|
||||||
- **Last activity:** 2026-02-01 - Completed 05-01-PLAN.md (NLU cleanup)
|
- **Last activity:** 2026-02-01 - Completed 05-02-PLAN.md
|
||||||
|
|
||||||
## Progress
|
## Progress
|
||||||
|
|
||||||
@@ -20,9 +20,9 @@ Phase 1: Foundation [##########] Complete (2/2 plans)
|
|||||||
Phase 2: Docker Integration [##########] Complete (2/2 plans)
|
Phase 2: Docker Integration [##########] Complete (2/2 plans)
|
||||||
Phase 3: Container Actions [##########] Complete (4/4 plans)
|
Phase 3: Container Actions [##########] Complete (4/4 plans)
|
||||||
Phase 4: Logs [##########] Complete (1/1 plans)
|
Phase 4: Logs [##########] Complete (1/1 plans)
|
||||||
Phase 5: Polish & Deploy [##########] Complete (1/1 plans)
|
Phase 5: Polish & Deploy [######----] In Progress (2/3 plans)
|
||||||
|
|
||||||
Overall: [##########] 100%
|
Overall: [#########-] 92%
|
||||||
```
|
```
|
||||||
|
|
||||||
## Recent Decisions
|
## Recent Decisions
|
||||||
@@ -58,6 +58,8 @@ Overall: [##########] 100%
|
|||||||
| NLU cleanup in Phase 5 | Workflow has Claude nodes to remove; defer cleanup to polish phase | 2026-01-31 |
|
| NLU cleanup in Phase 5 | Workflow has Claude nodes to remove; defer cleanup to polish phase | 2026-01-31 |
|
||||||
| Keyword order matters | restart before start to avoid substring match issues | 2026-02-01 |
|
| Keyword order matters | restart before start to avoid substring match issues | 2026-02-01 |
|
||||||
| No emojis on buttons | Clean button text for reliable keyword matching | 2026-02-01 |
|
| No emojis on buttons | Clean button text for reliable keyword matching | 2026-02-01 |
|
||||||
|
| Terse error messages | "Failed to X Y" without HTTP codes or technical details | 2026-02-01 |
|
||||||
|
| User ID in n8n credentials | Allows workflow sharing without exposing sensitive data | 2026-02-01 |
|
||||||
|
|
||||||
## Pending Todos
|
## Pending Todos
|
||||||
|
|
||||||
@@ -65,14 +67,14 @@ Overall: [##########] 100%
|
|||||||
|
|
||||||
## Blockers & Concerns
|
## Blockers & Concerns
|
||||||
|
|
||||||
(None - Claude API dependency removed)
|
(None)
|
||||||
|
|
||||||
## Session Continuity
|
## Session Continuity
|
||||||
|
|
||||||
- **Last session:** 2026-02-01
|
- **Last session:** 2026-02-01
|
||||||
- **Stopped at:** Completed 05-01-PLAN.md
|
- **Stopped at:** Completed 05-02-PLAN.md
|
||||||
- **Next step:** v1.0 milestone complete - ready for deployment
|
- **Next step:** Plan 03 - Deployment README
|
||||||
- **Resume command:** N/A - project complete
|
- **Resume command:** `/gsd:execute-phase .planning/phases/05-polish-deploy/05-03-PLAN.md`
|
||||||
|
|
||||||
---
|
---
|
||||||
*Auto-maintained by GSD workflow*
|
*Auto-maintained by GSD workflow*
|
||||||
|
|||||||
@@ -0,0 +1,102 @@
|
|||||||
|
---
|
||||||
|
phase: 05-polish-deploy
|
||||||
|
plan: 02
|
||||||
|
subsystem: error-handling
|
||||||
|
tags: [n8n, error-messages, credentials, security]
|
||||||
|
|
||||||
|
# Dependency graph
|
||||||
|
requires:
|
||||||
|
- phase: 05-01
|
||||||
|
provides: keyword-router, nlu-removal
|
||||||
|
provides:
|
||||||
|
- terse-error-messages
|
||||||
|
- credential-based-auth
|
||||||
|
- exportable-workflow
|
||||||
|
affects: [deployment-readme]
|
||||||
|
|
||||||
|
# Tech tracking
|
||||||
|
tech-stack:
|
||||||
|
added: []
|
||||||
|
patterns: [terse-errors, credential-references]
|
||||||
|
|
||||||
|
key-files:
|
||||||
|
created: []
|
||||||
|
modified: [n8n-workflow.json]
|
||||||
|
|
||||||
|
key-decisions:
|
||||||
|
- "Terse error format: 'Failed to {action} {container}' without technical details"
|
||||||
|
- "Docker socket errors: 'Cannot connect to Docker' regardless of underlying error"
|
||||||
|
- "Credential type: telegramAuth with userId field for user authentication"
|
||||||
|
|
||||||
|
patterns-established:
|
||||||
|
- "Error messages single-line: no stack traces, no HTTP codes in user-facing text"
|
||||||
|
- "Credential references via $credentials.telegramAuth.userId in IF nodes"
|
||||||
|
|
||||||
|
# Metrics
|
||||||
|
duration: 3min
|
||||||
|
completed: 2026-02-01
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 5 Plan 02: Error Hardening & Credential Migration Summary
|
||||||
|
|
||||||
|
**Terse error messages ("Cannot connect to Docker", "Failed to X Y") and user ID moved to n8n credentials system**
|
||||||
|
|
||||||
|
## Performance
|
||||||
|
|
||||||
|
- **Duration:** 3 min
|
||||||
|
- **Started:** 2026-02-01T02:12:51Z
|
||||||
|
- **Completed:** 2026-02-01T02:15:32Z
|
||||||
|
- **Tasks:** 2
|
||||||
|
- **Files modified:** 1
|
||||||
|
|
||||||
|
## Accomplishments
|
||||||
|
- All Docker socket errors now show "Cannot connect to Docker" (4 locations)
|
||||||
|
- Action failures show "Failed to {action} {container}" without verbose details
|
||||||
|
- User ID removed from workflow JSON - now uses `$credentials.telegramAuth.userId`
|
||||||
|
- Workflow can be safely exported and shared without exposing sensitive data
|
||||||
|
|
||||||
|
## Task Commits
|
||||||
|
|
||||||
|
Each task was committed atomically:
|
||||||
|
|
||||||
|
1. **Task 1: Standardize error messages** - `cab0914` (chore)
|
||||||
|
2. **Task 2: Migrate user ID to credentials** - `1e6c31f` (feat)
|
||||||
|
|
||||||
|
## Files Created/Modified
|
||||||
|
- `n8n-workflow.json` - Updated error messages and auth node credential references
|
||||||
|
|
||||||
|
## Decisions Made
|
||||||
|
- **Terse error format:** "Failed to {action} {container}" without HTTP codes or technical details
|
||||||
|
- **Docker socket errors:** Unified to "Cannot connect to Docker" message
|
||||||
|
- **Credential naming:** `telegramAuth` credential type with `userId` field (per RESEARCH.md pattern)
|
||||||
|
- **Removed switch/case error handling:** All action errors now use single terse message
|
||||||
|
|
||||||
|
## Deviations from Plan
|
||||||
|
|
||||||
|
None - plan executed exactly as written.
|
||||||
|
|
||||||
|
## Issues Encountered
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
## User Setup Required
|
||||||
|
|
||||||
|
**External services require manual configuration.** During deployment:
|
||||||
|
|
||||||
|
1. Create "Telegram Auth" credential in n8n:
|
||||||
|
- Type: Header Auth (or generic credential)
|
||||||
|
- Name: `Telegram Auth`
|
||||||
|
- Field: `userId` = your Telegram user ID
|
||||||
|
|
||||||
|
2. After importing workflow, map credentials:
|
||||||
|
- `Telegram API` -> your bot token credential
|
||||||
|
- `Telegram Auth` -> your user ID credential
|
||||||
|
|
||||||
|
## Next Phase Readiness
|
||||||
|
- Error messages production-ready (terse, user-friendly)
|
||||||
|
- Workflow exportable without sensitive data
|
||||||
|
- Ready for Plan 03: Deployment README
|
||||||
|
|
||||||
|
---
|
||||||
|
*Phase: 05-polish-deploy*
|
||||||
|
*Completed: 2026-02-01*
|
||||||
Reference in New Issue
Block a user