pull_request_template.md

GitHub PR template — the gated Launch readiness checklist, written whole by redline init when the repo has none, merged into an existing one otherwise.

What this is

The GitHub pull request template: a Change type pick-list (ungated) and a Launch readiness checklist (gated).

How to onboard it

  • Installed as: .github/pull_request_template.md
  • Installed by: redline init — written whole only when the repository has no template the host would serve.

How to use it

Tick every box honestly, or delete a line that genuinely doesn't apply and say why in the Summary. If the gate is stuck on a process item you can't satisfy, apply the redline-exempt label and explain in a comment — that downgrades checklist and ADR to warnings, never dependency review or the secret scan.

  • redline init searches .github/, the repository root, then docs/ (GitHub's own precedence order) for an existing pull_request_template.md before writing one. Where it finds none, it writes the packaged template whole, gated sections already inside REDLINE:BEGIN/END markers.
  • Where a template already exists, it is kept byte for byte and only the gated sections (## Launch readiness, ## Architecture decision) are appended inside REDLINE:BEGIN/END markers — a section the template already provides on its own is left untouched rather than duplicated. On a re-run, only that marked span is regenerated.
  • The redline-gate.yml checklist job parses the PR body specifically for a ## Launch readiness heading, then fails if any box under it is unticked.
  • Deleting the heading — not just leaving boxes unticked — fails the gate outright and loudly, by design: a missing section can't be mistaken for a completed one.
  • The Architecture decision and Automated review sections are informational; only Launch readiness is enforced by the gate.

Expected output

.github/pull_request_template.md, and through it the gate's checklist job: it parses the PR body for a ## Launch readiness heading and fails if any box under it is unticked. Deleting the heading fails the gate loudly rather than passing — a missing section cannot be mistaken for a completed one.

How to edit it

The real source: This template file. Only the span inside the REDLINE:BEGIN/END markers is regenerated on a re-run, so a repository's own additions outside it survive.

  1. Check whether the CLI reads this file at allSeveral of these are reference shapes: the CLI generates the equivalent in code and never opens the checked-in copy. Editing one of those changes nothing about what redline init writes. The onboarding section above says which kind this is.
  2. Edit the real sourceFor a generated artifact that is cli/commands/init.ts; for a file installed verbatim it is the template itself.
  3. npm test && node scripts/validate.mjsThe install path is unit-tested against a fake host client, and validate.mjs pins the shapes the merge gate's required check name depends on.

The full file

.github/pull_request_template.md · 73 lines · 2.4 KB
# Summary

<!-- What and why, 2-3 sentences. Link the ticket. -->

Ticket:

## Change type

<!-- Tick the one that applies. This section is NOT gated — pick one and move on. -->

- [ ] Feature
- [ ] Bugfix
- [ ] Refactor (approved beforehand)
- [ ] Chore/config

<!-- REDLINE:BEGIN — generated by Redline. Do not edit inside this block. -->

## Launch readiness

<!--
GATED SECTION. `redline-gate` fails while any box here is unticked.
If an item genuinely does not apply, delete the line and say why in the Summary.
Do not delete the heading — the gate fails if the section is missing.
-->

- [ ] No secrets, keys, or customer data in code, logs, or fixtures
- [ ] Input validated at boundaries touched by this change
- [ ] Typecheck and lint pass with no new errors
- [ ] Tested on: <!-- iOS / Android / web / staging -->
- [ ] Error states handled (network failure, empty, loading)
- [ ] Rollback is safe (no destructive migration, no breaking contract change)
- [ ] No unrelated changes in the diff

## Architecture decision

<!-- If this PR makes a non-obvious technical choice, add an ADR and link it. Otherwise delete this section. -->

ADR: `docs/adr/NNNN-*.md`

## Redline exemption

<!--
Only fill this in if a process check above is failing and you are asking to merge anyway.
Delete the whole section otherwise. A label alone no longer exempts anything: the gate
reads THIS block, and an exemption with no reason and no end date is an opt-out, not an
exemption.

  - reason:  what is being accepted and why, in a sentence a reader in three months
             can act on. "Needed for release" is not one.
  - until:   YYYY-MM-DD, at most 90 days out. Longer than that is a standards change,
             not an exemption — raise it in the Redline source repo.
  - scope:   which checks it covers (checklist, adr). Omit to cover both.

This can never exempt dependency review or the secret scan. Those do not soft-fail.
-->

- reason:
- until:
- scope:

<!-- REDLINE:END -->

## Automated review

- [ ] Review comments addressed, or dismissed in-thread with a reason

<!--
Gate stuck on a process check you cannot satisfy? Apply the `redline-exempt` label AND
fill in the `## Redline exemption` section above. The label says a check was waived; the
block says who accepted what, why, and until when — and the gate reads the block.
It does NOT bypass dependency review or the secret scan — those never soft-fail.
-->