Darkmatter · github-bot stage: prod
preview@internal.darkmatter
Events received
21197
Ignored
21190
Jobs dispatched
7

Event 180a3b80…

← All events

Event

Delivery
180a3b80-6114-11f1-8888-7b9a3ca239a1
Event
check_suite
Action
requested
Received
2026-06-05T19:23:56.262Z
Signature
valid
Parsed
yes
Sender
amacbride
Repo
darkmatter/dmcloud
Status
ignored — unsupported_event

Headers

{
  "accept": "*/*",
  "accept-encoding": "gzip, br",
  "cf-connecting-ip": "140.82.115.243",
  "cf-ipcountry": "US",
  "cf-ray": "a0718dfc7c65c9b7",
  "cf-visitor": "{\"scheme\":\"https\"}",
  "connection": "Keep-Alive",
  "content-length": "14712",
  "content-type": "application/json",
  "host": "github-bot.darkmatter.io",
  "user-agent": "GitHub-Hookshot/501fd42",
  "x-forwarded-proto": "https",
  "x-github-delivery": "180a3b80-6114-11f1-8888-7b9a3ca239a1",
  "x-github-event": "check_suite",
  "x-github-hook-id": "628737947",
  "x-github-hook-installation-target-id": "3663660",
  "x-github-hook-installation-target-type": "integration",
  "x-real-ip": "140.82.115.243"
}

Payload

