Files
Triple-C/container/mission-control/docs/flights.md
Josh Knapp 2dffef0767
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
Bundle mission-control into Triple-C instead of cloning from GitHub
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>
2026-04-03 09:09:15 -07:00

12 KiB

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:

# 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:

### 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:

### 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:

### 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:

### 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:

# 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.

Technical Approach

Document how the objective will be achieved:

### 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:

### 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?

### 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:

### 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 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:

### 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:

### 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:

### 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:

## 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:

# 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 — Recording execution progress and decisions
  • Legs — Learn to write AI-optimized implementation steps
  • Workflow — See how flights flow into legs