Team Lifecycle
Team Lifecycle
Section titled “Team Lifecycle”Every federated team follows a lifecycle from creation through active work to eventual retirement:
onboard → active → [pause ⇄ resume] → retireStatus Reference
Section titled “Status Reference”| Status | Can Launch | Workspace | Learnings | Transitions To |
|---|---|---|---|---|
| active | Yes | Exists | Accumulating | paused, retired |
| paused | No | Preserved | Frozen | active (resume) |
| retired | No | Removed (worktree) | Graduated to main | (terminal) |
Onboard
Section titled “Onboard”Create a new team and register it in the federation:
npx tsx scripts/onboard.ts --name backend-api --archetype codingThe team starts in active status. See the team onboarding guide for the full interactive workflow.
Launch (active only)
Section titled “Launch (active only)”Start headless Copilot sessions for active teams. Paused and retired teams are automatically skipped:
npx tsx scripts/launch.ts --team backend-apinpx tsx scripts/launch.ts --all # skips paused/retiredTemporarily suspend a team. The workspace, learnings, and signals are preserved:
npx tsx scripts/offboard.ts --team backend-api --mode pauseVia Copilot skill: “Pause the backend-api team”
Use pause when:
- A team is blocked and waiting for external input
- You want to reduce resource usage temporarily
- Work needs to be deprioritized but not abandoned
Resume
Section titled “Resume”Reactivate a paused team, returning it to active status:
npx tsx scripts/offboard.ts --team backend-api --mode resumeVia Copilot skill: “Resume the backend-api team”
Retire
Section titled “Retire”Permanently decommission a team. This:
- Graduates learnings — ungraduated entries from the team’s
log.jsonlare appended to the main.squad/learnings/log.jsonlwith agraduatedAttimestamp - Archives signals — inbox and outbox signals are copied to
.squad/archived-signals/ - Removes the worktree (for worktree-based teams)
- Sets status to retired — the team cannot be relaunched
npx tsx scripts/offboard.ts --team backend-api --mode retirenpx tsx scripts/offboard.ts --team backend-api --mode retire --force # skip confirmationVia Copilot skill: “Retire the backend-api team”
Non-interactive mode (for CI/skills)
Section titled “Non-interactive mode (for CI/skills)”npx tsx scripts/offboard.ts --team backend-api --mode retire --non-interactive --output-format jsonReturns structured JSON:
{ "success": true, "team": "backend-api", "mode": "retire", "message": "Team \"backend-api\" retired successfully", "details": { "learningsGraduated": 5, "learningsSkipped": 2, "graduatedIds": ["learn-1", "learn-2", "..."], "signalsArchived": 3, "statusUpdated": true, "worktreeRemoved": true }}Knowledge Graduation
Section titled “Knowledge Graduation”When a team is retired, its learning log entries are graduated to the federation’s main log:
- Ungraduated entries are appended to
.squad/learnings/log.jsonlat the repo root - Each graduated entry gets
graduated: true,graduated_to: "main", and agraduatedAttimestamp - Already graduated entries are skipped (no duplicates)
- Other learning files (
.json,.md) are copied to the main learnings directory
This ensures knowledge isn’t lost when teams are decommissioned.
Guard Rails
Section titled “Guard Rails”The offboard script enforces these rules:
- Cannot retire a team that is already retired
- Cannot pause a team that is not active (e.g., already paused or retired)
- Cannot resume a team that is not paused
- Retired is a terminal state — no further transitions allowed