> For the complete documentation index, see [llms.txt](https://faction-os.gitbook.io/faction-os-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://faction-os.gitbook.io/faction-os-docs/.spec_system/archive/sessions/phase21-session03-orchestration-command-center-expansion/tasks.md).

# Task Checklist

**Session ID**: `phase21-session03-orchestration-command-center-expansion` **Total Tasks**: 22 **Estimated Duration**: 3-4 hours **Created**: 2026-06-29

***

Legend: `[x]` completed; `[ ]` pending; `[P]` parallelizable; `[SNNMM]` session ref; `TNNN` task ID.

***

## Progress Summary

| Metric              | Value     |
| ------------------- | --------- |
| Tasks Completed     | 22 / 22   |
| Estimated Remaining | 0 minutes |
| Blockers            | 0         |

***

## Setup (3 tasks)

* [x] T001 \[S2103] Verify Session 01 and Session 02 completion evidence and current Session 03 stub scope (`.spec_system/PRD/phase_21/session_03_orchestration_command_center_expansion.md`)
* [x] T002 \[S2103] \[P] Audit current Orchestration header, details portal, and local shell state before changing the primary open path (`apps/web/src/components/orchestration/OrchestrationHeader.tsx`, `apps/web/src/components/orchestration/OrchestrationShell.tsx`)
* [x] T003 \[S2103] \[P] Audit existing Orchestration tests and Command Center tab test ids for reusable assertions (`apps/web/tests/OrchestrationPanel.test.tsx`, `apps/web/src/components/orchestration/OrchestrationTabs.tsx`)

***

## Foundation (5 tasks)

* [x] T004 \[S2103] Add an Orchestration shell primary focus handler that sets `expandedBottomRailSurfaceId` to `"orchestration"` with state reset or revalidation on re-entry (`apps/web/src/components/orchestration/OrchestrationShell.tsx`)
* [x] T005 \[S2103] Refactor `OrchestrationHeader` props so the primary Command Center opener and secondary state-summary opener are separate actions (`apps/web/src/components/orchestration/OrchestrationHeader.tsx`)
* [x] T006 \[S2103] Update primary Orchestration header copy, ARIA labels, and controls from details language to working-surface Command Center language with platform-appropriate accessibility labels, focus management, and input support (`apps/web/src/components/orchestration/OrchestrationHeader.tsx`)
* [x] T007 \[S2103] Keep retained details popup behavior behind secondary state-summary copy without changing its local close, backdrop, or Escape behavior (`apps/web/src/components/orchestration/OrchestrationShell.tsx`)
* [x] T008 \[S2103] Add small test helpers for rendering Orchestration inside `BottomRailExpansionHost` without duplicating the panel tree (`apps/web/tests/OrchestrationPanel.test.tsx`)

***

## Implementation (8 tasks)

* [x] T009 \[S2103] Wire the header primary open action to the focused bottom-rail surface and preserve existing refresh/status controls (`apps/web/src/components/orchestration/OrchestrationShell.tsx`)
* [x] T010 \[S2103] Ensure expanded Orchestration exposes the existing `OrchestrationTabs` and `CommandCenterPanes` rather than a second panel or summary-only modal (`apps/web/src/components/orchestration/OrchestrationShell.tsx`)
* [x] T011 \[S2103] Verify Campaigns, File/Git, Attention, Executors, Federation, and Metrics tabs remain reachable through current tab ids and product-facing labels (`apps/web/src/components/orchestration/OrchestrationTabs.tsx`)
* [x] T012 \[S2103] Preserve `commandCenter.activeTab` updates while operating tabs in expanded mode (`apps/web/src/store/useGameStore.ts`, `apps/web/src/components/orchestration/OrchestrationShell.tsx`)
* [x] T013 \[S2103] Preserve local selected campaign and selected attention state across focused-surface close and reopen (`apps/web/src/components/orchestration/OrchestrationShell.tsx`)
* [x] T014 \[S2103] Preserve local terminal runtime drawer state across focused-surface close and reopen (`apps/web/src/components/orchestration/OrchestrationShell.tsx`)
* [x] T015 \[S2103] Keep command-center hydration, diagnostics, channel health, and lineage roster effects tied to the single mounted shell with timeout, retry/backoff, and failure-path handling unchanged (`apps/web/src/components/orchestration/OrchestrationShell.tsx`)
* [x] T016 \[S2103] Update App-level mocked shell assertions only where needed to keep focused Orchestration expansion host coverage aligned (`apps/web/tests/CockpitShell.test.tsx`)

***

## Testing (6 tasks)

* [x] T017 \[S2103] Update details-popup tests to treat the retained portal as secondary state-summary behavior (`apps/web/tests/OrchestrationPanel.test.tsx`)
* [x] T018 \[S2103] Add tests proving the primary Orchestration action opens `bottom-rail-expanded-orchestration` and includes `data-testid="command-center-tab-campaigns"` (`apps/web/tests/OrchestrationPanel.test.tsx`)
* [x] T019 \[S2103] Add tests proving Campaigns, File/Git, Attention, Executors, Federation, and Metrics are reachable in expanded mode and update `commandCenter.activeTab` (`apps/web/tests/OrchestrationPanel.test.tsx`)
* [x] T020 \[S2103] Add tests proving close/reopen preserves intended tab, selected campaign, selected attention item, and terminal drawer state (`apps/web/tests/OrchestrationPanel.test.tsx`)
* [x] T021 \[S2103] Add tests proving expansion does not trigger duplicate command-center hydration, diagnostics, channel health, or lineage roster fetches (`apps/web/tests/OrchestrationPanel.test.tsx`)
* [x] T022 \[S2103] Run focused tests, web typecheck, and ASCII/LF validation (`npm test -- apps/web/tests/OrchestrationPanel.test.tsx apps/web/tests/CockpitShell.test.tsx`, `npm run typecheck --workspace @factionos/web`)

***

## Completion Checklist

* [x] All tasks marked `[x]`
* [x] All tests and checks passing
* [x] All files ASCII-encoded with LF line endings
* [x] implementation-notes.md updated
* [x] Ready for `creview` to continue the implement -> creview -> validate sequence

***

## Next Steps

Run the `creview` workflow step.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://faction-os.gitbook.io/faction-os-docs/.spec_system/archive/sessions/phase21-session03-orchestration-command-center-expansion/tasks.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
