When to Use Evolution vs Direct Edit

November 11, 2025 ยท View on GitHub

Decision Guide: When should you use /metaspec.proposal (Evolution) vs directly editing spec.md?


๐ŸŽฏ Quick Decision Tree

Need to change specification?
    โ†“
    โ”œโ”€ Is this a RELEASED/PUBLISHED toolkit?
    โ”‚   โ”œโ”€ YES โ†’ Use /metaspec.proposal (Evolution)
    โ”‚   โ””โ”€ NO โ†’ Is it a breaking change or major feature?
    โ”‚       โ”œโ”€ YES โ†’ Use /metaspec.proposal (Evolution)
    โ”‚       โ””โ”€ NO โ†’ Direct edit + /metaspec.sds.checklist
    โ”‚
    โ””โ”€ Just validating quality? (no changes needed)
        โ””โ”€ Use /metaspec.sds.checklist or /metaspec.sds.analyze

๐Ÿ“Š Detailed Decision Matrix

ScenarioToolkit StatusChange TypeMethodWhy
๐ŸŸข Fix typos, improve descriptionsDraftNon-breakingDirect editLow risk, fast iteration
๐ŸŸข Add examplesDraftNon-breakingDirect editEnhances clarity, no spec change
๐ŸŸข Add missing field descriptionsDraftNon-breakingDirect editCompleting spec, not changing
๐ŸŸก Add new optional fieldDraftNon-breakingDirect edit (small) or Evolution (if complex)Depends on complexity
๐ŸŸก Add new required fieldDraftBreakingEvolution (if near release) or Direct edit (if early draft)Breaking needs tracking
๐Ÿ”ด Add new entityDraft or ReleasedBreakingEvolutionMajor change, needs review
๐Ÿ”ด Modify existing field typeDraft or ReleasedBreakingEvolutionBreaking change, needs impact analysis
๐Ÿ”ด Any change to released toolkitReleasedAnyEvolutionVersion control required

๐Ÿšฆ Clear Rules

Rule 1: Released/Published Toolkit

If toolkit is released or published, ALWAYS use Evolution:

# Toolkit is v1.0.0 and published to community
# User wants to add a new field

โŒ WRONG: Direct edit specs/domain/XXX/spec.md
โœ… RIGHT: /metaspec.proposal "Add new field"

Why:

  • Version control required
  • Impact analysis needed
  • Users may depend on current version
  • CHANGELOG and migration guide necessary

Rule 2: Draft Toolkit - Major Changes

If change is breaking or adds major feature, use Evolution:

# Toolkit is still in draft (v0.1.0)
# User wants to add a new entity or change field type

โŒ WRONG: Direct edit (for breaking changes)
โœ… RIGHT: /metaspec.proposal "Add new entity" or "Change field type"

Why:

  • Breaking changes need impact analysis
  • Major features need structured planning
  • Evolution provides tasks breakdown
  • Creates audit trail

Breaking change examples:

  • Add new required field
  • Change field type (string โ†’ object)
  • Remove existing field
  • Rename field
  • Change validation rules that reject previously valid inputs

Major feature examples:

  • Add new entity
  • Add new validation layer
  • Add new CLI command
  • Add new workflow

Rule 3: Draft Toolkit - Minor Improvements

If change is minor and non-breaking, direct edit is OK:

# Toolkit is in draft (v0.1.0)
# User wants to fix typos, add examples, improve descriptions

โœ… RIGHT: Direct edit specs/domain/XXX/spec.md
โœ… THEN: /metaspec.sds.checklist (update mode) to verify

Why:

  • Fast iteration during development
  • Low risk of breaking anything
  • Overhead of Evolution not justified
  • Still validated by checklist

Minor improvement examples:

  • Fix typos in descriptions
  • Add examples
  • Improve field descriptions
  • Add optional field (with default value)
  • Clarify ambiguous wording
  • Add comments or notes

๐Ÿ”„ Workflow Examples

Workflow 1: Draft Toolkit - Iterative Refinement

1. User writes initial specification spec
   $ vim specs/domain/001-mcp-spec/spec.md

2. User validates quality
   $ /metaspec.sds.checklist
   โ†’ Result: โŒ CHK003 - Missing field types

3. User fixes directly (minor improvement)
   $ vim specs/domain/001-mcp-spec/spec.md
   # Add missing type definitions

4. User re-validates
   $ /metaspec.sds.checklist
   โ†’ AI detects existing checklist
   โ†’ Asks: update/new/append?
   โ†’ User chooses: update
   โ†’ Result: CHK003: โŒ โ†’ โœ… (Iteration 2 added)

5. Repeat until quality is satisfactory

Key: Direct edit + checklist for fast iteration in draft phase.


Workflow 2: Draft Toolkit - Major Feature Addition

1. User has a working draft specification (v0.2.0)

2. User wants to add GraphQL support (major feature)
   $ /metaspec.proposal "Add GraphQL query support" --type sds

3. AI generates proposal with:
   - New entity fields
   - New validation rules
   - Impact analysis
   - Tasks breakdown

