All checks were successful
Build App / compute-version (push) Successful in 2s
Build App / build-macos (push) Successful in 2m47s
Build Container / build-container (push) Successful in 9m0s
Build App / build-linux (push) Successful in 4m41s
Build App / build-windows (push) Successful in 5m33s
Build App / create-tag (push) Successful in 3s
Build App / sync-to-github (push) Successful in 10s
The mission-control (Flight Control) project is being closed upstream. This embeds the project files directly in the repo under container/mission-control/, bakes them into the Docker image at /opt/mission-control, and copies them into place at container startup instead of git cloning from GitHub. Also adds missing osc52-clipboard, audio-shim, and triple-c-sso-refresh to the programmatic Docker build context in image.rs. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
463 lines
12 KiB
Markdown
463 lines
12 KiB
Markdown
# Flights
|
|
|
|
Flights are the balanced layer of Flight Control—technical enough for implementation, readable enough for humans. A flight and its flight plan are synonymous: the document *is* the plan.
|
|
|
|
## What is a Flight?
|
|
|
|
A flight translates mission outcomes into technical specifications. Flights are:
|
|
|
|
- **Technically scoped**: Bounded implementation work
|
|
- **Checklist-driven**: Pre-flight, in-flight, and post-flight phases
|
|
- **Adaptive**: Living documents that evolve with understanding
|
|
|
|
### Flight vs. Mission vs. Leg
|
|
|
|
| Aspect | Mission | Flight | Leg |
|
|
|--------|---------|--------|-----|
|
|
| Question | Why? | What & How? | Do this |
|
|
| Audience | Stakeholders | Developers/AI | AI agents |
|
|
| Flexibility | High | Medium | Low |
|
|
| Updates | Rarely | As needed | Never (create new) |
|
|
|
|
## Flight Structure
|
|
|
|
Every flight has three sections corresponding to its lifecycle:
|
|
|
|
```markdown
|
|
# Flight: {Title}
|
|
|
|
## Mission Link
|
|
Parent mission and relevant success criteria.
|
|
|
|
---
|
|
|
|
## Pre-Flight
|
|
|
|
### Objective
|
|
What this flight accomplishes.
|
|
|
|
### Open Questions
|
|
- [ ] Question needing resolution
|
|
- [ ] Another question
|
|
|
|
### Design Decisions
|
|
Choices made and their rationale.
|
|
|
|
### Prerequisites
|
|
What must be true before execution begins.
|
|
|
|
### Pre-Flight Checklist
|
|
- [ ] Questions resolved
|
|
- [ ] Design decisions documented
|
|
- [ ] Prerequisites verified
|
|
- [ ] Legs defined
|
|
|
|
---
|
|
|
|
## In-Flight
|
|
|
|
### Technical Approach
|
|
How the objective will be achieved.
|
|
|
|
### Checkpoints
|
|
Key milestones during execution.
|
|
|
|
### Adaptation Criteria
|
|
When to deviate from plan.
|
|
|
|
### Legs
|
|
Links to implementation legs.
|
|
|
|
---
|
|
|
|
## Post-Flight
|
|
|
|
### Completion Checklist
|
|
- [ ] All legs completed
|
|
- [ ] Integration verified
|
|
- [ ] Tests passing
|
|
- [ ] Documentation updated
|
|
|
|
### Verification
|
|
How to confirm the flight achieved its objective.
|
|
|
|
### Retrospective Notes
|
|
What was learned during this flight.
|
|
```
|
|
|
|
## Pre-Flight Phase
|
|
|
|
Pre-flight is about readiness. No implementation happens here—only planning.
|
|
|
|
### Open Questions
|
|
|
|
Capture unknowns that need resolution before execution:
|
|
|
|
```markdown
|
|
### Open Questions
|
|
- [ ] Should we use JWT or session-based auth?
|
|
- [ ] What OAuth providers do we need to support?
|
|
- [ ] How long should sessions remain valid?
|
|
```
|
|
|
|
Questions should be:
|
|
- **Specific**: Clear what information is needed
|
|
- **Blocking**: Execution can't proceed without answers
|
|
- **Resolvable**: Someone can answer them
|
|
|
|
Check off questions as they're resolved and document answers in Design Decisions.
|
|
|
|
### Design Decisions
|
|
|
|
Record choices and rationale:
|
|
|
|
```markdown
|
|
### Design Decisions
|
|
|
|
**Authentication Method**: JWT tokens
|
|
- Rationale: Stateless, works across services
|
|
- Trade-off: Token revocation more complex
|
|
- Decided by: Security team review
|
|
|
|
**Session Duration**: 7 days with refresh
|
|
- Rationale: Balance security and convenience
|
|
- Trade-off: Longer exposure window
|
|
- Decided by: Product requirements
|
|
```
|
|
|
|
Design decisions prevent relitigating settled questions and help future maintainers understand *why*.
|
|
|
|
### Prerequisites
|
|
|
|
List conditions required for execution:
|
|
|
|
```markdown
|
|
### Prerequisites
|
|
- [ ] Database schema migrations ready
|
|
- [ ] API authentication middleware exists
|
|
- [ ] Test environment configured
|
|
- [ ] Security review of approach completed
|
|
```
|
|
|
|
Prerequisites are external dependencies. If they're not met, the flight can't begin safely.
|
|
|
|
### Pre-Flight Checklist
|
|
|
|
The gate check before execution:
|
|
|
|
```markdown
|
|
### Pre-Flight Checklist
|
|
- [ ] All open questions resolved
|
|
- [ ] Design decisions documented with rationale
|
|
- [ ] Prerequisites verified
|
|
- [ ] Legs defined with acceptance criteria
|
|
- [ ] Estimated scope is reasonable
|
|
```
|
|
|
|
When all items are checked, the flight moves from `planning` to `ready`.
|
|
|
|
## Flight Briefing
|
|
|
|
Before execution begins, create a **flight briefing** to align the crew:
|
|
|
|
```markdown
|
|
# Flight Briefing: {Title}
|
|
|
|
## Mission Context
|
|
How this flight contributes to the mission.
|
|
|
|
## Objective
|
|
What this flight will accomplish.
|
|
|
|
## Key Decisions
|
|
Critical design decisions the crew should know.
|
|
|
|
## Risks
|
|
Known risks and mitigation strategies.
|
|
|
|
## Legs Overview
|
|
Summary of legs with complexity notes.
|
|
|
|
## Success Criteria
|
|
How we'll know the flight succeeded.
|
|
```
|
|
|
|
The briefing is created when the flight moves to `ready` status.
|
|
|
|
## In-Flight Phase
|
|
|
|
In-flight is execution. Legs are being worked, progress is tracked in the [flight log](flight-logs.md).
|
|
|
|
### Technical Approach
|
|
|
|
Document *how* the objective will be achieved:
|
|
|
|
```markdown
|
|
### Technical Approach
|
|
|
|
1. Create user model with email/password fields
|
|
2. Implement registration endpoint with validation
|
|
3. Add login endpoint with JWT generation
|
|
4. Create middleware for protected routes
|
|
5. Add password reset flow
|
|
```
|
|
|
|
This bridges design decisions to concrete implementation without being leg-level specific.
|
|
|
|
### Checkpoints
|
|
|
|
Define milestones for progress tracking:
|
|
|
|
```markdown
|
|
### Checkpoints
|
|
- [ ] User registration working end-to-end
|
|
- [ ] Login returning valid tokens
|
|
- [ ] Protected routes rejecting invalid tokens
|
|
- [ ] Password reset emails sending
|
|
```
|
|
|
|
Checkpoints help identify if a flight is on track or needs intervention.
|
|
|
|
### Adaptation Criteria
|
|
|
|
When should the plan change?
|
|
|
|
```markdown
|
|
### Adaptation Criteria
|
|
|
|
**Divert if**:
|
|
- Security vulnerability discovered in approach
|
|
- External API changes break integration
|
|
- Performance testing reveals blocking issues
|
|
|
|
**Acceptable variations**:
|
|
- Minor API changes for developer experience
|
|
- Additional validation rules
|
|
- Extended error handling
|
|
```
|
|
|
|
Explicit adaptation criteria prevent both rigid adherence to bad plans and unnecessary scope creep.
|
|
|
|
### Legs
|
|
|
|
Reference the implementation legs:
|
|
|
|
```markdown
|
|
### Legs
|
|
- [x] `create-user-model` - completed
|
|
- [x] `registration-endpoint` - completed
|
|
- [ ] `login-endpoint` - in-flight
|
|
- [ ] `auth-middleware` - planning
|
|
- [ ] `password-reset` - planning
|
|
```
|
|
|
|
### Flight Log
|
|
|
|
During execution, maintain a [flight log](flight-logs.md) alongside this document. The flight log records:
|
|
|
|
- **Leg progress**: When legs start and complete, with summaries of changes
|
|
- **Decisions**: Choices made during execution not in the original plan
|
|
- **Deviations**: Departures from the planned approach and why
|
|
- **Anomalies**: Unexpected issues or behaviors encountered
|
|
|
|
The flight log is essential for:
|
|
- Providing continuity when work resumes after interruption
|
|
- Informing the creation of subsequent legs
|
|
- Enabling meaningful post-flight retrospectives
|
|
|
|
## Post-Flight Phase
|
|
|
|
Post-flight is verification and learning. Implementation is complete; now confirm success.
|
|
|
|
### Completion Checklist
|
|
|
|
Verify all work is finished:
|
|
|
|
```markdown
|
|
### Completion Checklist
|
|
- [ ] All legs marked completed
|
|
- [ ] Code merged to main branch
|
|
- [ ] Integration tests passing
|
|
- [ ] Documentation updated
|
|
- [ ] No blocking issues remaining
|
|
```
|
|
|
|
### Verification
|
|
|
|
How to confirm the flight succeeded:
|
|
|
|
```markdown
|
|
### Verification
|
|
|
|
**Manual verification**:
|
|
1. Create new user account
|
|
2. Log in with credentials
|
|
3. Access protected endpoint
|
|
4. Log out and verify token invalid
|
|
|
|
**Automated verification**:
|
|
- `npm run test:auth` passes
|
|
- `npm run test:e2e` auth flows pass
|
|
```
|
|
|
|
### Retrospective Notes
|
|
|
|
Capture learnings for future flights:
|
|
|
|
```markdown
|
|
### Retrospective Notes
|
|
|
|
**What went well**:
|
|
- JWT library well-documented
|
|
- Security review caught edge case early
|
|
|
|
**What could improve**:
|
|
- Underestimated password reset complexity
|
|
- Should have spiked OAuth earlier
|
|
|
|
**For next time**:
|
|
- Include OAuth research in pre-flight
|
|
- Add explicit leg for error handling
|
|
```
|
|
|
|
## Flight Lifecycle
|
|
|
|
Flights progress through defined states:
|
|
|
|
### States
|
|
|
|
```
|
|
planning ──► ready ──► in-flight ──► landed ──► completed
|
|
│
|
|
└──► aborted
|
|
```
|
|
|
|
**planning**
|
|
Pre-flight phase. Questions being resolved, design decisions being made.
|
|
|
|
**ready**
|
|
Pre-flight checklist complete. All prerequisites met. Ready to execute.
|
|
|
|
**in-flight**
|
|
Legs actively being executed. Checkpoints being reached. Flights may be modified during this phase (e.g., changing planned legs) as long as the flight log captures the change and rationale.
|
|
|
|
**landed**
|
|
All legs complete. Verification passed. Flight achieved its objective. Ready for debrief.
|
|
|
|
**completed**
|
|
Debrief done. Flight fully wrapped up and artifacts updated.
|
|
|
|
**aborted**
|
|
Flight cancelled. Changes are rolled back. Document the reason for future reference.
|
|
|
|
### In-Flight Modifications
|
|
|
|
Flights can be modified while `in-flight` — for example, when planned legs need to change due to discoveries during execution. This is not a separate state; simply update the flight artifact and record the change and rationale in the flight log.
|
|
|
|
**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
|
|
|
|
### State Transitions
|
|
|
|
| From | To | Trigger |
|
|
|------|----|---------|
|
|
| planning | ready | Pre-flight checklist complete |
|
|
| ready | in-flight | First leg begins |
|
|
| in-flight | landed | All legs complete |
|
|
| in-flight | aborted | Flight cancelled, changes rolled back |
|
|
| landed | completed | Debrief complete |
|
|
|
|
## Connecting to Parent Mission
|
|
|
|
Flights serve missions. Each flight should clearly link to:
|
|
|
|
```markdown
|
|
## Mission Link
|
|
|
|
**Mission**: [Secure User Authentication](../mission.md)
|
|
|
|
**Contributing to criteria**:
|
|
- [ ] Users can create accounts with email/password
|
|
- [ ] Session management handles concurrent logins
|
|
```
|
|
|
|
This traceability ensures flights aren't orphaned work—they connect to meaningful outcomes.
|
|
|
|
## Connecting to Child Legs
|
|
|
|
Flights generate legs. The flight defines *what* needs to happen; legs define the *exact* implementation steps.
|
|
|
|
A well-structured flight enables AI agents to execute legs without needing clarification:
|
|
|
|
**Flight provides**:
|
|
- Technical approach and patterns
|
|
- Design decisions and constraints
|
|
- Context about the broader system
|
|
|
|
**Legs consume**:
|
|
- Specific task to complete
|
|
- Acceptance criteria to meet
|
|
- Context from flight document
|
|
|
|
## Common Pitfalls
|
|
|
|
### Skipping Pre-Flight
|
|
|
|
Rushing to implementation creates problems. Pre-flight exists to:
|
|
- Surface hidden complexity
|
|
- Align on approach before work begins
|
|
- Identify blocking dependencies
|
|
|
|
A thorough pre-flight prevents mid-flight crises.
|
|
|
|
### Over-Specifying
|
|
|
|
Flights should guide, not constrain. Leave room for:
|
|
- Implementation details discovered during work
|
|
- Better approaches found during execution
|
|
- Minor adjustments that don't affect outcomes
|
|
|
|
### Ignoring Adaptation Criteria
|
|
|
|
When circumstances change, adapt the plan. Flights that ignore reality become fiction. Use adaptation criteria to decide when to divert.
|
|
|
|
### Skipping Post-Flight
|
|
|
|
Post-flight isn't bureaucracy—it's learning. Retrospective notes prevent repeating mistakes. Verification confirms the flight actually succeeded.
|
|
|
|
## Flight Debrief
|
|
|
|
After a flight lands (or diverts), create a **flight debrief** for retrospective analysis:
|
|
|
|
```markdown
|
|
# Flight Debrief: {Title}
|
|
|
|
## Outcome Assessment
|
|
What the flight accomplished and which mission criteria it advanced.
|
|
|
|
## What Went Well
|
|
Effective patterns during execution.
|
|
|
|
## What Could Be Improved
|
|
Process and technical recommendations.
|
|
|
|
## Deviations and Lessons
|
|
What changed from the plan and why.
|
|
|
|
## Recommendations
|
|
Top 3-5 most impactful improvements.
|
|
|
|
## Action Items
|
|
Follow-up work and improvements.
|
|
```
|
|
|
|
The debrief enables continuous improvement and informs future flights.
|
|
|
|
## Next Steps
|
|
|
|
- [Flight Logs](flight-logs.md) — Recording execution progress and decisions
|
|
- [Legs](legs.md) — Learn to write AI-optimized implementation steps
|
|
- [Workflow](workflow.md) — See how flights flow into legs
|