Summary
Add java.time.Duration constants MIN and MAX.
Problem
To use as sentinels and in testing, it is desirable to have constants which represent the extremes of the Duration range. Defining these constants on-demand is error-prone because of the asymmetrical internal representation of Duration.
Solution
Add constants for the extreme values of java.time.Duration to that class.
Specification
NOTE: while it is unremarkable, and probably does not require a CSR, aside from the constants themselves, the below diff includes a slight rephrasing of a constant specification in ChronoUnit:
    diff --git a/src/java.base/share/classes/java/time/Duration.java b/src/java.base/share/classes/java/time/Duration.java
    index 88d49fa9e4523..379758bcbaea3 100644
    --- a/src/java.base/share/classes/java/time/Duration.java
    +++ b/src/java.base/share/classes/java/time/Duration.java
    @@ -138,6 +138,37 @@ public final class Duration
          * Constant for a duration of zero.
          */
         public static final Duration ZERO = new Duration(0, 0);
    +    /**
    +     * The minimum supported {@code Duration}, which is {@link Long#MIN_VALUE}
    +     * seconds.
    +     *
    +     * @apiNote This constant represents the smallest possible instance of
    +     * {@code Duration}. Since {@code Duration} is directed, the smallest
    +     * possible duration is negative.
    +     *
    +     * The constant is intended to be used as a sentinel value or in tests.
    +     * Care should be taken when performing arithmetic on {@code MIN} as there
    +     * is a high risk that {@link ArithmeticException} or {@link DateTimeException}
    +     * will be thrown.
    +     *
    +     * @since 26
    +     */
    +    public static final Duration MIN = new Duration(Long.MIN_VALUE, 0);
    +    /**
    +     * The maximum supported {@code Duration}, which is {@link Long#MAX_VALUE}
    +     * seconds and {@code 999,999,999} nanoseconds.
    +     *
    +     * @apiNote This constant represents the largest possible instance of
    +     * {@code Duration}.
    +     *
    +     * The constant is intended to be used as a sentinel value or in tests.
    +     * Care should be taken when performing arithmetic on {@code MAX} as there
    +     * is a high risk that {@link ArithmeticException} or {@link DateTimeException}
    +     * will be thrown.
    +     *
    +     * @since 26
    +     */
    +    public static final Duration MAX = new Duration(Long.MAX_VALUE, 999_999_999);
         /**
          * Serialization version.
          */
    diff --git a/src/java.base/share/classes/java/time/temporal/ChronoUnit.java b/src/java.base/share/classes/java/time/temporal/ChronoUnit.java
    index 8f94e061d4d48..6e944b296daa8 100644
    --- a/src/java.base/share/classes/java/time/temporal/ChronoUnit.java
    +++ b/src/java.base/share/classes/java/time/temporal/ChronoUnit.java
    @@ -1,5 +1,5 @@
     /*
    - * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
    + * Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
      * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
      *
      * This code is free software; you can redistribute it and/or modify it
    @@ -184,10 +184,9 @@ public enum ChronoUnit implements TemporalUnit {
          * Artificial unit that represents the concept of forever.
          * This is primarily used with {@link TemporalField} to represent unbounded fields
          * such as the year or era.
    -     * The estimated duration of this unit is artificially defined as the largest duration
    -     * supported by {@link Duration}.
    +     * The estimated duration of this unit is artificially defined as {@link Duration#MAX}.
          */
    -    FOREVER("Forever", Duration.ofSeconds(Long.MAX_VALUE, 999_999_999));
    +    FOREVER("Forever", Duration.MAX);
     
         private final String name;
         private final Duration duration;
- csr of
 - 
                    
JDK-8366829 Add java.time.Duration constants MIN and MAX
-         
     - Resolved
 
 -