# Contributing

UltraCloud uses Nix as the primary development and validation entrypoint.

## Setup

```bash
nix develop
```

## Before sending changes

Run the strongest local validation you can afford.

```bash
nix run ./nix/test-cluster#cluster -- fresh-smoke
```

For smaller changes, use the narrower commands under `nix/test-cluster`.

## Expectations

- keep service startup on file-first `--config` paths
- prefer Nix-native workflows over ad hoc host scripts
- do not commit secrets, private keys, runtime state, or generated disk images
- document new validation entrypoints in `README.md` or `docs/`
- when changing multi-node behavior, validate on the VM cluster rather than only with unit tests
