Skip to content

Write down the pull request convention - #129

Closed
evansibok wants to merge 2 commits into
mainfrom
ev/pr-template
Closed

Write down the pull request convention#129
evansibok wants to merge 2 commits into
mainfrom
ev/pr-template

Conversation

@evansibok

Copy link
Copy Markdown
Contributor

Asked why the PRs here look improvised. They are not: #122 through #128 all use the same shape. But nothing records it, so following it means reading the last six PRs first, and anyone who does not read them writes something else.

The convention existed only in the PRs themselves

Extracted from the merged history:

.github/pull_request_template.md now carries that, and CONTRIBUTING.md gains a short section for the two parts that actually matter: name sections after the problem, and always verify in the open.

The template is mostly HTML comments. A form with fields to fill in produces filled-in fields; the useful part is the two rules, which live in CONTRIBUTING.md where they are read once rather than skimmed every time.

Verification

No code. .github/pull_request_template.md is picked up by GitHub for PRs opened through the web UI; gh pr create --body overrides it, which is why the convention is also written in CONTRIBUTING.md rather than only in the template.

Rendered the template on this PR before replacing it with this body.

Bundles all shared ~/.nanny/certs. A second app's generate refused to
run, and --force would have replaced the first app's certificate
authority, invalidating every certificate already deployed from it with
no indication that had happened. They now live at
~/.nanny/servers/<app_id>/certs/{sandbox,live}/, beside the governor
state of the app they belong to, so every certs command has to run inside
the project.

--live selects the authority, on the certs commands and on --serve, which
has to look where they wrote. Two environments means two authorities, and
that is the whole point: a CA is what a governor trusts, so one authority
spanning both means a client certificate issued for sandbox is admitted
to production, and the production governor cannot tell, because the
signature really is valid. Sandbox is the default and production is typed
every time, because rotate takes no confirmation and reissuing a live
bundle stops every joiner still holding the old client certificate.

Reuses the words the nny_sdbx_/nny_live_ prefixes already put in front of
users rather than adding a second vocabulary for the same idea. They stay
independent axes: this picks the trust anchor, the key prefix picks the
cloud, neither reads the other.

Removes --out-dir, which existed only on generate while rotate, show,
import and remove hardcoded the default, so a bundle written with it
could not afterwards be rotated or inspected.

Removes --config. A project has one nanny.toml at its root, which the
runtime already enforces. The flag was global, so it appeared under every
subcommand, and exactly one path read it: plain nanny run. --serve
accepted and ignored it, reading ./nanny.toml regardless. Both paths now
resolve from the working directory. The tests that used it to target a
temporary project set the child's working directory instead, which is
per-process and safe under a parallel run where the flag's replacement
would not have been.

Fixes a documented instruction to keep ca.key on the server machine. It
signs certificates, so whoever holds it can mint a client that any
governor trusting that CA will admit. It never leaves the machine that
generated it.
Every PR here already follows one shape: sections named after the problem
rather than the change, numbered when there are several, and a
Verification section last saying what ran and what was added. Nothing
recorded it, so following it meant reading the last six PRs first, and
anyone who did not read them wrote something else.

The template is mostly comments, because the parts worth enforcing are
the two rules in CONTRIBUTING.md and not a form to fill in.
@evansibok

Copy link
Copy Markdown
Contributor Author

Folded into #128, which now carries both commits.

@evansibok evansibok closed this Sep 5, 2026
@evansibok
evansibok deleted the ev/pr-template branch September 5, 2026 18:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant