Amendments and releases
Approving an amendment
Built so that the person spends as little time as possible on it, which is
what purpose asks for. The person reads what the constitution
says and nothing
else: tools, checks and fixtures are ordinary changes (see File structure).
While the constitution is a draft, an amendment pull request is merged
once agent review has passed, and the person reads it afterwards on a
preview of the site; the description is still written as below, so that
the reading is quick. Only a change to an approved edition waits for the
person’s yes on a named head commit before it is merged. How the repo
keeps the edition in force and a draft of the next one is settled by
text-and-sources and draft-and-edition.
- An amendment pull request changes only
constitution/: the sources and the generated files rebuilt from them. - Its description opens with the diff of the generated text in the language the person reads, then the same diff in each other language, collapsed. The generated diff is what agents will read, numbers included; the person does not need to read the sources.
- Agent review is finished before the person is asked: CI’s constitution check is green, and the reviewer has checked that the texts in all languages say the same thing. A person approving the change approves the texts in all languages on the strength of that review.
- The description ends with the open questions, each clear and easy to
answer and with a recommended answer (
asking). - For an approved edition, the person’s yes names the head commit it
approves, and the merge lands exactly that commit (
independent-review). proposing-amendmentsasks for the generated diff in the language the approving person reads, andamendment-languagesfor the texts in all languages to change together; the steps above are how this repo meets them. If the head changes afterwards, the person is asked again with only the diff since the approved head.
Releases and versions
- Versions are tags
v<major>.<minor>.<patch>onmain. A constitution amendment or a rule change that alters behavior is at least a minor bump; a change to tools that alters output is at least a minor bump; the rest is a patch. - A release tag goes only on a
maincommit whose push-triggeredcheckrun succeeded on its first attempt. A rerun that turned green does not qualify; tag a later commit that passed the first time. - Pushing a release tag makes a version available. By default a release
is an item of
must-ask, added by the rulemust-ask-items, and needs a person’s yes; a project may move it underrelaxations.project-overrides. - The crates under
crates/are published to crates.io, each with its own version in itsCargo.toml; publishing one is a release too.statute0.0.1 is a placeholder that holds the name. - The overlay pins a tag and its commit SHA and refuses to build if they disagree. It moves to a new version by a change in the overlay, reviewed there.