docs(10.1): create phase plan
Phase 10.1: Aggressive Workflow Modularization - 5 plan(s) in 3 wave(s) - Wave 1: Foundation (rename files, analyze boundaries, user approval) - Wave 2: 3 parallel extractions (batch-ui, status, confirmation) - Wave 3: Integration verification and UAT - Ready for execution Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,204 @@
|
||||
---
|
||||
phase: 10.1-aggressive-workflow-modularization
|
||||
plan: 04
|
||||
type: execute
|
||||
wave: 2
|
||||
depends_on: ["10.1-01"]
|
||||
files_modified:
|
||||
- n8n-workflow.json
|
||||
- n8n-confirmation.json
|
||||
autonomous: true
|
||||
|
||||
must_haves:
|
||||
truths:
|
||||
- "Stop confirmation dialog appears before stopping containers"
|
||||
- "Update confirmation dialog appears for multi-container updates"
|
||||
- "Expired confirmations show 'session expired' message"
|
||||
- "Confirm/cancel buttons work correctly"
|
||||
artifacts:
|
||||
- path: "n8n-confirmation.json"
|
||||
provides: "Confirmation dialog sub-workflow"
|
||||
contains: "Execute Workflow Trigger"
|
||||
- path: "n8n-workflow.json"
|
||||
provides: "Main workflow with confirmation extraction"
|
||||
key_links:
|
||||
- from: "n8n-workflow.json"
|
||||
to: "n8n-confirmation.json"
|
||||
via: "Execute Workflow node"
|
||||
pattern: "executeWorkflow.*confirm"
|
||||
---
|
||||
|
||||
<objective>
|
||||
Extract confirmation dialog nodes from main workflow into dedicated n8n-confirmation.json sub-workflow.
|
||||
|
||||
Purpose: Remove ~15-20 nodes from main workflow by extracting the confirmation dialog domain.
|
||||
Output: New n8n-confirmation.json sub-workflow, updated main workflow with confirmation nodes extracted.
|
||||
</objective>
|
||||
|
||||
<execution_context>
|
||||
@/home/luc/.claude/get-shit-done/workflows/execute-plan.md
|
||||
@/home/luc/.claude/get-shit-done/templates/summary.md
|
||||
</execution_context>
|
||||
|
||||
<context>
|
||||
@.planning/PROJECT.md
|
||||
@.planning/ROADMAP.md
|
||||
@.planning/STATE.md
|
||||
@.planning/phases/10.1-aggressive-workflow-modularization/10.1-CONTEXT.md
|
||||
@.planning/phases/10.1-aggressive-workflow-modularization/10.1-01-SUMMARY.md
|
||||
@n8n-workflow.json
|
||||
@n8n-actions.json
|
||||
</context>
|
||||
|
||||
<tasks>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 1: Create n8n-confirmation.json sub-workflow with extracted confirmation nodes</name>
|
||||
<files>n8n-confirmation.json (new)</files>
|
||||
<action>
|
||||
Create new sub-workflow containing confirmation dialog nodes.
|
||||
|
||||
**Input contract (Execute Workflow Trigger):**
|
||||
- chatId: number (required)
|
||||
- messageId: number (required, for editing message)
|
||||
- action: string ('show_stop' | 'show_update' | 'confirm' | 'cancel' | 'check_expired')
|
||||
- containerId: string (optional)
|
||||
- containerName: string (optional)
|
||||
- containerIds: array (optional, for multi-container)
|
||||
- confirmationToken: string (optional, for verifying non-expired)
|
||||
- responseMode: string
|
||||
|
||||
**Nodes to extract** (confirmation related - excluding batch confirmations which stay in batch-ui):
|
||||
- Build Stop Confirmation, Build Update Confirmation, Build Update All Confirmation
|
||||
- Check Confirm Expired, Handle Confirm Expired, Send Expired Confirm
|
||||
- Edit To Stop Confirmation, Send Stop Confirmation, Send Update Confirmation, Send Update All Confirmation
|
||||
- Answer Confirm Callback, Answer Cancel Confirm Callback
|
||||
- Build Confirmed Stop Command, Prepare Confirmed Stop, Prepare Confirmed Stop Input
|
||||
- Execute Confirmed Stop, Execute Confirmed Stop Action
|
||||
- Format Confirmed Stop Result, Handle Confirmed Stop Result, Send Confirmed Stop Result
|
||||
- Route Confirm Action
|
||||
|
||||
**NOTE:** Batch confirmations (Build Batch Stop Confirmation, etc.) should stay in n8n-batch-ui.json since they're part of batch flow. This sub-workflow handles single-container confirmations and "update all" confirmations.
|
||||
|
||||
**Structure:**
|
||||
1. Execute Workflow Trigger (entry point)
|
||||
2. Parse Input (validate action type)
|
||||
3. Switch on action type
|
||||
4. For show_stop: Build confirmation keyboard, return for main to send
|
||||
5. For confirm: Validate not expired, execute action via sub-workflow call
|
||||
6. For cancel: Return cancellation result
|
||||
7. For check_expired: Validate confirmation token age
|
||||
|
||||
**Output contract:**
|
||||
```javascript
|
||||
{
|
||||
success: true/false,
|
||||
action: 'show_stop|show_update|confirm|cancel|expired',
|
||||
// For show:
|
||||
keyboard: {...},
|
||||
text: "confirmation text",
|
||||
confirmationToken: "uuid for expiry tracking",
|
||||
// For confirm:
|
||||
executed: true/false,
|
||||
result: { containerId, containerName, newState },
|
||||
// For expired:
|
||||
expired: true/false,
|
||||
// Error:
|
||||
error: "error message" || null
|
||||
}
|
||||
```
|
||||
|
||||
**Important:** For confirmed stop/restart actions, this sub-workflow should call n8n-actions.json to perform the actual container action.
|
||||
</action>
|
||||
<verify>
|
||||
- `cat n8n-confirmation.json | python3 -c "import json,sys; d=json.load(sys.stdin); print(f'Nodes: {len(d.get(\"nodes\",[]))}')"` shows node count (~15-20)
|
||||
- Sub-workflow has Execute Workflow Trigger node
|
||||
- Sub-workflow has Execute Workflow node calling n8n-actions.json
|
||||
</verify>
|
||||
<done>n8n-confirmation.json created with confirmation dialog nodes extracted.</done>
|
||||
</task>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 2: Update main workflow to call confirmation sub-workflow</name>
|
||||
<files>n8n-workflow.json</files>
|
||||
<action>
|
||||
Modify main workflow to replace confirmation nodes with Execute Workflow call.
|
||||
|
||||
1. **Remove extracted confirmation nodes** from main workflow
|
||||
(Keep batch confirmation nodes if they're still in main workflow - they belong in batch-ui)
|
||||
|
||||
2. **Add Execute Workflow node** ("Execute Confirmation"):
|
||||
- Source: database
|
||||
- WorkflowId: use TODO_DEPLOY_CONFIRMATION_WORKFLOW placeholder
|
||||
- Mode: once
|
||||
- waitForSubWorkflow: true
|
||||
- Input: { chatId, messageId, action, containerId, containerName, confirmationToken, responseMode }
|
||||
|
||||
3. **Update routing** in main workflow:
|
||||
- Route Callback should route confirmation callbacks (confirm:*, cancel:*) to Execute Confirmation
|
||||
- Stop command should route to Execute Confirmation with action='show_stop'
|
||||
|
||||
4. **Add result handler** after Execute Confirmation:
|
||||
- If result.expired: show expired message
|
||||
- If result.executed: show result message
|
||||
- If result has keyboard: send/edit confirmation dialog
|
||||
</action>
|
||||
<verify>
|
||||
- Main workflow has "Execute Confirmation" node
|
||||
- No single-container confirmation nodes remain in main workflow
|
||||
- TODO_DEPLOY_CONFIRMATION_WORKFLOW placeholder exists
|
||||
</verify>
|
||||
<done>Main workflow updated with confirmation nodes extracted.</done>
|
||||
</task>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 3: Create backup and commit extraction</name>
|
||||
<files>n8n-workflow.json.backup-confirm</files>
|
||||
<action>
|
||||
1. Create explicit backup:
|
||||
`cp n8n-workflow.json n8n-workflow.json.backup-confirm`
|
||||
|
||||
2. Verify the extraction:
|
||||
- Main workflow node count reduced by ~15-20 from previous state
|
||||
- n8n-confirmation.json exists with extracted nodes
|
||||
- No orphan references
|
||||
|
||||
3. Commit the extraction:
|
||||
```bash
|
||||
git add n8n-workflow.json n8n-confirmation.json n8n-workflow.json.backup-confirm
|
||||
git commit -m "feat(10.1-04): extract confirmation dialogs to sub-workflow
|
||||
|
||||
- Created n8n-confirmation.json with stop/update confirmation nodes
|
||||
- Handles confirmation display, expiry checking, and action execution
|
||||
- Calls n8n-actions.json for confirmed stop/restart
|
||||
- Added TODO_DEPLOY_CONFIRMATION_WORKFLOW placeholder"
|
||||
```
|
||||
</action>
|
||||
<verify>
|
||||
- Backup file exists
|
||||
- Git commit created
|
||||
</verify>
|
||||
<done>Confirmation extraction committed with backup.</done>
|
||||
</task>
|
||||
|
||||
</tasks>
|
||||
|
||||
<verification>
|
||||
- [ ] n8n-confirmation.json exists with Execute Workflow Trigger
|
||||
- [ ] Main workflow node count further reduced
|
||||
- [ ] Main workflow has Execute Confirmation node
|
||||
- [ ] Backup file created
|
||||
- [ ] Git commit records the extraction
|
||||
</verification>
|
||||
|
||||
<success_criteria>
|
||||
1. New n8n-confirmation.json sub-workflow created
|
||||
2. Main workflow reduced by ~15-20 additional nodes
|
||||
3. Confirmation dialog functionality extracted cleanly
|
||||
4. Backup created for rollback
|
||||
5. Changes committed to git
|
||||
</success_criteria>
|
||||
|
||||
<output>
|
||||
After completion, create `.planning/phases/10.1-aggressive-workflow-modularization/10.1-04-SUMMARY.md`
|
||||
</output>
|
||||
Reference in New Issue
Block a user