4. User reviews and approves in proposal.md

5. AI executes tasks
   $ /metaspec.apply 2025-11-05-add-graphql

6. Changes applied, version bumped to v0.3.0

7. User archives
   $ /metaspec.archive 2025-11-05-add-graphql

Key: Evolution for structured, trackable major changes.


Workflow 3: Released Toolkit - Any Change

1. Toolkit is released (v1.0.0)

2. User discovers missing validation rule (minor, but needs tracking)
   $ /metaspec.proposal "Add email validation rule" --type sds

3. Even though it's minor, use Evolution because:
   - Toolkit is released
   - Users depend on current version
   - Need CHANGELOG entry
   - Need version bump (v1.0.0 โ†’ v1.0.1)

4. Execute and archive as normal

Key: Released toolkits ALWAYS use Evolution, even for minor changes.


๐ŸŽฏ Command Layer vs Evolution Layer

Command Layer (Checklist, Analyze)

Purpose: Validate specification quality, NOT modify specs

Commands:

  • /metaspec.sds.checklist - Generate/update quality checklist
  • /metaspec.sds.analyze - Analyze consistency and completeness
  • /metaspec.sds.clarify - Resolve ambiguities

Output:

  • checklists/comprehensive-quality.md (validation results)
  • analysis/consistency-report.md (analysis results)

NEVER modifies: spec.md

When to use:

  • Validate spec quality
  • Track improvement over iterations
  • Identify issues before implementation

Evolution Layer (Proposal, Apply, Archive)

Purpose: Modify specification with controlled process

Commands:

  • /metaspec.proposal - Create change proposal
  • /metaspec.apply - Execute approved changes
  • /metaspec.archive - Archive completed changes

Output:

  • changes/[proposal-id]/proposal.md (what to change)
  • changes/[proposal-id]/specs/spec-delta.md (changes to apply)
  • Eventually merges into spec.md

Modifies: spec.md (after approval)

When to use:

  • Released toolkit (any change)
  • Draft toolkit (major/breaking changes)
  • Need impact analysis
  • Need version control

โš ๏ธ Anti-Patterns

โŒ Anti-Pattern 1: Using Evolution for Minor Tweaks in Draft

# Toolkit is v0.1.0, user wants to fix a typo

โŒ WRONG:
$ /metaspec.proposal "Fix typo in description" --type sds
# Overhead: proposal.md, tasks.md, impact.md, approval process

โœ… RIGHT:
$ vim specs/domain/001-xxx/spec.md  # Fix typo
$ /metaspec.sds.checklist  # Validate

Why wrong: Overhead not justified for minor changes in draft phase.


โŒ Anti-Pattern 2: Direct Edit for Released Toolkit

# Toolkit is v1.0.0 and published

โŒ WRONG:
$ vim specs/domain/001-xxx/spec.md  # Add new field
$ git commit -m "Add new field"

โœ… RIGHT:
$ /metaspec.proposal "Add new field" --type sds
# Generates impact analysis, version bump, CHANGELOG

Why wrong: Users depend on current version, need proper version control.


โŒ Anti-Pattern 3: Using Checklist to Modify Specs

โŒ WRONG:
$ /metaspec.sds.checklist
# User expects checklist to fix issues in spec.md

โœ… RIGHT:
$ /metaspec.sds.checklist
# โ†’ Identifies issues
# โ†’ User fixes via direct edit (draft) or Evolution (released)
# โ†’ Re-run checklist to verify

Why wrong: Checklist is validation tool, not modification tool.


๐Ÿ“‹ Summary

Direct Edit

When:

  • โœ… Draft toolkit
  • โœ… Minor, non-breaking changes
  • โœ… Fast iteration needed

Examples:

  • Fix typos
  • Add examples
  • Improve descriptions
  • Add optional fields

Evolution (/metaspec.proposal)

When:

  • โœ… Released toolkit (any change)
  • โœ… Breaking changes
  • โœ… Major features
  • โœ… Need audit trail

Examples:

  • Add new entity
  • Change field types
  • Remove fields
  • Add required fields
  • Released toolkit updates

Command Layer (Checklist, Analyze)

When:

  • โœ… Validate quality
  • โœ… Track improvement
  • โœ… Identify issues
  • โœ… NOT for making changes

Examples:

  • Quality checks
  • Consistency analysis
  • Ambiguity detection
  • Progress tracking

๐Ÿ”ฎ Future Enhancement

Consider adding a command to help decide:

$ /metaspec.recommend-workflow "I want to add a new field"

๐Ÿ“‹ Analysis:
- Toolkit status: Draft (v0.2.0)
- Change type: Add field
- Breaking: No (optional field)

โœ… Recommendation: Direct edit + checklist
โœ… Alternative: Evolution (if complex or near release)

๐Ÿ”„ Suggested workflow:
1. Edit specs/domain/001-xxx/spec.md
2. Run /metaspec.sds.checklist (update mode)
3. Verify: CHK###: โŒ โ†’ โœ…

This could reduce confusion further.