Files
Lucas Berger 25dd3ab2d2 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>
2026-02-04 20:20:29 -05:00

7.4 KiB

phase, plan, type, wave, depends_on, files_modified, autonomous, must_haves
phase plan type wave depends_on files_modified autonomous must_haves
10.1-aggressive-workflow-modularization 04 execute 2
10.1-01
n8n-workflow.json
n8n-confirmation.json
true
truths artifacts key_links
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
path provides contains
n8n-confirmation.json Confirmation dialog sub-workflow Execute Workflow Trigger
path provides
n8n-workflow.json Main workflow with confirmation extraction
from to via pattern
n8n-workflow.json n8n-confirmation.json Execute Workflow node executeWorkflow.*confirm
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.

<execution_context> @/home/luc/.claude/get-shit-done/workflows/execute-plan.md @/home/luc/.claude/get-shit-done/templates/summary.md </execution_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 Task 1: Create n8n-confirmation.json sub-workflow with extracted confirmation nodes n8n-confirmation.json (new) 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:

{
  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.

  • 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 n8n-confirmation.json created with confirmation dialog nodes extracted.
Task 2: Update main workflow to call confirmation sub-workflow n8n-workflow.json 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
  • Main workflow has "Execute Confirmation" node
  • No single-container confirmation nodes remain in main workflow
  • TODO_DEPLOY_CONFIRMATION_WORKFLOW placeholder exists Main workflow updated with confirmation nodes extracted.
Task 3: Create backup and commit extraction n8n-workflow.json.backup-confirm 1. Create explicit backup: `cp n8n-workflow.json n8n-workflow.json.backup-confirm`
  1. Verify the extraction:

    • Main workflow node count reduced by ~15-20 from previous state
    • n8n-confirmation.json exists with extracted nodes
    • No orphan references
  2. Commit the extraction:

    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"
    
- Backup file exists - Git commit created Confirmation extraction committed with backup. - [ ] 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

<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>
After completion, create `.planning/phases/10.1-aggressive-workflow-modularization/10.1-04-SUMMARY.md`