> 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/.github/workflows/readme_workflows.md).

# GitHub Workflows

CI and deployment workflows for FactionOS.

* `quality.yml` installs dependencies from the committed npm lockfile and runs format, lint, and workspace typecheck gates on Node 26.2.0.
* `test.yml` installs dependencies from the committed npm lockfile, runs workspace typecheck, and runs Vitest coverage on Node 26.2.0.
* `security.yml` installs dependencies from the committed npm lockfile, runs the checked-in secret scanner, runs `npm run security:audit`, checks pull request dependency changes with dependency review, and runs CodeQL analysis for JavaScript/TypeScript on pushes, PRs, a weekly schedule, and manual dispatch. CodeQL uploads SARIF to code scanning when Advanced Security is available; otherwise it keeps SARIF as a workflow artifact without failing the security workflow.
* `e2e.yml` installs the Chromium Playwright browser and runs the repo-level Playwright E2E smoke suite across the full app and public demo desktop/mobile projects, waiting separately for the API health endpoint, Vite app, and public-demo static server before tests begin. The app server runs with mock events enabled so clean CI workers have deterministic cockpit data. The app project includes War Room desktop/mobile evidence for optional Worker states through a mocked same-origin Worker and fake browser socket. It then uploads traces, screenshots, videos, and the HTML report.
* `release.yml` runs the release gates and creates a GitHub release from `v*` tags with generated notes.
* `deploy.yml` is a repo-wide deployment placeholder that documents the missing production target and optionally runs a manual smoke check when a URL is provided.
* `warroom-deploy.yml` deploys `apps/warroom` to Cloudflare Workers on pushes to `main` and on manual dispatch, then runs a bounded `/health` smoke check. The smoke target defaults to `https://warroom.faction-os.com/health` and can be overridden with the repository variable `CLOUDFLARE_WARROOM_HEALTH_URL`. The smoke step logs only compact service, deployment type, and rate-limit state metadata. It does not prove hosted identity, production app behavior, mobile certification, or trusted erasure.
* `public-demo-deploy.yml` deploys `public-demo/` to the official Cloudflare Pages project on pushes to `main` and on manual dispatch after the static public-demo media gates pass. It uses Cloudflare repository secrets, defaults the project name to `factionos-public-demo`, and runs the sanitized public-demo hosted smoke check after deployment.
* `public-website-deploy.yml` deploys the static main website from `public-website/dist` to the `factionos-public-website` Cloudflare Pages project on pushes to `main` that affect website, workflow, package, lockfile, or checker files, and on manual dispatch. It runs the website typecheck, build, and built-site checker before any deploy attempt. The workflow uses deploy-only Cloudflare secrets, the optional `CLOUDFLARE_PUBLIC_WEBSITE_PAGES_PROJECT_NAME` project variable, and the optional `FACTIONOS_PUBLIC_WEBSITE_URL` smoke URL variable. Missing deploy credentials produce a skip notice instead of exposing secret values.
* `pages.yml` deploys `public-demo/` to GitHub Pages when repository Pages is enabled, and skips cleanly when it is not.

Do not add secrets directly to workflow files. Use repository or environment secrets for credentials, and log only sanitized availability, host, status, and error labels.


---

# 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/.github/workflows/readme_workflows.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.
