Skip to content

Decisions

The decisions that shape the blueprint, each with its reasons, so that a later change can see why things are as they are. A decision that changes an earlier one gets a new record, and the earlier one says which record replaces it.

Copy the template to the next free number and describe the decision in the pull request that makes it.

Record Decision Status
0001 Record the decisions that shape the project accepted
0002 Generate the repositories with Copier and keep them current with a bot accepted
0003 Write the changelog in the pull requests, and let the release bot assemble it accepted
0004 Keep the settings of every repository as code, applied by a bot accepted
0005 Keep the dependencies current with a self-hosted Renovate accepted
0006 Publish a beta of the next release after every change for users, where a project wants it accepted
0007 Keep one update pull request, move it on with each release, and leave a maintainer's commits alone accepted
0008 Pin no action to a branch: run a tool that follows its branch as an image accepted
0009 Run a check only where it can change a result accepted
0010 Roll out each release one repository at a time, and report every repository that misses it accepted
0011 Every download tries again, the checks cache what they download, and the CI skips no check for an unreachable server accepted
0012 Refresh every lock file once a week, and let the refresh wait for the maintainer accepted
0013 Name the runner with its version, and try the next one every week before the jobs move accepted
0014 Recover from a stalled check without a person, once accepted
0015 Tell coding agents the rules in AGENTS.md, with the files of a project kept equal to copier.yml accepted
0016 Show every diagram as a picture drawn from its Mermaid source, because the GitHub app draws no Mermaid accepted
0017 Cache what a check can verify, never a finding: downloads by their lock files, php-cs-fixer by content, Psalm without a cache accepted
0018 Each pull request writes its entry of the changelog into a file of its own accepted
0019 A bot that fails keeps one issue open until it passes again accepted
0020 Update only to a release that the release workflow made, and let only the release app create release tags accepted
0021 Install the tools with uv, start mypy from its cache, and end every step that installs, builds or downloads after five minutes accepted
0022 Every check explains its failure, in the check and in one comment, also on a pull request from a fork accepted
0023 Pull requests fix what a command can fix by themselves: the check fixes, the fix bot commits, suggests or opens a pull request for main accepted
0024 Take over each verified release of the issue assistant with a bot of the blueprint, not with Renovate accepted
0025 Run the tests of Python projects on every core, with the same coverage gate accepted
0026 Build the website once, in the job of the check, and keep the downloads of Material for a week accepted