Files
mesh-catalog/modules/mesh-delivery-gate/module.json
T

428 lines
9.9 KiB
JSON

{
"module": "mesh-delivery-gate",
"version": "1",
"slug": "gate",
"claims": [
{
"name": "mesh-delivery",
"scope": "mesh",
"serves": [
"deliveries",
"show",
"groups",
"source",
"recovery",
"stalled"
]
}
],
"consumes": [
"git.pull-updated",
"git.pull-merged",
"git.pull-closed",
"git.forge-pull",
"git.forge-status",
"git.repo-writable",
"mesh-delivery-forge-bridge.forge.**",
"mesh-delivery-forge-bridge.owed.ended",
"mesh-delivery-teller.answered",
"mesh-delivery-view.reached",
"mesh-config.config-changed",
"mesh-delivery-indexer.take-in.taken"
],
"emits": [
"transition",
"group",
"merged"
],
"uses": [
"operator-channel"
],
"requires": [
{
"name": "records",
"storage": "ledger",
"template": "ledger",
"options": {
"max-mib": 768
},
"types": [
{
"name": "record",
"schema": {
"milestone": {
"type": "string"
},
"heads": {
"type": "object"
},
"opened": {
"type": "string"
},
"forge-made": {
"type": "boolean"
},
"form": {
"type": "integer"
},
"group": {
"type": "object"
},
"trace": {
"type": "object"
},
"key": {
"type": "string"
},
"module": {
"type": "string"
},
"fingerprint": {
"type": "string"
},
"node": {
"type": "string"
},
"step": {
"type": "string"
},
"outcome": {
"type": "string"
},
"why": {
"type": "string"
},
"at": {
"type": "string"
},
"event": {
"type": "string"
},
"since": {
"type": "string"
},
"revision": {
"type": "string"
},
"half": {
"type": "string"
},
"ended": {
"type": "object"
},
"id": {
"type": "string"
},
"act": {
"type": "string"
},
"repository": {
"type": "string"
},
"number": {
"type": "integer"
},
"head": {
"type": "string"
},
"words": {
"type": "string"
},
"recovery": {
"type": "object"
}
},
"operations": [
{
"name": "open",
"effect": "set-fields",
"fields": [
"milestone",
"heads",
"opened",
"forge-made",
"form"
],
"sequence": true
},
{
"name": "group",
"effect": "set-fields",
"fields": [
"group"
],
"sequence": true
},
{
"name": "trace",
"effect": "set-fields",
"fields": [
"trace",
"recovery"
],
"sequence": true
},
{
"name": "entry",
"effect": "set-entry",
"fields": [
"key",
"module",
"fingerprint",
"node"
],
"into": "entries",
"key": "key",
"sequence": true
},
{
"name": "outcome",
"effect": "set-entry",
"fields": [
"key",
"module",
"fingerprint",
"node",
"step",
"outcome",
"why",
"at",
"event"
],
"into": "outcomes",
"key": "key",
"sequence": true
},
{
"name": "away",
"effect": "set-entry",
"fields": [
"node",
"since"
],
"into": "away",
"key": "node"
},
{
"name": "back",
"effect": "remove",
"into": "away",
"key": "node"
},
{
"name": "pin",
"effect": "set-entry",
"fields": [
"revision",
"half"
],
"into": "pinned",
"key": "revision"
},
{
"name": "free",
"effect": "remove",
"into": "pinned",
"key": "revision"
},
{
"name": "act",
"effect": "set-entry",
"fields": [
"id",
"act",
"repository",
"number",
"head",
"outcome",
"words",
"at"
],
"into": "acts",
"key": "id",
"sequence": true
},
{
"name": "end",
"effect": "set-fields",
"fields": [
"ended"
],
"sequence": true
}
]
},
{
"name": "held",
"schema": {
"instance": {
"type": "string"
},
"opened": {
"type": "string"
}
},
"operations": [
{
"name": "hold",
"effect": "set-entry",
"fields": [
"instance",
"opened"
],
"into": "records",
"key": "instance"
},
{
"name": "drop",
"effect": "remove",
"into": "records",
"key": "instance"
}
]
}
]
},
{
"name": "deliveries",
"storage": "key-value",
"template": "state"
},
{
"name": "groups",
"storage": "key-value",
"template": "state"
},
{
"name": "owed",
"storage": "key-value",
"template": "state",
"options": {
"history": 5
}
},
{
"name": "conditions",
"storage": "key-value",
"template": "state"
}
],
"packages": {
"git.novox.be/novox/mesh-delivery/modules/mesh-delivery-forge-bridge/forgemsg": "0.1"
},
"invokes": [
"seat:git.pull",
"seat:git.statuses",
"seat:git.open-pulls",
"seat:git.contains",
"seat:mesh-hand-acts.hand-act",
"seat:issue-tracker.list",
"seat:mesh-wants.entry",
"seat:node-engine.composition",
"mesh-delivery-teller.teller_answers",
"mesh-delivery-view.view_reach"
],
"state": [
"pulls",
{
"name": "asks",
"history": 5
},
{
"name": "merges",
"history": 10
},
{
"name": "source",
"history": 64
}
],
"capabilities": [
"ledger-calls",
"ledger-upkeep-calls"
],
"reads": [
"mesh-delivery-checker.verdicts"
],
"tools": [
"delivery_merge_again",
"delivery_status",
"gate_consumer",
"gate_record",
"gate_record_end",
"gate_record_repair",
"gate_records"
],
"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 \u00a74).",
"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 \u00a75).",
"minimum": 1,
"maximum": 10080,
"trusted": false,
"default": 120
},
"record-retention": {
"type": "number",
"description": "days a delivery record is kept from when it opened (design 47 *The delivery record*): ninety covers every trace asked of a past delivery so far; when a record is removed at its retention, the gate says freed for each graph revision it pinned. Nothing else is removed to make room.",
"minimum": 1,
"maximum": 3650,
"trusted": false,
"default": 90
}
},
"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",
"record-retention"
],
"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"
}
]
}
}