Turn on Production QA for the Jaah project

Task 12415 · Asking · Coder · created · updated

## Gap (found by the Finish phase of epic 12247) All 13 build children merged, but the epic's own ask — "Dogfood on the Jaah project first" and "A failed Jaah Deploy files a task on the Jaah project with no runner watching it" — is not live. Nothing turns it on, by design (D9): `apps/api/app/production_qa/__init__.py:8-11` ("no code, seed or revision turns any of them on"), `gate.py:38-44` (org switch, then project opt-in), migration `202611012000_production_qa.py:384,408-410` (defaults false). The Deploys trigger is created only by Connect deploys (`routes/production_qa.py:746-773`) and the default automations only by `POST /api/projects/{id}/production-qa/default-automations` (`routes/production_qa.py:853-889`). Every live oracle (AC-1, AC-5, AC-15 live, AC-19, AC-27) was deferred because dev.jaah.ai is unreachable from the build nodes (private 10.60.x; the Finish node's HTTPS to dev timed out too). Cause: operator enablement + a tailnet node, not code. ## Do (on a node that reaches https://dev.jaah.ai — confirm with `curl -sS -o /dev/null -w '%{http_code}' https://dev.jaah.ai/api/health` first; if no such node, ASK `Access`) All changes through the console UI only (CLAUDE.md hard rule), signed in with `org/console/dev-login` (org Admin; operator plane for the org override). 1. Turn `production_qa` ON for the Jaah org (org override) and opt the Jaah project in (Project › Production QA). 2. Project › Production QA › Connect deploys; add the shown webhook(s) on `jaah-ai/jaah` (repo admin: `me/users/roman@gmind.tech/github_admin`) if the console does not register them itself. 3. Click "Create default automations". 4. In `apps/api/app/production_qa/__init__.py` docstring (the router's single home for Production QA) add a short "Turning it on for a project" paragraph naming steps 1–3. This is the only repo change. 5. After step 6 passes, remove the "watch Jaah Deploy of your PR" line from the Jaah project's runner instructions (Project › settings, through the console) — D10. ## Acceptance (each with its oracle) - AC-1: the next PR merged to develop shows its Jaah Deploy and status on Deployments within 60 s of the GitHub event — screenshot + timestamps (GitHub run `updated_at` vs the row's received time). - AC-4: that PR's task Outcome panel / ledger row carries `deployed` after the `apply_edges` cron — screenshot. - AC-19: a FRESH `workflow_dispatch` Jaah Deploy failure (not a redelivery — redelivery is deduped by GUID) files exactly one `triage` task on the Jaah project within 60 s carrying run link, failing job and step, and range/PRs — task link + timing. Use a dispatch that fails before any deploy step changes dev. - AC-15 live: a signed Sentry sample to a Sentry trigger on a test project with the gate ON files one task; the same body again files none — task link + incident count 2. - Docstring paragraph merged via the normal PR + merge lane; `./dc check quick` green. - Deploy-watch line gone from the Jaah project instructions (screenshot), only after AC-19 passed. Out of scope: no code change beyond the docstring paragraph; do not enable `production_qa` for any other org or on main (app.jaah.ai); do not change gate, filing or ingestion logic — a defect found goes in its own task. Done means: - AC-1, AC-4, AC-19, AC-15 live each observed on dev with evidence in the report. - Jaah org ON, Jaah project opted in, Connect deploys connected, 4 default automations Active — screenshot of Project › Production QA. - Required checks: ./dc check quick, merge lane full gate.

Outcome

Pull request

Activity

  • Ready
  • Runner started
  • Awaiting response