Thank you for contributing to Framespace Genesis.
This repository enforces strong provenance and integrity guarantees. As a result, contributions must satisfy three independent requirements:
- Developer Certificate of Origin (DCO)
- Signed-off commit messages
- Verified cryptographic commit signatures (SSH or GPG)
All three are required for CI to pass.
Before submitting a Pull Request, ensure that:
- You have signed the DCO agreement
- Every commit contains a
Signed-off-by:trailer - Every commit is cryptographically signed
- The working directory is clean when using repository scripts
- Branch protection rules may prevent force-pushes
Failing any of these will cause CI checks to fail.
curl -fsSL https://bun.sh/install | bashVerify:
bun --versionUse the same email as your GitHub account:
git config --global user.name "Your Name"
git config --global user.email "you@example.com"This repository enforces verified signatures.
git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519.pub
git config --global commit.gpgsign trueIf your key has a different name, list keys:
ls ~/.ssh/*.pubmkdir -p ~/.config/git
echo "$(whoami) $(cat ~/.ssh/id_ed25519.pub)" > ~/.config/git/allowed_signers
git config --global gpg.ssh.allowedSignersFile ~/.config/git/allowed_signersGo to: GitHub → Settings → SSH and GPG Keys → New SSH Key
Important:
- Set Key Type to:
Signing Key - Do NOT add it only as an authentication key
Sign once per repository:
bun run sign-dcoThis records your DCO agreement in the repository.
This workflow avoids history rewriting and CI failures.
git checkout -b my-feature-branch
bun install
# Make your changes
git add .
git commit -S --signoff -m "Describe your change clearly"
git push -u origin my-feature-branchThen open a Pull Request.
The repository provides a helper:
bun run pushBehaviour:
- Requires a clean working directory
- May squash unsigned commits into a signed commit
- Does NOT automatically fix missing
Signed-off-bytrailers on older commits - Will fail if untracked or unstaged files exist
Error:
Missing: Signed-off-by trailer
Fix:
git commit --amend -S --signoff --no-editCause:
- Git signing not configured
- Signing key not registered in GitHub as a Signing Key
Fix:
- Configure SSH signing (see above)
- Amend the commit:
git commit --amend -S --no-editThe DCO check validates all commits between main and your PR head.
Inspect commit range:
git log --oneline origin/main..HEADIf any commit is missing sign-off or signature, rewrite them:
git rebase -i HEAD~N
git commit --amend -S --signoff --no-edit
git rebase --continueThis repository may block force-push on branches.
If you rewrote commit history:
git checkout -b my-branch-fixed
git push -u origin my-branch-fixedThen open a new Pull Request and close the old one.
Example:
Working directory has uncommitted changes
Fix options:
-
Commit the files
-
Stash them:
git stash -u bun run push git stash pop
-
Or ignore local artefacts (e.g.
bun.lock) using:echo "bun.lock" >> .git/info/exclude
A Pull Request will only be mergeable when:
- All CI checks pass
- DCO validation passes
- Signature verification passes
- At least one reviewer with write access approves the PR
Contributors cannot merge their own PR without external approval due to repository governance rules.
git log -3 --show-signature
git log -3 --pretty=%BEnsure:
- Each commit shows a valid signature
- Each commit contains a
Signed-off-by:line