Venn

CI and review

Every pull request gets fast, automatic checks, so reviewers can focus on what matters. The goal is high product quality without slowing anyone down: most pull requests are fully checked in about a minute, and docs-only changes in about 30 seconds.

What runs on a pull request

Check Runs when Blocks merging What it catches
Lint, format & docs Always Yes ESLint, Prettier, broken links between docs, mistakes in workflow files (actionlint), npm package signatures
Unit & API tests Code changed Yes Logic and API behaviour on Node 22 and 24, with a coverage floor and a page-weight budget
Browser tests (desktop, phone, in parallel) Code changed Yes Real user flows in Chromium, plus accessibility checks (axe, WCAG 2.2 AA) in light and dark mode
Cloudflare Worker build Code changed Yes The production build still bundles
Dependency review Always on PRs Yes New dependencies with known vulnerabilities or non-permissive licenses
CodeQL Always Shown in Security tab Security issues in the JavaScript and in the workflow files
Claude review Non-draft PRs No (advisory) Bugs, security and privacy issues, missing tests. It leaves inline comments.
Labels Always No Tags the PR by area (app, server, docs, tests, ci, dependencies)

Branch protection requires one check, CI passed. It turns green only when every blocking job above has passed, or was skipped because the change is docs-only.

Quality gates

After merging

Running the checks yourself

npm run check          # what the lint job and unit tests run, minus actionlint
npm run test:coverage  # unit tests with the coverage floor
npm run test:e2e       # browser and accessibility tests
npm run site           # build the docs site into site/

Audit notes (October 2026)

What was already in place and kept:

Gaps found and fixed:

Gap Change
No accessibility testing Added axe checks. They found real problems, now fixed: text contrast in light and dark mode, the availability grid's screen-reader structure, and the people list's markup
No coverage floor Added thresholds just below current coverage
No page-weight budget Added a gzip budget test
Docs could silently break Link checks for Markdown, plus a site build that fails on broken links
Workflow files weren't linted Added actionlint, with the download checksum verified
Docs-only changes ran the full pipeline Heavy jobs now skip when only docs change
Desktop and phone browser tests ran one after another They run in parallel, with the browser download cached
"Up to date with main" forced repeated updates Relaxed. CI on main after each merge is the safety net
Dependency updates needed manual merging Patch and minor updates auto-merge when green
No automated code review Claude review on every pull request, guided by CLAUDE.md
No public security posture OpenSSF Scorecard and badge

Deliberately left out, because the cost to velocity outweighs the value at this size: