Skip to content

Contributing

Xila Guard is open source under Apache-2.0 across all repositories. Contributions are welcome — bug reports, documentation, new discovery adapters, orchestrator profiles, and hardening of the opt-in features are all valuable.

License and conduct

  • License: Apache-2.0. Include the license text and accurate third-party notices (LICENSE / NOTICE in each repo). Contributions are accepted under the same license.
  • Code of conduct: each repository ships a CODE_OF_CONDUCT.md; be respectful and collaborative.
  • Security reporting: see each repository's SECURITY.md for the private reporting process (GitHub private advisories). Please do not file publicly exploitable issues in the open tracker.

Repository map

Repo Language You'd touch it to…
xila-guard-core Rust Change policy semantics, the contract / schemas, providers, CLI, or the API / inventory receiver
xila-guard-k8s Go Change CRDs, the observer, enforcement, orchestrator profiles, or the Helm chart
xila-guard-lab bash / make Add demos, fixtures, the benchmark, or supply-chain scans

The single-evaluator rule

Policy semantics live once, in xila-guard-core (Rust). The Go layer and the lab never reimplement policy logic — they build a normalized request and call core. Adding or changing a predicate therefore means:

  1. update the Rust types + reason code + evaluator;
  2. regenerate the JSON Schemas and conformance fixtures;
  3. extend the Go structs;
  4. re-run both test suites.

The canonical wire contract is the versioned JSON Schema in core; a drift- detecting test fails CI in either language if Rust and Go diverge. See ADR 0001.

Honesty rules (non-negotiable)

The project's credibility rests on never over-claiming. When you contribute:

  • Clearly separate real from simulated. Never describe mock / admin_inventory evidence as attestation, or telemetry as isolation proof.
  • A simulated attestation result (sim: verifier) must never be accepted by enforcement.
  • Unknown / unsupported / stale / untrusted evidence must never become allow — fail closed.
  • Do not claim certifications, verified isolation, legally-compliant placement, or defense against a malicious host administrator.
  • Verify each implemented capability against the exact upstream version and hardware configuration; record justified deviations in an ADR.

Local checks

# core (Rust)
cd xila-guard-core
cargo fmt --all --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace

# k8s (Go)
cd xila-guard-k8s
go build ./... && go vet ./... && go test ./...
helm lint charts/xila-guard

# everything, from the lab
cd xila-guard-lab && make check

make check runs core fmt / clippy / test, Go vet / test, helm lint, and the offline scenario assertions. The offline path needs no Kubernetes and no GPU.

Where to start

  • Read PROJECT.md in xila-guard-core — it is the implementation contract.
  • Browse the architecture decision records to understand why things are the way they are.
  • Try make demo-offline, then make demo-kind, to see the evaluator and the observer in action.