{
  "openapi": "3.1.0",
  "info": {
    "title": "GodLock.uk",
    "version": "0.1.0",
    "summary": "Public HTTPS stress-test engine by Aziel Eliab.",
    "description": "GodLock.uk public routes plus same-origin FragGate / MCP door. Softwares HTML is GodLock-first (GodLock then Aziel Runtime) and points at https://www.azieleliab.com/software. /v1/software JSON is hub-local (Aziel Runtime only plus sister_cites) — hub-scope, not the suite catalog and not the suite's 42 Softwares cards. Authority count 42 stays on Worker GET https://aziel-runtime.vibelock.workers.dev/v1/software. HTML ItemList numberOfItems stays 2. Suite Softwares SSoT is Worker GET https://aziel-runtime.vibelock.workers.dev/v1/software (same-origin https://godlock.uk/runtime/v1/software). FragGate list is fallback only. Suite mesh (QNM-BUILD-1.0, read-only, on; SPLIT THE WIRES; COLD-COPY SURVIVAL; REHEAL refuse): GET https://godlock.uk/v1/mesh and GET https://godlock.uk/v1/mesh/status (same-origin proxies; GET never enables) plus GET https://godlock.uk/runtime/v1/mesh. Public rollup is live|locked|isolated counts only. No Node Gate. No auto-heal. Phoenix local only — die-with-pull does not bring godlock.uk back. No neighbor talk-back-to-health. This Worker has no mesh-off function. Update prompt: GET https://aziel-runtime.vibelock.workers.dev/v1/update/check?slug=godlock&version=0.1.0 — when update_available, counted https://godlock-download-tracker.vibelock.workers.dev/download (no silent overwrite). Identity Aziel Eliab only.",
    "contact": {
      "name": "Aziel Eliab",
      "url": "https://godlock.uk/AzielEliab"
    },
    "license": {
      "name": "Apache-2.0",
      "url": "https://www.apache.org/licenses/LICENSE-2.0"
    }
  },
  "servers": [
    {
      "url": "https://godlock.uk"
    },
    {
      "url": "https://godlock-uk.vibelock.workers.dev"
    }
  ],
  "paths": {
    "/health": {
      "get": {
        "operationId": "godlockUkHealth",
        "summary": "Liveness",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/software": {
      "get": {
        "operationId": "godlockUkSoftware",
        "summary": "GodLock Softwares — GodLock first, Aziel Runtime secondary, official listing at azieleliab.com/software",
        "responses": {
          "200": {
            "description": "HTML or JSON"
          }
        }
      }
    },
    "/v1/software": {
      "get": {
        "operationId": "godlockUkSoftwareApi",
        "summary": "Same-origin Softwares JSON (Aziel Runtime only; official listing at azieleliab.com/software)",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/sot": {
      "get": {
        "operationId": "godlockUkSotOutlet",
        "summary": "godlock-uk SoT mesh outlet (SOT-SYNC-1.0). Read contract plus last-known cite. Identity Aziel Eliab only.",
        "responses": {
          "200": {
            "description": "Outlet contract and current cite"
          }
        }
      }
    },
    "/v1/sot/sync": {
      "get": {
        "operationId": "godlockUkSotSyncContract",
        "summary": "Same contract as GET /v1/sot",
        "responses": {
          "200": {
            "description": "Outlet contract"
          }
        }
      },
      "post": {
        "operationId": "godlockUkSotSyncPull",
        "summary": "Pull live GET /v1/software and preview or apply cite strings. dry_run=true previews. confirm=true applies and seals a receipt. Never GET /download. Unreachable keeps last-known.",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "dry_run": {
                    "type": "boolean"
                  },
                  "confirm": {
                    "type": "boolean"
                  },
                  "outlet_id": {
                    "type": "string",
                    "enum": [
                      "godlock-uk"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Preview, applied cite, or honest unreachable"
          },
          "400": {
            "description": "SOT-CONFIRM-REQUIRED, SOT-VERSION-ID-UNEXPOSED, SOT-IDENTITY, or SOT-BAD-SHA"
          }
        }
      }
    },
    "/v1/sot/push": {
      "post": {
        "operationId": "godlockUkSotSyncPush",
        "summary": "Accept a runtime sot_sync push for outlet godlock-uk. Updates short sha, full sha, suite version, and a published version_id. Ignores software cards. Refuses version_id 105fa1ee.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "outlet_id": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "git_sha": {
                    "type": "string"
                  },
                  "version": {
                    "type": "string"
                  },
                  "version_id": {
                    "type": "string"
                  },
                  "count": {
                    "type": "integer"
                  },
                  "dry_run": {
                    "type": "boolean"
                  },
                  "confirm": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Preview or applied cite"
          },
          "400": {
            "description": "Gate, identity, sha, or unexposed version_id refusal"
          },
          "405": {
            "description": "GET is not a push"
          }
        }
      }
    },
    "/donate": {
      "get": {
        "operationId": "godlockUkDonate",
        "summary": "AZL-DONATE-1.0 door (static rails; no KV; payment is not a key)",
        "responses": {
          "200": {
            "description": "HTML or JSON"
          }
        }
      }
    },
    "/receipts": {
      "get": {
        "operationId": "godlockUkReceipts",
        "summary": "Public questions + hash-chained receipt list (newest first; isolated omitted)",
        "responses": {
          "200": {
            "description": "HTML or JSON"
          }
        }
      }
    },
    "/verify": {
      "get": {
        "operationId": "godlockUkVerify",
        "summary": "Walk the public hash-chained ledger; INGEST-AS-RECEIPT paste-hash yes/no against the first-screen tip",
        "responses": {
          "200": {
            "description": "HTML or JSON"
          }
        }
      }
    },
    "/submit": {
      "post": {
        "operationId": "godlockUkSubmit",
        "summary": "Submit a challenge. Null/empty/whitespace-only text is refused and not scored.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "text"
                ],
                "properties": {
                  "text": {
                    "type": "string",
                    "minLength": 1
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Receipt + TRIAD_V3 display (round of combined × 100). Original receipt rows are kept."
          },
          "400": {
            "description": "GODLOCK-NULL-ARG or GODLOCK-EMPTY-TEXT — nothing archived"
          },
          "429": {
            "description": "GODLOCK-RATE-LIMIT or GODLOCK-DUP-TEXT — Retry-After"
          }
        }
      }
    },
    "/reason": {
      "get": {
        "operationId": "godlockUkReason",
        "summary": "How GodLock is scored (published corpus TRIAD_V3)",
        "responses": {
          "200": {
            "description": "HTML or JSON"
          }
        }
      }
    },
    "/AzielEliab": {
      "get": {
        "operationId": "godlockUkAzielEliab",
        "summary": "About Aziel Eliab — living publisher of GodLock (challenge/score product)",
        "responses": {
          "200": {
            "description": "HTML or JSON"
          }
        }
      }
    },
    "/runtime": {
      "get": {
        "operationId": "godlockUkRuntime",
        "summary": "Same-origin Aziel Runtime FragGate door",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/who": {
      "get": {
        "operationId": "godlockUkWho",
        "summary": "Who is Aziel Eliab — HTML; 15:20 lock on machine FAQ / person / who-is",
        "responses": {
          "200": {
            "description": "HTML"
          }
        }
      }
    },
    "/who-is": {
      "get": {
        "operationId": "godlockUkWhoIsAlias",
        "summary": "308 to /who-is-aziel-eliab.txt",
        "responses": {
          "308": {
            "description": "Permanent redirect"
          }
        }
      }
    },
    "/why": {
      "get": {
        "operationId": "godlockUkWhyAlias",
        "summary": "308 to /why-aziel-eliab.txt — machine why; official HTML why stays on azieleliab.com",
        "responses": {
          "308": {
            "description": "Permanent redirect"
          }
        }
      }
    },
    "/why-aziel-eliab.txt": {
      "get": {
        "operationId": "godlockUkWhyAziel",
        "summary": "Why Aziel Eliab / why GodLock exists — machine txt only",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/count": {
      "get": {
        "operationId": "godlockUkCount",
        "summary": "Public Nodes / Live Nodes / Uses / Receipts plus current_score, residual (those two sum to 100), and steer scales including came_from_nothing (Steer frames sum to 100)",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/openapi.json": {
      "get": {
        "operationId": "godlockUkOpenApi",
        "summary": "This OpenAPI document",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/.well-known/mcp.json": {
      "get": {
        "operationId": "godlockUkWellKnownMcp",
        "summary": "MCP discovery JSON pointing at POST /runtime/mcp",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/mcp.json": {
      "get": {
        "operationId": "godlockUkMcpDiscovery",
        "summary": "Same body as /.well-known/mcp.json — discovery only",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/cite.json": {
      "get": {
        "operationId": "godlockUkCite",
        "summary": "Citation record — INGEST-AS-RECEIPT tip + cite, don't merge + RE-EXPAND-FROM-ARCHIVE + COLD-MULTI-SHELF + BAN-SURVIVAL pull + SPORE-1.0 failsafe + RE-COLD-STORE",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/llms.txt": {
      "get": {
        "operationId": "godlockUkLlms",
        "summary": "LLM/crawler brief — keep the hash; cite, don't merge; crawlers don't re-expand; COLD-MULTI-SHELF + BAN-SURVIVAL + SPORE-1.0 failsafe cite",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/ai.txt": {
      "get": {
        "operationId": "godlockUkAi",
        "summary": "Alias of /llms.txt — machine crawl aid",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/shelves": {
      "get": {
        "operationId": "godlockUkShelves",
        "summary": "COLD-MULTI-SHELF-1.0 challenge cite of canonical corpus /shelves (corpus#96). NO-FAN. doi null.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/shelves": {
      "get": {
        "operationId": "godlockUkShelvesJson",
        "summary": "Same body as /shelves — machine alias",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/survival": {
      "get": {
        "operationId": "godlockUkSurvival",
        "summary": "BAN-SURVIVAL-1.0 hub cite — short-TTL pull of Aziel Runtime /v1/survival. SPORE-1.0 failsafe + RE-COLD-STORE.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/survival": {
      "get": {
        "operationId": "godlockUkSurvivalJson",
        "summary": "Same body as /survival — machine alias",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/person.jsonld": {
      "get": {
        "operationId": "godlockUkPersonJsonLd",
        "summary": "Shared AZindex Person (https://www.azieleliab.com/#aziel)",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/.well-known/person.jsonld": {
      "get": {
        "operationId": "godlockUkWellKnownPersonJsonLd",
        "summary": "Same body as /person.jsonld — shared AZindex Person @id https://www.azieleliab.com/#aziel",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/identity.jsonld": {
      "get": {
        "operationId": "godlockUkIdentityJsonLd",
        "summary": "Alias of /person.jsonld — same Person @id",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/graph.jsonld": {
      "get": {
        "operationId": "godlockUkGraphJsonLd",
        "summary": "Person + FAQ + WebSite + GodLock SoftwareApplication",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/who-is-aziel-eliab.txt": {
      "get": {
        "operationId": "godlockUkWhoIsAziel",
        "summary": "Verbatim identity answer + model rules",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/help.txt": {
      "get": {
        "operationId": "godlockUkHelp",
        "summary": "Plain-language human help — what GodLock is, how to verify, Softwares, Person @id",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/HELP.txt": {
      "get": {
        "operationId": "godlockUkHelpUpper",
        "summary": "Same body as /help.txt",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/addendum.txt": {
      "get": {
        "operationId": "godlockUkAddendum",
        "summary": "Same body as /help.txt — human addendum",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/help/README.txt": {
      "get": {
        "operationId": "godlockUkHelpReadme",
        "summary": "Same body as /help.txt",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/help": {
      "get": {
        "operationId": "godlockUkHelpShort",
        "summary": "Same body as /help.txt",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/.well-known/aziel.json": {
      "get": {
        "operationId": "godlockUkWellKnownAziel",
        "summary": "Mission object (receipt-first; residual uncertainty; GodLock is a challenge/score product)",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/runtime/openapi.json": {
      "get": {
        "operationId": "godlockUkRuntimeOpenApi",
        "summary": "Same-origin FragGate OpenAPI",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/runtime/mcp": {
      "post": {
        "operationId": "godlockUkRuntimeMcp",
        "summary": "Same-origin FragGate MCP door",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/runtime/v1/software": {
      "get": {
        "operationId": "godlockUkRuntimeSoftware",
        "summary": "Live software catalog proxy",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/runtime/v1/fraggate/list": {
      "get": {
        "operationId": "godlockUkRuntimeFraggateList",
        "summary": "FragGate list fallback catalog",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/mesh": {
      "get": {
        "operationId": "godlockUkOriginMesh",
        "summary": "Same-origin QNM-BUILD-1.0 mesh proxy (read-only suite presence on; GET never enables; SPLIT THE WIRES; COLD-COPY SURVIVAL; REHEAL refuse). Nodes = human mesh users+uses; Live Nodes = presence only. Not Softwares.",
        "responses": {
          "200": {
            "description": "OK or graceful empty/unavailable"
          }
        }
      }
    },
    "/v1/mesh/status": {
      "get": {
        "operationId": "godlockUkOriginMeshStatus",
        "summary": "Same-origin LIVE QNM rollup proxy (enabled?, bearers, live|locked|isolated). GET never enables. SPLIT THE WIRES. COLD-COPY SURVIVAL. REHEAL refuse. Phoenix local only — die-with-pull does not bring godlock.uk back. No neighbor talk-back-to-health.",
        "responses": {
          "200": {
            "description": "OK or graceful empty/unavailable"
          }
        }
      }
    },
    "/runtime/v1/mesh": {
      "get": {
        "operationId": "godlockUkRuntimeMesh",
        "summary": "QNM-BUILD-1.0 suite mesh status (read-only, on; Nodes = human mesh users+uses; Live Nodes = presence only, not Softwares; presence live|locked|isolated; SPLIT THE WIRES; COLD-COPY SURVIVAL; REHEAL refuse; GET never enables; no Node Gate; no auto-heal; not an anonymity network)",
        "responses": {
          "200": {
            "description": "OK or graceful empty/unavailable"
          }
        }
      }
    },
    "/runtime/v1/mesh/status": {
      "get": {
        "operationId": "godlockUkRuntimeMeshStatus",
        "summary": "LIVE QNM-BUILD-1.0 suite rollup (enabled?, bearers, live|locked|isolated). GET never enables. SPLIT THE WIRES. COLD-COPY SURVIVAL. REHEAL refuse. Phoenix local only — die-with-pull does not bring godlock.uk back.",
        "responses": {
          "200": {
            "description": "OK or graceful empty/unavailable"
          }
        }
      }
    },
    "/runtime/v1/mesh/nodes": {
      "get": {
        "operationId": "godlockUkRuntimeMeshNodes",
        "summary": "QNM roster with live|locked|isolated presence (5-minute TTL). Not a peer-list publish path. GET never enables.",
        "responses": {
          "200": {
            "description": "OK or graceful empty/unavailable"
          }
        }
      }
    },
    "/runtime/v1/mesh/join": {
      "post": {
        "operationId": "godlockUkRuntimeMeshJoin",
        "summary": "Join suite mesh (runtime proxy)",
        "responses": {
          "200": {
            "description": "OK or graceful empty/unavailable"
          }
        }
      }
    },
    "/runtime/v1/mesh/heartbeat": {
      "post": {
        "operationId": "godlockUkRuntimeMeshHeartbeat",
        "summary": "Suite mesh heartbeat (runtime proxy)",
        "responses": {
          "200": {
            "description": "OK or graceful empty/unavailable"
          }
        }
      }
    },
    "/runtime/v1/mesh/enable": {
      "post": {
        "operationId": "godlockUkRuntimeMeshEnable",
        "summary": "Enable suite mesh (runtime proxy; this Worker has no mesh-off function)",
        "responses": {
          "200": {
            "description": "OK or graceful empty/unavailable"
          }
        }
      }
    },
    "/mesh": {
      "get": {
        "operationId": "godlockUkMesh",
        "summary": "GodLock.uk QNM-BUILD-1.0 mesh snapshot (Nodes = human mesh users+uses; Live Nodes = presence only from /v1/mesh, not Softwares; presence live|locked|isolated; SPLIT THE WIRES; COLD-COPY SURVIVAL; REHEAL refuse; Phoenix local only — die-with-pull does not bring godlock.uk back; no neighbor talk-back-to-health)",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/runtime/v1/update/check": {
      "get": {
        "operationId": "godlockUkRuntimeUpdateCheck",
        "summary": "Client update check (prompt only; no silent overwrite)",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  }
}