1.2 KiB
1.2 KiB
Contributing
Development principles
Every change must preserve these rules:
- The controller remains unprivileged.
- The controller never accesses Docker directly.
- The controller never executes arbitrary system commands.
- Privileged behavior belongs in the local agent.
- Agent operations are typed and explicitly allow-listed.
- Requests and responses are bounded and validated.
- State-changing work is persisted.
- Backup verification remains read-only.
- Docker resources are discovered through labels, not physical names.
- Tests accompany protocol and security-boundary changes.
Local verification
cargo fmt --all -- --check
cargo check --workspace
cargo test --workspace
git diff --check
Commit messages
Use concise Conventional Commit-style messages where practical:
feat: expose bounded service logs through agent
fix: reject unsafe backup identifiers
refactor: remove Docker access from controller
docs: document restore safety model
Protocol changes
Protocol changes require stable JSON-shape tests, serialization round trips, compatibility consideration, and strict validation.
Do not add a generic shell-command request.