BMAD-METHOD/docs/audit-report-tech-spec-2025...

12 KiB

Workflow Audit Report

Workflow: tech-spec Audit Date: 2025-10-21 Auditor: Audit Workflow (BMAD v6) Workflow Type: Document (template-based) Workflow Path: /Users/brianmadison/dev/BMAD-METHOD/src/modules/bmm/workflows/4-implementation/epic-tech-context


Executive Summary

Overall Status: ⚠️ ISSUES FOUND - Requires fixes before production use

Issue Breakdown:

  • Critical Issues: 2
  • Important Issues: 1
  • Cleanup Recommendations: 4

Primary Concerns:

  1. Web bundle missing critical workflow dependencies
  2. Output path hardcoded instead of using config variable
  3. Configuration bloat (40% unused variables)

1. Standard Config Block Validation

Status: PASS

All required standard config variables are present and correctly formatted:

Required Variables:

  • config_source: "{project-root}/bmad/bmm/config.yaml"
  • output_folder: "{config_source}:output_folder"
  • user_name: "{config_source}:user_name"
  • communication_language: "{config_source}:communication_language"
  • date: system-generated

Additional Config Variables Found:

  • ⚠️ document_output_language (non-standard, potentially unused)
  • ⚠️ user_skill_level (non-standard, potentially unused)

Recommendation: Verify usage of additional config variables or remove if unused.


2. YAML/Instruction/Template Alignment

Issues Found: Configuration Bloat

Variables Analyzed: 5 custom fields Used in Instructions: 3 Used in Template: N/A (config variables) Unused (Bloat): 2

Unused Variables (BLOAT):

  1. document_output_language

    • Location: workflow.yaml line 10
    • Status: Defined but never referenced in instructions.md or template.md
    • Impact: Configuration bloat
    • Action Required: Remove from yaml
  2. user_skill_level

    • Location: workflow.yaml line 11
    • Status: Defined but never referenced in instructions.md or template.md
    • Impact: Configuration bloat
    • Action Required: Remove from yaml

Properly Used Variables:

  • output_folder → Used in instructions.md (lines 12, 129)
  • user_name → Used in instructions.md (lines 143, 166) and template.md (line 4)
  • communication_language → Used in instructions.md (line 6)
  • date → Used in template.md (line 3) and output file naming
  • non_interactive → Used in instructions.md (lines 8, 66, 68)

Bloat Metrics:

  • Total custom yaml fields: 5
  • Used fields: 3
  • Unused fields: 2
  • Bloat Percentage: 40%

3. Config Variable Usage

Overall Status: ⚠️ IMPORTANT ISSUE FOUND

Communication Language:

  • Properly used on line 6: Communicate all responses in {communication_language}
  • No inappropriate usage in template headers
  • Status: CORRECT

User Name:

  • Used for personalization on lines 143, 166
  • Optional metadata usage in template (line 4)
  • Status: CORRECT

Output Folder:

  • Properly used for file searches (lines 12, 129)
  • ISSUE: default_output_file hardcodes path instead of using variable
    • Current: "{project-root}/docs/tech-spec-epic-{{epic_id}}.md"
    • Should be: "{output_folder}/tech-spec-epic-{{epic_id}}.md"
    • Impact: Ignores user's configured output folder preference
    • Severity: IMPORTANT

Date:

  • System-generated and available
  • Used in template metadata (line 3)
  • Used in output file naming
  • Status: CORRECT

Action Required:

Fix default_output_file in workflow.yaml:

# Current (line 29):
default_output_file: "{project-root}/docs/tech-spec-epic-{{epic_id}}.md"

# Should be:
default_output_file: "{output_folder}/tech-spec-epic-{{epic_id}}.md"

4. Web Bundle Validation

🚨 Status: CRITICAL ISSUES FOUND

Current Web Bundle Configuration:

web_bundle:
  name: 'tech-spec'
  description: '...'
  author: 'BMAD BMM'
  web_bundle_files:
    - 'bmad/bmm/workflows/4-implementation/epic-tech-context/template.md'
    - 'bmad/bmm/workflows/4-implementation/epic-tech-context/instructions.md'
    - 'bmad/bmm/workflows/4-implementation/epic-tech-context/checklist.md'

