A merge step can combine default settings with a specific override.

Config Merge

ConfigMerge.java
public class ConfigMerge {
    record Settings(int timeoutSeconds, boolean audit) {}

    static Settings merge(Settings defaults, int overrideTimeout) {
        int timeout = overrideTimeout > 0 ? overrideTimeout : defaults.timeoutSeconds();
        return new Settings(timeout, defaults.audit());
    }

    public static void main(String[] args) {
        int overrideTimeout = ;
        Settings defaults = new Settings(30, true);
        Settings settings = merge(defaults, overrideTimeout);

        System.out.println("timeout=" + settings.timeoutSeconds());
        System.out.println("audit=" + settings.audit());
    }
}
public class ConfigMerge {
    record Settings(int timeoutSeconds, boolean audit) {}

    static Settings merge(Settings defaults, int overrideTimeout) {
        int timeout = overrideTimeout > 0 ? overrideTimeout : defaults.timeoutSeconds();
        return new Settings(timeout, defaults.audit());
    }

    public static void main(String[] args) {
        int overrideTimeout = ;
        Settings defaults = new Settings(30, true);
        Settings settings = merge(defaults, overrideTimeout);

        System.out.println("timeout=" + settings.timeoutSeconds());
        System.out.println("audit=" + settings.audit());
    }
}
public class ConfigMerge {
    record Settings(int timeoutSeconds, boolean audit) {}

    static Settings merge(Settings defaults, int overrideTimeout) {
        int timeout = overrideTimeout > 0 ? overrideTimeout : defaults.timeoutSeconds();
        return new Settings(timeout, defaults.audit());
    }

    public static void main(String[] args) {
        int overrideTimeout = ;
        Settings defaults = new Settings(30, true);
        Settings settings = merge(defaults, overrideTimeout);

        System.out.println("timeout=" + settings.timeoutSeconds());
        System.out.println("audit=" + settings.audit());
    }
}
default settings Defaults give the pipeline a complete configuration even when no override is present.
override rule The merge rule chooses the override only when it is meaningful.