Phase 2 — Execute Plan¶
Phase 2 reads an approved plan Excel file and applies Jira transitions concurrently. Multi-step paths (e.g., Open → In Progress → Done) are resolved automatically via BFS on the workflow graph.
Command¶
| Flag | Required | Description |
|---|---|---|
--project |
Yes | Jira project key |
--yaml |
Yes | Path to workflow YAML |
--execute |
Yes | Plan Excel file (Phase 1 output) |
--dry-run |
No | Simulate without applying changes |
Recommended Workflow¶
# 1. Dry-run first to catch path errors
jira-runner --project PROJ --yaml transition.yaml --execute plan.xlsx --dry-run
# 2. Execute live
jira-runner --project PROJ --yaml transition.yaml --execute plan.xlsx
What Gets Executed¶
Only rows where approved is True, yes or 1 are processed. Other rows get status NOT_APPROVED. Rows already in their target status get SKIPPED.
Dry Run¶
--dry-run makes no changes in Jira. For each approved row it reads the current status, works out the route from the workflow YAML, and checks that Jira offers the first step. The execution_message column then shows the route, e.g. [DRY RUN] Would transition: Open → In Progress → Done. Later steps can only be checked against the YAML, because the issue doesn't actually move.
Output Excel (*_results.xlsx)¶
The results file is written next to the input file with a _results suffix. It contains all input columns plus:
| Column | Description |
|---|---|
workflow_name |
Workflow used for the transition |
execution_status |
SUCCESS / FAILED / SKIPPED / NOT_APPROVED |
execution_message |
Error details when FAILED |
final_status |
Actual Jira status after execution |
executed_at |
ISO 8601 timestamp |
Concurrency¶
Transitions run in parallel up to PHASE2_WORKERS (default 5, set in settings.toml). Rate-limited requests (HTTP 429) wait for Jira's Retry-After and are retried up to JIRA_RATE_LIMIT_MAX_RETRIES times. Network errors are retried up to JIRA_MAX_RETRIES times, but a transition is only re-sent if it never reached Jira. Other API errors fail the row immediately.