Decisions¶
The decisions that shape this project, 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 | The AI only reads; a job without AI writes | accepted, amended by 0025 |
| 0003 | Run on the standard library of Python alone, as a package in layers | accepted, amended |
| 0004 | Keep the prompts and texts independent of the AI vendor | accepted |
| 0005 | Close an issue with the release that ships its fix | accepted |
| 0006 | Every repository uses the workflows exactly as the templates have them | accepted, amended by 0007 and 0015 |
| 0007 | The templates live in templates/; this repository's own workflows come from the blueprint |
accepted |
| 0008 | The jobs that write reach only GitHub: Harden-Runner blocks every other host | accepted, amended by 0026 and 0029 |
| 0009 | Limit the AI runs that strangers start, counting issues rather than answers | accepted |
| 0010 | The lifecycle counts days of the calendar and keeps the day that a reminder names | accepted |
| 0011 | install pins the commit of its own checkout, the release whose templates it writes |
accepted |
| 0012 | Maintainers and the reporter steer the assistant with commands that are no part of the conversation | accepted |
| 0013 | A catalog for each language of the comments, and English around any other | accepted |
| 0014 | Bound every run of the AI by its task, put the rules in the system prompt, and show what each run cost | accepted |
| 0015 | The templates call the jobs as reusable workflows of a release, so an update is a move of the pins | accepted |
| 0016 | Learn from the maintainers' corrections as they stand on GitHub, as data of the context | accepted |
| 0017 | Four engines, and the command lines without a fitting action run in the action | accepted, amended by 0020 and 0030 |
| 0018 | A first answer in Discussions, from a workflow of its own that alone may write there | accepted |
| 0019 | A repository may name another runner for the AI, behind Harden-Runner with the hosts of its firewall policy, should the firewall runner be gone | accepted, amended by 0025 and 0027 |
| 0020 | A patch version of an engine merges on its own once the check of its contracts passed | replaced by 0030 |
| 0021 | Letters of a script of their own count as stopwords in the guess of the language, and Russian and Ukrainian get a third form of a number of days | accepted, amended |
| 0022 | The pages of docs/ hold the details, with a page for each feature, and a short README links them |
accepted |
| 0023 | A reporter can keep the AI out of their issue with a box of the form, which mutes it and takes its text out of every other run | accepted |
| 0024 | Every request asks for one version of GitHub's API and meets a reduced copy of GitHub's OpenAPI description, which a bot keeps current | accepted |
| 0025 | The AI runs only once a step proves on its runner that a host outside the firewall policy is out of reach and GitHub answers | accepted |
| 0026 | An open alert of code scanning fails one run of the Findings workflow, the first that finds it open, by a record of the reported alerts in the cache of the default branch | accepted, amended by 0028 |
| 0027 | The AI's runner in reserve has a job of its own: no job on the firewall runner has a step of Harden-Runner, whose pre step would start its agent there | accepted |
| 0028 | After the scan of a pull request of the repository itself, the Findings workflow dismisses the alerts of the pull request that findings.toml of the default branch accepts, whose review threads would block the merge, and fails for none |
accepted |
| 0029 | Every job of this project that blocks stops at the step of the blueprint Make sure that Harden-Runner blocks when Harden-Runner has no agent that blocks, and no step runs after it without the block | accepted |
| 0030 | Every update of an engine merges on its own once its checks passed, and the release waits for the Canary of main | accepted, amended by 0032 |
| 0031 | The task backlog is a matrix of calls of the reusable workflow, each a run by hand of one first analysis, which sets labels only unless the maintainer asks for the comment | accepted |
| 0032 | The title of an engine update names the engine and its versions, and each package of an engine comes in a pull request of its own | accepted |