gitmote / CONTRIBUTING.md · history · branches
3711 bytes · raw
Entry point for anyone — human or agent — working on gitmote. Read it first.
The repo is documentation-first. The design lives in docs/architecture/ and is the source of truth for what the system does and why it's shaped this way. If code and docs disagree, fix one of them in the same change — never leave the divergence silently.
docs/
architecture/ The design and its decisions — source of truth
notes/ Open design questions, one concern per file
evolution/ Speculative future directions — ideas, not commitments
ops.md Canonical infra doc — deploy, env, the single-writer rule
tasks/ The frontier — active/upcoming work; deleted once landed
The Go server, Makefile, and CI arrive as code lands.
Conventional Commits, no scope.
type: short imperative description
Optional body explaining why, not what.
Types: feat fix refactor perf ci chore docs revert
Breaking change: append ! — feat!:.
feat: pre-receive hook — RPC the CAS back to the parent."Safe" is the top priority (see safety), so tests are not optional:
git (clone / fetch / push) against the
server — the protocol is the contract, not our idea of it.Every change passes, in order — format → lint → test:
gofmt / goimports # format
golangci-lint run # lint (includes vet)
go test ./... # test
A Makefile will front these as the single source of truth once code lands; CI runs the same targets, so green locally = green in CI.
tasks/ is the frontier — one file per intent-to-implement unit of work,
deleted once it lands (commits and git history are the record; tasks are not
a changelog). Each file follows:
## Spec What the change must achieve (link the docs/architecture/ section)
## Current How it works today (or "nothing yet")
## Change The plan — files, approach, trade-offs
## Verify How we'll know it's done — the tests/checks that must pass
Keep tasks/README.md a forward-looking, one-line-per-item list of
active/upcoming work. Never let it accrete "landed X…" prose.