474 lines
12 KiB
Markdown
474 lines
12 KiB
Markdown
|
|
# Workflow
|
||
|
|
|
||
|
|
This document describes how work flows through Flight Control from mission inception to completion.
|
||
|
|
|
||
|
|
## The Complete Flow
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
flowchart TB
|
||
|
|
subgraph MISSION
|
||
|
|
direction TB
|
||
|
|
planning[planning] --> active[active] --> completed[completed]
|
||
|
|
planning -.-> aborted[aborted]
|
||
|
|
|
||
|
|
subgraph " "
|
||
|
|
direction LR
|
||
|
|
flightA[Flight A] --> legsA[legs]
|
||
|
|
flightB[Flight B] --> legsB[legs]
|
||
|
|
flightC[Flight C] --> legsC[legs]
|
||
|
|
end
|
||
|
|
|
||
|
|
active --> flightA
|
||
|
|
active --> flightB
|
||
|
|
active --> flightC
|
||
|
|
legsA --> completed
|
||
|
|
legsB --> completed
|
||
|
|
legsC --> completed
|
||
|
|
end
|
||
|
|
```
|
||
|
|
|
||
|
|
## Phase 1: Mission Definition
|
||
|
|
|
||
|
|
### Starting Point
|
||
|
|
|
||
|
|
Work begins with an outcome someone wants to achieve:
|
||
|
|
|
||
|
|
> "We need users to be able to authenticate securely"
|
||
|
|
|
||
|
|
This human need becomes a mission.
|
||
|
|
|
||
|
|
### Mission Creation
|
||
|
|
|
||
|
|
1. **Write the outcome** — What does success look like?
|
||
|
|
2. **Define success criteria** — How will we know we're done?
|
||
|
|
3. **Identify stakeholders** — Who cares about this outcome?
|
||
|
|
4. **Document constraints** — What boundaries exist?
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
# Mission: Secure User Authentication
|
||
|
|
|
||
|
|
## Outcome
|
||
|
|
Users can securely access their accounts without credential friction.
|
||
|
|
|
||
|
|
## Success Criteria
|
||
|
|
- [ ] Users can create accounts
|
||
|
|
- [ ] Users can log in and maintain sessions
|
||
|
|
- [ ] Password reset flow exists
|
||
|
|
- [ ] Security audit passes
|
||
|
|
|
||
|
|
## Stakeholders
|
||
|
|
- End users, Security team, Support team
|
||
|
|
|
||
|
|
## Constraints
|
||
|
|
- Must complete before Q2 launch
|
||
|
|
- Must meet SOC2 requirements
|
||
|
|
```
|
||
|
|
|
||
|
|
### Mission State: `planning`
|
||
|
|
|
||
|
|
The mission exists but no work has started. This is the time for:
|
||
|
|
- Refining the outcome statement
|
||
|
|
- Adjusting success criteria
|
||
|
|
- Identifying initial flights
|
||
|
|
|
||
|
|
## Phase 2: Flight Planning
|
||
|
|
|
||
|
|
### Decomposing the Mission
|
||
|
|
|
||
|
|
A mission typically requires multiple flights. Identify the major work areas:
|
||
|
|
|
||
|
|
```
|
||
|
|
Mission: Secure User Authentication
|
||
|
|
├── Flight: Account Creation
|
||
|
|
├── Flight: Login and Sessions
|
||
|
|
├── Flight: Password Reset
|
||
|
|
└── Flight: Security Hardening
|
||
|
|
```
|
||
|
|
|
||
|
|
### Creating the First Flight
|
||
|
|
|
||
|
|
Start with the flight that unblocks others or provides the most learning:
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
# Flight: Account Creation
|
||
|
|
|
||
|
|
## Mission Link
|
||
|
|
[Secure User Authentication](../mission.md)
|
||
|
|
- Contributing to: "Users can create accounts"
|
||
|
|
|
||
|
|
## Pre-Flight
|
||
|
|
|
||
|
|
### Objective
|
||
|
|
Users can register new accounts with email and password.
|
||
|
|
|
||
|
|
### Open Questions
|
||
|
|
- [ ] What password requirements?
|
||
|
|
- [ ] Email verification required before use?
|
||
|
|
|
||
|
|
### Design Decisions
|
||
|
|
(To be filled as questions are resolved)
|
||
|
|
|
||
|
|
### Prerequisites
|
||
|
|
- [ ] Database provisioned
|
||
|
|
- [ ] API framework set up
|
||
|
|
```
|
||
|
|
|
||
|
|
### Flight State: `planning`
|
||
|
|
|
||
|
|
Pre-flight phase. Resolve open questions, document decisions, verify prerequisites.
|
||
|
|
|
||
|
|
## Phase 3: Pre-Flight Completion
|
||
|
|
|
||
|
|
### Resolving Questions
|
||
|
|
|
||
|
|
Each open question gets answered and documented:
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
### Open Questions
|
||
|
|
- [x] What password requirements?
|
||
|
|
- [x] Email verification required before use?
|
||
|
|
|
||
|
|
### Design Decisions
|
||
|
|
|
||
|
|
**Password Requirements**: Minimum 8 characters, 1 uppercase, 1 number
|
||
|
|
- Rationale: Balance security and usability
|
||
|
|
- Decided by: Security team
|
||
|
|
|
||
|
|
**Email Verification**: Required before accessing protected features
|
||
|
|
- Rationale: Prevent spam accounts
|
||
|
|
- Decided by: Product requirements
|
||
|
|
```
|
||
|
|
|
||
|
|
### Defining Legs
|
||
|
|
|
||
|
|
With decisions made, break the flight into legs:
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
### Legs
|
||
|
|
- [ ] `create-user-model` - Database model for users
|
||
|
|
- [ ] `registration-endpoint` - API endpoint for registration
|
||
|
|
- [ ] `email-verification` - Verification email and confirmation flow
|
||
|
|
- [ ] `registration-tests` - Test coverage for registration
|
||
|
|
```
|
||
|
|
|
||
|
|
### Pre-Flight Checklist
|
||
|
|
|
||
|
|
Complete the gate check:
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
### Pre-Flight Checklist
|
||
|
|
- [x] All open questions resolved
|
||
|
|
- [x] Design decisions documented
|
||
|
|
- [x] Prerequisites verified
|
||
|
|
- [x] Legs defined with acceptance criteria
|
||
|
|
```
|
||
|
|
|
||
|
|
### Flight State: `ready`
|
||
|
|
|
||
|
|
Pre-flight complete. Ready for execution.
|
||
|
|
|
||
|
|
## Phase 4: Leg Execution
|
||
|
|
|
||
|
|
### Mission State: `active`
|
||
|
|
|
||
|
|
When the first leg begins, the mission becomes active.
|
||
|
|
|
||
|
|
### Flight State: `in-flight`
|
||
|
|
|
||
|
|
Legs are being executed. A [flight log](flight-logs.md) tracks progress, recording when legs start and complete, decisions made during execution, and any deviations or anomalies encountered.
|
||
|
|
|
||
|
|
### Leg Lifecycle
|
||
|
|
|
||
|
|
Each leg follows its own progression:
|
||
|
|
|
||
|
|
```
|
||
|
|
planning ──► ready ──► in-flight ──► landed ──► completed
|
||
|
|
```
|
||
|
|
|
||
|
|
**Example: `create-user-model` leg**
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
# Leg: create-user-model
|
||
|
|
|
||
|
|
## Objective
|
||
|
|
Create the User model with authentication fields.
|
||
|
|
|
||
|
|
## Acceptance Criteria
|
||
|
|
- [ ] User model in schema
|
||
|
|
- [ ] Fields: id, email, password_hash, verified, timestamps
|
||
|
|
- [ ] Migration applied
|
||
|
|
- [ ] Types generated
|
||
|
|
```
|
||
|
|
|
||
|
|
**Execution flow:**
|
||
|
|
|
||
|
|
1. Leg design approved, moves to `ready`
|
||
|
|
2. Developer begins, leg moves to `in-flight`
|
||
|
|
3. Developer completes implementation, leg moves to `landed`, flight log updated
|
||
|
|
4. Reviewer verifies acceptance criteria met
|
||
|
|
5. Leg moves to `completed`
|
||
|
|
|
||
|
|
### Parallel vs. Sequential Legs
|
||
|
|
|
||
|
|
Some legs can run in parallel:
|
||
|
|
|
||
|
|
```
|
||
|
|
create-user-model ────► registration-endpoint ────► registration-tests
|
||
|
|
└──► email-verification ────────┘
|
||
|
|
```
|
||
|
|
|
||
|
|
The model must exist first, but the endpoint and email flows can be built simultaneously, then tests cover everything.
|
||
|
|
|
||
|
|
### Handling Aborted Legs
|
||
|
|
|
||
|
|
When a leg can't proceed:
|
||
|
|
|
||
|
|
1. Mark it `aborted` — changes are rolled back
|
||
|
|
2. Determine if it needs:
|
||
|
|
- Flight-level decision (update the flight)
|
||
|
|
- External resolution (wait for dependency)
|
||
|
|
- New leg with updated requirements
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
## Status: aborted
|
||
|
|
|
||
|
|
**Reason**: Email service credentials not available in dev environment
|
||
|
|
**Changes**: Rolled back
|
||
|
|
**Next**: New leg after DevOps provisions SendGrid API key
|
||
|
|
```
|
||
|
|
|
||
|
|
## Phase 5: Flight Completion
|
||
|
|
|
||
|
|
### All Legs Complete
|
||
|
|
|
||
|
|
When every leg reaches `completed`:
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
### Legs
|
||
|
|
- [x] `create-user-model` - completed
|
||
|
|
- [x] `registration-endpoint` - completed
|
||
|
|
- [x] `email-verification` - completed
|
||
|
|
- [x] `registration-tests` - completed
|
||
|
|
```
|
||
|
|
|
||
|
|
### Post-Flight Checklist
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
### Completion Checklist
|
||
|
|
- [x] All legs completed
|
||
|
|
- [x] Code merged to main
|
||
|
|
- [x] Tests passing in CI
|
||
|
|
- [x] Documentation updated
|
||
|
|
```
|
||
|
|
|
||
|
|
### Verification
|
||
|
|
|
||
|
|
Confirm the flight achieved its objective:
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
### Verification
|
||
|
|
|
||
|
|
Manual test completed:
|
||
|
|
1. ✓ Created account with test@example.com
|
||
|
|
2. ✓ Received verification email
|
||
|
|
3. ✓ Clicked link, account verified
|
||
|
|
4. ✓ Can access protected features
|
||
|
|
```
|
||
|
|
|
||
|
|
### Flight Debrief
|
||
|
|
|
||
|
|
**Run `/flight-debrief` to capture learnings.** This is a required step, not optional.
|
||
|
|
|
||
|
|
The debrief skill will:
|
||
|
|
- Analyze what went well and what could improve
|
||
|
|
- Identify process and technical lessons
|
||
|
|
- Recommend methodology improvements
|
||
|
|
- Update project documentation if needed
|
||
|
|
|
||
|
|
The debrief artifact becomes part of the flight record and informs future flights.
|
||
|
|
|
||
|
|
### Flight State: `landed`
|
||
|
|
|
||
|
|
Post-flight complete. The flight achieved its objective.
|
||
|
|
|
||
|
|
## Phase 6: Mission Progression
|
||
|
|
|
||
|
|
### Tracking Mission Progress
|
||
|
|
|
||
|
|
As flights land, mission success criteria get checked:
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
## Success Criteria
|
||
|
|
- [x] Users can create accounts ← Flight: Account Creation landed
|
||
|
|
- [ ] Users can log in and maintain sessions ← Flight: Login in-flight
|
||
|
|
- [ ] Password reset flow exists ← Flight: Password Reset planning
|
||
|
|
- [ ] Security audit passes ← Flight: Security Hardening planning
|
||
|
|
```
|
||
|
|
|
||
|
|
### Spawning New Flights
|
||
|
|
|
||
|
|
Discoveries during execution may require new flights:
|
||
|
|
|
||
|
|
> "During the Login flight, we discovered we need rate limiting to prevent brute force attacks."
|
||
|
|
|
||
|
|
Create a new flight:
|
||
|
|
|
||
|
|
```
|
||
|
|
Mission: Secure User Authentication
|
||
|
|
├── Flight: Account Creation [landed]
|
||
|
|
├── Flight: Login and Sessions [in-flight]
|
||
|
|
├── Flight: Password Reset [planning]
|
||
|
|
├── Flight: Security Hardening [planning]
|
||
|
|
└── Flight: Rate Limiting [NEW - planning]
|
||
|
|
```
|
||
|
|
|
||
|
|
### Mission Completion
|
||
|
|
|
||
|
|
When all success criteria are met:
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
## Success Criteria
|
||
|
|
- [x] Users can create accounts
|
||
|
|
- [x] Users can log in and maintain sessions
|
||
|
|
- [x] Password reset flow exists
|
||
|
|
- [x] Security audit passes
|
||
|
|
```
|
||
|
|
|
||
|
|
### Mission Debrief
|
||
|
|
|
||
|
|
**Run `/mission-debrief` to perform a retrospective.** This is a required step, not optional.
|
||
|
|
|
||
|
|
The debrief skill will:
|
||
|
|
- Assess whether the mission achieved its stated outcomes
|
||
|
|
- Synthesize lessons from all flight debriefs
|
||
|
|
- Capture process and methodology improvements
|
||
|
|
- Interview participants for qualitative insights
|
||
|
|
|
||
|
|
The mission debrief is the primary source for improving Flight Control itself.
|
||
|
|
|
||
|
|
### Mission State: `completed`
|
||
|
|
|
||
|
|
All outcomes achieved. The mission can be archived with its debrief.
|
||
|
|
|
||
|
|
## Feedback Loops
|
||
|
|
|
||
|
|
### Upward Feedback
|
||
|
|
|
||
|
|
Information flows from legs to flights to missions:
|
||
|
|
|
||
|
|
- **Leg → Flight**: Completion status, discovered complexity, blockers (captured in flight log)
|
||
|
|
- **Flight → Mission**: Progress on success criteria, new flight needs
|
||
|
|
|
||
|
|
### Downward Feedback
|
||
|
|
|
||
|
|
Guidance flows from missions to flights to legs:
|
||
|
|
|
||
|
|
- **Mission → Flight**: Priority changes, constraint updates
|
||
|
|
- **Flight → Leg**: Design decisions, context updates, flight log history
|
||
|
|
|
||
|
|
### Adaptation
|
||
|
|
|
||
|
|
When circumstances change:
|
||
|
|
|
||
|
|
1. **Leg-level**: Block the leg, create new leg
|
||
|
|
2. **Flight-level**: Divert the flight, re-plan
|
||
|
|
3. **Mission-level**: Adjust success criteria or abort
|
||
|
|
|
||
|
|
## Handling Diversions
|
||
|
|
|
||
|
|
### When to Divert vs. Create New Flight
|
||
|
|
|
||
|
|
**Divert the current flight when:**
|
||
|
|
- The objective remains the same but the approach must change
|
||
|
|
- External factors (security issues, API changes) invalidate the current plan
|
||
|
|
- Discovered complexity requires re-planning but the goal is unchanged
|
||
|
|
|
||
|
|
**Create a new flight when:**
|
||
|
|
- A completely new objective emerges
|
||
|
|
- The discovered work is independent of the current flight's goal
|
||
|
|
- The new work serves different mission success criteria
|
||
|
|
|
||
|
|
### In-Flight Modifications
|
||
|
|
|
||
|
|
Flights can be modified while `in-flight` — for example, when planned legs need to change due to discoveries during execution. Update the flight artifact and record the change and rationale in the flight log.
|
||
|
|
|
||
|
|
### Flight Abortion
|
||
|
|
|
||
|
|
When a flight must be cancelled, changes are rolled back:
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
## Status: aborted
|
||
|
|
|
||
|
|
**Reason**: Security audit revealed JWT vulnerability requires a fundamentally different approach
|
||
|
|
**Changes**: Rolled back — new flight will be created for Auth0 integration
|
||
|
|
```
|
||
|
|
|
||
|
|
### Mission Abortion
|
||
|
|
|
||
|
|
Sometimes missions should be cancelled:
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
## Status: aborted
|
||
|
|
|
||
|
|
**Reason**: Business pivot - authentication now handled by parent company SSO
|
||
|
|
**Learning**: Coordinate with enterprise architecture earlier
|
||
|
|
**Artifacts**: Account creation flight code preserved in branch for reference
|
||
|
|
```
|
||
|
|
|
||
|
|
Document the reason for future reference.
|
||
|
|
|
||
|
|
## State Summary
|
||
|
|
|
||
|
|
### All States in One View
|
||
|
|
|
||
|
|
```
|
||
|
|
MISSION STATES
|
||
|
|
planning ──► active ──► completed
|
||
|
|
│
|
||
|
|
└──► aborted
|
||
|
|
|
||
|
|
FLIGHT STATES
|
||
|
|
planning ──► ready ──► in-flight ──► landed ──► completed
|
||
|
|
│
|
||
|
|
└──► aborted
|
||
|
|
|
||
|
|
LEG STATES
|
||
|
|
planning ──► ready ──► in-flight ──► landed ──► completed
|
||
|
|
│
|
||
|
|
└──► aborted
|
||
|
|
```
|
||
|
|
|
||
|
|
## When to Create vs. Modify
|
||
|
|
|
||
|
|
### Create New
|
||
|
|
|
||
|
|
- **Mission**: New outcome needed
|
||
|
|
- **Flight**: New area of work identified
|
||
|
|
- **Leg**: Requirements changed after `in-flight`
|
||
|
|
|
||
|
|
### Modify Existing
|
||
|
|
|
||
|
|
- **Mission**: Refining success criteria during `planning`
|
||
|
|
- **Flight**: Updating during `planning` phase
|
||
|
|
- **Leg**: Only while `planning` (before work begins)
|
||
|
|
|
||
|
|
### Rule of Thumb
|
||
|
|
|
||
|
|
Once work begins, create new rather than modify. This preserves history and prevents confusion about what was actually requested.
|
||
|
|
|
||
|
|
## Quick Reference
|
||
|
|
|
||
|
|
| Phase | Mission State | Flight State | Leg State | Action |
|
||
|
|
|-------|---------------|--------------|-----------|--------|
|
||
|
|
| Defining outcomes | planning | — | — | — |
|
||
|
|
| Planning first flight | planning | planning | — | — |
|
||
|
|
| Pre-flight complete | planning | ready | — | — |
|
||
|
|
| Designing first leg | active | in-flight | planning | — |
|
||
|
|
| Leg design approved | active | in-flight | ready | — |
|
||
|
|
| Executing leg | active | in-flight | in-flight | — |
|
||
|
|
| Leg implementation done | active | in-flight | landed | — |
|
||
|
|
| Leg reviewed | active | in-flight | completed | — |
|
||
|
|
| Flight done | active | landed | — | — |
|
||
|
|
| Flight debriefed | active | completed | — | `/flight-debrief` |
|
||
|
|
| All flights done | completed | — | — | `/mission-debrief` |
|