82 lines
2.9 KiB
Markdown
Executable File
82 lines
2.9 KiB
Markdown
Executable File
# Contributing to Sorcery-Go
|
|
|
|
> *"The Coven grows stronger with every mage who joins the circle."*
|
|
|
|
Thank you for your interest in improving Sorcery-Go. This document describes
|
|
how to contribute code, spells, documentation, and toolchains to the
|
|
Sovereign Coven.
|
|
|
|
**Sorcery-Go is developed by dcos.net. It is not affiliated with Source Mage
|
|
GNU/Linux or sourcemage.org.**
|
|
|
|
## Code Contributions
|
|
|
|
1. **Fork & branch** — create a feature branch off `master`:
|
|
`git checkout -b feature/your-feature`
|
|
|
|
2. **Build & test** — every PR must pass `make build && make test`:
|
|
```bash
|
|
make build
|
|
go test ./pkg/...
|
|
```
|
|
|
|
3. **Style** — follow [Effective Go](https://go.dev/doc/effective_go) and
|
|
`gofmt -s`. Run `go vet ./...` before pushing.
|
|
|
|
4. **Doc comments** — every exported type and function must have a Go doc
|
|
comment that starts with the identifier name. See `pkg/dag/dag.go` for
|
|
the house style.
|
|
|
|
5. **Tests** — every new package must include a `_test.go` file. The DAG,
|
|
Warding, Legal, and Tomb packages already have tests you can use as
|
|
templates.
|
|
|
|
6. **Commit messages** — follow the conventional-commits style:
|
|
```
|
|
feat(cast): add --matrix flag for parallel arch builds
|
|
fix(tomb): handle empty epitaph in VerifyRoot
|
|
docs(security): add firewall rules reference for new deployments
|
|
```
|
|
|
|
## Spell Contributions (Grimoire)
|
|
|
|
New spells go under `grimoire/<section>/<spell>/` and must include:
|
|
|
|
- `DETAILS` — required metadata (see `docs/SPELL_SPEC.md`)
|
|
- `DEPENDS` — runtime/build/optional dependencies
|
|
- `BUILD` — compilation script (runs inside the OverlayFS sandbox)
|
|
- `CONFIGURE` — optional ICE y/n queries
|
|
|
|
Use `quill new <name>` to scaffold a new spell — it auto-hashes the source
|
|
tarball and emits the four files in the correct format.
|
|
|
|
## Toolchain Contributions
|
|
|
|
If you maintain a custom GCC/LLVM toolchain that should be admitted to the
|
|
Coven:
|
|
|
|
1. Add a `TOOLCHAIN.md` (see `docs/TOOLCHAIN_SPEC.md`) under
|
|
`/opt/sorcery-go/toolchains/<triple>/`.
|
|
2. Run `pkg/toolchain.Validate(path)` — the report must show `Passed: true`.
|
|
3. Sign the toolchain directory with your PGP key.
|
|
|
|
## Documentation
|
|
|
|
The SGDS (Sorcery-Go Documentation Standard) lives in `docs/METADATA.md`.
|
|
Every new module or major feature must include a corresponding markdown
|
|
file. Keep the arcane vocabulary consistent — see `docs/RITUAL_OF_CASTING.md`
|
|
for the canonical names (Cauldron, Tomb, Warding, Sanctum, Coven, etc.).
|
|
|
|
## Legal
|
|
|
|
Sorcery-Go is developed by dcos.net and is not affiliated with Source Mage
|
|
GNU/Linux or sourcemage.org. By submitting a pull request you agree to license
|
|
your contribution under AGPL-3.0-or-later. The Legal Sentinel's
|
|
`strict_copyleft` posture is the default for the project itself — please do
|
|
not introduce proprietary code.
|
|
|
|
## Code of Conduct
|
|
|
|
Be excellent to each other. The Coven is a circle of mutual respect —
|
|
hostility will not be tolerated.
|