Record Class HumanDecision

java.lang.Object
java.lang.Record
ai.tabforge.workshop.model.HumanDecision
Record Components:
reviewId - the review session this decision belongs to
findingRuleId - the Finding.ruleId that triggered the escalation
decisionType - what the developer chose to do
comment - optional developer note (free text, may be null)
decidedAt - ISO-8601 timestamp of the decision

public record HumanDecision(String reviewId, String findingRuleId, HumanDecision.DecisionType decisionType, String comment, String decidedAt) extends Record
The developer's response to an escalation — recorded in the audit trail.

Analogy: like an approval record in a code review system — when a reviewer clicks "Approve" or "Request Changes" on a GitHub PR, that decision is stamped with who decided, what they decided, and when. HumanDecision is the Workshop's equivalent of that approval stamp.

Created by: RespondToEscalationTool when the developer responds to an escalation in Claude Desktop. Stored in ReviewReport.humanDecisions as a permanent audit trail of every human intervention in the review.

CERTIFICATION NOTE — Domain 1: Agentic Architecture & Orchestration (27%): HumanDecision is the re-entry point into the agentic loop after a pause. When OrchestratorAgent.resumeAfterEscalation() receives this object, it uses decisionType to determine the next stage: update the finding, recalculate safeToMerge, and continue dispatching remaining agents.

CERTIFICATION NOTE — Domain 5: Context Management & Reliability (15%): Human-in-the-loop is the pattern where an autonomous agent pauses and yields control to a human for a specific decision, then resumes. HumanDecision is the object that carries the human's verdict back into the agentic loop. This is one of the most tested patterns in the exam — understand what triggers it and what resumes after it.

  • Constructor Details

    • HumanDecision

      public HumanDecision(String reviewId, String findingRuleId, HumanDecision.DecisionType decisionType, String comment, String decidedAt)
      Creates an instance of a HumanDecision record class.
      Parameters:
      reviewId - the value for the reviewId record component
      findingRuleId - the value for the findingRuleId record component
      decisionType - the value for the decisionType record component
      comment - the value for the comment record component
      decidedAt - the value for the decidedAt record component
  • Method Details

    • toString

      public final String toString()
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      Specified by:
      toString in class Record
      Returns:
      a string representation of this object
    • hashCode

      public final int hashCode()
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      Specified by:
      hashCode in class Record
      Returns:
      a hash code value for this object
    • equals

      public final boolean equals(Object o)
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      Specified by:
      equals in class Record
      Parameters:
      o - the object with which to compare
      Returns:
      true if this object is the same as the o argument; false otherwise.
    • reviewId

      public String reviewId()
      Returns the value of the reviewId record component.
      Returns:
      the value of the reviewId record component
    • findingRuleId

      public String findingRuleId()
      Returns the value of the findingRuleId record component.
      Returns:
      the value of the findingRuleId record component
    • decisionType

      public HumanDecision.DecisionType decisionType()
      Returns the value of the decisionType record component.
      Returns:
      the value of the decisionType record component
    • comment

      public String comment()
      Returns the value of the comment record component.
      Returns:
      the value of the comment record component
    • decidedAt

      public String decidedAt()
      Returns the value of the decidedAt record component.
      Returns:
      the value of the decidedAt record component