Records an approval for the head you name. An agent’s approval needs –evidence (what it checked) and –reason, and is refused when the approver is the author or shares the author’s token lineage, run or lease. A person’s approval needs neither. The approver lane accepts only the configured approver (a person on the project’s list or holding an approver role). Standard and approver lanes wait for the review run. A decision model’s label is never an approval. An approval is for one head: after a push, route again and approve the new head.
Usage
overlane pr approve --number N [--head REF] [--repo OWNER/NAME] [--evidence TEXT...] [--reason TEXT] [--dry-run]Flags
| Flag | Type | Required | Default | Description |
|---|---|---|---|---|
--number |
string | yes | The pull request number | |
--head |
string | no | The head commit being approved (default HEAD) | |
--repo |
string | no | The repository name (default: the origin remote) | |
--evidence |
string (repeatable) | no | What you checked; repeat for more (required for an agent) | |
--reason |
string | no | Why you approve (required for an agent) | |
--dry-run |
boolean | no | Print the requests and file changes this command would make, then stop. Needs no credentials. |
Examples
overlane pr approve --number 7 --evidence "read the diff" --evidence "ran the tests" --reason "inside the task scope"Behavior
- Effect:
write(changes local or hosted state). - Needs credentials: yes. Uses the network: yes.
- Supports
--dry-run: yes. Accepts--force: no. - Machine-readable description:
overlane schema pr approve.
Result
With --json (the default when stdout is not a terminal) the command prints this JSON Schema’s shape on stdout.
{
"anyOf": [
{
"type": "object",
"properties": {
"tenantId": {
"type": "string"
},
"projectId": {
"type": "string"
},
"approvalId": {
"type": "string"
},
"replay": {
"type": "boolean"
},
"via": {
"type": "string"
},
"route": {
"type": "object",
"properties": {
"tenantId": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$",
"description": "tenant identifier"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$",
"description": "project identifier"
},
"repository": {
"type": "string",
"minLength": 1
},
"number": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"headSha": {
"type": "string",
"minLength": 1
},
"title": {
"type": "string"
},
"author": {
"type": "string"
},
"taskId": {
"type": [
"string",
"null"
]
},
"branch": {
"type": [
"string",
"null"
]
},
"baseRef": {
"type": [
"string",
"null"
]
},
"route": {
"type": "object",
"properties": {
"lane": {
"type": "string",
"enum": [
"blocked",
"fast",
"standard",
"approver"
]
},
"risk": {
"type": "string",
"enum": [
"low",
"medium",
"high"
]
},
"deterministic": {
"type": "object",
"properties": {
"level": {
"type": "string",
"enum": [
"low",
"medium",
"high"
]
},
"linesChanged": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"filesChanged": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"sensitive": {
"type": "array",
"items": {
"type": "object",
"properties": {
"path": {
"type": "string"
},
"category": {
"type": "string"
}
},
"required": [
"path",
"category"
],
"additionalProperties": false
}
},
"kind": {
"type": "string",
"enum": [
"docs",
"tests",
"code",
"mixed",
"empty"
]
},
"signals": {
"type": "array",
"items": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
}
},
"required": [
"level",
"linesChanged",
"filesChanged",
"sensitive",
"kind",
"signals"
],
"additionalProperties": false
},
"blockers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"nextCommand": {
"type": [
"string",
"null"
]
}
},
"required": [
"code",
"message",
"nextCommand"
],
"additionalProperties": false
}
},
"model": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"off",
"skipped",
"undecided",
"failed",
"used"
]
},
"level": {
"anyOf": [
{
"type": "string",
"enum": [
"low",
"medium",
"high"
]
},
{
"type": "null"
}
]
},
"raised": {
"type": "boolean"
},
"note": {
"type": "string"
}
},
"required": [
"status",
"level",
"raised",
"note"
],
"additionalProperties": false
},
"approval": {
"type": "object",
"properties": {
"requirement": {
"type": "string",
"enum": [
"none",
"independent",
"approver"
]
},
"reviewRequired": {
"type": "boolean"
}
},
"required": [
"requirement",
"reviewRequired"
],
"additionalProperties": false
},
"reasons": {
"type": "array",
"items": {
"type": "string"
}
},
"nextCommand": {
"type": [
"string",
"null"
]
},
"modelEligible": {
"type": "boolean"
}
},
"required": [
"lane",
"risk",
"deterministic",
"blockers",
"model",
"approval",
"reasons",
"nextCommand",
"modelEligible"
],
"additionalProperties": false
},
"checks": {
"type": "object",
"properties": {
"ci": {
"default": "missing",
"type": "string",
"enum": [
"passed",
"failed",
"pending",
"missing"
]
},
"secretScan": {
"default": "missing",
"type": "string",
"enum": [
"passed",
"failed",
"pending",
"missing"
]
},
"guardrails": {
"default": "missing",
"type": "string",
"enum": [
"passed",
"failed",
"pending",
"missing"
]
},
"conflict": {
"default": "missing",
"type": "string",
"enum": [
"passed",
"failed",
"pending",
"missing"
]
},
"criticalFindings": {
"default": 0,
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"reviewDone": {
"default": false,
"type": "boolean"
}
},
"required": [
"ci",
"secretScan",
"guardrails",
"conflict",
"criticalFindings",
"reviewDone"
],
"additionalProperties": false
},
"approvals": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"source": {
"type": "string",
"enum": [
"agent",
"person",
"model"
]
},
"approver": {
"type": "string"
},
"via": {
"type": "string"
},
"at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
}
},
"required": [
"id",
"source",
"approver",
"via",
"at"
],
"additionalProperties": false
}
},
"approved": {
"type": "boolean"
},
"routedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
}
},
"required": [
"tenantId",
"projectId",
"repository",
"number",
"headSha",
"title",
"author",
"taskId",
"branch",
"baseRef",
"route",
"checks",
"approvals",
"approved",
"routedAt"
],
"additionalProperties": false
}
},
"required": [
"tenantId",
"projectId",
"approvalId",
"replay",
"via",
"route"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"dryRun": {
"type": "boolean",
"const": true
},
"service": {
"type": "string"
},
"requests": {
"type": "array",
"items": {
"type": "object",
"properties": {
"method": {
"type": "string"
},
"path": {
"type": "string"
},
"body": {},
"note": {
"type": "string"
}
},
"required": [
"method",
"path"
],
"additionalProperties": false
}
},
"commands": {
"type": "array",
"items": {
"type": "string"
}
},
"writes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"path": {
"type": "string"
},
"action": {
"type": "string",
"enum": [
"write",
"append",
"delete"
]
},
"description": {
"type": "string"
}
},
"required": [
"path",
"action",
"description"
],
"additionalProperties": false
}
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"dryRun",
"requests",
"commands",
"writes",
"notes"
],
"additionalProperties": false
}
]
}See exit codes for the status the process returns.