Builds: design 47 G §396, §310 (G-9: the seat git's events take hyphens) Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
424 lines
9.8 KiB
JSON
424 lines
9.8 KiB
JSON
{
|
|
"module": "mesh-delivery-gate",
|
|
"version": "1",
|
|
"slug": "gate",
|
|
"claims": [
|
|
{
|
|
"name": "mesh-delivery",
|
|
"scope": "mesh",
|
|
"serves": [
|
|
"deliveries",
|
|
"show",
|
|
"groups",
|
|
"source",
|
|
"checks",
|
|
"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"
|
|
}
|
|
},
|
|
"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"
|
|
],
|
|
"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"
|
|
}
|
|
]
|
|
}
|
|
}
|