{
  "schemaVersion": "1.0.0",
  "updatedAt": "2026-08-31T06:25:00Z",
  "status": "one_resolved_availability_incident",
  "honestClaim": "This record combines public endpoint behavior, repository-controlled runtime contracts, and operator-attested Render API logs. Provider-private logs and a private GitHub repository limit independent reconstruction; those limits are named rather than upgraded into public proof.",
  "incidents": [
    {
      "id": "OPS-001",
      "title": "Render said live while public requests returned 502",
      "category": "availability",
      "status": "resolved",
      "provider": "Render",
      "serviceId": "srv-daadleon74is73ajmljg",
      "initialRelease": {
        "commit": "30e371f06fccc612102896e55494bbb15e0113b8",
        "deployId": "dep-daahklbncjis73a2v5e0",
        "message": "feat: launch free expected touchdown lab"
      },
      "repairRelease": {
        "commit": "7204b84361f5440d52d1d403bf3b0273a8af3f09",
        "deployId": "dep-daahqquq1p3s739996k0",
        "message": "fix: run one production server on Render"
      },
      "impact": {
        "conservativeWindowDefinition": "From Render first marking the initial release live through the first recorded 200 verification on both the canonical and fallback tool URLs.",
        "startedAt": "2026-08-31T06:10:28Z",
        "endedAt": "2026-08-31T06:23:58Z",
        "durationSeconds": 810,
        "canonicalObservedStatus": 502,
        "fallbackObservedStatus": 502,
        "affectedSurface": "All HTTP routes behind the service during port remapping; the xTD Lab and existing publication pages were unavailable externally.",
        "knownReaderDataLoss": false,
        "dataLossQualification": "No durable write path or newsletter capture was enabled. This proves no known application write loss, not that no reader abandoned a request."
      },
      "rootCause": {
        "summary": "The Docker container launched Wrangler dev as a production process. Wrangler opened the requested HTTP port plus changing inspector ports; Render detected those additional HTTP ports and repeatedly changed network configuration.",
        "oldContainerCommand": "node scripts/start-worker.mjs",
        "oldRuntime": "wrangler dev",
        "requestedHttpPort": 10000,
        "additionalPortsObserved": [
          41151,
          40561,
          41871
        ],
        "falsePositiveSignal": "Render health probes reached the Worker on port 10000 and the deploy entered live state. That state did not prove the public routing layer remained attached to the intended port.",
        "notCausedBy": [
          "The Expected Touchdown formula or client-side calculator",
          "Namecheap DNS records",
          "GLM-5.3 or an OpenRouter model call"
        ]
      },
      "timeline": [
        {
          "at": "2026-08-31T06:08:21Z",
          "event": "Initial xTD release build started.",
          "evidenceClass": "provider_private_log"
        },
        {
          "at": "2026-08-31T06:10:28Z",
          "event": "Render marked the initial release live after internal health responses.",
          "evidenceClass": "provider_private_log"
        },
        {
          "at": "2026-08-31T06:11:00Z",
          "event": "Render detected additional HTTP port 41151.",
          "evidenceClass": "provider_private_log"
        },
        {
          "at": "2026-08-31T06:11:37Z",
          "event": "Render selected port 40561 as a new primary and restarted network configuration.",
          "evidenceClass": "provider_private_log"
        },
        {
          "at": "2026-08-31T06:12:39Z",
          "event": "Render detected another additional HTTP port, 41871.",
          "evidenceClass": "provider_private_log"
        },
        {
          "at": "2026-08-31T06:21:07Z",
          "event": "Single-production-server repair commit was created after a local Docker health and route check.",
          "evidenceClass": "private_repository_and_operator_check"
        },
        {
          "at": "2026-08-31T06:23:31Z",
          "event": "The repaired instance started vinext on 0.0.0.0:10000.",
          "evidenceClass": "provider_private_log"
        },
        {
          "at": "2026-08-31T06:23:41Z",
          "event": "Render marked the repair deployment live.",
          "evidenceClass": "provider_private_log"
        },
        {
          "at": "2026-08-31T06:23:58Z",
          "event": "Canonical and Render fallback tool URLs both returned HTTP 200.",
          "evidenceClass": "operator_external_check"
        }
      ],
      "repair": {
        "productionCommand": "npm start",
        "resolvedStartScript": "vinext start",
        "inspectorEnabled": false,
        "runtimePort": 10000,
        "filesChanged": [
          "Dockerfile",
          "package.json",
          "scripts/verify-render-runtime.mjs"
        ],
        "removedFile": "scripts/start-worker.mjs"
      },
      "controlsAdded": [
        {
          "id": "OPS-C01",
          "name": "One production HTTP process",
          "contract": "Docker must launch npm start; package.json must resolve that command to vinext start.",
          "publicEvidence": "/operations-evidence/Dockerfile.txt"
        },
        {
          "id": "OPS-C02",
          "name": "No development inspector in production",
          "contract": "The Docker runtime may not reference wrangler dev or the removed start-worker adapter.",
          "publicEvidence": "/operations-evidence/verify-render-runtime.mjs"
        },
        {
          "id": "OPS-C03",
          "name": "Runtime PORT health check",
          "contract": "The container health check must probe process.env.PORT rather than a hard-coded deployment port.",
          "publicEvidence": "/operations-evidence/Dockerfile.txt"
        },
        {
          "id": "OPS-C04",
          "name": "External release matrix",
          "contract": "A release is not accepted from provider state alone; canonical, fallback, evidence, feed, and redirect routes must be checked from outside the service.",
          "publicEvidence": "/operations-incidents.json"
        }
      ],
      "recoveryVerification": {
        "verifiedAt": "2026-08-31T06:25:00Z",
        "canonicalToolStatus": 200,
        "fallbackToolStatus": 200,
        "alternateDomainsEndAtCanonical": true,
        "repairedInstanceErrors": 0,
        "repairedInstanceUnexpectedPortChanges": 0,
        "outgoingInstanceErrorsBeforeRepairStart": 2,
        "outgoingErrorDisclosure": "The outgoing Wrangler instance logged two network-connection-lost errors before the repaired vinext instance started. They remain part of the incident record and are not attributed to the repaired instance."
      },
      "glmDisclosure": {
        "model": "z-ai/glm-5.3",
        "usedForDiagnosis": false,
        "usedForRepair": false,
        "usedForArticleDraft": false,
        "statement": "GLM-5.3 did not diagnose the outage, change the runtime, or draft the postmortem. The incident was resolved from deterministic route checks, container behavior, source inspection, and provider logs."
      },
      "evidenceVisibility": {
        "exactRuntimeContractPublic": true,
        "exactVerifierPublic": true,
        "liveEndpointsPublic": true,
        "providerLogsPublic": false,
        "providerLogReason": "Render service logs require account authorization and may contain unrelated operational details; this artifact publishes the relevant events as an operator attestation without publishing credentials or the full private stream.",
        "repositoryPublic": false,
        "repositoryReason": "The owner requested a private GitHub repository. The exact runtime file and verifier are mirrored as public evidence so the operative control can still be inspected.",
        "independentlyReconstructableFromPublicEvidence": false
      },
      "remainingLimits": [
        "A successful post-repair snapshot does not prove permanent availability.",
        "The public incident JSON is an operator-signed account, not an independent Render audit export.",
        "The current external checks are release-time probes, not continuous synthetic monitoring.",
        "The free Render service may still cold-start or experience provider-level downtime unrelated to this incident."
      ]
    }
  ]
}