{
  "action": "requested",
  "check_suite": {
    "id": 72607557437,
    "node_id": "CS_kwDORnYZds8AAAAQ579nPQ",
    "head_branch": "main",
    "head_sha": "b06b242b6517640c14791361b5a2d5e057a99ec6",
    "status": "queued",
    "conclusion": null,
    "url": "https://api.github.com/repos/darkmatter/dmcloud/check-suites/72607557437",
    "before": "afa2af707b77eca5bdec689488c2abcd3b92d534",
    "after": "b06b242b6517640c14791361b5a2d5e057a99ec6",
    "pull_requests": [],
    "app": {
      "id": 3663660,
      "client_id": "Iv23lifA2SLzhklKJM5M",
      "slug": "darkmatter",
      "node_id": "A_kwHOARAg0c4AN-cs",
      "owner": {
        "login": "darkmatter",
        "id": 17834193,
        "node_id": "MDEyOk9yZ2FuaXphdGlvbjE3ODM0MTkz",
        "avatar_url": "https://avatars.githubusercontent.com/u/17834193?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/darkmatter",
        "html_url": "https://github.com/darkmatter",
        "followers_url": "https://api.github.com/users/darkmatter/followers",
        "following_url": "https://api.github.com/users/darkmatter/following{/other_user}",
        "gists_url": "https://api.github.com/users/darkmatter/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/darkmatter/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/darkmatter/subscriptions",
        "organizations_url": "https://api.github.com/users/darkmatter/orgs",
        "repos_url": "https://api.github.com/users/darkmatter/repos",
        "events_url": "https://api.github.com/users/darkmatter/events{/privacy}",
        "received_events_url": "https://api.github.com/users/darkmatter/received_events",
        "type": "Organization",
        "user_view_type": "public",
        "site_admin": false
      },
      "name": "darkmatter",
      "description": "",
      "external_url": "https://dm.sh",
      "html_url": "https://github.com/apps/darkmatter",
      "created_at": "2026-05-10T08:36:27Z",
      "updated_at": "2026-06-05T05:28:55Z",
      "permissions": {
        "actions": "write",
        "actions_variables": "read",
        "agent_secrets": "read",
        "agent_variables": "read",
        "checks": "write",
        "contents": "write",
        "copilot_agent_settings": "write",
        "custom_properties_for_organizations": "write",
        "deployments": "write",
        "discussions": "write",
        "environments": "write",
        "issues": "write",
        "issue_fields": "read",
        "issue_types": "read",
        "members": "read",
        "metadata": "read",
        "organization_actions_variables": "write",
        "organization_agent_secrets": "read",
        "organization_agent_variables": "read",
        "organization_codespaces": "write",
        "organization_codespaces_secrets": "write",
        "organization_copilot_agent_settings": "read",
        "organization_custom_properties": "write",
        "organization_dependabot_dismissal_requests": "read",
        "organization_dependabot_secrets": "read",
        "organization_events": "read",
        "organization_hooks": "write",
        "organization_personal_access_tokens": "write",
        "organization_personal_access_token_requests": "write",
        "organization_private_registries": "write",
        "organization_secrets": "write",
        "organization_self_hosted_runners": "write",
        "org_copilot_content_exclusion": "read",
        "packages": "write",
        "pages": "write",
        "pull_requests": "write",
        "repository_hooks": "write",
        "secrets": "read",
        "statuses": "write",
        "user_events": "read",
        "workflows": "write"
      },
      "events": [
        "commit_comment",
        "create",
        "deployment",
        "deployment_review",
        "deployment_status",
        "discussion",
        "discussion_comment",
        "issues",
        "issue_comment",
        "merge_queue_entry",
        "pull_request",
        "pull_request_review",
        "pull_request_review_comment",
        "pull_request_review_thread",
        "push",
        "release",
        "status",
        "sub_issues",
        "workflow_dispatch",
        "workflow_job",
        "workflow_run"
      ]
    },
    "created_at": "2026-06-05T19:23:55Z",
    "updated_at": "2026-06-05T19:23:55Z",
    "rerequestable": true,
    "runs_rerequestable": true,
    "latest_check_runs_count": 0,
    "check_runs_url": "https://api.github.com/repos/darkmatter/dmcloud/check-suites/72607557437/check-runs",
    "head_commit": {
      "id": "b06b242b6517640c14791361b5a2d5e057a99ec6",
      "tree_id": "8b64b4c748a908d606aa8c522f562b3b3649dea5",
      "message": "Storage freeze fix, admin credit grants, single-source control config\n\nThree related pieces of work that landed while smoke-testing the\nper-reservation MinIO buckets end-to-end against the live cluster.\n\n1. Fix: frozen buckets still accepted writes\n-------------------------------------------------------------------\nMinIOManager.FreezeBucket created a \"<bucket>-ro\" IAM policy but never\nre-pointed the per-reservation user to it, so the user stayed on the\nread-write policy and PUTs kept returning 200 after a reservation was\ncancelled or expired. The data was never actually frozen.\n\nFreezeBucket now takes the per-reservation user's access key (already\nstored on the Reservation row) and attaches the ro policy, then detaches\nthe rw policy, on that user. The ro attach happens first so reads stay\navailable through the swap. It is idempotent: MinIO's\nXMinioAdminPolicyChangeAlreadyApplied is treated as success, so repeated\nreconcile ticks are harmless. An empty access key now returns an error\ninstead of silently no-op'ing.\n\nThe BucketManager.FreezeBucket signature gains an accessKey parameter;\nNoopManager and the orchestrator caller (freezeReservationBucket, which\npasses r.StorageAccessKey) are updated to match. The expiry/freeze test\nnow seeds StorageAccessKey and asserts the manager receives it, directly\nguarding the regression.\n\nVerified live: book -> activate (bucket + scoped creds) -> S3 PUT/GET\nround-trip -> cancel -> next reconcile tick flips PUT to 403 while GET\nstays 200.\n\n2. Admin grant-credits endpoint\n-------------------------------------------------------------------\nPOST /api/v1/admin/users/:id/credits  { amount_cents, reason }\n\nThe supported way to add credits out-of-band from Stripe — comps,\nsupport credits, refunds, and test funding — instead of hand-editing\nusers.credits_cents. Admin-only, honors admin read-only mode. Credits\nvia SQL-level addition (race-safe with concurrent metering debits) and\nrecords a succeeded TopUp ledger row (synthetic intent id\n\"admin-grant:<uuid>\") so the grant is auditable in the same ledger the\nbalance derives from; actor + reason are logged. Grant-only bounds\n(1c..$1M), 404 unknown user, 400 on bad input, 403 in read-only.\nFour-case test suite.\n\n3. Single source of truth for control-plane config\n-------------------------------------------------------------------\nThe deployed /etc/dmcloud/control.yaml had drifted from the Ansible\ntemplate (the template still had a localhost DB host and stale\nredis/tls blocks; the live file had hand-added admin/swarm blocks and no\nstorage block). Reconciled to one source:\n\n  - control.yaml.j2 rewritten to reproduce the live config faithfully\n    plus the storage block, every value from group_vars/all.yml.\n  - group_vars/all.yml gains the real control-plane values (postgres on\n    192.168.61.3, auth, admin, bastion, swarm, billing, storage).\n  - inventory-control.yml: static inventory for the control host, kept\n    out of the dynamic GPU-worker inventory and placed next to\n    group_vars/ so group_vars load when targeting it.\n  - playbooks/control-config.yml: config-only render + restart (does not\n    install postgres/redis, which live on the NFS node).\n  - deploy.sh \"control\" now renders config from the template every\n    deploy before shipping the binary, so the two can't diverge again;\n    adds a \"minio\" subcommand.\n\nPlus the MinIO storage layer deploy:\n  - roles/minio/ + playbooks/setup-minio.yml: distributed 4-node MinIO\n    (erasure coding) with a loopback-xfs backing device so MinIO won't\n    refuse the single-LVM-root nodes.\n\ntests/bucket_test.py: self-contained end-to-end bucket smoke test\n(stdlib SigV4, runs on the bastion for LAN + control-API access).\n\n.gitignore: ignore deploy/backups/ (live config backups contain secrets).",
      "timestamp": "2026-06-05T19:23:18Z",
      "author": {
        "name": "Andrew MacBride",
        "email": "amacbride@yahoo.com"
      },
      "committer": {
        "name": "Andrew MacBride",
        "email": "amacbride@yahoo.com"
      }
    }
  },
  "repository": {
    "id": 1182144886,
    "node_id": "R_kgDORnYZdg",
    "name": "dmcloud",
    "full_name": "darkmatter/dmcloud",
    "private": true,
    "owner": {
      "login": "darkmatter",
      "id": 17834193,
      "node_id": "MDEyOk9yZ2FuaXphdGlvbjE3ODM0MTkz",
      "avatar_url": "https://avatars.githubusercontent.com/u/17834193?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/darkmatter",
      "html_url": "https://github.com/darkmatter",
      "followers_url": "https://api.github.com/users/darkmatter/followers",
      "following_url": "https://api.github.com/users/darkmatter/following{/other_user}",
      "gists_url": "https://api.github.com/users/darkmatter/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/darkmatter/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/darkmatter/subscriptions",
      "organizations_url": "https://api.github.com/users/darkmatter/orgs",
      "repos_url": "https://api.github.com/users/darkmatter/repos",
      "events_url": "https://api.github.com/users/darkmatter/events{/privacy}",
      "received_events_url": "https://api.github.com/users/darkmatter/received_events",
      "type": "Organization",
      "user_view_type": "public",
      "site_admin": false
    },
    "html_url": "https://github.com/darkmatter/dmcloud",
    "description": null,
    "fork": false,
    "url": "https://api.github.com/repos/darkmatter/dmcloud",
    "forks_url": "https://api.github.com/repos/darkmatter/dmcloud/forks",
    "keys_url": "https://api.github.com/repos/darkmatter/dmcloud/keys{/key_id}",
    "collaborators_url": "https://api.github.com/repos/darkmatter/dmcloud/collaborators{/collaborator}",
    "teams_url": "https://api.github.com/repos/darkmatter/dmcloud/teams",
    "hooks_url": "https://api.github.com/repos/darkmatter/dmcloud/hooks",
    "issue_events_url": "https://api.github.com/repos/darkmatter/dmcloud/issues/events{/number}",
    "events_url": "https://api.github.com/repos/darkmatter/dmcloud/events",
    "assignees_url": "https://api.github.com/repos/darkmatter/dmcloud/assignees{/user}",
    "branches_url": "https://api.github.com/repos/darkmatter/dmcloud/branches{/branch}",
    "tags_url": "https://api.github.com/repos/darkmatter/dmcloud/tags",
    "blobs_url": "https://api.github.com/repos/darkmatter/dmcloud/git/blobs{/sha}",
    "git_tags_url": "https://api.github.com/repos/darkmatter/dmcloud/git/tags{/sha}",
    "git_refs_url": "https://api.github.com/repos/darkmatter/dmcloud/git/refs{/sha}",
    "trees_url": "https://api.github.com/repos/darkmatter/dmcloud/git/trees{/sha}",
    "statuses_url": "https://api.github.com/repos/darkmatter/dmcloud/statuses/{sha}",
    "languages_url": "https://api.github.com/repos/darkmatter/dmcloud/languages",
    "stargazers_url": "https://api.github.com/repos/darkmatter/dmcloud/stargazers",
    "contributors_url": "https://api.github.com/repos/darkmatter/dmcloud/contributors",
    "subscribers_url": "https://api.github.com/repos/darkmatter/dmcloud/subscribers",
    "subscription_url": "https://api.github.com/repos/darkmatter/dmcloud/subscription",
    "commits_url": "https://api.github.com/repos/darkmatter/dmcloud/commits{/sha}",
    "git_commits_url": "https://api.github.com/repos/darkmatter/dmcloud/git/commits{/sha}",
    "comments_url": "https://api.github.com/repos/darkmatter/dmcloud/comments{/number}",
    "issue_comment_url": "https://api.github.com/repos/darkmatter/dmcloud/issues/comments{/number}",
    "contents_url": "https://api.github.com/repos/darkmatter/dmcloud/contents/{+path}",
    "compare_url": "https://api.github.com/repos/darkmatter/dmcloud/compare/{base}...{head}",
    "merges_url": "https://api.github.com/repos/darkmatter/dmcloud/merges",
    "archive_url": "https://api.github.com/repos/darkmatter/dmcloud/{archive_format}{/ref}",
    "downloads_url": "https://api.github.com/repos/darkmatter/dmcloud/downloads",
    "issues_url": "https://api.github.com/repos/darkmatter/dmcloud/issues{/number}",
    "pulls_url": "https://api.github.com/repos/darkmatter/dmcloud/pulls{/number}",
    "milestones_url": "https://api.github.com/repos/darkmatter/dmcloud/milestones{/number}",
    "notifications_url": "https://api.github.com/repos/darkmatter/dmcloud/notifications{?since,all,participating}",
    "labels_url": "https://api.github.com/repos/darkmatter/dmcloud/labels{/name}",
    "releases_url": "https://api.github.com/repos/darkmatter/dmcloud/releases{/id}",
    "deployments_url": "https://api.github.com/repos/darkmatter/dmcloud/deployments",
    "created_at": "2026-03-15T05:11:27Z",
    "updated_at": "2026-05-31T06:02:23Z",
    "pushed_at": "2026-06-05T19:23:53Z",
    "git_url": "git://github.com/darkmatter/dmcloud.git",
    "ssh_url": "git@github.com:darkmatter/dmcloud.git",
    "clone_url": "https://github.com/darkmatter/dmcloud.git",
    "svn_url": "https://github.com/darkmatter/dmcloud",
    "homepage": null,
    "size": 642,
    "stargazers_count": 0,
    "watchers_count": 0,
    "language": "Go",
    "has_issues": true,
    "has_projects": true,
    "has_downloads": true,
    "has_wiki": true,
    "has_pages": false,
    "has_discussions": false,
    "forks_count": 0,
    "mirror_url": null,
    "archived": false,
    "disabled": false,
    "open_issues_count": 0,
    "license": null,
    "allow_forking": false,
    "is_template": false,
    "web_commit_signoff_required": false,
    "has_pull_requests": true,
    "pull_request_creation_policy": "all",
    "topics": [],
    "visibility": "private",
    "forks": 0,
    "open_issues": 0,
    "watchers": 0,
    "default_branch": "main",
    "custom_properties": {}
  },
  "organization": {
    "login": "darkmatter",
    "id": 17834193,
    "node_id": "MDEyOk9yZ2FuaXphdGlvbjE3ODM0MTkz",
    "url": "https://api.github.com/orgs/darkmatter",
    "repos_url": "https://api.github.com/orgs/darkmatter/repos",
    "events_url": "https://api.github.com/orgs/darkmatter/events",
    "hooks_url": "https://api.github.com/orgs/darkmatter/hooks",
    "issues_url": "https://api.github.com/orgs/darkmatter/issues",
    "members_url": "https://api.github.com/orgs/darkmatter/members{/member}",
    "public_members_url": "https://api.github.com/orgs/darkmatter/public_members{/member}",
    "avatar_url": "https://avatars.githubusercontent.com/u/17834193?v=4",
    "description": ""
  },
  "enterprise": {
    "id": 469843,
    "slug": "darkmatter",
    "name": "darkmatter",
    "node_id": "E_kgDOAAcrUw",
    "avatar_url": "https://avatars.githubusercontent.com/b/469843?v=4",
    "description": "",
    "website_url": "darkmatter.io",
    "html_url": "https://github.com/enterprises/darkmatter",
    "created_at": "2025-09-07T16:01:00Z",
    "updated_at": "2026-05-09T15:34:55Z"
  },
  "sender": {
    "login": "amacbride",
    "id": 1263544,
    "node_id": "MDQ6VXNlcjEyNjM1NDQ=",
    "avatar_url": "https://avatars.githubusercontent.com/u/1263544?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/amacbride",
    "html_url": "https://github.com/amacbride",
    "followers_url": "https://api.github.com/users/amacbride/followers",
    "following_url": "https://api.github.com/users/amacbride/following{/other_user}",
    "gists_url": "https://api.github.com/users/amacbride/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/amacbride/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/amacbride/subscriptions",
    "organizations_url": "https://api.github.com/users/amacbride/orgs",
    "repos_url": "https://api.github.com/users/amacbride/repos",
    "events_url": "https://api.github.com/users/amacbride/events{/privacy}",
    "received_events_url": "https://api.github.com/users/amacbride/received_events",
    "type": "User",
    "user_view_type": "public",
    "site_admin": false
  },
  "installation": {
    "id": 131074261,
    "node_id": "MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMTMxMDc0MjYx"
  }
}