@@ -1443,14 +1443,23 @@ default DescribeFeaturesResult describeFeatures() {
1443
1443
* error code for each supplied {@link FeatureUpdate}, and the code indicates if the update
1444
1444
* succeeded or failed in the controller.
1445
1445
* <ul>
1446
- * <li>Downgrade of feature version level is not a regular operation/intent. It is only allowed
1447
- * in the controller if the {@link FeatureUpdate} has the allowDowngrade flag set. Setting this
1448
- * flag conveys user intent to attempt downgrade of a feature max version level. Note that
1449
- * despite the allowDowngrade flag being set, certain downgrades may be rejected by the
1450
- * controller if it is deemed impossible.</li>
1451
- * <li>Deletion of a finalized feature version is not a regular operation/intent. It could be
1452
- * done by setting the allowDowngrade flag to true in the {@link FeatureUpdate}, and, setting
1453
- * the max version level to a value less than 1.</li>
1446
+ * <li>Downgrading a feature version level is not a common operation and should only be
1447
+ * performed when necessary. It is permitted only if the {@link FeatureUpdate} specifies the
1448
+ * {@code upgradeType} as either {@link FeatureUpdate.UpgradeType#SAFE_DOWNGRADE} or
1449
+ * {@link FeatureUpdate.UpgradeType#UNSAFE_DOWNGRADE}.
1450
+ * <ul>
1451
+ * <li>{@code SAFE_DOWNGRADE}: Allows downgrades that do not lead to metadata loss.</li>
1452
+ * <li>{@code UNSAFE_DOWNGRADE}: Permits downgrades that might result in metadata loss.</li>
1453
+ * </ul>
1454
+ * Note that even with these settings, certain downgrades may still be rejected by the controller
1455
+ * if they are considered unsafe or impossible.</li>
1456
+ * <li>Deleting a finalized feature version is also not a common operation. To delete a feature,
1457
+ * set the {@code maxVersionLevel} to zero and specify the {@code upgradeType} as either
1458
+ * {@link FeatureUpdate.UpgradeType#SAFE_DOWNGRADE} or
1459
+ * {@link FeatureUpdate.UpgradeType#UNSAFE_DOWNGRADE}.</li>
1460
+ * <li>The {@link FeatureUpdate.UpgradeType#UPGRADE} type cannot be used when the
1461
+ * {@code maxVersionLevel} is zero. Attempting to do so will result in an
1462
+ * {@link IllegalArgumentException}.</li>
1454
1463
* </ul>
1455
1464
* <p>
1456
1465
* The following exceptions can be anticipated when calling {@code get()} on the futures
0 commit comments