# (Draft) GitOps Principles 1.0.0-rc.1
### Objective
The objective of this document is to propose a release candidate draft reconciling and incorporating the varying views of all GitOps Working Group community participants.
### Process
* ✅ Review principles overall and agree
* ✅ Review wording/format of each principle to reach agreement
* ⏳ Share with maintainers for first round of feedback
* Present as RC1 PR, call vote binding and non-binding
## Shorthand
1) Declarative
2) Versioned and Immutable
3) Configs pulled from version control Automatically
4) Reconciliation Is Continuous
5) Closed loop?
# Draft for maintainer approval
The desired state of a GitOps managed system must be:
1. **Declarative**
A system managed by GitOps must have its desired state expressed declaratively.
1. **Versioned and Immutable**
Desired state is stored in a way that enforces immutability, versioning and retains a complete version history.
1. **Pulled Automatically**
Software agents automatically pull the desired state declarations from the source.
1. **Continuously Reconciled**
Software agents continuously observe actual system state and attempt to apply the desired state.
----
## Requesting maintainer feedback about existing principle 5
We're not including this in the draft as of now because it's not clear how to explain it's necessity for GitOps. Why exactly was this principle here initially? Control theory language is valuable, but is it necessary here?
- Is it to say the software agents must take into account feedback/output from the observed actual state in deciding how or if to reconcile? If so, how is this different than what we already say in princple 4?
- Is it so say the software agents must take into account feedback/output from any previous reconciliation attempts (for example number of retries before stopping and notifying)?
- Since we are unclear on it's value add to the other 4 principles, we've left it out of the RC1 draft for now.
- Is this principle important for notifications?
5. **Operated in a closed loop**
Software agents observe desired state and meta-state to take actions based on policy when the desired state cannot be reached. This may include things like notifications, rollbacks, etc.
## Requesting maintainer feedback about proposed new principle 6
We had discussed splitting this note from principle 4 into it's own principle, to emphasize this as a critical point for GitOps. We are unclear whether we feel as a group this is already clear from the current wording of principle 4, or is this needs an additional explicit kick.
<!-- Proposed split into own principle -->
6. **The Source of Truth**
Declared desired state will always take precedence over any other source of configuration.