# CI quality-gate orchestration `config/ci/gates.json` is the executable registry for all 26 gates. The Gitea adapter runs each gate as an independent matrix check with full fan-out and no soft-fail wiring. The dependency graph is: ```text MERGE_READY -> RELEASE_READY -> PROD_PROMOTION_READY -> FIELD_SLO_READY DOCUMENTATION_READY (off-chain) ``` Pull requests and `develop` pushes evaluate merge readiness. Version tags evaluate merge then release readiness. Production and field evaluation require an explicit workflow dispatch. The field tier cannot pass until the 28-day sample threshold decision is recorded. Documentation readiness consumes the canonical project-note evidence in which both scoped diagrams already received 100/100 `PASS_SCOPED`; the repo ledger preserves the evidence scope and canonical digests. All jobs upload the shared `artifacts/` tree even after failure. Numeric retention remains an organization/provider decision; the workflow intentionally does not invent `retention-days`. The relative minimums are recorded in the registry: merge evidence through the PR decision, coherent release evidence through the next release promotion, drill evidence through the next production promotion, and field evidence through aggregation. Browser-backed merge gates install and execute the pinned Chromium, Firefox, and WebKit engines. This makes route behavior, reflow, native dialog semantics, theme persistence, and automated accessibility a cross-engine contract rather than a Chromium-only smoke check. Repository variables required by higher tiers: - `HOSTING_BASE_URL` for live header verification - `FIELD_WEB_VITALS_INPUT` for the privacy-approved field sample document - `MIN_ELIGIBLE_SAMPLES` after the baseline decision Branch protection must mark each `FE-GATE-* / ` check required for its declared tier. This repository cannot configure server-side protection by committing a file.