Measured today against a v0.16.0 instance while checking that a chant-authored manifest applies idempotently.
Applying the same manifest twice, unchanged, the second apply reports:
Environment/toolchain updated
Vault/prod-creds updated
Agent/prod-steward updated
ApplyResult.action is created | updated | error, so a document that reconciled to exactly what was already stored is indistinguishable from one that wrote a real change. A client that wants to report "nothing drifted" has to diff the estate itself, or read every resource back and compare.
The ask is one more value, unchanged, returned when reconciliation produced no field change. Everything else about the endpoint already behaves idempotently, which is what makes the reporting gap visible.
Context for why a client cares: chant renders an apply summary a person reads before deciding whether an environment drifted, and its own reconciler for the three team-side kinds (INTENTIUS/chant#2127) already reports unchanged because it compares before writing. The three kinds that go through bulk apply cannot, so one summary carries two different meanings for the same word.
Related: #1636, which extends bulk apply to Teammate, Schedule and Webhook. If those land here, they will want the same third value.
Measured today against a v0.16.0 instance while checking that a chant-authored manifest applies idempotently.
Applying the same manifest twice, unchanged, the second apply reports:
ApplyResult.actioniscreated | updated | error, so a document that reconciled to exactly what was already stored is indistinguishable from one that wrote a real change. A client that wants to report "nothing drifted" has to diff the estate itself, or read every resource back and compare.The ask is one more value,
unchanged, returned when reconciliation produced no field change. Everything else about the endpoint already behaves idempotently, which is what makes the reporting gap visible.Context for why a client cares: chant renders an apply summary a person reads before deciding whether an environment drifted, and its own reconciler for the three team-side kinds (INTENTIUS/chant#2127) already reports
unchangedbecause it compares before writing. The three kinds that go through bulk apply cannot, so one summary carries two different meanings for the same word.Related: #1636, which extends bulk apply to Teammate, Schedule and Webhook. If those land here, they will want the same third value.