Skip to content

Phase 2 — Queued PRs and Tiered Gates

Phase 2 builds on the Phase 1 frontend pipeline (Amplify-branch-sync replaced by GitHub Actions deploys; see the parent Frontend Pipeline page) and addresses the next bottleneck: PR throughput, merge serialization, and post-merge release/deploy automation.

The phase introduces:

  • GitHub merge queue with tiered check gates (Fast Gate on PR push, Queue Gate in merge_group, Post-Merge automation on main).
  • PR-body CHANGELOG — entries live in the PR description; an automated workflow assembles them into CHANGELOG.md on merge, computes the SemVer bump, validates with CLQ, and creates a GitHub Release.
  • Deploy Frontend quality gate — Extended E2E (non-@sanity/non-@acceptance) and quarantine-budget enforcement run inline in the deploy workflow and gate demo/prod deployment.
  • Non-blocking quarantine job — quarantined tests run post-merge against the deploy commit for flaky-signal aggregation, without gating deploys.
  • Quarantine system — a @quarantine(YYYY-MM-DD, #issue) test tag, a reusable quarantine-check composite action, a budget config (e2e/quarantine.config.json), and the existing weekly flaky-test aggregation.
AspectValue
StatusCompleted (with one known follow-up)
Period2026-04-23 → 2026-04-28
Repos affectedarda-frontend-app
OwnerMiguel (jmpicnic)
Latest assembly version on mainv0.109.3
PRTitleMerge commit
#803Deploy quality gate (initial polling implementation), CI/E2E trigger cleanup, reusable quarantine actiona330707
#805Inline Extended E2E into deploy quality gate; remove post-merge-e2e.yaml8ad4208
#807Non-blocking quality-gate-quarantine jobb88a560 precursor / 0e8701a merge
#808Authenticate npm ci to GitHub Packages in deploy workflowb88a560

Earlier related work (PR-body CHANGELOG, merge-queue adoption, tiered gates, quarantine system bootstrap) landed in PRs preceding #803 and is documented inline in design.md.

  • design.md — pipeline architecture, gate semantics, deploy quality gate, quarantine system.
  • decisions.md — design decisions with rationale (PR-body CHANGELOG, inline-vs-polling gate, non-blocking quarantine, deploy SHA pinning).

The phase introduced a new contributor workflow. The how-to for humans is published outside the roadmap:

  • quality-gate-quarantine summary script bug — the bash/jq script that builds the per-test summary table fails on a single-quote inside an inline jq comment. Tracked on arda-frontend-app#795 (the same issue covers TC-NAV-004 hydration; the fix is required for that test to be unquarantined and re-run cleanly).
  • TC-NAV-004 (#795) — quarantined sidebar toggle test, awaiting React hydration investigation.
  • PR-steward skill auto-detect refinement — the simple vs queued detection ruleset query may need fallback paths for repositories with non-standard branch protection setups.

Reference: pipeline architecture (final state)

Section titled “Reference: pipeline architecture (final state)”
PR push (Fast Gate, ~5 min)
├── lint, build, unit-tests-coverage
├── changelog-check (validates PR body)
├── e2e (pass-through — shards skip, summary auto-passes)
└── quarantine-check
Merge queue (merge_group, ~10–15 min)
├── lint, build, unit-tests-coverage (re-run on rebased code)
├── changelog-check (pass-through)
├── e2e sanity shards (alpha, bravo) + acceptance shards (alpha, bravo, charlie)
└── quarantine-check
Post-merge (push to main)
├── Changelog Assembly → CLQ → GitHub Release
│ └── triggers Deploy Frontend
└── Deploy Frontend
├── source-info (traceability)
├── deploy-dev → deploy-stage (in series)
├── quality-gate-build → quality-gate-{alpha,bravo} → quality-gate-evaluate (parallel with deploys)
├── quality-gate-quarantine (non-blocking, parallel)
├── stage-annotation (warning if prod blocked)
└── deploy-demo + deploy-prod (after stage + quality-gate-evaluate; prod requires environment approval)
Nightly (cron)
└── WebKit + Mobile Safari E2E → auto-issue on failure
Weekly (cron)
├── Pipeline metrics → tracking issue comment
└── Flaky-test aggregation → flaky-test issues