Project
How kogut is built
Tests, CI, review, dependencies, releases, and AI tools.
Maintainer
kogut has one maintainer, who reviews and merges every change. Contributions follow CONTRIBUTING.md.
Tests
Unit tests sit beside the Rust code. Engine scenarios replay fixed timelines, and the
probes, notifications, and server have integration tests. crates/e2e runs the real
server and agent together. scripts/e2e.sh drives the built binary through setup,
sign-in, host enrolment, the agent, a backup, and shutdown; it runs for changes to
startup, sign-in, the agent, or the CLI, and not in CI. The tracker and kogut edge have
TypeScript tests.
CI
Every pull request and push to main runs:
- A size check,
cargo fmt, Clippy with warnings as errors, andcargo test, plus the core crate’s tests in release mode and Clippy and the tests of the agent-only build cargo deny --config .github/deny.toml checkfor licences, sources, and advisories- Formatting, type checks, lint, tests, and the build of every pnpm package
- A gitleaks scan of the full git history
A change is merged only when these pass. A weekly job checks the Rust and npm dependencies against the advisory databases.
Review
The maintainer reads and tests every pull request before merging it. The maintainer’s own
changes go through the same checks and a second review before they land on main.
Dependencies
cargo deny allows only permissive licences, such as MIT, Apache-2.0, BSD, ISC, and Zlib,
and rejects unknown registries, git sources, and wildcard versions. GitHub Actions are
pinned to a commit. Dependabot opens weekly grouped updates for Rust crates, npm
packages, GitHub Actions, and the Docker base image.
Releases
A version tag starts the release workflow. It builds static Linux binaries for x86_64 and
aarch64, the full one and the agent-only build,
publishes them with SHA-256 checksums and build provenance attestations, and pushes a
multi-arch image of each to ghcr.io. Releases have no fixed schedule. See
Versioning.
AI tools
The maintainer uses AI coding tools, and their output goes through the same tests, CI, and review as any other change.