- Title: Use Conventional Commits so history and release notes stay readable. Examples:
feat(agent): add hook limit,fix(cli): handle EOF,chore(ci): bump Go version. - Checks: The
CIworkflow runs Go lint (golangci-lint), Go tests (with coverage on Linux), Rustfmt/clippyonphantom-cli+phantom-client(not the Tauri crate), Rustllvm-covfor those packages, full build including eBPF on Ubuntu, macOS build/test, and a Linux job that builds the agent with BPF artifacts (extended e2e is disabled until restored).PR checksvalidates the PR title. - Merge: Squash merge is recommended so the default commit message matches the PR title.
In GitHub Settings → Branches, for main / master consider:
- Require a pull request before merging
- Require status checks to pass before merging. Enable every job from the CI workflow (note matrix jobs appear per OS, e.g.
Lint (ubuntu-latest)), plus Conventional PR title from PR checks - Optionally require branches to be up to date before merging
Exact job names appear in the Actions tab and may include matrix suffixes (e.g. OS); pick the checks that match your workflow run.
- Linux Go coverage is uploaded as a workflow artifact (
go-coverage). Optional: add a repository secretCODECOV_TOKENto push Go and Rust reports to Codecov (flagsgoandrust).
- Tag a version with
v*(e.g.v0.2.0) to trigger the Release workflow. It runs a Preflight job (go test ./..., Rust tests forphantom-cli/phantom-client), then builds cross-compiledphantom-agentbinaries andphantom-clifor Linux amd64, and creates a GitHub Release with those assets.
make proto— regenerate Go protobufs (needsprotoc).make desktop-install/make desktop-dev— Phantom Desktop (Tauri);make desktop-buildfor release binary (see src/desktop/README.md).make test-e2e-*— currently no-op placeholders whiletest/e2eis empty. See docs/testing.md.