Once main requires mesh/check, the controller publishes no verdict for it and the gate, which moved deliveries on the controller's checked, would hold every pull request proposed. A head's mesh/check is now its verdict, from the forge's status event (gitea now sends the status's words) or its open pull requests. The Approve is asked only on the checker's verdict at exactly the heads the ask covers, so a member judged alone never passes its group; a group on mesh/check asks no composed check and owes no mesh/merge-gate; a member's mesh/check that changes withdraws the ask. Nothing is asked of the controller for such a base, and recheck refuses, naming checker_pull. hq's mesh/repo-check keeps today's path.
152 lines
3.4 KiB
JSON
152 lines
3.4 KiB
JSON
{
|
|
"module": "mesh-delivery-gate",
|
|
"version": "1",
|
|
"slug": "gate",
|
|
"claims": [
|
|
{
|
|
"name": "mesh-delivery",
|
|
"scope": "mesh",
|
|
"serves": [
|
|
"deliveries",
|
|
"times",
|
|
"show",
|
|
"groups",
|
|
"what-if",
|
|
"checks",
|
|
"table",
|
|
"stalled",
|
|
"recheck",
|
|
"release",
|
|
"stop",
|
|
"close",
|
|
"retire-history"
|
|
]
|
|
}
|
|
],
|
|
"consumes": [
|
|
"gitea.pull.updated",
|
|
"gitea.pull.merged",
|
|
"gitea.pull.closed",
|
|
"gitea.forge.status",
|
|
"gitea.forge.pull-request.edited",
|
|
"gitea.forge.pull-request.closed",
|
|
"mesh-controller.checked",
|
|
"mesh-controller.plan-moved",
|
|
"mesh-delivery-forge-bridge.forge.**",
|
|
"mesh-config.config-changed"
|
|
],
|
|
"emits": [
|
|
"transition",
|
|
"group",
|
|
"merged"
|
|
],
|
|
"invokes": [
|
|
"seat:mesh-controller.deliver",
|
|
"seat:mesh-controller.delivery-stop",
|
|
"seat:mesh-controller.delivery-backups-again",
|
|
"seat:mesh-controller.delivery-walks",
|
|
"seat:mesh-controller.delivery-check",
|
|
"seat:mesh-controller.forget-checks",
|
|
"seat:mesh-controller.queue",
|
|
"seat:mesh-controller.plans",
|
|
"gitea.gitea_commit_statuses",
|
|
"gitea.gitea_contains",
|
|
"gitea.gitea_open_pulls"
|
|
],
|
|
"state": [
|
|
"deliveries",
|
|
"groups",
|
|
"pulls",
|
|
{
|
|
"name": "asks",
|
|
"history": 5
|
|
},
|
|
{
|
|
"name": "merges",
|
|
"history": 10
|
|
},
|
|
{
|
|
"name": "owed",
|
|
"history": 5
|
|
},
|
|
{
|
|
"name": "source",
|
|
"history": 64
|
|
}
|
|
],
|
|
"reads": [
|
|
"mesh-delivery.deliveries",
|
|
"mesh-delivery.groups",
|
|
"mesh-delivery.pulls",
|
|
"mesh-delivery-teller.answers",
|
|
"mesh-delivery-checker.verdicts",
|
|
"mesh-controller.assignments",
|
|
"node-engine.have"
|
|
],
|
|
"tools": [
|
|
"delivery_status"
|
|
],
|
|
"config": {
|
|
"refusal-stall-floor-minutes": {
|
|
"type": "number",
|
|
"description": "minutes, at least, before a merge refused because its trunk moved, whose check the gate asked again, is said as stalled; twice the repository's last check time when that is longer (ADR 0505 §4).",
|
|
"minimum": 1,
|
|
"maximum": 1440,
|
|
"trusted": false,
|
|
"default": 10
|
|
},
|
|
"author-new-head-minutes": {
|
|
"type": "number",
|
|
"description": "minutes a delivery that needs its author's new head (a conflict, a failed check, a rejected group) waits for one before the operator hears of it (ADR 0505 §5).",
|
|
"minimum": 1,
|
|
"maximum": 10080,
|
|
"trusted": false,
|
|
"default": 120
|
|
}
|
|
},
|
|
"resources": [
|
|
{
|
|
"id": "state",
|
|
"type": "directory",
|
|
"mode": "0700",
|
|
"place": ".",
|
|
"unknown": "program"
|
|
},
|
|
{
|
|
"id": "settings",
|
|
"type": "file",
|
|
"path": "${dir:state}/settings.json",
|
|
"mode": "0600",
|
|
"takes-config": [
|
|
"refusal-stall-floor-minutes",
|
|
"author-new-head-minutes"
|
|
],
|
|
"merge": "json",
|
|
"template": "files/settings.json"
|
|
}
|
|
],
|
|
"build": {
|
|
"artifacts": [
|
|
{
|
|
"name": "tools",
|
|
"kind": "bundle",
|
|
"language": "go",
|
|
"system": "arch",
|
|
"from": "cmd/mesh-delivery-gate",
|
|
"binary": "mesh-delivery-gate",
|
|
"loads": [
|
|
"mesh-delivery-gate"
|
|
],
|
|
"env": {
|
|
"MESH_DELIVERY_GATE_SETTINGS": "${dir:state}/settings.json"
|
|
}
|
|
},
|
|
{
|
|
"name": "files",
|
|
"kind": "archive",
|
|
"from": "files"
|
|
}
|
|
]
|
|
}
|
|
}
|