blob: 25fea7714cdbf8ab194b0b04f4afede01cc12ba5 [file] [view] [edit]
# Merge Request Descriptions
Use this guide when writing or updating a merge request description; [`review-response.md`](review-response.md)
covers the review round that follows. A description is read by a reviewer who knows the code and wants to judge the
change, not relive it.
Lead with two to four plain sentences before any heading: what the change does and the headline outcome or number.
The first sentence continues the title rather than restarting it. Opening with a heading is the most common defect.
Structure divides; it does not decorate. `###` headings, numbered lists with one clause per distinct change, tables,
and code blocks belong where they mark a real division, as the template headings (`### Reference issue`,
`### What does this implement/fix?`, `### Additional information`) do when there is an issue to reference. Avoid a
heading per paragraph and sections that re-explain the diff line by line. State costs as flatly as wins and say what
is left undone without hedging; open the request as a Draft when validation is incomplete, naming what was not run
and why.
Prefer notation to prose: a bound, a recurrence, an identity, or two lines of pseudo-code stated exactly beats the
paragraph that spells it out, and a named theorem comes with its statement. GitLab renders KaTeX in descriptions and
comments inline math takes dollar-backtick delimiters (``$`\|AX - B\|_F \le c\,n\,\varepsilon\,\|A\|_F\,\|X\|_F`$``;
bare `$...$` does not render on gitlab.com), display equations go in a fenced ` ```math ` block. Identifiers that name
actual code (`eps`, `numext::maxi`, `nrhs`) stay in code spans; do not dress a code-level statement up in LaTeX, and do
not invent a symbol for a single sentence.
Bulk evidence goes in a collapsible appendix, and only bulk evidence: benchmark tables, validation matrices, ULP
sweeps, exhaustive case enumerations. Reasoning the reviewer needs in order to judge the change stays on the page.
Paste raw benchmark output in a fenced block, variance and p-value columns intact, rather than retyping the numbers.
```markdown
<details>
<summary>Appendix A: AVX2 benchmark numbers</summary>
...raw output...
</details>
```
The blank line after `</summary>` is required for GitLab to render the inner markdown. A description that is long
because the change is too large to review needs a split, not a fold.
Numbers carry their provenance: the exact expression, operand types and sizes, compiler and flags, and the CPU as the
OS reports it — `lscpu`'s `Model name:` on Linux, which decodes the Arm implementer/part codes `/proc/cpuinfo` leaves
raw (fall back to those codes when an old util-linux prints none), or `sysctl -n machdep.cpu.brand_string` on macOS.
Disclose a virtualized host such as WSL2, where those commands report whatever the hypervisor exposes.
Credit reporters and contributors by name or handle, and link the issue with `Closes #NNNN`. GitLab's closing pattern
is blind to negation, so "does not fix #NNNN" still closes the issue on merge; reference without closing as
"Related to #NNNN". After a review round, append an `Update:` paragraph crediting the reviewer instead of silently
rewriting the body, and keep the description and the commit messages describing the current head.