refactor(conflict-resolution): transform to interactive resolution with in-place modifications

BREAKING CHANGE: Remove CONFLICT_RESOLUTION.md generation in favor of interactive user confirmation and direct file modifications

Core Changes:
- Replace markdown report generation with structured JSON output for programmatic processing
- Add interactive conflict resolution via AskUserQuestion (max 4 conflicts, 2-4 strategies each)
- Apply modifications directly to guidance-specification.md and role analyses (*.md) using Edit tool
- Update context-package.json with conflict_risk status (resolved/none/low)
- Remove Phase 3 output validation (no file generation needed)

Modified Files:
- conflict-resolution.md: Complete rewrite of agent prompt and execution flow
  - Step 4: JSON output instead of markdown generation
  - Phase 3: User confirmation via AskUserQuestion
  - Phase 4: Apply modifications using Edit tool
  - Success criteria updated for in-place modifications
- plan.md: Update Phase 3 data flow and TodoWrite pattern
  - Data flow now shows "Apply modifications via Edit tool"
  - Todo description changed to "Resolve conflicts and apply fixes"
- task-generate-agent.md: Update conflict resolution context description
  - No longer references CONFLICT_RESOLUTION.md file
  - Notes conflicts resolved in guidance-specification.md and role analyses
- task-generate.md: Comprehensive cleanup of all CONFLICT_RESOLUTION.md references
  - Remove CONFLICT_RESOLUTION.md from artifact catalog
  - Update load_planning_context step to read guidance-specification.md
  - Update task implementation logic_flow
  - Update artifact priority and integration sections
  - Update directory structure documentation

Benefits:
- Seamless workflow: conflicts detected → user confirms → applied automatically
- No intermediate files to manage
- User interaction at decision point (not after-the-fact)
- Resolved conflicts integrated directly into source artifacts
- Clear conflict_risk status tracking in context-package.json

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
catlog22
2025-10-24 17:31:19 +08:00
parent 2b3541941e
commit 7f82d0da86
4 changed files with 380 additions and 358 deletions

View File

