# Pull request template

CodeCommit has no native PR templates. Copy everything below the line into the PR description.
`REVIEW.md` and the local-LLM reviewer check for the **Explain-back** and **How to debug in
production** sections, so a PR without them comes back.

---

## Summary
<!-- One or two sentences: what this PR does. -->

Jira: <KEY-123> · Intent folder: `intent/<yyyy-mm-dd-slug>/` · Services touched: <from ci/service-map.json>

## Explain-back (Rule 3: in your own words, not Claude's)
- **What changed:**
- **Why:**
- **How it works:** <walk through the key files; if you can't explain a file, don't merge it>
- **Diverged from plan.md?** <no / yes, and plan.md was updated in commit …>

## How to debug in production (Rule 4)
<!-- Required for any change to runtime behaviour. Write "n/a: docs/tooling only" otherwise. -->
- **Logs:** CloudWatch `/ecs/b2g-prod/<service>` (demo: `/ecs/b2g-demo/<service>`)
- **Key log messages / categories to search for:**
- **Config / env vars / feature flags involved:**
- **Rollback:** `aws ecs update-service --cluster b2g-prod --service <svc> --task-definition b2g-<svc>:<previous-revision>`
  (demo: cluster `b2g-demo`, family `b2g-demo-<svc>`), or revert the merge commit and let `b2g-cd` redeploy
- **Runbook:** `docs/runbooks/<file>.md` (new or updated, if this is a recurring failure mode)

## Proof
<!-- Paste real output. "It works" is not proof. -->
```
$ python ci/ns-case-check.py
$ python ci/curl-timeout-check.py
$ php -l <changed .php files>
$ npx ng build --configuration=docker   # per changed frontend
```
Screenshots for UI changes.

## Checklist
- [ ] I have read the **full diff** and can defend every line (Rule 1)
- [ ] I ran `/code-review` locally and handled or answered the findings
- [ ] `plan.md` is committed and still matches the diff
- [ ] No `vendor/`, `dist/`, `node_modules/`, `.env` or build output in the diff
- [ ] `package.json` and `package-lock.json` changed together, or not at all
- [ ] New outbound `curl` sets `CURLOPT_CONNECTTIMEOUT`/`CURLOPT_TIMEOUT`
- [ ] No absolute platform hostnames in frontend code (`docs/frontend-endpoint-rules.md` §5)
- [ ] PR source commit = `git rev-parse <branch>` before merging (`docs/codecommit-workflow.md` §4)
- [ ] Any mistake Claude repeated has been added to the relevant `CLAUDE.md` (Rule 7)
