Skip to content

Decision records

Each page here records one of PyFr's own decisions: what was decided, when, why, and what it cost. They are short on purpose. The full reasoning lives in the design specification, and each record links to the section that argues its case.

Why they are never edited

An accepted record is history. It says what was decided on a date, given what was known then. Changing your mind means writing a new record and marking the old one superseded — never rewriting the old one, which destroys the only account of why the software is the way it is.

For the same reason, records are exempt from the review-date warning that covers every other page on this site. A decision does not go stale.

Adding one

Copy template.md, take the next number, and add it to the nav in mkdocs.yml. The numbering is shared with the service's records — the next number is the one after the highest on either site, so 0018 follows 0017 wherever it is written. Write it when the decision is made, while the alternatives are still fresh — a record written six months later is a reconstruction, and it shows.

The records

Record Decided
0002 cookiecutter over Copier and cruft M0
0003 uv, not pip or Poetry M0
0017 The template is the source of truth, and a golden diff proves it M7
0018 The updater is a published command-line tool, and the template branch lives on the remote M8

Every other decision belongs to the reference service — the project this template generates — and is recorded on its own site.