Enum Class Milestone.Reason

java.lang.Object
java.lang.Enum<Milestone.Reason>
org.horizon36596.simloop.loop.Milestone.Reason
All Implemented Interfaces:
Serializable, Comparable<Milestone.Reason>, Constable
Enclosing class:
Milestone

public static enum Milestone.Reason extends Enum<Milestone.Reason>
Why a milestone was emitted. More than one can apply to the same milestone.
  • Enum Constant Details

    • FIRST_ACCEPTED_CANDIDATE

      public static final Milestone.Reason FIRST_ACCEPTED_CANDIDATE
      The first candidate the gate ever accepted. There was no best before it, so the loop went from having no working answer to having one, which is the largest qualitative step it can take.
    • IMPROVED_BY_AT_LEAST_THE_THRESHOLD

      public static final Milestone.Reason IMPROVED_BY_AT_LEAST_THE_THRESHOLD
      The total improved on the previous best by at least the loop's milestone threshold. An improvement smaller than the threshold still becomes the new best — it passed the gate — but it does not get a milestone, which is what stops a long run from producing hundreds of them.
    • A_GATE_CLAUSE_NOW_HOLDS

      public static final Milestone.Reason A_GATE_CLAUSE_NOW_HOLDS
      A gate clause that was not holding for the previous best is holding now. §5's "qualitatively new working capability": the answer is not merely better-scoring, it satisfies something it did not satisfy before.

      No transition can reach this today, and that is written down on purpose. Both scores being compared belong to accepted candidates, and an accepted verdict has every clause either HOLDS or NOT_YET_APPLICABLE — the gate rejects anything else. The one move available, IMPROVES_ON_LAST_BEST going NOT_YET_APPLICABLE to HOLDS on the second candidate ever accepted, is explicitly excluded: it means the clause stopped being vacuous because there is finally something to beat, not that the answer gained anything. Counting it would emit a milestone on every second acceptance however small the improvement, defeating the threshold and captioning it as a new capability.

      The check is kept rather than deleted because it is the alarm for a change to the gate's clause set — a fifth clause, or one that can hold conditionally, makes it load-bearing immediately, and a loop that had quietly stopped noticing new capabilities is a bad thing to discover late.

    • A_GUARDRAIL_IS_NOW_CHECKED_AND_HOLDING

      public static final Milestone.Reason A_GUARDRAIL_IS_NOW_CHECKED_AND_HOLDING
      A guardrail that was over budget for the previous best, or was not in its envelope at all, is checked and holding now. The envelope is guarding something it was not guarding before, which is a real gain in what the loop knows about its own answer even when the score barely moves.

      Note that "was UNKNOWN, is now holding" is not one of the routes here, though it sounds like the obvious one. An UNKNOWN guardrail blocks the gate, so a score carrying one never became a last-best and there is no previous best for it to have been UNKNOWN in. The two reachable routes are a soft-budget overrun that has been brought back inside its budget, and a guardrail newly added to the envelope.

  • Method Details

    • values

      public static Milestone.Reason[] values()
      Returns an array containing the constants of this enum class, in the order they are declared.
      Returns:
      an array containing the constants of this enum class, in the order they are declared
    • valueOf

      public static Milestone.Reason valueOf(String name)
      Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum class has no constant with the specified name
      NullPointerException - if the argument is null