gatelineAPI reference
  • What actually clears the pause (#96). The old card said "resume or decline" for every reason, and for the two reasons the orchestrator itself writes that advice was a closed loop: a budget pause is recomputed from the ledger and the limit, a landed-slug pause from the default branch, and a resume that changes neither re-pauses seconds later — each cycle costing two decisions and one more escalation entry.

    escalation is the third such reason and the hardest of the three (#348), because it does not name a condition at all — only that a human is owed. Some of what it stands for clears itself; some of it (a contract dispute, a profile violation, a breakdown that never landed) has no exit but a hand edit, and there the same closed loop applies: resolving is an acknowledgment, the engine re-derives from files nobody changed, and the run re-pauses within a tick. So the card goes one level deeper and reads the resolved escalation's own words.

    Parameters

    • state: {
          branch: string;
          budget:
              | null
              | {
                  cost_limit_usd: null
                  | number;
                  cost_spent_usd: null | number;
                  [key: string]: unknown;
              };
          closure: | null
          | {
              as: "already-delivered"
              | "superseded"
              | "obsolete"
              | "abandoned";
              at: null | string;
              by: null | string;
              reason: null | string;
              [key: string]: unknown;
          };
          escalations: {
              at: null
              | string;
              disposition: null | "re-review" | "return-to-implement" | "re-plan";
              from_role: null | string;
              reason: string;
              resolution: null | string;
              resolved: boolean;
              resolved_at: null | string;
              resolved_by: null | string;
              [key: string]: unknown;
          }[];
          gates: {
              G0: {
                  approved: boolean;
                  at: null
                  | string;
                  burden: null | "confirmation" | "light-correction" | "heavy-correction";
                  by: null | string;
                  notes: null | string;
                  [key: string]: unknown;
              };
              G1: {
                  approved: boolean;
                  at: null
                  | string;
                  burden: null | "confirmation" | "light-correction" | "heavy-correction";
                  by: null | string;
                  notes: null | string;
                  [key: string]: unknown;
              };
              G2: {
                  approved: boolean;
                  at: null
                  | string;
                  burden: null | "confirmation" | "light-correction" | "heavy-correction";
                  by: null | string;
                  notes: null | string;
                  [key: string]: unknown;
              };
              G3: {
                  approved: boolean;
                  at: null
                  | string;
                  burden: null | "confirmation" | "light-correction" | "heavy-correction";
                  by: null | string;
                  notes: null | string;
                  [key: string]: unknown;
              };
          };
          paused_reason: null
          | string;
          phase:
              | "spec"
              | "plan"
              | "implement"
              | "integrate"
              | "release"
              | "done"
              | "paused"
              | "closed";
          profile: "patch"
          | "standard"
          | "full";
          run: string;
          tasks: {
              id: string;
              review_rounds: number;
              status: string;
              [key: string]: unknown;
          }[];
      }

    Returns string