/**
 * Defines a quality gate that must be passed for task completion
 */
export interface QualityGate {
  /** Unique identifier for the gate */
  id: string;

  /** Human-readable name */
  name: string;

  /** Description of what this gate checks */
  description: string;

  /** Type of quality check */
  type: "test" | "lint" | "build" | "coverage" | "custom";

  /** Command to execute for this gate (optional for custom gates) */
  command?: string;

  /** Expected output pattern (optional, for validation) */
  expectedOutput?: string | RegExp;

  /** Whether this gate must pass for completion */
  required: boolean;

  /** Execution order (lower numbers run first) */
  order: number;
}

/**
 * Result of running a quality gate
 */
export interface QualityGateResult {
  /** ID of the gate that was run */
  gateId: string;

  /** Name of the gate */
  gateName: string;

  /** Whether the gate passed */
  passed: boolean;

  /** Output from running the gate */
  output?: string;

  /** Error message if gate failed */
  error?: string;

  /** Duration in milliseconds */
  duration: number;
}
