Bundle mission-control into Triple-C instead of cloning from GitHub
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>
This commit is contained in:
2026-04-03 09:09:15 -07:00
parent 57a7cee544
commit 2dffef0767
43 changed files with 7212 additions and 37 deletions

View File

@@ -0,0 +1,473 @@
# 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` |