mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-11 02:33:51 +08:00
863 lines
28 KiB
Markdown
863 lines
28 KiB
Markdown
---
|
|
name: plan-verify
|
|
description: Perform READ-ONLY verification analysis between IMPL_PLAN.md, task JSONs, and brainstorming artifacts. Generates structured report with quality gate recommendation. Does NOT modify any files.
|
|
argument-hint: "[optional: --session session-id]"
|
|
allowed-tools: Read(*), Write(*), Glob(*), Bash(*)
|
|
---
|
|
|
|
## User Input
|
|
|
|
```text
|
|
$ARGUMENTS
|
|
```
|
|
|
|
You **MUST** consider the user input before proceeding (if not empty).
|
|
|
|
## Goal
|
|
|
|
Generate a comprehensive verification report that identifies inconsistencies, duplications, ambiguities, and underspecified items between action planning artifacts (`IMPL_PLAN.md`, `task.json`) and brainstorming artifacts (`role analysis documents`). This command MUST run only after `/workflow:plan` has successfully produced complete `IMPL_PLAN.md` and task JSON files.
|
|
|
|
**Output**: A structured Markdown report saved to `.workflow/active/WFS-{session}/.process/PLAN_VERIFICATION.md` containing:
|
|
- Executive summary with quality gate recommendation
|
|
- Detailed findings by severity (CRITICAL/HIGH/MEDIUM/LOW)
|
|
- Requirements coverage analysis
|
|
- Dependency integrity check
|
|
- Synthesis alignment validation
|
|
- Actionable remediation recommendations
|
|
|
|
## Operating Constraints
|
|
|
|
**STRICTLY READ-ONLY FOR SOURCE ARTIFACTS**:
|
|
- **MUST NOT** modify `IMPL_PLAN.md`, any `task.json` files, or brainstorming artifacts
|
|
- **MUST NOT** create or delete task files
|
|
- **MUST ONLY** write the verification report to `.process/PLAN_VERIFICATION.md`
|
|
|
|
**Synthesis Authority**: The `role analysis documents` are **authoritative** for requirements and design decisions. Any conflicts between IMPL_PLAN/tasks and synthesis are automatically CRITICAL and require adjustment of the plan/tasks—not reinterpretation of requirements.
|
|
|
|
**Quality Gate Authority**: The verification report provides a binding recommendation (BLOCK_EXECUTION / PROCEED_WITH_FIXES / PROCEED_WITH_CAUTION / PROCEED) based on objective severity criteria. User MUST review critical/high issues before proceeding with implementation.
|
|
|
|
## Execution Steps
|
|
|
|
### 1. Initialize Analysis Context
|
|
|
|
```bash
|
|
# Detect active workflow session
|
|
IF --session parameter provided:
|
|
session_id = provided session
|
|
ELSE:
|
|
# Auto-detect active session
|
|
active_sessions = bash(find .workflow/active/ -name "WFS-*" -type d 2>/dev/null)
|
|
IF active_sessions is empty:
|
|
ERROR: "No active workflow session found. Use --session <session-id>"
|
|
EXIT
|
|
ELSE IF active_sessions has multiple entries:
|
|
# Use most recently modified session
|
|
session_id = bash(ls -td .workflow/active/WFS-*/ 2>/dev/null | head -1 | xargs basename)
|
|
ELSE:
|
|
session_id = basename(active_sessions[0])
|
|
|
|
# Derive absolute paths
|
|
session_dir = .workflow/active/WFS-{session}
|
|
brainstorm_dir = session_dir/.brainstorming
|
|
task_dir = session_dir/.task
|
|
process_dir = session_dir/.process
|
|
session_file = session_dir/workflow-session.json
|
|
|
|
# Create .process directory if not exists (report output location)
|
|
IF NOT EXISTS(process_dir):
|
|
bash(mkdir -p "{process_dir}")
|
|
|
|
# Validate required artifacts
|
|
# Note: "role analysis documents" refers to [role]/analysis.md files (e.g., product-manager/analysis.md)
|
|
SYNTHESIS_DIR = brainstorm_dir # Contains role analysis files: */analysis.md
|
|
IMPL_PLAN = session_dir/IMPL_PLAN.md
|
|
TASK_FILES = Glob(task_dir/*.json)
|
|
|
|
# Abort if missing - in order of dependency
|
|
SESSION_FILE_EXISTS = EXISTS(session_file)
|
|
IF NOT SESSION_FILE_EXISTS:
|
|
WARNING: "workflow-session.json not found. User intent alignment verification will be skipped."
|
|
# Continue execution - this is optional context, not blocking
|
|
|
|
SYNTHESIS_FILES = Glob(brainstorm_dir/*/analysis.md)
|
|
IF SYNTHESIS_FILES.count == 0:
|
|
ERROR: "No role analysis documents found in .brainstorming/*/analysis.md. Run /workflow:brainstorm:synthesis first"
|
|
EXIT
|
|
|
|
IF NOT EXISTS(IMPL_PLAN):
|
|
ERROR: "IMPL_PLAN.md not found. Run /workflow:plan first"
|
|
EXIT
|
|
|
|
IF TASK_FILES.count == 0:
|
|
ERROR: "No task JSON files found. Run /workflow:plan first"
|
|
EXIT
|
|
```
|
|
|
|
### 2. Load Artifacts (Progressive Disclosure)
|
|
|
|
Load only minimal necessary context from each artifact:
|
|
|
|
**From workflow-session.json** (OPTIONAL - Primary Reference for User Intent):
|
|
- **ONLY IF EXISTS**: Load user intent context
|
|
- Original user prompt/intent (project or description field)
|
|
- User's stated goals and objectives
|
|
- User's scope definition
|
|
- **IF MISSING**: Set user_intent_analysis = "SKIPPED: workflow-session.json not found"
|
|
|
|
**From role analysis documents** (AUTHORITATIVE SOURCE):
|
|
- Functional Requirements (IDs, descriptions, acceptance criteria)
|
|
- Non-Functional Requirements (IDs, targets)
|
|
- Business Requirements (IDs, success metrics)
|
|
- Key Architecture Decisions
|
|
- Risk factors and mitigation strategies
|
|
- Implementation Roadmap (high-level phases)
|
|
|
|
**From IMPL_PLAN.md**:
|
|
- Summary and objectives
|
|
- Context Analysis
|
|
- Implementation Strategy
|
|
- Task Breakdown Summary
|
|
- Success Criteria
|
|
- Brainstorming Artifacts References (if present)
|
|
|
|
**From task.json files**:
|
|
- Task IDs
|
|
- Titles and descriptions
|
|
- Status
|
|
- Dependencies (depends_on, blocks)
|
|
- Context (requirements, focus_paths, acceptance, artifacts)
|
|
- Flow control (pre_analysis, implementation_approach)
|
|
- Meta (complexity, priority)
|
|
|
|
### 3. Build Semantic Models
|
|
|
|
Create internal representations (do not include raw artifacts in output):
|
|
|
|
**Requirements inventory**:
|
|
- Each functional/non-functional/business requirement with stable ID
|
|
- Requirement text, acceptance criteria, priority
|
|
|
|
**Architecture decisions inventory**:
|
|
- ADRs from synthesis
|
|
- Technology choices
|
|
- Data model references
|
|
|
|
**Task coverage mapping**:
|
|
- Map each task to one or more requirements (by ID reference or keyword inference)
|
|
- Map each requirement to covering tasks
|
|
|
|
**Dependency graph**:
|
|
- Task-to-task dependencies (depends_on, blocks)
|
|
- Requirement-level dependencies (from synthesis)
|
|
|
|
### 4. Detection Passes (Agent-Driven Multi-Dimensional Analysis)
|
|
|
|
**Execution Strategy**:
|
|
- Single `cli-explore-agent` invocation
|
|
- Agent executes multiple CLI analyses internally (different dimensions: A-H)
|
|
- Token Budget: 50 findings maximum (aggregate remainder in overflow summary)
|
|
- Priority Allocation: CRITICAL (unlimited) → HIGH (15) → MEDIUM (20) → LOW (15)
|
|
- Early Exit: If CRITICAL findings > 0 in User Intent/Requirements Coverage, skip LOW/MEDIUM checks
|
|
|
|
**Execution Order** (Agent orchestrates internally):
|
|
|
|
1. **Tier 1 (CRITICAL Path)**: A, B, C - User intent, coverage, consistency (full analysis)
|
|
2. **Tier 2 (HIGH Priority)**: D, E - Dependencies, synthesis alignment (limit 15 findings)
|
|
3. **Tier 3 (MEDIUM Priority)**: F - Specification quality (limit 20 findings)
|
|
4. **Tier 4 (LOW Priority)**: G, H - Duplication, feasibility (limit 15 findings)
|
|
|
|
---
|
|
|
|
#### Phase 4.1: Launch Unified Verification Agent
|
|
|
|
**Single Agent, Multi-Dimensional Analysis**:
|
|
|
|
```javascript
|
|
Task(
|
|
subagent_type="cli-explore-agent",
|
|
run_in_background=false, // ⚠️ MANDATORY: Must wait for results
|
|
description="Multi-dimensional plan verification",
|
|
prompt=`
|
|
## Plan Verification Task
|
|
|
|
Execute comprehensive verification across dimensions A-H, using Gemini CLI for semantic analysis.
|
|
|
|
### MANDATORY FIRST STEPS
|
|
1. Read: ${session_file} (user intent/context)
|
|
2. Read: ${IMPL_PLAN} (implementation plan)
|
|
3. Glob: ${task_dir}/*.json (all task JSON files)
|
|
4. Glob: ${SYNTHESIS_DIR}/*/analysis.md (role analysis documents)
|
|
5. Read: \~/.claude/workflows/cli-templates/schemas/verify-json-schema.json (output schema reference)
|
|
|
|
### Output Location
|
|
${process_dir}/verification-findings.json
|
|
|
|
### Verification Dimensions
|
|
|
|
#### Dimension A: User Intent Alignment (CRITICAL - Tier 1)
|
|
- Goal Alignment: IMPL_PLAN objectives match user's original intent
|
|
- Scope Drift: Plan covers user's stated scope without unauthorized expansion
|
|
- Success Criteria Match: Plan's success criteria reflect user's expectations
|
|
- Intent Conflicts: Tasks contradicting user's original objectives
|
|
|
|
#### Dimension B: Requirements Coverage Analysis (CRITICAL - Tier 1)
|
|
- Orphaned Requirements: Requirements in synthesis with zero associated tasks
|
|
- Unmapped Tasks: Tasks with no clear requirement linkage
|
|
- NFR Coverage Gaps: Non-functional requirements not reflected in tasks
|
|
|
|
#### Dimension C: Consistency Validation (CRITICAL - Tier 1)
|
|
- Requirement Conflicts: Tasks contradicting synthesis requirements
|
|
- Architecture Drift: IMPL_PLAN architecture not matching synthesis ADRs
|
|
- Terminology Drift: Same concept named differently across artifacts
|
|
- Data Model Inconsistency: Tasks referencing entities/fields not in synthesis
|
|
|
|
#### Dimension D: Dependency Integrity (HIGH - Tier 2)
|
|
- Circular Dependencies: Cyclic task dependencies
|
|
- Missing Dependencies: Task requires outputs from another task but no explicit dependency
|
|
- Broken Dependencies: Task depends on non-existent task ID
|
|
- Logical Ordering Issues: Implementation tasks before foundational setup
|
|
|
|
#### Dimension E: Synthesis Alignment (HIGH - Tier 2)
|
|
- Priority Conflicts: High-priority synthesis requirements mapped to low-priority tasks
|
|
- Success Criteria Mismatch: IMPL_PLAN success criteria not covering synthesis acceptance criteria
|
|
- Risk Mitigation Gaps: Critical risks without corresponding mitigation tasks
|
|
|
|
#### Dimension F: Task Specification Quality (MEDIUM - Tier 3)
|
|
- Ambiguous Focus Paths: Tasks with vague/missing focus_paths
|
|
- Underspecified Acceptance: Tasks without clear acceptance criteria
|
|
- Missing Artifacts References: Tasks not referencing brainstorming artifacts
|
|
- Weak Flow Control: Tasks without clear implementation_approach or pre_analysis
|
|
- Missing Target Files: Tasks without flow_control.target_files
|
|
|
|
#### Dimension G: Duplication Detection (LOW - Tier 4)
|
|
- Overlapping Task Scope: Multiple tasks with nearly identical descriptions
|
|
- Redundant Requirements Coverage: Same requirement covered by multiple tasks
|
|
|
|
#### Dimension H: Feasibility Assessment (LOW - Tier 4)
|
|
- Complexity Misalignment: Task marked "simple" but requires multiple file modifications
|
|
- Resource Conflicts: Parallel tasks requiring same resources/files
|
|
- Skill Gap Risks: Tasks requiring unavailable team skills
|
|
|
|
### CLI Analysis Execution
|
|
|
|
**Execute Tier 1 Analysis (All Dimensions)**:
|
|
|
|
\`\`\`bash
|
|
ccw cli -p "PURPOSE: Multi-dimensional plan verification for Tier 1 (user intent, coverage, consistency)
|
|
TASK:
|
|
• Verify user original intent matches IMPL_PLAN objectives (dimension A)
|
|
• Check all synthesis requirements have corresponding tasks (dimension B)
|
|
• Identify conflicts between tasks and synthesis decisions (dimension C)
|
|
• Find orphaned requirements or unmapped tasks
|
|
CONTEXT: @${session_dir}/**/* | Memory: Verification session WFS-${session_id}
|
|
EXPECTED: Findings JSON array with: dimension, severity, location, summary, recommendation
|
|
CONSTRAINTS: Focus on CRITICAL issues only | Identify all intent misalignments
|
|
" --tool gemini --mode analysis --rule analysis-review-architecture
|
|
\`\`\`
|
|
|
|
**If CRITICAL findings == 0, continue to Tier 2**:
|
|
|
|
\`\`\`bash
|
|
ccw cli -p "PURPOSE: Plan verification for Tier 2 (dependencies and synthesis alignment)
|
|
TASK:
|
|
• Detect circular or broken task dependencies (dimension D)
|
|
• Identify priority conflicts between synthesis and tasks (dimension E)
|
|
• Check risk mitigation coverage
|
|
CONTEXT: @${session_dir}/**/* | Previous: Tier 1 verified, no critical issues
|
|
EXPECTED: Findings JSON with dimension D-E results
|
|
CONSTRAINTS: Limit to 15 HIGH severity findings
|
|
" --tool gemini --mode analysis --rule analysis-diagnose-bug-root-cause
|
|
\`\`\`
|
|
|
|
**If High findings <= 15, continue to Tier 3**:
|
|
|
|
\`\`\`bash
|
|
ccw cli -p "PURPOSE: Plan verification for Tier 3 (task specification quality)
|
|
TASK:
|
|
• Check for missing or vague acceptance criteria (dimension F)
|
|
• Validate flow control specifications in tasks
|
|
• Identify missing artifact references
|
|
CONTEXT: @${task_dir}/**/* @${IMPL_PLAN}
|
|
EXPECTED: Findings JSON with dimension F results
|
|
CONSTRAINTS: Limit to 20 MEDIUM severity findings
|
|
" --tool gemini --mode analysis --rule analysis-analyze-code-patterns
|
|
\`\`\`
|
|
|
|
**If Medium findings <= 20, execute Tier 4**:
|
|
|
|
\`\`\`bash
|
|
ccw cli -p "PURPOSE: Plan verification for Tier 4 (duplication and feasibility)
|
|
TASK:
|
|
• Detect overlapping task scopes (dimension G)
|
|
• Assess complexity alignment and resource conflicts (dimension H)
|
|
CONTEXT: @${task_dir}/**/*
|
|
EXPECTED: Findings JSON with dimension G-H results
|
|
CONSTRAINTS: Limit to 15 LOW severity findings
|
|
" --tool gemini --mode analysis --rule analysis-analyze-code-patterns
|
|
\`\`\`
|
|
|
|
### Severity Assignment
|
|
|
|
**CRITICAL**:
|
|
- Violates user's original intent (goal misalignment, scope drift)
|
|
- Violates synthesis authority (requirement conflict)
|
|
- Core requirement with zero coverage
|
|
- Circular dependencies
|
|
- Broken dependencies
|
|
|
|
**HIGH**:
|
|
- NFR coverage gaps
|
|
- Priority conflicts
|
|
- Missing risk mitigation tasks
|
|
- Ambiguous acceptance criteria
|
|
|
|
**MEDIUM**:
|
|
- Terminology drift
|
|
- Missing artifacts references
|
|
- Weak flow control
|
|
- Logical ordering issues
|
|
|
|
**LOW**:
|
|
- Style/wording improvements
|
|
- Minor redundancy not affecting execution
|
|
|
|
### Output Schema
|
|
|
|
JSON findings array (reference from step 5 above):
|
|
|
|
\`\`\`json
|
|
{
|
|
"session_id": "${session_id}",
|
|
"timestamp": "2025-01-27T...",
|
|
"verification_tiers_completed": ["Tier 1", "Tier 2"],
|
|
"findings": [
|
|
{
|
|
"id": "C1",
|
|
"dimension": "A",
|
|
"dimension_name": "User Intent Alignment",
|
|
"severity": "CRITICAL",
|
|
"location": ["${IMPL_PLAN}:L45", "synthesis:FR-03"],
|
|
"summary": "User goal: add user profiles, but IMPL_PLAN focuses on authentication",
|
|
"recommendation": "Update IMPL_PLAN to include profile management tasks"
|
|
},
|
|
{
|
|
"id": "H1",
|
|
"dimension": "D",
|
|
"dimension_name": "Dependency Integrity",
|
|
"severity": "HIGH",
|
|
"location": ["task:IMPL-2.3"],
|
|
"summary": "Depends on non-existent IMPL-2.4",
|
|
"recommendation": "Fix depends_on reference or remove dependency"
|
|
}
|
|
],
|
|
"summary": {
|
|
"critical_count": 2,
|
|
"high_count": 3,
|
|
"medium_count": 5,
|
|
"low_count": 8,
|
|
"total_findings": 18,
|
|
"coverage_percentage": 92,
|
|
"recommendation": "PROCEED_WITH_FIXES"
|
|
}
|
|
}
|
|
\`\`\`
|
|
|
|
### Success Criteria
|
|
|
|
- [ ] All Tier 1 findings identified (no early exit)
|
|
- [ ] Tier 2-4 executed in sequence (skipped only by token budget exhaustion)
|
|
- [ ] Each finding includes: dimension, severity, location, recommendation
|
|
- [ ] Findings aggregated in single JSON output file
|
|
- [ ] Agent returns completion summary with quality gate recommendation
|
|
|
|
### Return Output
|
|
|
|
Write: \`${process_dir}/verification-findings.json\`
|
|
|
|
Return: 2-3 sentence summary with quality gate decision (BLOCK_EXECUTION / PROCEED_WITH_FIXES / PROCEED_WITH_CAUTION / PROCEED)
|
|
`
|
|
)
|
|
```
|
|
|
|
---
|
|
|
|
#### Phase 4.2: Parse and Aggregate Agent Results
|
|
|
|
```javascript
|
|
// Load agent findings
|
|
const findings = JSON.parse(Read(\`${process_dir}/verification-findings.json\`))
|
|
|
|
// Organize by severity
|
|
const byServerity = {
|
|
CRITICAL: findings.findings.filter(f => f.severity === 'CRITICAL'),
|
|
HIGH: findings.findings.filter(f => f.severity === 'HIGH'),
|
|
MEDIUM: findings.findings.filter(f => f.severity === 'MEDIUM'),
|
|
LOW: findings.findings.filter(f => f.severity === 'LOW')
|
|
}
|
|
|
|
// Determine quality gate
|
|
const recommendation =
|
|
byServerity.CRITICAL.length > 0 ? 'BLOCK_EXECUTION' :
|
|
byServerity.HIGH.length > 0 ? 'PROCEED_WITH_FIXES' :
|
|
byServerity.MEDIUM.length > 0 ? 'PROCEED_WITH_CAUTION' :
|
|
'PROCEED'
|
|
```
|
|
|
|
### 5. Generate Human-Readable Report
|
|
|
|
**Report Generation**: Transform agent findings JSON into comprehensive Markdown report.
|
|
|
|
**Step 5.1: Load Agent Findings**
|
|
```javascript
|
|
// Load verification findings from agent
|
|
const findingsData = JSON.parse(Read(`${process_dir}/verification-findings.json`))
|
|
|
|
// Extract key metrics
|
|
const { session_id, timestamp, verification_tiers_completed, findings, summary } = findingsData
|
|
const { critical_count, high_count, medium_count, low_count, total_findings, coverage_percentage, recommendation } = summary
|
|
|
|
// Organize findings by severity
|
|
const bySeverity = {
|
|
CRITICAL: findings.filter(f => f.severity === 'CRITICAL'),
|
|
HIGH: findings.filter(f => f.severity === 'HIGH'),
|
|
MEDIUM: findings.filter(f => f.severity === 'MEDIUM'),
|
|
LOW: findings.filter(f => f.severity === 'LOW')
|
|
}
|
|
|
|
// Organize findings by dimension
|
|
const byDimension = findings.reduce((acc, f) => {
|
|
acc[f.dimension] = acc[f.dimension] || []
|
|
acc[f.dimension].push(f)
|
|
return acc
|
|
}, {})
|
|
```
|
|
|
|
**Step 5.2: Generate Markdown Report**
|
|
|
|
Output a Markdown report with the following structure:
|
|
|
|
```markdown
|
|
# Plan Verification Report
|
|
|
|
**Session**: WFS-${session_id}
|
|
**Generated**: ${timestamp}
|
|
**Verification Tiers Completed**: ${verification_tiers_completed.join(', ')}
|
|
**Artifacts Analyzed**: role analysis documents, IMPL_PLAN.md, ${task_files_count} task files
|
|
|
|
---
|
|
|
|
## Executive Summary
|
|
|
|
### Quality Gate Decision
|
|
|
|
| Metric | Value | Status |
|
|
|--------|-------|--------|
|
|
| Overall Risk Level | ${critical_count > 0 ? 'CRITICAL' : high_count > 0 ? 'HIGH' : medium_count > 0 ? 'MEDIUM' : 'LOW'} | ${critical_count > 0 ? '🔴' : high_count > 0 ? '🟠' : medium_count > 0 ? '🟡' : '🟢'} |
|
|
| Critical Issues | ${critical_count} | 🔴 |
|
|
| High Issues | ${high_count} | 🟠 |
|
|
| Medium Issues | ${medium_count} | 🟡 |
|
|
| Low Issues | ${low_count} | 🟢 |
|
|
| Requirements Coverage | ${coverage_percentage}% | ${coverage_percentage >= 90 ? '🟢' : coverage_percentage >= 75 ? '🟡' : '🔴'} |
|
|
|
|
### Recommendation
|
|
|
|
**${recommendation}**
|
|
|
|
**Decision Rationale**:
|
|
${
|
|
recommendation === 'BLOCK_EXECUTION' ?
|
|
`Critical issues detected that violate core requirements or user intent. Must be resolved before implementation.` :
|
|
recommendation === 'PROCEED_WITH_FIXES' ?
|
|
`No critical issues, but high-severity concerns exist. Recommended to fix before execution to ensure quality.` :
|
|
recommendation === 'PROCEED_WITH_CAUTION' ?
|
|
`Medium-severity issues detected. May proceed but address concerns during/after implementation.` :
|
|
`No significant issues detected. Safe to proceed with implementation.`
|
|
}
|
|
|
|
**Quality Gate Criteria**:
|
|
- **BLOCK_EXECUTION**: Critical issues > 0 (must fix before proceeding)
|
|
- **PROCEED_WITH_FIXES**: Critical = 0, High > 0 (fix recommended before execution)
|
|
- **PROCEED_WITH_CAUTION**: Critical = 0, High = 0, Medium > 0 (proceed with awareness)
|
|
- **PROCEED**: Only Low issues or None (safe to execute)
|
|
|
|
---
|
|
|
|
## Findings Summary
|
|
|
|
| ID | Dimension | Severity | Location(s) | Summary | Recommendation |
|
|
|----|-----------|----------|-------------|---------|----------------|
|
|
${findings.map(f => `| ${f.id} | ${f.dimension_name} | ${f.severity} | ${f.location.join(', ')} | ${f.summary} | ${f.recommendation} |`).join('\n')}
|
|
|
|
(IDs prefixed by severity initial: C/H/M/L + number)
|
|
|
|
---
|
|
|
|
## User Intent Alignment Analysis (Dimension A)
|
|
|
|
${
|
|
byDimension['A'] && byDimension['A'].length > 0 ?
|
|
byDimension['A'].map(f => `
|
|
### ${f.summary}
|
|
|
|
**Severity**: ${f.severity}
|
|
**Location**: ${f.location.join(', ')}
|
|
|
|
**Issue Description**:
|
|
${f.summary}
|
|
|
|
**Recommendation**:
|
|
${f.recommendation}
|
|
`).join('\n') :
|
|
`> ✅ No user intent alignment issues detected. IMPL_PLAN objectives and scope match user's original intent.`
|
|
}
|
|
|
|
---
|
|
|
|
## Requirements Coverage Analysis (Dimension B)
|
|
|
|
### Coverage Metrics
|
|
|
|
| Metric | Value |
|
|
|--------|-------|
|
|
| Overall Coverage | ${coverage_percentage}% |
|
|
| Total Findings | ${byDimension['B']?.length || 0} |
|
|
|
|
### Findings
|
|
|
|
${
|
|
byDimension['B'] && byDimension['B'].length > 0 ?
|
|
byDimension['B'].map(f => `
|
|
#### ${f.id}: ${f.summary}
|
|
|
|
- **Severity**: ${f.severity}
|
|
- **Location**: ${f.location.join(', ')}
|
|
- **Recommendation**: ${f.recommendation}
|
|
`).join('\n') :
|
|
`> ✅ All synthesis requirements have corresponding tasks. No coverage gaps detected.`
|
|
}
|
|
|
|
---
|
|
|
|
## Consistency Validation (Dimension C)
|
|
|
|
${
|
|
byDimension['C'] && byDimension['C'].length > 0 ?
|
|
byDimension['C'].map(f => `
|
|
### ${f.id}: ${f.summary}
|
|
|
|
- **Severity**: ${f.severity}
|
|
- **Location**: ${f.location.join(', ')}
|
|
- **Recommendation**: ${f.recommendation}
|
|
`).join('\n') :
|
|
`> ✅ No consistency issues detected. Tasks align with synthesis requirements and architecture.`
|
|
}
|
|
|
|
---
|
|
|
|
## Dependency Integrity (Dimension D)
|
|
|
|
${
|
|
byDimension['D'] && byDimension['D'].length > 0 ?
|
|
byDimension['D'].map(f => `
|
|
### ${f.id}: ${f.summary}
|
|
|
|
- **Severity**: ${f.severity}
|
|
- **Location**: ${f.location.join(', ')}
|
|
- **Recommendation**: ${f.recommendation}
|
|
`).join('\n') :
|
|
`> ✅ No dependency issues detected. All task dependencies are valid and logically ordered.`
|
|
}
|
|
|
|
---
|
|
|
|
## Synthesis Alignment (Dimension E)
|
|
|
|
${
|
|
byDimension['E'] && byDimension['E'].length > 0 ?
|
|
byDimension['E'].map(f => `
|
|
### ${f.id}: ${f.summary}
|
|
|
|
- **Severity**: ${f.severity}
|
|
- **Location**: ${f.location.join(', ')}
|
|
- **Recommendation**: ${f.recommendation}
|
|
`).join('\n') :
|
|
`> ✅ No synthesis alignment issues. Task priorities and success criteria match synthesis specifications.`
|
|
}
|
|
|
|
---
|
|
|
|
## Task Specification Quality (Dimension F)
|
|
|
|
${
|
|
byDimension['F'] && byDimension['F'].length > 0 ?
|
|
byDimension['F'].map(f => `
|
|
### ${f.id}: ${f.summary}
|
|
|
|
- **Severity**: ${f.severity}
|
|
- **Location**: ${f.location.join(', ')}
|
|
- **Recommendation**: ${f.recommendation}
|
|
`).join('\n') :
|
|
`> ✅ All tasks have clear specifications with proper focus_paths, acceptance criteria, and flow control.`
|
|
}
|
|
|
|
---
|
|
|
|
## Duplication Detection (Dimension G)
|
|
|
|
${
|
|
byDimension['G'] && byDimension['G'].length > 0 ?
|
|
byDimension['G'].map(f => `
|
|
### ${f.id}: ${f.summary}
|
|
|
|
- **Severity**: ${f.severity}
|
|
- **Location**: ${f.location.join(', ')}
|
|
- **Recommendation**: ${f.recommendation}
|
|
`).join('\n') :
|
|
`> ✅ No duplicate task scopes detected. All tasks have distinct responsibilities.`
|
|
}
|
|
|
|
---
|
|
|
|
## Feasibility Assessment (Dimension H)
|
|
|
|
${
|
|
byDimension['H'] && byDimension['H'].length > 0 ?
|
|
byDimension['H'].map(f => `
|
|
### ${f.id}: ${f.summary}
|
|
|
|
- **Severity**: ${f.severity}
|
|
- **Location**: ${f.location.join(', ')}
|
|
- **Recommendation**: ${f.recommendation}
|
|
`).join('\n') :
|
|
`> ✅ No feasibility concerns. Task complexity assessments and resource allocations are appropriate.`
|
|
}
|
|
|
|
---
|
|
|
|
## Detailed Findings by Severity
|
|
|
|
### CRITICAL Issues (${critical_count})
|
|
|
|
${
|
|
bySeverity.CRITICAL.length > 0 ?
|
|
bySeverity.CRITICAL.map(f => `
|
|
#### ${f.id}: ${f.summary}
|
|
|
|
- **Dimension**: ${f.dimension_name} (${f.dimension})
|
|
- **Location**: ${f.location.join(', ')}
|
|
- **Impact**: Blocks execution - must be resolved before implementation
|
|
- **Recommendation**: ${f.recommendation}
|
|
`).join('\n') :
|
|
`> ✅ No critical issues detected.`
|
|
}
|
|
|
|
### HIGH Issues (${high_count})
|
|
|
|
${
|
|
bySeverity.HIGH.length > 0 ?
|
|
bySeverity.HIGH.map(f => `
|
|
#### ${f.id}: ${f.summary}
|
|
|
|
- **Dimension**: ${f.dimension_name} (${f.dimension})
|
|
- **Location**: ${f.location.join(', ')}
|
|
- **Impact**: Significant quality concern - recommended to fix before execution
|
|
- **Recommendation**: ${f.recommendation}
|
|
`).join('\n') :
|
|
`> ✅ No high-severity issues detected.`
|
|
}
|
|
|
|
### MEDIUM Issues (${medium_count})
|
|
|
|
${
|
|
bySeverity.MEDIUM.length > 0 ?
|
|
bySeverity.MEDIUM.map(f => `
|
|
#### ${f.id}: ${f.summary}
|
|
|
|
- **Dimension**: ${f.dimension_name} (${f.dimension})
|
|
- **Location**: ${f.location.join(', ')}
|
|
- **Impact**: Quality improvement opportunity - address during/after implementation
|
|
- **Recommendation**: ${f.recommendation}
|
|
`).join('\n') :
|
|
`> ✅ No medium-severity issues detected.`
|
|
}
|
|
|
|
### LOW Issues (${low_count})
|
|
|
|
${
|
|
bySeverity.LOW.length > 0 ?
|
|
bySeverity.LOW.map(f => `
|
|
#### ${f.id}: ${f.summary}
|
|
|
|
- **Dimension**: ${f.dimension_name} (${f.dimension})
|
|
- **Location**: ${f.location.join(', ')}
|
|
- **Impact**: Minor improvement - optional
|
|
- **Recommendation**: ${f.recommendation}
|
|
`).join('\n') :
|
|
`> ✅ No low-severity issues detected.`
|
|
}
|
|
|
|
---
|
|
|
|
## Metrics Summary
|
|
|
|
| Metric | Value |
|
|
|--------|-------|
|
|
| Requirements Coverage | ${coverage_percentage}% |
|
|
| Total Findings | ${total_findings} |
|
|
| Critical Issues | ${critical_count} |
|
|
| High Issues | ${high_count} |
|
|
| Medium Issues | ${medium_count} |
|
|
| Low Issues | ${low_count} |
|
|
| Verification Tiers Completed | ${verification_tiers_completed.join(', ')} |
|
|
|
|
---
|
|
|
|
## Remediation Recommendations
|
|
|
|
### Priority Order
|
|
|
|
1. **CRITICAL** - Must fix before proceeding
|
|
2. **HIGH** - Fix before execution
|
|
3. **MEDIUM** - Fix during or after implementation
|
|
4. **LOW** - Optional improvements
|
|
|
|
### Next Steps
|
|
|
|
Based on the quality gate recommendation (**${recommendation}**):
|
|
|
|
${
|
|
recommendation === 'BLOCK_EXECUTION' ?
|
|
`
|
|
**🛑 BLOCK EXECUTION**
|
|
|
|
You must resolve all CRITICAL issues before proceeding with implementation:
|
|
|
|
1. Review each critical issue in detail (see section "CRITICAL Issues" above)
|
|
2. Determine remediation approach:
|
|
- Modify IMPL_PLAN.md for goal/scope conflicts
|
|
- Update task.json for requirement misalignments
|
|
- Add new tasks for coverage gaps
|
|
- Fix dependencies for circular/broken references
|
|
3. Apply fixes systematically
|
|
4. Re-run verification to confirm resolution: \`/workflow:plan-verify --session ${session_id}\`
|
|
` :
|
|
recommendation === 'PROCEED_WITH_FIXES' ?
|
|
`
|
|
**⚠️ PROCEED WITH FIXES RECOMMENDED**
|
|
|
|
No critical issues detected, but HIGH issues exist. Recommended workflow:
|
|
|
|
1. Review high-priority issues (see section "HIGH Issues" above)
|
|
2. Apply fixes before execution for optimal results:
|
|
- Use IMPL_PLAN.md for architecture/priority misalignments
|
|
- Update task.json for specification improvements
|
|
- Add missing dependencies or risk mitigation tasks
|
|
3. Re-run verification to confirm resolution: \`/workflow:plan-verify --session ${session_id}\`
|
|
4. Proceed to implementation when ready
|
|
` :
|
|
recommendation === 'PROCEED_WITH_CAUTION' ?
|
|
`
|
|
**✅ PROCEED WITH CAUTION**
|
|
|
|
Only MEDIUM issues detected. You may proceed with implementation:
|
|
|
|
- Review medium-severity issues (see section "MEDIUM Issues" above)
|
|
- Address concerns during or after implementation
|
|
- Maintain awareness of identified concerns
|
|
- Schedule remediation for future improvement cycles
|
|
` :
|
|
`
|
|
**✅ PROCEED**
|
|
|
|
No significant issues detected. Safe to execute implementation workflow:
|
|
|
|
- Requirements fully covered
|
|
- User intent aligned
|
|
- Dependencies valid and logically ordered
|
|
- All tasks properly specified
|
|
- Ready for immediate execution
|
|
`
|
|
}
|
|
|
|
---
|
|
|
|
**Report End**
|
|
\`\`\`
|
|
|
|
### 6. Save and Display Report
|
|
|
|
**Step 6.1: Generate Complete Markdown Report**
|
|
|
|
```javascript
|
|
// Build complete report from template above using findings data
|
|
const fullReport = \`
|
|
# Plan Verification Report
|
|
... [complete markdown template generated above] ...
|
|
\`
|
|
|
|
// Write report to file
|
|
const reportPath = \`${process_dir}/PLAN_VERIFICATION.md\`
|
|
Write(reportPath, fullReport)
|
|
```
|
|
|
|
**Step 6.2: Display Summary to User**
|
|
|
|
```javascript
|
|
console.log(\`
|
|
=== Plan Verification Complete ===
|
|
Report saved to: ${reportPath}
|
|
|
|
Quality Gate: \${recommendation}
|
|
Critical: \${critical_count} | High: \${high_count} | Medium: \${medium_count} | Low: \${low_count}
|
|
Coverage: \${coverage_percentage}%
|
|
|
|
Next: Review full report at ${reportPath} for detailed findings and recommendations
|
|
\`)
|
|
```
|
|
|
|
**Step 6.3: Next Step Selection**
|
|
|
|
```javascript
|
|
const autoYes = $ARGUMENTS.includes('--yes') || $ARGUMENTS.includes('-y')
|
|
const canExecute = recommendation !== 'BLOCK_EXECUTION'
|
|
|
|
// Auto mode
|
|
if (autoYes) {
|
|
if (canExecute) {
|
|
SlashCommand("/workflow:execute --yes --resume-session=\"${session_id}\"")
|
|
} else {
|
|
console.log(`[--yes] BLOCK_EXECUTION - Fix ${critical_count} critical issues first.`)
|
|
}
|
|
return
|
|
}
|
|
|
|
// Interactive mode - build options based on quality gate
|
|
const options = canExecute
|
|
? [
|
|
{ label: canExecute && recommendation === 'PROCEED_WITH_FIXES' ? "Execute Anyway" : "Execute (Recommended)",
|
|
description: "Proceed to /workflow:execute" },
|
|
{ label: "Review Report", description: "Review findings before deciding" },
|
|
{ label: "Re-verify", description: "Re-run after manual fixes" }
|
|
]
|
|
: [
|
|
{ label: "Review Report", description: "Review critical issues" },
|
|
{ label: "Re-verify", description: "Re-run after fixing issues" }
|
|
]
|
|
|
|
const selection = AskUserQuestion({
|
|
questions: [{
|
|
question: `Quality gate: ${recommendation}. Next step?`,
|
|
header: "Action",
|
|
multiSelect: false,
|
|
options
|
|
}]
|
|
})
|
|
|
|
// Handle selection
|
|
if (selection.includes("Execute")) {
|
|
SlashCommand("/workflow:execute --resume-session=\"${session_id}\"")
|
|
} else if (selection === "Re-verify") {
|
|
SlashCommand("/workflow:plan-verify --session ${session_id}")
|
|
}
|
|
```
|