Path Validation:

  • All paths use bmad/-relative format (NOT {project-root})
  • No {config_source} variables in web_bundle section
  • Paths match actual file locations

Completeness Check:

  • instructions.md listed
  • template.md listed (document workflow)
  • checklist.md listed

🚨 Critical Issues:

Issue 1: Missing Workflow Dependency

  • Severity: CRITICAL
  • Location: instructions.md line 133
  • Problem: Workflow invokes workflow-status but dependency not in web_bundle_files
  • Invocation: <invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
  • Missing files:
    • bmad/bmm/workflows/workflow-status/workflow.yaml
    • bmad/bmm/workflows/workflow-status/instructions.md (if exists)

Issue 2: Missing existing_workflows Field

  • Severity: CRITICAL
  • Problem: When <invoke-workflow> calls exist, web_bundle MUST include existing_workflows field
  • Current: Field not present
  • Required: Mapping of workflow variables to paths

Required Fix:

web_bundle:
  name: 'tech-spec'
  description: 'Generate a comprehensive Technical Specification from PRD and Architecture with acceptance criteria and traceability mapping'
  author: 'BMAD BMM'
  existing_workflows:
    - workflow_status: 'bmad/bmm/workflows/workflow-status/workflow.yaml'
  web_bundle_files:
    - 'bmad/bmm/workflows/4-implementation/epic-tech-context/template.md'
    - 'bmad/bmm/workflows/4-implementation/epic-tech-context/instructions.md'
    - 'bmad/bmm/workflows/4-implementation/epic-tech-context/checklist.md'
    - 'bmad/bmm/workflows/workflow-status/workflow.yaml'
    - 'bmad/bmm/workflows/workflow-status/instructions.md'

Web Bundle Status:

  • Web Bundle Present: Yes
  • Files Listed: 3
  • Missing Files: 2+
  • Completeness: INCOMPLETE

5. Bloat Detection

Bloat Summary

Unused YAML Fields: 2

  1. document_output_language

    • Type: Config variable
    • Usage: Not referenced anywhere
    • Recommendation: Remove
  2. user_skill_level

    • Type: Config variable
    • Usage: Not referenced anywhere
    • Recommendation: Remove

Hardcoded Values: 1

  1. default_output_file path
    • Current: {project-root}/docs/tech-spec-epic-{{epic_id}}.md
    • Should use: {output_folder}
    • Impact: Ignores user configuration
    • Recommendation: Fix to use {output_folder}

Redundant Configuration: 3 fields

  1. Metadata duplication between top-level and web_bundle:
    • name appears on yaml line 1 AND web_bundle line 36
    • description appears on yaml line 2 AND web_bundle line 37
    • author appears on yaml line 3 AND web_bundle line 38
    • Recommendation: Remove duplication (keep in one location)

Bloat Metrics:

  • Total custom yaml fields analyzed: 5
  • Used fields: 3
  • Unused fields: 2
  • Bloat Percentage: 40%
  • Redundant metadata fields: 3
  • Cleanup Potential: HIGH (~30% configuration reduction possible)

6. Template Variable Mapping

Status: EXCELLENT - No Issues

Template Variables: 20 Mapped via template-output: 15 Config Variables: 2 Runtime Variables: 3 Missing Mappings: 0 Orphaned Outputs: 0

All Template Variables Accounted For:

Generated via template-output (15):

  • overview, objectives_scope, system_arch_alignment
  • services_modules, data_models, apis_interfaces, workflows_sequencing
  • nfr_performance, nfr_security, nfr_reliability, nfr_observability
  • dependencies_integrations
  • acceptance_criteria, traceability_mapping
  • risks_assumptions_questions, test_strategy

Standard Config Variables (2):

  • date (system-generated)
  • user_name (from config)

Runtime/Extracted Variables (3):

  • epic_title (extracted from PRD)
  • epic_id (extracted from PRD)

Validation:

  • All variables use snake_case naming
  • Variable names are descriptive and clear
  • Logical grouping in template-output sections
  • No orphaned template-output tags
  • Complete 1:1 mapping coverage

