> 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/phases/phase_06/mobile_accessibility_acceptance_checklist.md).

# Phase 06 Mobile And Accessibility Acceptance Checklist

**Phase**: 06 - Collaboration, Isolation, and Mobile **Session**: 01 - Collaboration Requirements and Safety Baseline **Status**: Acceptance source for Sessions 04, 06, and 07 **Created**: 2026-05-30

***

## Scope

This checklist applies to changed collaboration, War Room, local orchestration, isolation diagnostic, settings, overlay, drawer, dialog, mission, roster, battlefield, and core cockpit surfaces in Phase 06. It is not a full WCAG certification claim. Session 06 owns implementation hardening, and Session 07 owns retained validation evidence.

## Viewports And Layout

* [ ] App desktop viewport evidence covers changed Phase 06 surfaces.
* [ ] App mobile viewport evidence covers changed Phase 06 surfaces.
* [ ] Tablet-sized or narrow desktop behavior is manually reviewed when grid or bottom-rail layout changes.
* [ ] Battlefield, mission list, roster, War Room, local orchestration, settings, dialogs, and critical shell controls remain reachable.
* [ ] No primary control is hidden behind a fixed rail, drawer, modal, toast, or browser edge.
* [ ] No panel, card, button, badge, label, overlay, tooltip, or table row overlaps another element incoherently.
* [ ] Loading, empty, disconnected, local-only, unavailable, and error states keep stable dimensions and do not collapse into blank panels.
* [ ] Hover, focus, selected, in-flight, and disabled states do not resize controls enough to shift adjacent controls.

## Text Fit

* [ ] Long participant names wrap, truncate, or preserve layout intentionally.
* [ ] Room codes remain readable and do not force horizontal scrolling.
* [ ] Worker URLs and diagnostics do not expose secrets and do not overflow their containers.
* [ ] Error titles and details wrap cleanly on mobile.
* [ ] Button labels, segmented controls, and pill labels fit or wrap without clipping.
* [ ] Icon-only controls have accessible names and do not rely on visible text.
* [ ] Remote context summaries use counts and family labels, not raw event payloads.
* [ ] Text sizing uses fixed or design-token sizes, not viewport-width scaling.

## Keyboard

* [ ] Every changed action is reachable by keyboard.
* [ ] Native buttons or links are used where possible.
* [ ] Custom keyboard handlers handle Enter and Space only when native controls are not practical.
* [ ] Focus order follows visual and workflow order.
* [ ] Focus is visible on all changed interactive elements.
* [ ] Disabled controls remain understandable and do not trap focus.
* [ ] Duplicate-action guards do not permanently strand focus on an in-flight control.
* [ ] Escape closes dialogs, drawers, and overlays where the existing app pattern supports it.
* [ ] Global shortcuts do not fire while a user is typing in an input, textarea, select, or editable surface.

## Pointer And Touch

* [ ] Touch and pointer targets are large enough for mobile use.
* [ ] Adjacent controls have enough spacing to avoid accidental activation.
* [ ] Drag, hover, and pointer-only gestures have an alternate activation path when they control critical behavior.
* [ ] Popovers, drawers, and bottom rails do not obscure the target that opened them without a visible close or back path.
* [ ] In-flight create, join, approve, reject, connect, retry, disconnect, leave, reset, send, and recovery actions cannot be double-triggered.

## Screen Reader And Semantics

* [ ] Dialogs and drawers use `role="dialog"` or the established local pattern, with `aria-modal` when modal and `aria-labelledby` for the title.
* [ ] Roster entries expose participant name, role, online/offline state, and local participant marker in text or accessible labels.
* [ ] Pending approval entries expose requester name and decision state.
* [ ] War Room diagnostics expose status, source, and failure reason without raw payloads.
* [ ] Remote context exposes participant count, safe family labels, and high-level context without raw hero prompts, mission prompts, paths, commands, transcripts, or diagnostics.
* [ ] Color indicators have text or accessible equivalents.
* [ ] Loading and error states are announced or discoverable through visible text, not console-only output.
* [ ] Tables, lists, and groups keep semantic containers or labels.

## Focus Return And State Re-entry

* [ ] Closing a dialog, drawer, or overlay returns focus to the invoking control where feasible.
* [ ] Reopening a panel revalidates local state instead of showing stale room, participant, diagnostic, or guarded-action data.
* [ ] Changing Worker URL clears connection, catch-up, remote context, decisions, and room state that no longer belongs to the new URL.
* [ ] Leaving or resetting a room clears only the local browser room context and does not claim trusted erasure.
* [ ] Reconnect prunes absent participants and local participant remote context.
* [ ] Local server reconnect does not imply Worker availability or hosted service availability.

## Reduced Motion

* [ ] Reduced-motion settings dampen nonessential battlefield, overlay, reconnect, toast, replay, and achievement motion.
* [ ] State meaning remains visible when animation is disabled.
* [ ] Loading and reconnect status does not depend only on motion.
* [ ] Timed animations clean up timers on unmount, dismissal, or state reset.

## Visible Failure States

* [ ] Worker URL missing or disabled.
* [ ] Worker URL invalid.
* [ ] Worker health unchecked, checking, healthy, offline, timed out, rate-limited, bad response, and generic error.
* [ ] Room not found.
* [ ] Room full.
* [ ] Join pending.
* [ ] Join rejected.
* [ ] Stale approval or rejection.
* [ ] Non-leader approval or rejection.
* [ ] Duplicate decision or in-flight decision.
* [ ] Socket upgrade failure.
* [ ] Reconnect stopped or failed.
* [ ] Catch-up received and catch-up unavailable.
* [ ] Federation send unavailable.
* [ ] Local server disconnected or auth-required.
* [ ] Guarded action unavailable or not executed.
* [ ] Unsupported route or future executor unavailable.

## Privacy And Boundary Copy

* [ ] UI copy distinguishes optional Worker transfer from hosted collaboration.
* [ ] UI copy does not imply hosted account proof, hosted storage, analytics, public replay hosting, remote execution, Docker execution, production-hosted validation, mobile certification, or trusted erasure.
* [ ] Remote context copy says what is shared at a high level and does not list raw local data as share-safe.
* [ ] Diagnostics copy remains operational and compact.
* [ ] Leave/reset copy says it clears this browser's room context only.
* [ ] Recovery copy says it removes stale listener PID files and malformed spool entries only.

## Evidence Requirements

* [ ] Component or helper tests cover changed pure state, labels, and duplicate guards.
* [ ] Focused package tests run for changed TypeScript or JavaScript code.
* [ ] App desktop and app mobile Playwright evidence is retained for changed visible surfaces.
* [ ] Screenshots are reviewed for no blank panels, no clipped controls, no overlapping text, visible focus or state where applicable, and readable errors.
* [ ] `git diff --check` passes.
* [ ] ASCII/LF validation passes for changed docs and generated session files.

## Non-goals

* [ ] Do not claim full WCAG certification from this checklist alone.
* [ ] Do not claim mobile certification from local browser evidence alone.
* [ ] Do not claim production-hosted app validation from local or mocked Worker evidence.
* [ ] Do not claim trusted erasure from leave, reset, browser storage cleanup, diagnostics cleanup, or CLI recovery.


---

# 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/phases/phase_06/mobile_accessibility_acceptance_checklist.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.
