Skip to content

feat(exec): Implement comprehensive dry-run mode #113

Description

@dangazineu

Implement comprehensive dry-run functionality for multi-repository event-driven workflows.

Description

This issue implements advanced dry-run capabilities that provide detailed insights into what a workflow execution would do without actually performing any actions.

Dry-Run Features

  • Execution plan visualization across repository boundaries
  • Event simulation with subscription evaluation
  • Template variable resolution without execution
  • Resource requirement analysis and validation
  • Dependency graph visualization

CLI Usage

# Basic dry-run
tako exec --dry-run release

# Multi-repository dry-run with event simulation
tako exec --dry-run release --repo=my-org/go-lib --inputs.version-bump=minor

# Subscription debugging
tako exec --dry-run release --debug-subscriptions

# Template resolution preview
tako exec --dry-run integration_test --show-templates

Example Output

Execution Plan for: release (my-org/go-lib)
├── Step: build_library
│   ├── Command: ./scripts/build.sh --bump minor
│   ├── Templates: {{ .inputs.version-bump }} → minor
│   └── Events: library_built (schema v1.0.0)
├── Step: fan_out_to_dependents
│   ├── Event: library_built
│   ├── Subscribers: my-org/app-one, my-org/app-two
│   └── Wait: true (timeout: 2h)
└── Expected Execution Tree:
    ├── my-org/go-lib [parent]
    ├── my-org/app-one [subscriber: library_built]
    └── my-org/app-two [subscriber: library_built]

Implementation Details

  • Add execution plan generation for multi-repository scenarios
  • Implement event simulation for debugging subscription filters
  • Support template resolution display without side effects
  • Create dependency graph visualization
  • Add resource requirement analysis and validation

Acceptance Criteria

  • Dry-run shows execution plan across all affected repositories
  • Event simulation evaluates subscription filters correctly
  • Template variables resolved and displayed without execution
  • Dependency graph visualization aids debugging
  • No side effects occur during dry-run mode

Files to Modify

  • internal/engine/dryrun.go (new)
  • internal/engine/simulation.go (new)
  • cmd/tako/internal/exec.go (extend)

Related Issues

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions