@@ -446,8 +446,38 @@ spec:
446446 - name
447447 type : object
448448 conditions :
449- description : Conditions describes the status of the Policy with
450- respect to the given Ancestor.
449+ description : |-
450+ Conditions describes the status of the Policy with respect to the given Ancestor.
451+
452+ <gateway:util:excludeFromCRD>
453+
454+ Notes for implementors:
455+
456+ Conditions are a listType `map`, which means that they function like a
457+ map with a key of the `type` field _in the k8s apiserver_.
458+
459+ This means that implementations must obey some rules when updating this
460+ section.
461+
462+ * Implementations MUST perform a read-modify-write cycle on this field
463+ before modifying it. That is, when modifying this field, implementations
464+ must be confident they have fetched the most recent version of this field,
465+ and ensure that changes they make are on that recent version.
466+ * Implementations MUST NOT remove or reorder Conditions that they are not
467+ directly responsible for. For example, if an implementation sees a Condition
468+ with type `special.io/SomeField`, it MUST NOT remove, change or update that
469+ Condition.
470+ * Implementations MUST always _merge_ changes into Conditions of the same Type,
471+ rather than creating more than one Condition of the same Type.
472+ * Implementations MUST always update the `observedGeneration` field of the
473+ Condition to the `metadata.generation` of the Gateway at the time of update creation.
474+ * If the `observedGeneration` of a Condition is _greater than_ the value the
475+ implementation knows about, then it MUST NOT perform the update on that Condition,
476+ but must wait for a future reconciliation and status update. (The assumption is that
477+ the implementation's copy of the object is stale and an update will be re-triggered
478+ if relevant.)
479+
480+ </gateway:util:excludeFromCRD>
451481 items :
452482 description : Condition contains details for one aspect of
453483 the current state of this API Resource.
@@ -530,10 +560,12 @@ spec:
530560 type : string
531561 required :
532562 - ancestorRef
563+ - conditions
533564 - controllerName
534565 type : object
535566 maxItems : 16
536567 type : array
568+ x-kubernetes-list-type : atomic
537569 required :
538570 - ancestors
539571 type : object
0 commit comments