> 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/phase23-session05-quest-board-camp-focus/tasks.md).

# Task Checklist

**Session ID**: `phase23-session05-quest-board-camp-focus` **Total Tasks**: 20 **Estimated Duration**: 3-4 hours **Created**: 2026-07-05

***

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

***

## Setup (3 tasks)

* [x] T001 \[S2305] Verify existing Quest Board card action capabilities, issue dismissal client, and optimistic rollback helpers (`apps/web/src/lib/questBoard.ts`, `apps/web/src/lib/questBoardActions.ts`, `apps/web/src/store/useGameStore.ts`)
* [x] T002 \[S2305] Verify focused bottom-rail surface wiring for Quest Board without duplicating the mounted panel tree (`apps/web/src/App.tsx`, `apps/web/src/components/BottomRailExpansionHost.tsx`, `apps/web/src/store/useSettingsStore.ts`)
* [x] T003 \[S2305] Verify existing Quest Board component and store test fixtures for codebase issue cards, focused surfaces, action feedback, and route assertions (`apps/web/tests/QuestBoard.test.tsx`, `apps/web/tests/questBoardStore.test.ts`, `apps/web/tests/questBoardActions.test.ts`)

***

## Foundation (5 tasks)

* [x] T004 \[S2305] Add typed Quest Board camp-focus state and normalized issue-id helpers with bounded de-duplication (`apps/web/src/store/useGameStore.ts`)
* [x] T005 \[S2305] Add `focusQuestBoardCamp` and `clearQuestBoardCampFocus` store actions that open the existing Quest Board focused surface and reset stale focus on demand with state reset or revalidation on re-entry (`apps/web/src/store/useGameStore.ts`)
* [x] T006 \[S2305] \[P] Add selector helpers for current focused issue ids, focused Quest Board cards, and current Banish targets with bounded filtering and deterministic ordering (`apps/web/src/store/useGameStore.ts`)
* [x] T007 \[S2305] \[P] Add store test fixtures for mixed idle, analysis, project, and codebase issue cards plus focused camp issue ids (`apps/web/tests/questBoardStore.test.ts`)
* [x] T008 \[S2305] \[P] Add component test fixtures for rendering Quest Board with and without active camp focus (`apps/web/tests/QuestBoard.test.tsx`)

***

## Implementation (7 tasks)

* [x] T009 \[S2305] Implement dry Banish store action through `dismissQuestBoardIssue` for current focused issue cards only, with duplicate-trigger prevention while in-flight (`apps/web/src/store/useGameStore.ts`)
* [x] T010 \[S2305] Wire dry Banish optimistic removal, successful cleanup, failed rollback, and partial-failure warning feedback with scoped rollback on error (`apps/web/src/store/useGameStore.ts`)
* [x] T011 \[S2305] Render active camp-focus banner with matching issue count, clear control, and Banish control with platform-appropriate accessibility labels, focus management, and input support (`apps/web/src/components/QuestBoard.tsx`)
* [x] T012 \[S2305] Filter or emphasize focused Quest Board cards by `actions.dismissIssue.issueId` while preserving normal cards after focus clear (`apps/web/src/components/QuestBoard.tsx`)
* [x] T013 \[S2305] Render focused empty state for reconciled or no-longer-present camp issues with explicit empty and error-adjacent states (`apps/web/src/components/QuestBoard.tsx`)
* [x] T014 \[S2305] Preserve existing accept, assign, dismiss, scan trigger, summary modal, reply target, feedback banner, and focused-surface behavior under active camp focus (`apps/web/src/components/QuestBoard.tsx`)
* [x] T015 \[S2305] Ensure Banish and focus state do not mutate `gameProjection`, rewards, achievements, camp links, storage keys, scan configuration, selected hero, or hosted state (`apps/web/src/store/useGameStore.ts`)

***

## Testing (5 tasks)

* [x] T016 \[S2305] \[P] Add store tests for focus normalization, focused-surface opening, clear behavior, stale issue ids, and no projection-progress side effects (`apps/web/tests/questBoardStore.test.ts`)
* [x] T017 \[S2305] \[P] Add store tests for dry Banish success, all-failure, partial-failure, pending duplicate rejection, optimistic cleanup, rollback, and pending key cleanup (`apps/web/tests/questBoardStore.test.ts`)
* [x] T018 \[S2305] \[P] Add component tests for focused card filtering, clear control, Banish control, focused empty state, pending disabled state, accessibility labels, and existing action behavior under focus (`apps/web/tests/QuestBoard.test.tsx`)
* [x] T019 \[S2305] \[P] Add issue dismissal helper tests for Banish-safe invalid issue ids, request body shape, and existing route use (`apps/web/tests/questBoardActions.test.ts`)
* [x] T020 \[S2305] Run focused Vitest, web typecheck, and ASCII/LF validation (`npm --workspace @factionos/web test -- QuestBoard.test.tsx questBoardStore.test.ts questBoardActions.test.ts`, `npm --workspace @factionos/web run typecheck`, `apps/web/src/store/useGameStore.ts`, `apps/web/src/components/QuestBoard.tsx`)

***

## 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` (next step in 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/phase23-session05-quest-board-camp-focus/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.
