Context sections

Sections are written as ### SectionName in the commit body. There are 11 sections, each capturing a specific piece of context.

Section Description
WhyWhy this change was necessary
CauseRoot cause of the issue being fixed
ApproachHow the solution works
AlternativesOther approaches that were considered
TradeoffsWhat was traded off or accepted
MetricsPerformance or size impact numbers
InvariantsProperties that must remain true
MigrationSteps needed to migrate existing code/data
CoversWhat the tests cover (or don't)
BreakingBreaking changes and who is affected
RefsLinks to issues, PRs, docs, or discussions