> 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/phase02-session02-cockpit-shell-and-navigation-cohesion/tasks.md).

# Task Checklist

**Session ID**: `phase02-session02-cockpit-shell-and-navigation-cohesion` **Total Tasks**: 22 **Estimated Duration**: 3-4 hours **Created**: 2026-05-29

***

## Legend

* `[x]` = Completed
* `[ ]` = Pending
* `[P]` = Parallelizable (can run with other \[P] tasks)
* `[SNNMM]` = Session reference (NN=phase number, MM=session number)
* `TNNN` = Task ID

***

## Progress Summary

| Category       | Total  | Done   | Remaining |
| -------------- | ------ | ------ | --------- |
| Setup          | 2      | 2      | 0         |
| Foundation     | 4      | 4      | 0         |
| Implementation | 11     | 11     | 0         |
| Testing        | 5      | 5      | 0         |
| **Total**      | **22** | **22** | **0**     |

***

## Setup (2 tasks)

Initial verification and evidence capture.

* [x] T001 \[S0202] Verify Session 01 requirements baseline and existing focused shell tests before editing (`.spec_system/PRD/phase_02/session_02_cockpit_shell_and_navigation_cohesion.md`)
* [x] T002 \[S0202] Create implementation notes with baseline evidence, test commands, and open-risk log (`.spec_system/specs/phase02-session02-cockpit-shell-and-navigation-cohesion/implementation-notes.md`)

***

## Foundation (4 tasks)

Core shell metadata, state ownership, and controlled drawer foundation.

* [x] T003 \[S0202] \[P] Create cockpit shell helper with connection, empty-state, and surface metadata with explicit unavailable and deferred statuses (`apps/web/src/lib/cockpitShell.ts`)
* [x] T004 \[S0202] \[P] Write pure tests for cockpit shell helper status labels, local-first copy, and War Room boundary output (`apps/web/tests/cockpitShell.test.ts`)
* [x] T005 \[S0202] Add controlled settings drawer state to the settings store without persisting transient overlay state (`apps/web/src/store/useSettingsStore.ts`)
* [x] T006 \[S0202] Refactor SettingsDrawer to consume controlled open state with Escape and backdrop cleanup plus state revalidation on re-entry (`apps/web/src/components/SettingsDrawer.tsx`)

***

## Implementation (11 tasks)

Main shell, command, empty-state, and stub behavior.

* [x] T007 \[S0202] Update keyboard shortcut settings opener to use the stable trigger or controlled shell state with cleanup on scope exit for all acquired resources (`apps/web/src/lib/useKeyboardShortcuts.ts`)
* [x] T008 \[S0202] Refine responsive Layout grid and rail constraints with stable overflow regions for supported desktop and tablet viewports (`apps/web/src/components/Layout.tsx`)
* [x] T009 \[S0202] Rework TitleBar into the primary command strip with connection status, global overlay controls, settings, help, and palette buttons with platform-appropriate accessibility labels, focus management, and input support (`apps/web/src/components/TitleBar.tsx`)
* [x] T010 \[S0202] Add local-server idle, connecting, connected, closed, and no-server status treatment without hosted availability claims (`apps/web/src/components/TitleBar.tsx`)
* [x] T011 \[S0202] Align command catalog to visible product surfaces and exclude deferred hosted or Worker federation commands (`apps/web/src/lib/commandPalette.ts`)
* [x] T012 \[S0202] Update CommandPalette rows, empty results, and unavailable states with active result visibility, focus management, and accessible listbox semantics (`apps/web/src/components/CommandPalette.tsx`)
* [x] T013 \[S0202] Update KeyboardShortcutsModal labels and groups to match implemented routes and close behavior with accessible dialog semantics (`apps/web/src/components/KeyboardShortcutsModal.tsx`)
* [x] T014 \[S0202] Improve first-run FactionPicker shell context with accessible dialog labeling and no-server fallback context without implying hosted setup (`apps/web/src/components/FactionPicker.tsx`)
* [x] T015 \[S0202] Rewrite WarRoomPanel as an honest separate-surface stub with disabled or placeholder actions and no fake live federation state (`apps/web/src/components/WarRoomPanel.tsx`)
* [x] T016 \[S0202] Wire shell-level rail composition and empty-state affordances for mission, notice, roster, scroll, quest, and War Room regions with explicit loading, empty, error, and offline states (`apps/web/src/App.tsx`)
* [x] T017 \[S0202] Document supported shell command, status, and War Room stub behavior in the web package README (`apps/web/README_web.md`)

***

## Testing (5 tasks)

Focused verification and quality gates.

* [x] T018 \[S0202] \[P] Add component tests for title bar, layout shell controls, settings/help/palette reachability, and disconnected status (`apps/web/tests/CockpitShell.test.tsx`)
* [x] T019 \[S0202] \[P] Extend command palette tests for visible-surface parity, empty or unavailable states, and deferred command absence (`apps/web/tests/CommandPalette.test.tsx`)
* [x] T020 \[S0202] \[P] Extend keyboard shortcut and help tests for controlled settings routes, typing-target guards, and updated help labels (`apps/web/tests/keyboardShortcuts.test.ts`)
* [x] T021 \[S0202] Run focused web tests and package typecheck for shell/navigation changes (`apps/web/package.json`)
* [x] T022 \[S0202] Validate ASCII encoding, manual desktop/tablet viewport smoke checks, and implementation notes update (`.spec_system/specs/phase02-session02-cockpit-shell-and-navigation-cohesion/implementation-notes.md`)

***

## Completion Checklist

Before marking session complete:

* [x] All tasks marked `[x]`
* [x] All tests passing
* [x] All files ASCII-encoded
* [x] `implementation-notes.md` updated
* [x] Ready for the validate workflow step

***

## Next Steps

Run the validate workflow step to verify session completeness.


---

# 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/phase02-session02-cockpit-shell-and-navigation-cohesion/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.
