The gate consumes pull-updated and invokes open-pulls and pull; it writes deliveries and groups under their key forms, deletes them as a take-in or a closed pull request leaves them, copies a delivery's base onto the record's member, answers groups from records and the group key together, puts a missed event right at its start, and writes switch.done once the switch has run. Builds: design 47 G §716, A-279, A-236, A-281 Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
438 lines
9.7 KiB
JSON
438 lines
9.7 KiB
JSON
{
|
|
"module": "mesh-delivery-gate",
|
|
"version": "0.1",
|
|
"slug": "gate",
|
|
"claims": [
|
|
{
|
|
"name": "mesh-delivery",
|
|
"scope": "mesh",
|
|
"serves": [
|
|
"deliveries",
|
|
"show",
|
|
"groups",
|
|
"source",
|
|
"recovery",
|
|
"stalled"
|
|
]
|
|
}
|
|
],
|
|
"consumes": [
|
|
"mesh-delivery-forge-bridge.owed.ended",
|
|
"mesh-delivery-indexer.take-in.taken",
|
|
"git.pull-updated",
|
|
"git.pull-merged",
|
|
"git.pull-closed",
|
|
"mesh-conditions.findings-asked"
|
|
],
|
|
"emits": [
|
|
"transition"
|
|
],
|
|
"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"
|
|
},
|
|
"branch": {
|
|
"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"
|
|
},
|
|
"owed": {
|
|
"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",
|
|
"branch"
|
|
],
|
|
"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",
|
|
"owed"
|
|
],
|
|
"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": "switch",
|
|
"schema": {
|
|
"fingerprint": {
|
|
"type": "string"
|
|
},
|
|
"at": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"operations": [
|
|
{
|
|
"name": "done",
|
|
"effect": "set-fields",
|
|
"fields": [
|
|
"fingerprint",
|
|
"at"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"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"
|
|
},
|
|
{
|
|
"name": "findings",
|
|
"storage": "key-value",
|
|
"template": "state"
|
|
},
|
|
{
|
|
"name": "finding-events",
|
|
"storage": "stream",
|
|
"template": "events",
|
|
"options": {
|
|
"events": [
|
|
"finding-written.*",
|
|
"finding-cleared.*",
|
|
"findings-stated.*"
|
|
],
|
|
"max-age-days": 7,
|
|
"max-mib": 16
|
|
}
|
|
}
|
|
],
|
|
"packages": {
|
|
"git.novox.be/novox/mesh-delivery/modules/mesh-delivery-forge-bridge/forgemsg": "0.1"
|
|
},
|
|
"invokes": [
|
|
"seat:git.open-pulls",
|
|
"seat:git.pull",
|
|
"seat:mesh-hand-acts.hand-act",
|
|
"seat:mesh-wants.entry",
|
|
"seat:node-engine.composition"
|
|
],
|
|
"state": [
|
|
{
|
|
"name": "merges",
|
|
"history": 10
|
|
},
|
|
{
|
|
"name": "source",
|
|
"history": 64
|
|
}
|
|
],
|
|
"capabilities": [
|
|
"ledger-calls",
|
|
"ledger-upkeep-calls"
|
|
],
|
|
"tools": [
|
|
"delivery_status",
|
|
"gate_consumer",
|
|
"gate_record",
|
|
"gate_record_end",
|
|
"gate_record_repair",
|
|
"gate_records",
|
|
"gate_source",
|
|
"gate_source_again"
|
|
],
|
|
"config": {
|
|
"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": [
|
|
"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"
|
|
}
|
|
]
|
|
}
|
|
}
|