No action required - Template variable mapping is exemplary.


Recommendations

🚨 Critical (Fix Immediately)

Priority 1: Fix Web Bundle Dependencies

  • Add existing_workflows field to web_bundle section
  • Include workflow-status workflow files in web_bundle_files
  • Impact: Without this, workflow cannot be bundled for web use
  • File: workflow.yaml lines 35-43

Priority 2: Add Missing Workflow Files

  • Include: bmad/bmm/workflows/workflow-status/workflow.yaml
  • Include: bmad/bmm/workflows/workflow-status/instructions.md (if exists)
  • Impact: Web bundle incomplete, workflow invocations will fail
  • File: workflow.yaml web_bundle_files section

⚠️ Important (Address Soon)

Priority 3: Fix Output Path Configuration

  • Change default_output_file to use {output_folder} variable
  • Current: {project-root}/docs/tech-spec-epic-{{epic_id}}.md
  • Fixed: {output_folder}/tech-spec-epic-{{epic_id}}.md
  • Impact: Respects user's configured output preferences
  • File: workflow.yaml line 29

🧹 Cleanup (Nice to Have)

Priority 4: Remove Unused Config Variables

  • Remove: document_output_language (line 10)
  • Remove: user_skill_level (line 11)
  • Impact: Reduces configuration bloat by 40%
  • File: workflow.yaml config section

Priority 5: Eliminate Metadata Duplication

  • Remove duplicate name, description, author from either top-level or web_bundle
  • Keep metadata in one location only
  • Impact: Cleaner configuration, easier maintenance
  • File: workflow.yaml lines 1-3 or 36-38

Validation Checklist

Use this checklist to verify fixes:

  • Web Bundle: existing_workflows field added with workflow_status mapping
  • Web Bundle: workflow-status/workflow.yaml added to web_bundle_files
  • Config: default_output_file uses {output_folder} instead of hardcoded path
  • Bloat: document_output_language removed from yaml
  • Bloat: user_skill_level removed from yaml
  • Redundancy: Metadata duplication eliminated
  • Re-test: Workflow executes successfully after fixes
  • Re-audit: Run audit-workflow again to verify all issues resolved

Workflow Structure Assessment

Strengths:

  • Excellent template variable mapping (20 variables, 0 orphans)
  • Proper use of standard config variables
  • Clear step-by-step instructions with proper XML structure
  • Good integration with workflow-status for progress tracking
  • Comprehensive validation checklist
  • Non-interactive mode support (#yolo mode)

Areas for Improvement:

  • Web bundle configuration incomplete (missing dependencies)
  • Output path doesn't respect user configuration
  • ⚠️ Configuration bloat (40% unused variables)
  • ⚠️ Metadata duplication

Next Steps

Immediate Actions:

  1. Fix Critical Issues (Est. 15 minutes)

    • Add existing_workflows field to web_bundle
    • Add workflow-status files to web_bundle_files
    • Verify workflow-status workflow exists at specified path
  2. Fix Important Issues (Est. 5 minutes)

    • Update default_output_file to use {output_folder}
    • Test output file creation with different config values
  3. Cleanup Configuration (Est. 10 minutes)

    • Remove document_output_language from yaml
    • Remove user_skill_level from yaml
    • Eliminate metadata duplication
  4. Verify Fixes (Est. 10 minutes)

    • Re-run audit-workflow to confirm all issues resolved
    • Test workflow execution end-to-end
    • Verify web bundle generation works
# After fixes, test the workflow
/bmad:bmm:workflows:tech-spec

# Re-audit to verify
/bmad:bmb:agents:bmad-builder -> *audit-workflow

Conclusion

The tech-spec workflow has a solid foundation with excellent template variable mapping and proper instruction structure. However, critical web bundle issues must be resolved before production use, and the hardcoded output path should be fixed to respect user configuration.

Estimated Fix Time: 30-40 minutes

Recommended Priority: HIGH - Address critical issues before next release


Audit Complete Generated by: audit-workflow v1.0 Powered by: BMAD Core v6-alpha