464 lines
13 KiB
Markdown
464 lines
13 KiB
Markdown
# Status Progression - Configuration Reference
|
|
|
|
This file contains detailed config structure and backward movement patterns. Load this when users ask about configuration or how to customize workflows.
|
|
|
|
## Config Structure
|
|
|
|
**File location:** `.taskorchestrator/config.yaml`
|
|
|
|
### Full Structure Overview
|
|
|
|
```yaml
|
|
version: "2.0.0"
|
|
|
|
status_progression:
|
|
features:
|
|
default_flow: [...] # Always exists
|
|
custom_flow: [...] # User-defined (optional)
|
|
flow_mappings: [...] # Tag → flow routing
|
|
emergency_transitions: [...] # Statuses from any state
|
|
terminal_statuses: [...] # End states
|
|
|
|
tasks:
|
|
default_flow: [...]
|
|
custom_flow: [...]
|
|
flow_mappings: [...]
|
|
emergency_transitions: [...]
|
|
terminal_statuses: [...]
|
|
|
|
projects:
|
|
default_flow: [...]
|
|
emergency_transitions: [...]
|
|
terminal_statuses: [...]
|
|
|
|
status_validation:
|
|
enforce_sequential: true/false # Sequential progression required?
|
|
allow_backward: true/false # Backward movement allowed?
|
|
allow_emergency: true/false # Emergency transitions allowed?
|
|
validate_prerequisites: true/false # Prerequisite checking enabled?
|
|
```
|
|
|
|
### What Each Section Controls
|
|
|
|
**status_progression.{entityType}.default_flow:**
|
|
- **Purpose:** Fallback flow when no tags match flow_mappings
|
|
- **Required:** Yes (at least one flow per entity type)
|
|
- **Format:** Array of status names in kebab-case
|
|
- **Example:** `[pending, in-progress, testing, completed]`
|
|
|
|
**status_progression.{entityType}.flow_mappings:**
|
|
- **Purpose:** Route entities to flows based on tags
|
|
- **Required:** No (can be empty array)
|
|
- **Format:** Array of {tags, flow} objects
|
|
- **Example:**
|
|
```yaml
|
|
- tags: [bug, bugfix, fix]
|
|
flow: bug_fix_flow
|
|
```
|
|
- **Matching:** First match wins (order matters)
|
|
|
|
**status_progression.{entityType}.emergency_transitions:**
|
|
- **Purpose:** Statuses accessible from any state (bypass flow rules)
|
|
- **Required:** No (can be empty array)
|
|
- **Format:** Array of status names
|
|
- **Example:** `[blocked, on-hold, cancelled, deferred]`
|
|
- **When used:** Unexpected blockers, priority shifts, cancellations
|
|
|
|
**status_progression.{entityType}.terminal_statuses:**
|
|
- **Purpose:** End states with no further progression
|
|
- **Required:** Yes (can be empty but must exist)
|
|
- **Format:** Array of status names
|
|
- **Example:** `[completed, cancelled, archived]`
|
|
- **Effect:** Cannot transition FROM these statuses
|
|
|
|
**status_validation.enforce_sequential:**
|
|
- **Purpose:** Require step-by-step progression through flow
|
|
- **When true:** Cannot skip statuses (pending → testing blocked, must go through in-progress)
|
|
- **When false:** Can jump to any status in flow
|
|
- **Recommendation:** true for teams needing process compliance
|
|
|
|
**status_validation.allow_backward:**
|
|
- **Purpose:** Allow moving backwards in flow for rework
|
|
- **When true:** Can move testing → in-progress for bug fixes
|
|
- **When false:** Can only move forward
|
|
- **Recommendation:** true for iterative development
|
|
|
|
**status_validation.allow_emergency:**
|
|
- **Purpose:** Allow emergency_transitions from any state
|
|
- **When true:** Can jump to blocked/on-hold/cancelled from anywhere
|
|
- **When false:** Emergency statuses follow normal flow rules
|
|
- **Recommendation:** true to handle unexpected issues
|
|
|
|
**status_validation.validate_prerequisites:**
|
|
- **Purpose:** Check business rules before transitions
|
|
- **When true:** Feature needs tasks before in-development, tasks need summary before completed
|
|
- **When false:** Skip prerequisite checks
|
|
- **Recommendation:** true to prevent incomplete work from being marked complete
|
|
|
|
---
|
|
|
|
## Backward Movement for Review Iterations
|
|
|
|
**Pattern:** With `allow_backward: true`, you can move backwards in the flow for unlimited review iterations without duplicate statuses.
|
|
|
|
### Example: with_review Flow
|
|
|
|
**Flow definition:**
|
|
```yaml
|
|
with_review:
|
|
- backlog
|
|
- pending
|
|
- in-progress
|
|
- in-review # Awaiting code review
|
|
- testing # Review approved, testing
|
|
- completed
|
|
```
|
|
|
|
**Config settings:**
|
|
```yaml
|
|
status_validation:
|
|
enforce_sequential: true # Follow flow order
|
|
allow_backward: true # Allow backward movement
|
|
```
|
|
|
|
### Iteration Workflow
|
|
|
|
**First submission:**
|
|
```javascript
|
|
// Developer finishes work
|
|
in-progress → in-review (forward)
|
|
```
|
|
|
|
**Changes requested:**
|
|
```javascript
|
|
// Reviewer requests changes
|
|
in-review → in-progress (backward to implement changes)
|
|
```
|
|
|
|
**Re-submission after changes:**
|
|
```javascript
|
|
// Developer re-submits after fixes
|
|
in-progress → in-review (forward for re-review)
|
|
```
|
|
|
|
**Multiple rounds:**
|
|
```javascript
|
|
// If more changes needed, repeat:
|
|
in-review → in-progress (backward again)
|
|
in-progress → in-review (forward again)
|
|
|
|
// Unlimited iterations supported
|
|
```
|
|
|
|
**Approval:**
|
|
```javascript
|
|
// When approved, move forward
|
|
in-review → testing (forward when review passes)
|
|
testing → completed (forward to complete)
|
|
```
|
|
|
|
### Why Backward Movement Works Better
|
|
|
|
**Instead of this (duplicate statuses in flow - DOESN'T WORK with enforce_sequential):**
|
|
```yaml
|
|
# ❌ BROKEN with enforce_sequential: true
|
|
with_review_iterations:
|
|
- pending
|
|
- in-progress
|
|
- in-review
|
|
- in-progress # Duplicate status
|
|
- in-review # Duplicate status
|
|
- in-progress # Duplicate status
|
|
- testing
|
|
```
|
|
|
|
**Use this (clean flow + backward movement):**
|
|
```yaml
|
|
# ✅ WORKS with enforce_sequential: true + allow_backward: true
|
|
with_review:
|
|
- pending
|
|
- in-progress
|
|
- in-review
|
|
- testing
|
|
- completed
|
|
|
|
# No duplicates needed - backward movement handles iterations
|
|
```
|
|
|
|
### Key Benefits
|
|
|
|
- ✅ **Unlimited iterations** - Move backward as many times as needed
|
|
- ✅ **Clean flow definition** - No duplicate statuses required
|
|
- ✅ **Works with enforce_sequential** - Maintains process compliance
|
|
- ✅ **Clear history** - Status changes show iteration count
|
|
- ✅ **Flexible** - Works for any iterative workflow (reviews, testing, validation)
|
|
|
|
### changes-requested Status
|
|
|
|
**Note:** The `changes-requested` status exists in the TASK enum but is NOT used in default flows.
|
|
|
|
**Why it exists:**
|
|
- Some teams want explicit "changes requested" state
|
|
- Can create custom flows that include it
|
|
|
|
**Why it's not in default flows:**
|
|
- Backward movement pattern is more flexible
|
|
- No need for separate status - just move backward
|
|
|
|
**If you want to use it:**
|
|
```yaml
|
|
# Custom flow with changes-requested
|
|
custom_review_flow:
|
|
- pending
|
|
- in-progress
|
|
- in-review
|
|
- changes-requested # Explicit state for requested changes
|
|
- testing
|
|
- completed
|
|
|
|
# Workflow:
|
|
# in-review → changes-requested (reviewer requests changes)
|
|
# changes-requested → in-progress (developer starts fixing)
|
|
# in-progress → in-review (developer re-submits)
|
|
```
|
|
|
|
---
|
|
|
|
## What to Read from Config
|
|
|
|
**Read selectively** - only load sections needed to explain user's rules:
|
|
|
|
### Always Useful: Validation Rules
|
|
|
|
```javascript
|
|
config = Read(".taskorchestrator/config.yaml")
|
|
|
|
// Section 1: Validation rules (always useful)
|
|
validationRules = config.status_validation
|
|
// - enforce_sequential: Can skip statuses?
|
|
// - allow_backward: Can move backwards?
|
|
// - allow_emergency: Can jump to blocked/cancelled?
|
|
// - validate_prerequisites: Does StatusValidator check requirements?
|
|
```
|
|
|
|
### When Explaining Workflows: Entity-Specific Flows
|
|
|
|
```javascript
|
|
// Section 2: Entity-specific flows (when explaining workflows)
|
|
taskFlows = config.status_progression.tasks
|
|
featureFlows = config.status_progression.features
|
|
projectFlows = config.status_progression.projects
|
|
|
|
// Get specific flow
|
|
defaultTaskFlow = taskFlows.default_flow
|
|
bugFixFlow = taskFlows.bug_fix_flow // May not exist - check first
|
|
|
|
// Get emergency and terminal statuses
|
|
emergencyStatuses = taskFlows.emergency_transitions
|
|
terminalStatuses = taskFlows.terminal_statuses
|
|
```
|
|
|
|
### When Explaining Tag Routing: Flow Mappings
|
|
|
|
```javascript
|
|
// Section 3: Flow mappings (when explaining tag-based routing)
|
|
taskMappings = config.status_progression.tasks.flow_mappings
|
|
featureMappings = config.status_progression.features.flow_mappings
|
|
|
|
// Show user THEIR mappings, not assumed defaults
|
|
"Your task flow mappings:
|
|
- Tags [bug, bugfix, fix] → bug_fix_flow
|
|
- Tags [documentation, docs] → documentation_flow
|
|
- Default: default_flow"
|
|
```
|
|
|
|
### What NOT to Read
|
|
|
|
**Don't read these sections** - not implemented or not used by this skill:
|
|
- `parallelism` - Not implemented yet
|
|
- `automation` - Not implemented yet
|
|
- `complexity` - Not loaded by backend (referenced in docs only)
|
|
- `feature_creation` - Not loaded by backend (referenced in docs only)
|
|
- `dependencies` - Not implemented yet
|
|
|
|
**Only read status_progression and status_validation sections.**
|
|
|
|
---
|
|
|
|
## Checking What Exists in User's Config
|
|
|
|
**Never assume flows exist** - always check user's actual config:
|
|
|
|
### Check Available Flows
|
|
|
|
```javascript
|
|
config = Read(".taskorchestrator/config.yaml")
|
|
|
|
// Get all task flows
|
|
taskFlows = Object.keys(config.status_progression.tasks)
|
|
.filter(key => key.endsWith('_flow'))
|
|
|
|
// Tell user what's configured
|
|
"Your config has these task flows:
|
|
- default_flow (always exists)
|
|
- bug_fix_flow
|
|
- documentation_flow
|
|
- hotfix_flow
|
|
- with_review
|
|
|
|
You can create custom flows by adding them to your config.yaml"
|
|
```
|
|
|
|
### Check Flow Mappings
|
|
|
|
```javascript
|
|
// Get user's actual mappings
|
|
taskMappings = config.status_progression.tasks.flow_mappings
|
|
|
|
// Check if specific mapping exists
|
|
hasBugMapping = taskMappings.some(m => m.tags.includes("bug"))
|
|
|
|
if (!hasBugMapping) {
|
|
"No bug flow mapping in your config.
|
|
Tasks with 'bug' tag will use default_flow.
|
|
|
|
To add bug mapping, edit config.yaml:
|
|
flow_mappings:
|
|
- tags: [bug, bugfix, fix]
|
|
flow: bug_fix_flow"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## When Config Missing
|
|
|
|
If `.taskorchestrator/config.yaml` doesn't exist:
|
|
|
|
```javascript
|
|
// Attempted to read config
|
|
config = Read(".taskorchestrator/config.yaml")
|
|
|
|
// File not found
|
|
if (error) {
|
|
"No config found. StatusValidator using fallback mode:
|
|
- All enum statuses allowed
|
|
- No transition rules enforced
|
|
- No prerequisite validation
|
|
|
|
To enable config-driven validation:
|
|
1. Run setup_claude_orchestration tool
|
|
2. Creates .taskorchestrator/config.yaml
|
|
3. Customize rules as needed
|
|
|
|
Without config, status transitions rely only on enum validation."
|
|
}
|
|
```
|
|
|
|
**Fallback behavior:**
|
|
- StatusValidator allows any enum status
|
|
- No flow sequences enforced
|
|
- No prerequisite checking
|
|
- Basic enum validation only
|
|
|
|
---
|
|
|
|
## Integration with Other Skills
|
|
|
|
**Status Progression Skill works alongside:**
|
|
|
|
### Feature Management Skill
|
|
- Feature Management uses config for quality gates
|
|
- Status Progression explains what those gates are
|
|
- Complementary: Feature Management coordinates, Status Progression guides
|
|
|
|
### Task Management Skill
|
|
- Task Management uses config for execution planning
|
|
- Status Progression explains workflow possibilities
|
|
- Complementary: Task Management executes, Status Progression guides
|
|
|
|
### Dependency Analysis Skill
|
|
- Dependency Analysis complements prerequisite checking
|
|
- Shows what's blocking tasks
|
|
- Status Progression explains how blockers affect status transitions
|
|
|
|
**Clear separation:**
|
|
- Feature/Task Management Skills: Coordination and execution
|
|
- Status Progression Skill: Workflow guidance and error interpretation
|
|
- Dependency Analysis Skill: Blocker identification
|
|
|
|
---
|
|
|
|
## Customization Examples
|
|
|
|
### Adding a Custom Flow
|
|
|
|
**User wants research task flow (no testing needed):**
|
|
|
|
```yaml
|
|
# Edit .taskorchestrator/config.yaml
|
|
status_progression:
|
|
tasks:
|
|
# Add new flow
|
|
research_task_flow:
|
|
- pending
|
|
- in-progress
|
|
- completed
|
|
|
|
# Add mapping
|
|
flow_mappings:
|
|
- tags: [research, spike, investigation]
|
|
flow: research_task_flow
|
|
```
|
|
|
|
**Result:** Tasks tagged with "research" skip testing and use simplified flow.
|
|
|
|
### Changing Validation Rules
|
|
|
|
**User wants flexible workflow (skip statuses allowed):**
|
|
|
|
```yaml
|
|
# Edit .taskorchestrator/config.yaml
|
|
status_validation:
|
|
enforce_sequential: false # Now can skip statuses
|
|
allow_backward: true # Keep backward movement
|
|
allow_emergency: true
|
|
validate_prerequisites: true
|
|
```
|
|
|
|
**Result:** Can jump directly from pending → testing without going through in-progress.
|
|
|
|
### Adding Emergency Transition
|
|
|
|
**User wants "deferred" status accessible anytime:**
|
|
|
|
```yaml
|
|
# Edit .taskorchestrator/config.yaml
|
|
status_progression:
|
|
tasks:
|
|
emergency_transitions:
|
|
- blocked
|
|
- on-hold
|
|
- cancelled
|
|
- deferred # Add this
|
|
```
|
|
|
|
**Result:** Can move to deferred from any state (low-priority task postponed indefinitely).
|
|
|
|
---
|
|
|
|
## Summary
|
|
|
|
**Progressive Loading Pattern:**
|
|
1. User asks about configuration
|
|
2. You load this file
|
|
3. Show relevant section based on question
|
|
4. Reference user's actual config for examples
|
|
|
|
**Remember:**
|
|
- Always read user's config.yaml before explaining rules
|
|
- Config sections are user-defined and customizable
|
|
- Only read status_progression and status_validation sections
|
|
- Check what exists before referencing flows
|
|
- Explain rules in terms of user's specific settings
|