Developers working on polysafe-gitfixer. For consumers (people
calling or depending on it) see
usage.
Prerequisites — the minimum versions and where to get them:
-
<tool1>v`<version>` —<installinstruction>. -
<tool2>v`<version>` —<installinstruction>. -
SSH signing key configured (estate policy — all commits must be signed). See standards/docs/secure-coding-training.md.
One-shot setup:
git clone git@github.com:hyperpolymath/polysafe-gitfixer.git
cd polysafe-gitfixer
just setup # installs deps, sets up hooks
just test # runs the full test suite-
Unit:
justtest-unit— fast, no I/O. -
Integration:
justtest-int— uses real services (database, HTTP, etc.). Estate policy: prefer real over mocked (seefeedback_integration_tests_real_dbin maintainer’s memory). -
Property:
justtest-prop— randomised, slower; budget documented indocs/proof-debt.mdif applicable. -
Full:
justtest— runs all of the above.
We enforce style via CI (governance-reusable.yml from hyperpolymath/standards). Locally:
just fmt # auto-format
just lint # static checks-
All commits must be signed, with SSH for people (CI enforces; see standards).
-
All source files must carry an SPDX-License-Identifier header (CI enforces).
-
Conventional commits —
feat,fix,chore,refactor,docs,test,ci,revert(CHANGELOG is auto-generated from these viachangelog-reusable.yml).
-
Branch off
mainasclaude/<topic>(for AI agents) or<initials>/<topic>(for humans). -
Make focused, narrow commits — one logical change per commit.
-
Open a PR against
main. -
Enable auto-merge immediately on every PR you open (
ghprmerge<num>--auto--squash) — estate standing policy (see standards#196 audit and policies). -
CI must be green. The PR auto-merges when checks pass + reviews land.
-
State the why in the PR body — what does this dependency unlock?
-
Check provenance (maintained, audited, no malicious history).
-
Pin to a SHA, not a tag.
-
Update
docs/architecture.adoc#Dependencies.
When you make a non-obvious design decision, write it down:
-
Copy
docs/decisions/0001-template.adoc→0002-<slug>.adoc. -
Fill in: Context, Decision, Consequences, Alternatives.
-
Link the ADR from the README or relevant code as a comment.
-
Bugs in
polysafe-gitfixer: file athyperpolymath/polysafe-gitfixer/issues. -
Estate-wide concerns (policy, conventions, CI): file at
hyperpolymath/standards/issues.
Every commit that reaches the default branch must be signed; a ruleset refuses unsigned pushes. Estate policy: SIGNING-POLICY.
- People and interactive agents sign with an SSH key registered on GitHub
as a signing key (
gpg.format=ssh,user.signingkey=<key>.pub,commit.gpgsign=true). The committer email must be verified on that account. - Apps, bots and workflows never
git pushlocal commits. They write through the API (createCommitOnBranchor the estatesigned-pushaction) so that GitHub signs each commit. - Merge PRs with squash. The ruleset checks every commit on the PR branch,
not just the result, so one unsigned commit blocks the merge. Re-create such a
branch with signed commits (
git cherry-pick -S) and open a new PR. Rebase-merge replays commits unsigned and is disabled.