Skip to content

integration.timings

How long CI takes on the open pull requests, measured from the recorded forge observation: for every check, how many of its runs started and completed, how many passed and failed, and its median, 90th percentile (nearest rank) and longest duration in seconds, the slowest median first; for every open head with a measured check, the wall time from its first check's start to its last check's completion and the check that took longest, the longest wait first; and how many runs could not be measured (still running, queued, or recorded before starts were read), which are counted and never measured as zero. A read: it asks the forge for nothing; `majordomus prs refresh` records the observation. `observed: false` with the reason when this checkout has recorded none.

How long CI takes on the open pull requests, measured from the recorded forge observation: for every check, how many of its runs started and completed, how many passed and failed, and its median, 90th percentile (nearest rank) and longest duration in seconds, the slowest median first; for every open head with a measured check, the wall time from its first check's start to its last check's completion and the check that took longest, the longest wait first; and how many runs could not be measured (still running, queued, or recorded before starts were read), which are counted and never measured as zero. A read: it asks the forge for nothing; `majordomus prs refresh` records the observation. `observed: false` with the reason when this checkout has recorded none.

Exposure

Where this one definition is reachable. Absence is explicit: a surface not listed does not carry it.

surfaceas
MCPtool majordomus_ci_timings
HTTPGET /api/v1/pull-requests/timings operationId integration.timings
command line—

Schemas

The canonical input and output, from the Rust types; the MCP tool schema and the OpenAPI parameters and responses are derived from these.

input · Empty

No input.

No properties: the capability takes no input.

JSON Schema
{
  "additionalProperties": false,
  "description": "No input.",
  "title": "Empty",
  "type": "object"
}

output · IntegrationTimings

How long CI takes on the open pull requests, or why it is not known.
propertytyperequireddescription
observed boolean yes Whether a forge observation is recorded in this checkout.
reason string | null no Why there are no timings, when there are none.
timings one of 2 no The timings measured from the observation, when there is one.
JSON Schema
{
  "$defs": {
    "CheckTiming": {
      "description": "How one check takes, across the open heads that ran it.",
      "properties": {
        "failed": {
          "description": "Of those, how many failed.",
          "format": "uint64",
          "minimum": 0,
          "type": "integer"
        },
        "median_seconds": {
          "description": "The median duration, in seconds.",
          "format": "uint64",
          "minimum": 0,
          "type": "integer"
        },
        "name": {
          "description": "The check's name, as the forge reports it.",
          "type": "string"
        },
        "p90_seconds": {
          "description": "The 90th percentile duration (nearest rank), in seconds.",
          "format": "uint64",
          "minimum": 0,
          "type": "integer"
        },
        "passed": {
          "description": "Of those, how many passed.",
          "format": "uint64",
          "minimum": 0,
          "type": "integer"
        },
        "runs": {
          "description": "Runs that started and completed, so were measured.",
          "format": "uint64",
          "minimum": 0,
          "type": "integer"
        },
        "slowest_seconds": {
          "description": "The longest run, in seconds.",
          "format": "uint64",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "name",
        "runs",
        "passed",
        "failed",
        "median_seconds",
        "p90_seconds",
        "slowest_seconds"
      ],
      "type": "object"
    },
    "CiTimings": {
      "description": "CI timings over every open head the observation holds.",
      "properties": {
        "checks": {
          "description": "Every check, the slowest median first.",
          "items": {
            "$ref": "#/$defs/CheckTiming"
          },
          "type": "array"
        },
        "heads": {
          "description": "Every head with a measured check, the longest wall time first.",
          "items": {
            "$ref": "#/$defs/HeadTiming"
          },
          "type": "array"
        },
        "measured_runs": {
          "description": "Check runs measured, across every check and head.",
          "format": "uint64",
          "minimum": 0,
          "type": "integer"
        },
        "observed_at": {
          "description": "When the forge was observed, RFC 3339: the moment these timings describe.",
          "type": "string"
        },
        "unmeasured_runs": {
          "description": "Check runs the observation holds without both a start and a completion: running,\nqueued, or recorded before starts were read. Counted, never measured as zero.",
          "format": "uint64",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "observed_at",
        "measured_runs",
        "unmeasured_runs",
        "checks",
        "heads"
      ],
      "type": "object"
    },
    "HeadTiming": {
      "description": "How long CI took on one open pull request's head: from its first check's start to its last\ncheck's completion, and the check that took longest.",
      "properties": {
        "completed_at": {
          "description": "When its last measured check completed, RFC 3339.",
          "type": "string"
        },
        "failed": {
          "description": "Whether any measured check on the head failed.",
          "type": "boolean"
        },
        "head_sha": {
          "description": "The head the checks ran on.",
          "type": "string"
        },
        "number": {
          "description": "The pull request.",
          "format": "uint64",
          "minimum": 0,
          "type": "integer"
        },
        "slowest_check": {
          "description": "The measured check that took longest.",
          "type": "string"
        },
        "slowest_seconds": {
          "description": "How long it took, in seconds.",
          "format": "uint64",
          "minimum": 0,
          "type": "integer"
        },
        "started_at": {
          "description": "When its first measured check started, RFC 3339.",
          "type": "string"
        },
        "wall_seconds": {
          "description": "The wall time between them, in seconds: what a reader waited for CI on this head.",
          "format": "uint64",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "number",
        "head_sha",
        "started_at",
        "completed_at",
        "wall_seconds",
        "slowest_check",
        "slowest_seconds",
        "failed"
      ],
      "type": "object"
    }
  },
  "description": "How long CI takes on the open pull requests, or why it is not known.",
  "properties": {
    "observed": {
      "description": "Whether a forge observation is recorded in this checkout.",
      "type": "boolean"
    },
    "reason": {
      "description": "Why there are no timings, when there are none.",
      "type": [
        "string",
        "null"
      ]
    },
    "timings": {
      "anyOf": [
        {
          "$ref": "#/$defs/CiTimings"
        },
        {
          "type": "null"
        }
      ],
      "description": "The timings measured from the observation, when there is one."
    }
  },
  "required": [
    "observed"
  ],
  "title": "IntegrationTimings",
  "type": "object"
}

Policies

benchmark
required — a target on every transport the exposure declares; the cases are the input type's
cache
disabled — every call runs the handler

Benchmark targets

Derived from the registry for this repository: one requirement per transport, and the cases the input type provides. The whole matrix is on the benchmarks page.

transportstatecasestargets
directcovered1default
mcpcovered1default
httpcovered1default

Searches the titles and descriptions of every page this site publishes.