@@ -7,361 +7,382 @@ examples:
- /workflow:tools:conflict-resolution --session WFS-payment --context .workflow/WFS-payment/.process/context-package.json
---
# Conflict Resolution Command (/workflow:tools:conflict-resolution)
# Conflict Resolution Command
## Overview
Analyzes potential conflicts between implementation plan and existing codebase, generating multiple resolution strategies for user selection.
## Purpose
Analyzes conflicts between implementation plans and existing codebase, generating multiple resolution strategies.
**Trigger Condition**: Only execute when context-package.json indicates conflict_risk is "medium" or "high"
**Scope**: Detection and strategy generation only - NO code modification or task creation.
**Scope**: Conflict detection and resolution strategy generation only. Does NOT modify code or generate tasks.
**Trigger**: Auto-executes in `/workflow:plan` Phase 3 when `conflict_risk ≥ medium`.
**Usage**: Automatically triggered in `/workflow:plan` Phase 3 when conflict risk detected.
## Core Responsibilities
## Core Philosophy & Responsibilities
- **Conflict Detection**: Analyze plan vs existing code architecture inconsistencies
- **Multi-Strategy Generation**: Generate 2-4 resolution options per conflict
- **CLI-Powered Analysis**: Use Gemini/Qwen/Codex for deep code analysis
- **Graceful Fallback**: Use Claude analysis if CLI tools unavailable
- **User Decision**: Present strategies for user selection, never auto-apply
- **Single Output**: Generate CONFLICT_RESOLUTION.md with findings and options
| Responsibility | Description |
|---------------|-------------|
| **Detect Conflicts** | Analyze plan vs existing code inconsistencies |
| **Generate Strategies** | Provide 2-4 resolution options per conflict |
| **CLI Analysis** | Use Gemini/Qwen (Claude fallback) |
| **User Decision** | Present options, never auto-apply |
| **Single Output** | `CONFLICT_RESOLUTION.md` with findings |
## Conflict Detection Categories
## Conflict Categories
**Architecture Conflicts**:
- New architecture incompatible with existing patterns
- Module structure changes affecting existing components
- Design pattern migrations required
### 1. Architecture Conflicts
- Incompatible design patterns
- Module structure changes
- Pattern migration requirements
**API & Interface Conflicts**:
- Breaking changes to existing API contracts
- Function signature modifications
- Public interface changes affecting dependents
### 2. API Conflicts
- Breaking contract changes
- Signature modifications
- Public interface impacts
**Data Model Conflicts**:
- Database schema modifications
- Data type changes breaking compatibility
- Migration requirements for existing data
### 3. Data Model Conflicts
- Schema modifications
- Type breaking changes
- Data migration needs
**Dependency Conflicts**:
- Version conflicts with existing dependencies
- New dependencies incompatible with current setup
- Breaking changes in dependency updates
### 4. Dependency Conflicts
- Version incompatibilities
- Setup conflicts
- Breaking updates
## Execution Lifecycle
## Execution Flow
### Phase 1: Validation & Trigger Check
1. **Session Validation**: Verify `.workflow/{session_id}/` exists
2. **Context Package Loading**: Read and parse context-package.json
3. **Conflict Risk Check**:
```javascript
if (context_package.conflict_detection.conflict_risk in ["none", "low"]) {
SKIP: "No significant conflicts detected"
EXIT
}
```
4. **Agent Preparation**: Prepare agent task prompt with conflict analysis requirements
### Phase 1: Validation
```
1. Verify session directory exists
2. Load context-package.json
3. Check conflict_risk (skip if none/low)
4. Prepare agent task prompt
```
### Phase 2: Agent-Delegated Conflict Analysis
### Phase 2: CLI-Powered Analysis
**Agent Invocation**:
**Agent Delegation**:
```javascript
Task(
subagent_type="cli-execution-agent",
description="Detect and analyze code conflicts",
prompt=`
## Execution Context
Task(subagent_type="cli-execution-agent", prompt=`
## Context
- Session: {session_id}
- Risk: {conflict_risk}
- Files: {existing_files_list}
**Session ID**: {session_id}
**Mode**: Conflict Detection and Resolution Strategy Generation
**Conflict Risk**: {conflict_risk}
## Analysis Steps
## Input Context
### 1. Load Context
- Read existing files from conflict_detection.existing_files
- Load plan from .workflow/{session_id}/.process/context-package.json
- Extract role analyses and requirements
**Context Package**: {context_path}
**Existing Files**: {existing_files_list}
**Affected Modules**: {affected_modules}
### 2. Execute CLI Analysis
## Analysis Task
Primary (Gemini):
cd {project_root} && gemini -p "
PURPOSE: Detect conflicts between plan and codebase
TASK:
• Compare architectures
• Identify breaking API changes
• Detect data model incompatibilities
• Assess dependency conflicts
MODE: analysis
CONTEXT: @{existing_files} @.workflow/{session_id}/**/*
EXPECTED: Conflict list with severity ratings
RULES: Focus on breaking changes and migration needs
"
### Step 1: Load Existing Codebase Context
1. **Load Existing Files** (from context package existing_files)
- Read all files listed in conflict_detection.existing_files
- Analyze current architecture patterns
- Identify current API contracts and interfaces
Fallback: Qwen (same prompt) → Claude (manual analysis)
2. **Load Plan Requirements** (from context-package.json)
- Read .workflow/{session_id}/.process/context-package.json
- Extract role analysis paths from brainstorm_artifacts.role_analyses[]
- Load each role analysis file
- Extract requirements and design decisions
- Identify planned changes
### 3. Generate Strategies (2-4 per conflict)
### Step 2: CLI-Powered Conflict Analysis
Execute conflict analysis using CLI tools:
Template per conflict:
- Severity: Critical/High/Medium
- Category: Architecture/API/Data/Dependency
- Affected files + impact
- Options with pros/cons, effort, risk
- Recommended strategy + rationale
**Primary Tool - Gemini Analysis**:
```bash
cd {project_root} && gemini -p "
PURPOSE: Analyze conflicts between plan and existing code
TASK:
• Compare existing architecture with planned changes
• Identify API contract breaking changes
• Detect data model incompatibilities
• Assess dependency conflicts
MODE: analysis
CONTEXT: @{existing_files_pattern} @.workflow/{session_id}/**/*
EXPECTED: Conflict list with severity and affected areas
RULES: Focus on breaking changes and migration complexity
"
### 4. Return Structured Conflict Data
⚠️ DO NOT generate CONFLICT_RESOLUTION.md file
Return JSON format for programmatic processing:
\`\`\`json
{
"conflicts": [
{
"id": "CON-001",
"brief": "一行中文冲突摘要",
"severity": "Critical|High|Medium",
"category": "Architecture|API|Data|Dependency",
"affected_files": [
".workflow/{session}/.brainstorm/guidance-specification.md",
".workflow/{session}/.brainstorm/system-architect/analysis.md"
],
"description": "详细描述冲突 - 什么不兼容",
"impact": {
"scope": "影响的模块/组件",
"compatibility": "Yes|No|Partial",
"migration_required": true|false,
"estimated_effort": "人天估计"
},
"strategies": [
{
"name": "策略名称(中文)",
"approach": "实现方法简述",
"complexity": "Low|Medium|High",
"risk": "Low|Medium|High",
"effort": "时间估计",
"pros": ["优点1", "优点2"],
"cons": ["缺点1", "缺点2"],
"modifications": [
{
"file": ".workflow/{session}/.brainstorm/guidance-specification.md",
"section": "## 2. System Architect Decisions",
"change_type": "update",
"old_content": "原始内容片段(用于定位)",
"new_content": "修改后的内容",
"rationale": "为什么这样改"
},
{
"file": ".workflow/{session}/.brainstorm/system-architect/analysis.md",
"section": "## Design Decisions",
"change_type": "update",
"old_content": "原始内容片段",
"new_content": "修改后的内容",
"rationale": "修改理由"
}
]
},
{
"name": "策略2名称",
"approach": "...",
"complexity": "Medium",
"risk": "Low",
"effort": "1-2天",
"pros": ["优点"],
"cons": ["缺点"],
"modifications": [...]
}
],
"recommended": 0
}
],
"summary": {
"total": 2,
"critical": 1,
"high": 1,
"medium": 0
}
}
\`\`\`
⚠️ CRITICAL Requirements for modifications field:
- old_content: Must be exact text from target file (20-100 chars for unique match)
- new_content: Complete replacement text (maintains formatting)
- change_type: "update" (replace), "add" (insert), "remove" (delete)
- file: Full path relative to project root
- section: Markdown heading for context (helps locate position)
- Minimum 2 strategies per conflict, max 4
- All text in Chinese for user-facing fields (brief, name, pros, cons)
Quality Standards:
- Each strategy must have actionable modifications
- old_content must be precise enough for Edit tool matching
- new_content preserves markdown formatting and structure
- Recommended strategy (index) based on lowest complexity + risk
`)
```
**Fallback - Qwen Analysis** (if Gemini unavailable):
Same prompt structure, replace 'gemini' with 'qwen'
**Fallback - Claude Analysis** (if CLI unavailable):
- Manual file reading and comparison
- Pattern matching for common conflict types
- Heuristic-based conflict detection
### Step 3: Generate Resolution Strategies
For each detected conflict, generate 2-4 resolution options:
**Strategy Template**:
```markdown
### Conflict: {conflict_name}
**Severity**: Critical | High | Medium
**Category**: Architecture | API | Data Model | Dependency
**Affected Files**: {file_list}
**Impact**: {impact_description}
#### Option 1: {strategy_name}
**Approach**: {brief_description}
**Pros**:
- {advantage_1}
- {advantage_2}
**Cons**:
- {disadvantage_1}
- {disadvantage_2}
**Effort**: Low | Medium | High
**Risk**: Low | Medium | High
#### Option 2: {strategy_name}
...
**Recommended**: Option {N} - {rationale}
**Agent Internal Flow**:
```
1. Load context package
2. Check conflict_risk (exit if none/low)
3. Read existing files + plan artifacts
4. Run CLI analysis (Gemini→Qwen→Claude)
5. Parse conflict findings
6. Generate 2-4 strategies per conflict with modifications
7. Return JSON to stdout (NOT file write)
8. Return execution log path
```
### Step 4: Generate CONFLICT_RESOLUTION.md
Create comprehensive conflict resolution document:
### Phase 3: User Confirmation via AskUserQuestion
**Output Location**: `.workflow/{session_id}/.process/CONFLICT_RESOLUTION.md`
**Command parses agent JSON output and presents conflicts to user**:
**Required Structure**:
1. **Executive Summary**: Total conflicts, severity distribution, overall risk
2. **Conflict Analysis**: Detailed per-conflict analysis with categories
3. **Resolution Strategies**: Multiple options per conflict with pros/cons
4. **Recommended Actions**: Prioritized recommendations with rationale
5. **Migration Considerations**: Data/API migration requirements if any
```javascript
// 1. Parse agent JSON output
const conflictData = JSON.parse(agentOutput);
const conflicts = conflictData.conflicts.slice(0, 4); // Max 4 (tool limit)
### Output Requirements
// 2. Build AskUserQuestion with all conflicts
const questions = conflicts.map((conflict, idx) => ({
question: `${conflict.id}: ${conflict.brief} - 请选择解决方案`,
header: `冲突${idx + 1}`,
multiSelect: false,
options: [
...conflict.strategies.map(s => ({
label: s.name,
description: `${s.approach} | 复杂度: ${s.complexity} | 风险: ${s.risk} | 工作量: ${s.effort}`
})),
{
label: "跳过此冲突",
description: "稍后手动处理,不应用任何修改"
}
]
}));
**Quality Standards**:
- Minimum 2 resolution options per conflict
- Clear pros/cons for each strategy
- Effort and risk estimates included
- Recommended strategy with clear rationale
- Actionable migration steps if required
// 3. Call AskUserQuestion
AskUserQuestion({questions});
## Output
Generate CONFLICT_RESOLUTION.md and report completion status:
- Conflicts detected: {count}
- Severity distribution: Critical: {N}, High: {N}, Medium: {N}
- Resolution strategies: {total_options}
- Output location: .workflow/{session_id}/.process/CONFLICT_RESOLUTION.md
`
)
// 4. Parse user selections
const selectedStrategies = parseUserAnswers(answers, conflicts);
```
**Agent Execution Flow** (Internal to cli-execution-agent):
1. Parse session ID and context path, load context-package.json
2. Check conflict_risk, exit if none/low
3. Load existing codebase files from conflict_detection.existing_files
4. Load plan requirements from session brainstorming artifacts
5. Execute CLI tool analysis (Gemini/Qwen/Claude fallback)
6. Parse conflict findings from CLI output
7. Generate resolution strategies (2-4 options per conflict)
8. Create CONFLICT_RESOLUTION.md with structured findings
9. Verify output file exists at correct path
10. Return execution log path
**Command Execution**: Launch agent via Task tool, wait for completion
### Phase 3: Output Validation
1. **File Verification**: Confirm `.workflow/{session_id}/.process/CONFLICT_RESOLUTION.md` exists
2. **Content Validation**: Verify required sections present
3. **Strategy Quality**: Ensure minimum 2 options per conflict
4. **Agent Log**: Retrieve agent execution log from `.workflow/{session_id}/.chat/`
5. **Success Criteria**: File exists, contains all required sections, strategies actionable
## CONFLICT_RESOLUTION.md Format
**Template Reference**: Resolution document focuses on **conflict identification, impact analysis, and strategic options** (NOT implementation).
### Required Structure
```markdown
# Conflict Resolution Report
**Session**: WFS-{session-id}
**Generated**: {timestamp}
**Conflict Risk**: {medium|high}
**Total Conflicts**: {count}
## Executive Summary
**Overall Assessment**: {summary_paragraph}
**Severity Distribution**:
- Critical: {count} - Blocking issues requiring immediate resolution
- High: {count} - Significant issues affecting core functionality
- Medium: {count} - Moderate issues with workarounds available
**Recommended Priority**: {conflict_id_1}, {conflict_id_2}, ...
---
## Conflict Analysis
### Conflict 1: {conflict_name}
**ID**: CON-001
**Severity**: Critical | High | Medium
**Category**: Architecture | API | Data Model | Dependency
**Affected Files**:
- {file_1}
- {file_2}
**Description**: {detailed_conflict_description}
**Impact Analysis**:
- **Scope**: {which_modules_affected}
- **Backward Compatibility**: {yes/no/partial}
- **Migration Required**: {yes/no}
- **Estimated Effort**: {person-days}
#### Resolution Strategies
##### Option 1: {strategy_name}
**Approach**: {implementation_approach}
**Pros**:
- {advantage_1}
- {advantage_2}
**Cons**:
- {disadvantage_1}
- {disadvantage_2}
**Implementation Complexity**: Low | Medium | High
**Risk Level**: Low | Medium | High
**Estimated Effort**: {time_estimate}
##### Option 2: {strategy_name}
...
**Recommended Strategy**: Option {N}
**Rationale**: {why_this_option_is_best}
---
## Recommended Actions
### Priority 1: Address Critical Conflicts
1. {conflict_id}: {brief_action} - {recommended_strategy}
2. ...
### Priority 2: Resolve High-Severity Issues
1. {conflict_id}: {brief_action} - {recommended_strategy}
2. ...
### Priority 3: Handle Medium Issues
1. {conflict_id}: {brief_action} - {recommended_strategy}
2. ...
## Migration Considerations
**Data Migration**:
- {migration_task_1}
- {migration_task_2}
**API Versioning**:
- {versioning_strategy}
**Rollback Strategy**:
- {rollback_plan}
---
## Next Steps
**Before Implementation**:
1. Review and select resolution strategies
2. Update IMPL_PLAN.md with conflict resolution decisions
3. Validate migration requirements
**Proceed to**:
- /workflow:plan continue → Proceed with task generation
**User Selection Examples**:
```
Question: "CON-001: 现有认证系统与计划不兼容 - 请选择解决方案"
Options:
- "渐进式迁移" | 复杂度: Medium | 风险: Low | 工作量: 3-5天
- "完全重写" | 复杂度: High | 风险: Medium | 工作量: 7-10天
- "跳过此冲突"
```
### Content Focus
- ✅ Conflict detection with severity classification
- ✅ Multiple resolution strategies per conflict
- ✅ Pros/cons analysis for each strategy
- ✅ Effort and risk estimates
- ✅ Migration considerations
- ❌ Direct code changes or patches
- ❌ Implementation details (save for IMPL_PLAN)
- ❌ Task breakdowns (handled by task generation)
### Phase 4: Apply Modifications
## Execution Management
```javascript
// 1. Extract modifications from selected strategies
const modifications = [];
selectedStrategies.forEach(strategy => {
if (strategy !== "skip") {
modifications.push(...strategy.modifications);
}
});
### Error Handling & Recovery
1. **Pre-execution**: Verify conflict_risk warrants execution
2. **Agent Monitoring**: Track agent execution status via Task tool
3. **Validation**: Check CONFLICT_RESOLUTION.md generation on completion
4. **Error Recovery**:
- Agent execution failure → report error, check agent logs
- Missing output file → retry agent execution once
- CLI tool failure → fallback to Claude analysis
5. **Graceful Degradation**: If all analysis methods fail, generate basic conflict report from heuristics
// 2. Apply each modification using Edit tool
modifications.forEach(mod => {
if (mod.change_type === "update") {
Edit({
file_path: mod.file,
old_string: mod.old_content,
new_string: mod.new_content
});
}
// Handle "add" and "remove" similarly
});
## Integration & Success Criteria
// 3. Update context-package.json
const contextPackage = JSON.parse(Read(contextPath));
contextPackage.conflict_detection.conflict_risk = "resolved";
contextPackage.conflict_detection.resolved_conflicts = conflicts.map(c => c.id);
contextPackage.conflict_detection.resolved_at = new Date().toISOString();
Write(contextPath, JSON.stringify(contextPackage, null, 2));
### Input/Output Interface
// 4. Return summary
return {
resolved: modifications.length,
skipped: selectedStrategies.filter(s => s === "skip").length,
modified_files: [...new Set(modifications.map(m => m.file))]
};
```
**Validation**:
```
✓ Agent returns valid JSON structure
✓ AskUserQuestion displays all conflicts (max 4)
✓ User selections captured correctly
✓ Edit tool successfully applies modifications
✓ guidance-specification.md updated
✓ Role analyses (*.md) updated
✓ context-package.json marked as resolved
✓ Agent log saved to .workflow/{session_id}/.chat/
```
## Output Format: Agent JSON Response
**Focus**: Structured conflict data with actionable modifications for programmatic processing.
**Format**: JSON to stdout (NO file generation)
**Structure**: Defined in Phase 2, Step 4 (agent prompt)
### Key Requirements
| Requirement | Details |
|------------|---------|
| **Conflict limit** | Max 4 conflicts (AskUserQuestion tool limit) |
| **Strategy count** | 2-4 strategies per conflict |
| **Modifications** | Each strategy includes file paths, old_content, new_content |
| **User-facing text** | Chinese (brief, strategy names, pros/cons) |
| **Technical fields** | English (severity, category, complexity, risk) |
| **old_content precision** | 20-100 chars for unique Edit tool matching |
| **File targets** | guidance-specification.md, role analyses (*.md) |
## Error Handling
### Recovery Strategy
```
1. Pre-check: Verify conflict_risk ≥ medium
2. Monitor: Track agent via Task tool
3. Validate: Parse agent JSON output
4. Recover:
- Agent failure → check logs + report error
- Invalid JSON → retry once with Claude fallback
- CLI failure → fallback to Claude analysis
- Edit tool failure → report affected files + rollback option
- User cancels → mark as "unresolved", continue to task-generate
5. Degrade: If all fail, generate minimal conflict report and skip modifications
```
### Rollback Handling
```
If Edit tool fails mid-application:
1. Log all successfully applied modifications
2. Offer rollback option via AskUserQuestion
3. If rollback selected: restore files from git or backups
4. If continue: mark partial resolution in context-package.json
```
## Integration
### Interface
**Input**:
- `--session` (required): Session ID (e.g., WFS-auth)
- `--context` (required): Context package path
- Context package must have conflict_risk ≥ medium
- `--session` (required): WFS-{session-id}
- `--context` (required): context-package.json path
- Requires: `conflict_risk ≥ medium`
**Output**:
- Single file: `CONFLICT_RESOLUTION.md` at `.workflow/{session_id}/.process/`
- No code modifications
- Modified files:
- `.workflow/{session_id}/.brainstorm/guidance-specification.md`
- `.workflow/{session_id}/.brainstorm/{role}/analysis.md`
- `.workflow/{session_id}/.process/context-package.json` (conflict_risk → resolved)
- NO report file generation
### Quality & Success Validation
**Quality Checks**: Completeness, strategy diversity, actionability
**User Interaction**:
- AskUserQuestion for strategy selection (max 4 conflicts)
- Each conflict: 2-4 strategy options + "跳过" option
**Success Criteria**:
- ✅ Conflict detection complete (all categories scanned)
- ✅ Minimum 2 resolution strategies per conflict
- ✅ Clear pros/cons for each strategy
- ✅ Effort and risk estimates provided
- ✅ Recommended strategy with rationale
- ✅ Migration considerations documented
- ✅ CLI-powered analysis (with fallback handling)
- ✅ Robust error handling (validation, retry, degradation)
- ✅ Agent execution log saved to session chat directory
### Success Criteria
```
✓ CLI analysis returns valid JSON structure
✓ Max 4 conflicts presented (tool limit)
✓ Min 2 strategies per conflict with modifications
✓ AskUserQuestion displays all conflicts correctly
✓ User selections captured and processed
✓ Edit tool applies modifications successfully
✓ guidance-specification.md updated with resolved conflicts
✓ Role analyses (*.md) updated with resolved conflicts
✓ context-package.json marked as "resolved"
✓ No CONFLICT_RESOLUTION.md file generated
✓ Modification summary returned to user
✓ Agent log saved to .workflow/{session_id}/.chat/
✓ Error handling robust (validate/retry/degrade)
```
## Related Commands
- `/context:gather` - Generates conflict_detection data required by this command
- `/workflow:plan` - Automatically calls this command when conflict_risk ≥ medium
- `/task:create` - Creates tasks based on selected resolution strategies
| Command | Relationship |
|---------|--------------|
| `/workflow:tools:context-gather` | Generates input conflict_detection data |
| `/workflow:plan` | Auto-triggers this when risk ≥ medium |
| `/workflow:tools:task-generate` | Uses resolved conflicts from updated brainstorm files |
| `/workflow:brainstorm:artifacts` | Generates guidance-specification.md (modified by this command) |