Darkmatter · agent stage: prod
preview@internal.darkmatter
Events received
121463
Ignored
121320
Jobs dispatched
149

Event 3601f8f6…

← All events

Event

Delivery
3601f8f6-5cca-11f1-8c82-5e2a0c3dad8e
Event
push
Action
Received
2026-05-31T08:24:59.645Z
Signature
valid
Parsed
yes
Sender
czxtm
Repo
darkmatter/titan
Status
ignored — unsupported_event

Headers

{
  "accept": "*/*",
  "accept-encoding": "gzip, br",
  "cf-connecting-ip": "140.82.115.254",
  "cf-ipcountry": "US",
  "cf-ray": "a04495dcbbef819d",
  "cf-visitor": "{\"scheme\":\"https\"}",
  "connection": "Keep-Alive",
  "content-length": "36766",
  "content-type": "application/json",
  "host": "github-bot.darkmatter.io",
  "user-agent": "GitHub-Hookshot/c97f169",
  "x-forwarded-proto": "https",
  "x-github-delivery": "3601f8f6-5cca-11f1-8c82-5e2a0c3dad8e",
  "x-github-event": "push",
  "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.254"
}

Payload

{
  "ref": "refs/heads/main",
  "before": "32bcf87302e4f3accf8c3dc06899fc72c0f5f064",
  "after": "1bb691c3d74957e911d0bd536c7268bc61686266",
  "repository": {
    "id": 1144186344,
    "node_id": "R_kgDORDLl6A",
    "name": "titan",
    "full_name": "darkmatter/titan",
    "private": true,
    "owner": {
      "name": "darkmatter",
      "email": "hello@dm.sh",
      "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/titan",
    "description": null,
    "fork": false,
    "url": "https://api.github.com/repos/darkmatter/titan",
    "forks_url": "https://api.github.com/repos/darkmatter/titan/forks",
    "keys_url": "https://api.github.com/repos/darkmatter/titan/keys{/key_id}",
    "collaborators_url": "https://api.github.com/repos/darkmatter/titan/collaborators{/collaborator}",
    "teams_url": "https://api.github.com/repos/darkmatter/titan/teams",
    "hooks_url": "https://api.github.com/repos/darkmatter/titan/hooks",
    "issue_events_url": "https://api.github.com/repos/darkmatter/titan/issues/events{/number}",
    "events_url": "https://api.github.com/repos/darkmatter/titan/events",
    "assignees_url": "https://api.github.com/repos/darkmatter/titan/assignees{/user}",
    "branches_url": "https://api.github.com/repos/darkmatter/titan/branches{/branch}",
    "tags_url": "https://api.github.com/repos/darkmatter/titan/tags",
    "blobs_url": "https://api.github.com/repos/darkmatter/titan/git/blobs{/sha}",
    "git_tags_url": "https://api.github.com/repos/darkmatter/titan/git/tags{/sha}",
    "git_refs_url": "https://api.github.com/repos/darkmatter/titan/git/refs{/sha}",
    "trees_url": "https://api.github.com/repos/darkmatter/titan/git/trees{/sha}",
    "statuses_url": "https://api.github.com/repos/darkmatter/titan/statuses/{sha}",
    "languages_url": "https://api.github.com/repos/darkmatter/titan/languages",
    "stargazers_url": "https://api.github.com/repos/darkmatter/titan/stargazers",
    "contributors_url": "https://api.github.com/repos/darkmatter/titan/contributors",
    "subscribers_url": "https://api.github.com/repos/darkmatter/titan/subscribers",
    "subscription_url": "https://api.github.com/repos/darkmatter/titan/subscription",
    "commits_url": "https://api.github.com/repos/darkmatter/titan/commits{/sha}",
    "git_commits_url": "https://api.github.com/repos/darkmatter/titan/git/commits{/sha}",
    "comments_url": "https://api.github.com/repos/darkmatter/titan/comments{/number}",
    "issue_comment_url": "https://api.github.com/repos/darkmatter/titan/issues/comments{/number}",
    "contents_url": "https://api.github.com/repos/darkmatter/titan/contents/{+path}",
    "compare_url": "https://api.github.com/repos/darkmatter/titan/compare/{base}...{head}",
    "merges_url": "https://api.github.com/repos/darkmatter/titan/merges",
    "archive_url": "https://api.github.com/repos/darkmatter/titan/{archive_format}{/ref}",
    "downloads_url": "https://api.github.com/repos/darkmatter/titan/downloads",
    "issues_url": "https://api.github.com/repos/darkmatter/titan/issues{/number}",
    "pulls_url": "https://api.github.com/repos/darkmatter/titan/pulls{/number}",
    "milestones_url": "https://api.github.com/repos/darkmatter/titan/milestones{/number}",
    "notifications_url": "https://api.github.com/repos/darkmatter/titan/notifications{?since,all,participating}",
    "labels_url": "https://api.github.com/repos/darkmatter/titan/labels{/name}",
    "releases_url": "https://api.github.com/repos/darkmatter/titan/releases{/id}",
    "deployments_url": "https://api.github.com/repos/darkmatter/titan/deployments",
    "created_at": 1769601223,
    "updated_at": "2026-05-12T22:09:35Z",
    "pushed_at": 1780215897,
    "git_url": "git://github.com/darkmatter/titan.git",
    "ssh_url": "git@github.com:darkmatter/titan.git",
    "clone_url": "https://github.com/darkmatter/titan.git",
    "svn_url": "https://github.com/darkmatter/titan",
    "homepage": "https://switchblade.app",
    "size": 45197,
    "stargazers_count": 0,
    "watchers_count": 0,
    "language": "TypeScript",
    "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": 46,
    "license": null,
    "allow_forking": false,
    "is_template": false,
    "web_commit_signoff_required": false,
    "has_pull_requests": true,
    "pull_request_creation_policy": "all",
    "topics": [],
    "visibility": "internal",
    "forks": 0,
    "open_issues": 46,
    "watchers": 0,
    "default_branch": "main",
    "stargazers": 0,
    "master_branch": "main",
    "organization": "darkmatter",
    "custom_properties": {}
  },
  "pusher": {
    "name": "czxtm",
    "email": "1325802+czxtm@users.noreply.github.com"
  },
  "forced": false,
  "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": "czxtm",
    "id": 1325802,
    "node_id": "MDQ6VXNlcjEzMjU4MDI=",
    "avatar_url": "https://avatars.githubusercontent.com/u/1325802?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/czxtm",
    "html_url": "https://github.com/czxtm",
    "followers_url": "https://api.github.com/users/czxtm/followers",
    "following_url": "https://api.github.com/users/czxtm/following{/other_user}",
    "gists_url": "https://api.github.com/users/czxtm/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/czxtm/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/czxtm/subscriptions",
    "organizations_url": "https://api.github.com/users/czxtm/orgs",
    "repos_url": "https://api.github.com/users/czxtm/repos",
    "events_url": "https://api.github.com/users/czxtm/events{/privacy}",
    "received_events_url": "https://api.github.com/users/czxtm/received_events",
    "type": "User",
    "user_view_type": "public",
    "site_admin": false
  },
  "installation": {
    "id": 131074261,
    "node_id": "MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMTMxMDc0MjYx"
  },
  "created": false,
  "deleted": false,
  "base_ref": null,
  "compare": "https://github.com/darkmatter/titan/compare/32bcf87302e4...1bb691c3d749",
  "commits": [
    {
      "id": "87462a4f8772acdabb107e77a323adea7bcc4bcb",
      "tree_id": "e5f4f8442208859115e97cc5ce2ca4d9a6aaa7a1",
      "distinct": false,
      "message": "Deploy switchblade on Fly",
      "timestamp": "2026-04-23T18:17:04-07:00",
      "url": "https://github.com/darkmatter/titan/commit/87462a4f8772acdabb107e77a323adea7bcc4bcb",
      "author": {
        "name": "Farhan Khalaf",
        "email": "249513614+fkb032@users.noreply.github.com",
        "date": "2026-04-23T18:17:04-07:00",
        "username": "fkb032"
      },
      "committer": {
        "name": "Farhan Khalaf",
        "email": "249513614+fkb032@users.noreply.github.com",
        "date": "2026-04-23T18:17:04-07:00",
        "username": "fkb032"
      },
      "added": [
        ".dockerignore",
        "Dockerfile.fly",
        "fly.toml"
      ],
      "removed": [],
      "modified": [
        ".beads/issues.jsonl",
        "apps/server/src/index.ts",
        "apps/web/vite.config.ts"
      ]
    },
    {
      "id": "23f9e3024ffd8a6e78bb4540660facaa883c06a2",
      "tree_id": "219fcd6ac3b9a902221be5f0a1b0b77175ab510c",
      "distinct": false,
      "message": "Fix Fly SPA fallback routing",
      "timestamp": "2026-04-23T19:14:30-07:00",
      "url": "https://github.com/darkmatter/titan/commit/23f9e3024ffd8a6e78bb4540660facaa883c06a2",
      "author": {
        "name": "Farhan Khalaf",
        "email": "249513614+fkb032@users.noreply.github.com",
        "date": "2026-04-23T19:14:30-07:00",
        "username": "fkb032"
      },
      "committer": {
        "name": "Farhan Khalaf",
        "email": "249513614+fkb032@users.noreply.github.com",
        "date": "2026-04-23T19:14:30-07:00",
        "username": "fkb032"
      },
      "added": [
        "apps/server/src/spa-fallback.test.ts",
        "apps/server/src/spa-fallback.ts"
      ],
      "removed": [],
      "modified": [
        ".beads/issues.jsonl",
        "apps/server/src/cors.test.ts",
        "apps/server/src/cors.ts",
        "apps/server/src/index.ts",
        "fly.toml"
      ]
    },
    {
      "id": "ba26c5b9da5398a4be8c653913e38b856fc77592",
      "tree_id": "35a4699006b392629640ac6048285a40742101c8",
      "distinct": false,
      "message": "Protect Fly web app with basic auth",
      "timestamp": "2026-04-23T19:32:15-07:00",
      "url": "https://github.com/darkmatter/titan/commit/ba26c5b9da5398a4be8c653913e38b856fc77592",
      "author": {
        "name": "Farhan Khalaf",
        "email": "249513614+fkb032@users.noreply.github.com",
        "date": "2026-04-23T19:32:15-07:00",
        "username": "fkb032"
      },
      "committer": {
        "name": "Farhan Khalaf",
        "email": "249513614+fkb032@users.noreply.github.com",
        "date": "2026-04-23T19:32:15-07:00",
        "username": "fkb032"
      },
      "added": [
        "apps/server/src/basic-auth.test.ts",
        "apps/server/src/basic-auth.ts"
      ],
      "removed": [],
      "modified": [
        "apps/server/src/index.ts",
        "fly.toml"
      ]
    },
    {
      "id": "6dc9116d8b0379d2baa8ff37c1169c6e970d4504",
      "tree_id": "0e37dc1f7afb6a97095c61098e15f14ff03852bf",
      "distinct": false,
      "message": "Rename Fly app to fkb-titan",
      "timestamp": "2026-04-23T20:07:30-07:00",
      "url": "https://github.com/darkmatter/titan/commit/6dc9116d8b0379d2baa8ff37c1169c6e970d4504",
      "author": {
        "name": "Farhan Khalaf",
        "email": "249513614+fkb032@users.noreply.github.com",
        "date": "2026-04-23T20:07:30-07:00",
        "username": "fkb032"
      },
      "committer": {
        "name": "Farhan Khalaf",
        "email": "249513614+fkb032@users.noreply.github.com",
        "date": "2026-04-23T20:07:30-07:00",
        "username": "fkb032"
      },
      "added": [],
      "removed": [],
      "modified": [
        "apps/server/src/cors.test.ts",
        "apps/server/src/cors.ts",
        "fly.toml"
      ]
    },
    {
      "id": "95e372ca8d8ba052eecfaa7b0a07d21a10167f9f",
      "tree_id": "f6fc59c894fa03ab7bf9d14275ad5a2dd098ec25",
      "distinct": false,
      "message": "Add extension fkb-titan QA provenance (#117)\n\n## Summary\n- Adds Fly QA extension host permissions and documented prod/Fly QA build variants.\n- Surfaces fee/rolling/snapshot/DB provenance across popup, inline panel, sidebar, compare, and pool detail surfaces.\n- Shares extension API fetch behavior through a no-auth helper and adds coverage for URL/error/auth invariants.\n- Adds extension CI build gates for prod and Fly QA builds.\n- Sanitizes degraded DB messages and avoids pinning degraded DB state in the in-memory pool cache.\n\n## Stack\n- Stacked on #116 (`fkb/titan-fly-deploy`). Retarget to `main` after #116 merges, or merge #116 first.\n\n## Verification\n- `bun run --cwd apps/extension test` passed (128 tests)\n- `bun run --cwd apps/extension compile` passed\n- `bun run --cwd apps/extension build:prod` passed\n- `bun run --cwd apps/extension build:qa:fly` passed\n- `bun run --cwd apps/server test` passed (81 tests)\n- `bun run --cwd apps/server build` passed\n- Targeted cleanup: `bun run --cwd apps/extension test inline-panel.test.ts provenance.test.ts background-fetch.test.ts` passed (19 tests)\n- QA bundle scan found no `Authorization`, `Basic`, or `dark:matter` strings in `.output/chrome-mv3`\n- Manifest includes `https://fkb-titan.fly.dev/*`\n- Fly QA deployed and verified: `https://fkb-titan.fly.dev/pool-intelligence/pool?...` returns `meta.dbStatus` / `meta.dbMessage`\n- Production deployed and verified: `https://api.iridium.sh/health` returns `OK`; the Base USDC/WETH pool response includes `meta.dbStatus=\"available\"`, `meta.dbMessage=null`, and the new meta keys\n- Uniswap create mock extension QA passed for ready Ethereum, unsupported-chain, and incomplete-url states\n- Live Revert smoke passed for sidebar/APR rendering on Revert top positions and discover routes\n\n## Known follow-up\n- `titan-33f`: fix the durable switchblade deploy build-working-directory mismatch. Local production deploy succeeded by using the same registry/SOPS/MicroVM target with build working directory `/opt/switchblade`; the current combined Alchemy path would fail after Cloudflare auth because the registry working directory is `/opt/switchblade/apps/server` while build steps include `cd apps/server`.\n- `bun run --cwd apps/server check-types` still fails on existing repo-wide strictness debt unrelated to this branch.",
      "timestamp": "2026-05-31T01:15:22-07:00",
      "url": "https://github.com/darkmatter/titan/commit/95e372ca8d8ba052eecfaa7b0a07d21a10167f9f",
      "author": {
        "name": "Farhan",
        "email": "249513614+fkb032@users.noreply.github.com",
        "date": "2026-05-31T02:15:22-06:00",
        "username": "fkb032"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "date": "2026-05-31T01:15:22-07:00",
        "username": "web-flow"
      },
      "added": [
        "apps/extension/lib/background-fetch.test.ts",
        "apps/extension/lib/background-fetch.ts",
        "apps/extension/lib/provenance.test.ts",
        "apps/extension/lib/provenance.ts"
      ],
      "removed": [],
      "modified": [
        ".github/workflows/ci.yml",
        "apps/extension/README.md",
        "apps/extension/entrypoints/background.ts",
        "apps/extension/entrypoints/popup/App.tsx",
        "apps/extension/lib/api.ts",
        "apps/extension/lib/compare-panel.ts",
        "apps/extension/lib/inline-panel.test.ts",
        "apps/extension/lib/inline-panel.ts",
        "apps/extension/lib/pool-detail-overlay.ts",
        "apps/extension/lib/sidebar.ts",
        "apps/extension/package.json",
        "apps/extension/wxt.config.ts",
        "apps/server/src/routes/pool-intelligence/index.ts"
      ]
    },
    {
      "id": "8ce85e12a7b0293c7a6438145b442d8c299e78c2",
      "tree_id": "8d0786661eaad97c770905a86db4084e87507f33",
      "distinct": false,
      "message": "Merge main into titan Fly deploy\n\nCo-authored-by: cooper <czxtm@users.noreply.github.com>",
      "timestamp": "2026-05-31T08:24:06Z",
      "url": "https://github.com/darkmatter/titan/commit/8ce85e12a7b0293c7a6438145b442d8c299e78c2",
      "author": {
        "name": "Cursor Agent",
        "email": "cursoragent@cursor.com",
        "date": "2026-05-31T08:24:06Z",
        "username": "cursoragent"
      },
      "committer": {
        "name": "Cursor Agent",
        "email": "cursoragent@cursor.com",
        "date": "2026-05-31T08:24:06Z",
        "username": "cursoragent"
      },
      "added": [
        ".github/workflows/extension-apr-monitor-deploy.yml",
        ".github/workflows/extension-apr-monitor.yml",
        ".github/workflows/fly-deploy.yml",
        "Justfile",
        "apps/web/scripts/extension-apr-monitor-deploy-guard.ts",
        "apps/web/src/workers/extension-apr-monitor-deploy-guard.test.ts",
        "apps/web/src/workers/extension-apr-monitor-deploy-workflow.test.ts",
        "apps/web/src/workers/extension-apr-monitor-scheduler-workflow.test.ts",
        "apps/web/src/workers/extension-apr-monitor.test.ts",
        "apps/web/workers/alerts.ts",
        "apps/web/workers/d1-pg-adapter.ts",
        "apps/web/workers/extension-apr-monitor.ts",
        "apps/web/wrangler.alerts.toml",
        "apps/web/wrangler.extension-apr-monitor.toml",
        "docs/dune/extension-apr-validation-pricing-protocol-preflight-v1.sql",
        "docs/dune/extension-apr-validation-prospective-discovery-v1.sql",
        "docs/dune/extension-apr-validation-q1-operated-pool-universe-v1.sql",
        "docs/dune/extension-apr-validation-uniswap-canary-candidates-v1.sql",
        "docs/dune/extension-apr-validation-uniswap-daily-outcomes-v1.sql",
        "docs/dune/extension-apr-validation-uniswap-daily-outcomes-v2.sql",
        "docs/extension-validation/active-vs-naive-apr-validation-plan.md",
        "docs/extension-validation/artifacts/extension-apr-monitor-2026-05-08-dual-cache-plan.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-2026-05-08-dual-cache-sla-cache-plan.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-2026-05-08-dual-cache-sla-cache-snapshot.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-2026-05-08-dual-cache-sla-cache-snapshot.md",
        "docs/extension-validation/artifacts/extension-apr-monitor-2026-05-08-dual-cache-sla-fresh-plan.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-2026-05-08-dual-cache-sla-fresh-snapshot.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-2026-05-08-dual-cache-sla-fresh-snapshot.md",
        "docs/extension-validation/artifacts/extension-apr-monitor-2026-05-08-dual-cache-snapshot.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-2026-05-08-dual-cache-snapshot.md",
        "docs/extension-validation/artifacts/extension-apr-monitor-2026-05-08-dual-fresh-plan.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-2026-05-08-dual-fresh-snapshot.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-2026-05-08-dual-fresh-snapshot.md",
        "docs/extension-validation/artifacts/extension-apr-monitor-plan-day1-live-calibration3-fresh.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-plan-day1-live-calibration3.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-plan-day1-live-fly-direct.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-plan-day1-live-uniswap8-cache.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-plan-day1-live-uniswap8-fresh.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-plan-day1-live.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-plan-seed.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-snapshot-day1-live-calibration3-fresh.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-snapshot-day1-live-calibration3-fresh.md",
        "docs/extension-validation/artifacts/extension-apr-monitor-snapshot-day1-live-calibration3.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-snapshot-day1-live-calibration3.md",
        "docs/extension-validation/artifacts/extension-apr-monitor-snapshot-day1-live-fly-direct.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-snapshot-day1-live-fly-direct.md",
        "docs/extension-validation/artifacts/extension-apr-monitor-snapshot-day1-live-uniswap8-cache.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-snapshot-day1-live-uniswap8-cache.md",
        "docs/extension-validation/artifacts/extension-apr-monitor-snapshot-day1-live-uniswap8-fresh.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-snapshot-day1-live-uniswap8-fresh.md",
        "docs/extension-validation/artifacts/extension-apr-monitor-snapshot-day1-live.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-snapshot-day1-live.md",
        "docs/extension-validation/artifacts/extension-apr-monitor-snapshot-seed.json",
        "docs/extension-validation/artifacts/extension-apr-monitor-snapshot-seed.md",
        "docs/extension-validation/artifacts/extension-apr-operator-decision-capture-template.json",
        "docs/extension-validation/artifacts/extension-apr-operator-decision-capture-template.md",
        "docs/extension-validation/artifacts/pricing-protocol-preflight-dune-result.json",
        "docs/extension-validation/artifacts/pricing-protocol-preflight-report.json",
        "docs/extension-validation/artifacts/pricing-protocol-preflight-report.md",
        "docs/extension-validation/artifacts/pricing-protocol-preflight-rows.json",
        "docs/extension-validation/artifacts/prospective-discovery-cohort-v1-dune-result.json",
        "docs/extension-validation/artifacts/prospective-discovery-cohort-v1-report.json",
        "docs/extension-validation/artifacts/prospective-discovery-cohort-v1-report.md",
        "docs/extension-validation/artifacts/q1-operated-pool-universe-reconciler-dune-result.json",
        "docs/extension-validation/artifacts/q1-operated-pool-universe-reconciler-report.json",
        "docs/extension-validation/artifacts/q1-operated-pool-universe-reconciler-report.md",
        "docs/extension-validation/artifacts/q1-operated-pool-universe-reconciler-rows.json",
        "docs/extension-validation/artifacts/uniswap-active-vs-naive-statistics-one-week.json",
        "docs/extension-validation/artifacts/uniswap-active-vs-naive-statistics-one-week.md",
        "docs/extension-validation/artifacts/uniswap-canary-candidates-dune-result.json",
        "docs/extension-validation/artifacts/uniswap-canary-candidates-rows.json",
        "docs/extension-validation/artifacts/uniswap-canary-replay-limit1.json",
        "docs/extension-validation/artifacts/uniswap-canary-replay-limit1.md",
        "docs/extension-validation/artifacts/uniswap-canary-replay.json",
        "docs/extension-validation/artifacts/uniswap-canary-replay.md",
        "docs/extension-validation/artifacts/uniswap-canary-selected-candidates.json",
        "docs/extension-validation/artifacts/uniswap-canary-selected-candidates.md",
        "docs/extension-validation/artifacts/uniswap-daily-outcomes-probe-dune-result.json",
        "docs/extension-validation/artifacts/uniswap-daily-outcomes-probe.md",
        "docs/extension-validation/artifacts/uniswap-daily-outcomes-v2-one-day-probe-dune-result.json",
        "docs/extension-validation/artifacts/uniswap-daily-outcomes-v2-probe.md",
        "docs/extension-validation/artifacts/uniswap-liquidity-enrichment-limit-8.json",
        "docs/extension-validation/artifacts/uniswap-liquidity-enrichment-limit-8.md",
        "docs/extension-validation/artifacts/uniswap-liquidity-enrichment-one-week.json",
        "docs/extension-validation/artifacts/uniswap-liquidity-enrichment-one-week.md",
        "docs/extension-validation/artifacts/uniswap-rpc-daily-one-day-canary.json",
        "docs/extension-validation/artifacts/uniswap-rpc-daily-one-day-canary.md",
        "docs/extension-validation/artifacts/uniswap-rpc-daily-one-week-canary.json",
        "docs/extension-validation/artifacts/uniswap-rpc-daily-one-week-canary.md",
        "docs/extension-validation/monitoring/dashboard.html",
        "docs/iridium-final.png",
        "docs/iridium-polished.png",
        "docs/iridium-public-cache.png",
        "docs/iridium-rebranded.png",
        "docs/iridium-sh-live.png",
        "ops/KEY_ROTATION.md",
        "ops/secrets/common.sops.yaml",
        "ops/secrets/runtime.sops.env",
        "packages/cl-intelligence/src/bin/extension-apr-canary-replay.ts",
        "packages/cl-intelligence/src/bin/extension-apr-liquidity-run.ts",
        "packages/cl-intelligence/src/bin/extension-apr-monitor-automate.test.ts",
        "packages/cl-intelligence/src/bin/extension-apr-monitor-automate.ts",
        "packages/cl-intelligence/src/bin/extension-apr-monitor-outcome-readiness-run.ts",
        "packages/cl-intelligence/src/bin/extension-apr-monitor-post.test.ts",
        "packages/cl-intelligence/src/bin/extension-apr-monitor-post.ts",
        "packages/cl-intelligence/src/bin/extension-apr-monitor-run.ts",
        "packages/cl-intelligence/src/bin/extension-apr-operator-capture-template-run.ts",
        "packages/cl-intelligence/src/bin/extension-apr-rpc-daily-run.ts",
        "packages/cl-intelligence/src/bin/extension-apr-statistics-run.ts",
        "packages/cl-intelligence/src/extension-apr-monitor-outcome-readiness.test.ts",
        "packages/cl-intelligence/src/extension-apr-monitor-outcome-readiness.ts",
        "packages/cl-intelligence/src/extension-apr-monitor-worker-poster.test.ts",
        "packages/cl-intelligence/src/extension-apr-monitor-worker-poster.ts",
        "packages/cl-intelligence/src/extension-apr-monitor.ts",
        "packages/cl-intelligence/src/extension-apr-validation-canary.test.ts",
        "packages/cl-intelligence/src/extension-apr-validation-canary.ts",
        "packages/cl-intelligence/src/extension-apr-validation-daily.test.ts",
        "packages/cl-intelligence/src/extension-apr-validation-daily.ts",
        "packages/cl-intelligence/src/extension-apr-validation-liquidity.test.ts",
        "packages/cl-intelligence/src/extension-apr-validation-liquidity.ts",
        "packages/cl-intelligence/src/extension-apr-validation-monitor-api-parity.test.ts",
        "packages/cl-intelligence/src/extension-apr-validation-monitor-api-parity.ts",
        "packages/cl-intelligence/src/extension-apr-validation-monitor-d1-store.test.ts",
        "packages/cl-intelligence/src/extension-apr-validation-monitor-d1-store.ts",
        "packages/cl-intelligence/src/extension-apr-validation-monitor-dashboard.test.ts",
        "packages/cl-intelligence/src/extension-apr-validation-monitor-dashboard.ts",
        "packages/cl-intelligence/src/extension-apr-validation-monitor-live.test.ts",
        "packages/cl-intelligence/src/extension-apr-validation-monitor-live.ts",
        "packages/cl-intelligence/src/extension-apr-validation-monitor-snapshot-id.ts",
        "packages/cl-intelligence/src/extension-apr-validation-monitor-store.test.ts",
        "packages/cl-intelligence/src/extension-apr-validation-monitor-store.ts",
        "packages/cl-intelligence/src/extension-apr-validation-monitor.test.ts",
        "packages/cl-intelligence/src/extension-apr-validation-monitor.ts",
        "packages/cl-intelligence/src/extension-apr-validation-operator-capture.test.ts",
        "packages/cl-intelligence/src/extension-apr-validation-operator-capture.ts",
        "packages/cl-intelligence/src/extension-apr-validation-preflight.test.ts",
        "packages/cl-intelligence/src/extension-apr-validation-preflight.ts",
        "packages/cl-intelligence/src/extension-apr-validation-rpc-daily-live.test.ts",
        "packages/cl-intelligence/src/extension-apr-validation-rpc-daily-live.ts",
        "packages/cl-intelligence/src/extension-apr-validation-rpc-daily-runner.test.ts",
        "packages/cl-intelligence/src/extension-apr-validation-rpc-daily-runner.ts",
        "packages/cl-intelligence/src/extension-apr-validation-rpc-daily.test.ts",
        "packages/cl-intelligence/src/extension-apr-validation-rpc-daily.ts",
        "packages/cl-intelligence/src/extension-apr-validation-statistics.test.ts",
        "packages/cl-intelligence/src/extension-apr-validation-statistics.ts",
        "packages/cl-intelligence/src/extension-apr-validation-universe.test.ts",
        "packages/cl-intelligence/src/extension-apr-validation-universe.ts",
        "packages/db/src/migrations/0000_outstanding_james_howlett.sql",
        "packages/db/src/migrations/meta/0000_snapshot.json",
        "packages/db/src/migrations/meta/_journal.json",
        "packages/infra/services.json",
        "packages/infra/tsconfig.check.json"
      ],
      "removed": [
        ".beads/issues.jsonl",
        "iridium-final.png",
        "iridium-polished.png",
        "iridium-public-cache.png",
        "iridium-rebranded.png",
        "iridium-sh-live.png",
        "openspec/changes/titan-feature-parity/.openspec.yaml",
        "openspec/changes/titan-feature-parity/design.md",
        "openspec/changes/titan-feature-parity/proposal.md",
        "openspec/changes/titan-feature-parity/specs/extension-core/spec.md",
        "openspec/changes/titan-feature-parity/specs/tauri-native/spec.md",
        "openspec/changes/titan-feature-parity/specs/tui-core/spec.md",
        "openspec/changes/titan-feature-parity/specs/wallet-connect/spec.md",
        "openspec/changes/titan-feature-parity/specs/wallet-management/spec.md",
        "openspec/changes/titan-feature-parity/tasks.md",
        "openspec/config.yaml",
        "packages/infra/src/index.ts",
        "packages/infra/src/resources/ssh-bun-deploy.ts"
      ],
      "modified": [
        ".dockerignore",
        ".github/workflows/ci.yml",
        ".gitignore",
        "README.md",
        "apps/extension/README.md",
        "apps/extension/lib/api.ts",
        "apps/web/.gitignore",
        "apps/web/package.json",
        "apps/web/vercel.json",
        "flake.nix",
        "fly.toml",
        "package.json",
        "packages/cl-intelligence/package.json",
        "packages/cl-intelligence/src/index.ts",
        "packages/infra/README.md",
        "packages/infra/alchemy.run.ts",
        "packages/infra/bun.lock",
        "packages/infra/package.json",
        "packages/infra/tsconfig.json"
      ]
    },
    {
      "id": "29da12575a6be83a8def335c70901379429fcd2e",
      "tree_id": "50db7ad27071724931ca3c6d36aa2b76f9d289fe",
      "distinct": false,
      "message": "Fail closed on incomplete Basic Auth config\n\nCo-authored-by: cooper <czxtm@users.noreply.github.com>",
      "timestamp": "2026-05-31T08:24:18Z",
      "url": "https://github.com/darkmatter/titan/commit/29da12575a6be83a8def335c70901379429fcd2e",
      "author": {
        "name": "Cursor Agent",
        "email": "cursoragent@cursor.com",
        "date": "2026-05-31T08:24:18Z",
        "username": "cursoragent"
      },
      "committer": {
        "name": "Cursor Agent",
        "email": "cursoragent@cursor.com",
        "date": "2026-05-31T08:24:18Z",
        "username": "cursoragent"
      },
      "added": [],
      "removed": [],
      "modified": [
        "apps/server/src/basic-auth.test.ts",
        "apps/server/src/basic-auth.ts"
      ]
    },
    {
      "id": "1bb691c3d74957e911d0bd536c7268bc61686266",
      "tree_id": "50db7ad27071724931ca3c6d36aa2b76f9d289fe",
      "distinct": true,
      "message": "Deploy switchblade on Fly (#116)\n\n## Summary\n- add Fly config and Dockerfile for the `fkb-titan` Fly app\n- serve the web SPA from the Hono server when `TITAN_SERVE_WEB=1`\n- protect the Fly-hosted web surface with HTTP Basic Auth while leaving health/API/RPC routes reachable\n- restrict SPA fallback to real HTML navigation requests so authenticated missing assets and invalid server paths return 404 instead of `index.html`\n- keep `/api/pool-intelligence/*` on the Fly server and proxy legacy Vercel `/api/*` routes to `https://switchblade.app`\n- add a Fly `/health` machine check and allow `fkb-titan.fly.dev` in production CORS\n- add Beads follow-ups for the Neon compute quota error and pre-cutover proxy hardening\n\n## Verification\n- Created Fly app: `fkb-titan` in the `darkmatter` org\n- Deployed Fly release: `registry.fly.io/fkb-titan:deployment-01KPYQ2E66HGPYHT1NNBQP4TTB`\n- Scaled `fkb-titan` to one running machine, matching the previous validation footprint\n- `curl -H 'Accept: text/html' https://fkb-titan.fly.dev/` -> 401 with `WWW-Authenticate: Basic realm=\"Titan\", charset=\"UTF-8\"`\n- `curl -u dark:<password> -H 'Accept: text/html' https://fkb-titan.fly.dev/` -> 200 SPA HTML\n- `curl https://fkb-titan.fly.dev/health` -> 200 OK\n- `curl https://fkb-titan.fly.dev/pool-intelligence/pool?chainId=8453` -> expected 400 missing poolAddress from Fly API\n- `curl -H 'Accept: text/html' https://fkb-titan.fly.dev/rpc/positions` -> 404\n- `fly checks list -a fkb-titan` -> `servicecheck-00-http-3000` passing\n- `fly secrets list -a fkb-titan` -> required runtime secrets deployed; `BETTER_AUTH_URL` and `CORS_ORIGIN` point at `https://fkb-titan.fly.dev`\n- `bun run --cwd apps/server test` -> 4 files / 81 tests passing\n- Docker/Fly build ran `packages/shared`, `packages/cl-intelligence`, `apps/server`, and `apps/web` builds during `fly deploy`\n- `fly config validate -a fkb-titan`\n\n## Known follow-ups\n- Fly logs have shown Neon/Postgres compute quota errors from the cache worker. Tracked as `titan-wxb`.\n- Legacy `/api/*` proxy is temporary and should be hardened before DNS cutover or real traffic. Tracked as `titan-s4n`.\n- `apps/server check-types` still fails on existing repo type debt (`pg` declarations, pool-intelligence test `unknown` bodies, and strict-indexing issues already represented by `titan-16w`).\n- The old `switchblade` Fly app is still deployed and was not destroyed; retire it separately after `fkb-titan` is accepted.\n\n## Claude review\nInitial deployment plan was reviewed through `claude-review` before execution per Farhan request. Follow-up Claude review on the completed work flagged the SPA fallback as blocking; this branch now fixes that live on Fly and keeps the remaining proxy/DB concerns tracked as explicit follow-ups.",
      "timestamp": "2026-05-31T01:24:57-07:00",
      "url": "https://github.com/darkmatter/titan/commit/1bb691c3d74957e911d0bd536c7268bc61686266",
      "author": {
        "name": "cooper",
        "email": "1325802+czxtm@users.noreply.github.com",
        "date": "2026-05-31T01:24:57-07:00",
        "username": "czxtm"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "date": "2026-05-31T01:24:57-07:00",
        "username": "web-flow"
      },
      "added": [
        "Dockerfile.fly",
        "apps/extension/lib/background-fetch.test.ts",
        "apps/extension/lib/background-fetch.ts",
        "apps/extension/lib/provenance.test.ts",
        "apps/extension/lib/provenance.ts",
        "apps/server/src/basic-auth.test.ts",
        "apps/server/src/basic-auth.ts",
        "apps/server/src/spa-fallback.test.ts",
        "apps/server/src/spa-fallback.ts"
      ],
      "removed": [],
      "modified": [
        ".dockerignore",
        ".github/workflows/ci.yml",
        ".gitignore",
        "apps/extension/README.md",
        "apps/extension/entrypoints/background.ts",
        "apps/extension/entrypoints/popup/App.tsx",
        "apps/extension/lib/api.ts",
        "apps/extension/lib/compare-panel.ts",
        "apps/extension/lib/inline-panel.test.ts",
        "apps/extension/lib/inline-panel.ts",
        "apps/extension/lib/pool-detail-overlay.ts",
        "apps/extension/lib/sidebar.ts",
        "apps/extension/package.json",
        "apps/extension/wxt.config.ts",
        "apps/server/src/cors.test.ts",
        "apps/server/src/cors.ts",
        "apps/server/src/index.ts",
        "apps/server/src/routes/pool-intelligence/index.ts",
        "apps/web/vite.config.ts",
        "docs/extension-validation/active-vs-naive-apr-validation-plan.md",
        "docs/extension-validation/artifacts/uniswap-active-vs-naive-statistics-one-week.md",
        "docs/extension-validation/artifacts/uniswap-liquidity-enrichment-limit-8.md",
        "docs/extension-validation/artifacts/uniswap-liquidity-enrichment-one-week.md",
        "fly.toml"
      ]
    }
  ],
  "head_commit": {
    "id": "1bb691c3d74957e911d0bd536c7268bc61686266",
    "tree_id": "50db7ad27071724931ca3c6d36aa2b76f9d289fe",
    "distinct": true,
    "message": "Deploy switchblade on Fly (#116)\n\n## Summary\n- add Fly config and Dockerfile for the `fkb-titan` Fly app\n- serve the web SPA from the Hono server when `TITAN_SERVE_WEB=1`\n- protect the Fly-hosted web surface with HTTP Basic Auth while leaving health/API/RPC routes reachable\n- restrict SPA fallback to real HTML navigation requests so authenticated missing assets and invalid server paths return 404 instead of `index.html`\n- keep `/api/pool-intelligence/*` on the Fly server and proxy legacy Vercel `/api/*` routes to `https://switchblade.app`\n- add a Fly `/health` machine check and allow `fkb-titan.fly.dev` in production CORS\n- add Beads follow-ups for the Neon compute quota error and pre-cutover proxy hardening\n\n## Verification\n- Created Fly app: `fkb-titan` in the `darkmatter` org\n- Deployed Fly release: `registry.fly.io/fkb-titan:deployment-01KPYQ2E66HGPYHT1NNBQP4TTB`\n- Scaled `fkb-titan` to one running machine, matching the previous validation footprint\n- `curl -H 'Accept: text/html' https://fkb-titan.fly.dev/` -> 401 with `WWW-Authenticate: Basic realm=\"Titan\", charset=\"UTF-8\"`\n- `curl -u dark:<password> -H 'Accept: text/html' https://fkb-titan.fly.dev/` -> 200 SPA HTML\n- `curl https://fkb-titan.fly.dev/health` -> 200 OK\n- `curl https://fkb-titan.fly.dev/pool-intelligence/pool?chainId=8453` -> expected 400 missing poolAddress from Fly API\n- `curl -H 'Accept: text/html' https://fkb-titan.fly.dev/rpc/positions` -> 404\n- `fly checks list -a fkb-titan` -> `servicecheck-00-http-3000` passing\n- `fly secrets list -a fkb-titan` -> required runtime secrets deployed; `BETTER_AUTH_URL` and `CORS_ORIGIN` point at `https://fkb-titan.fly.dev`\n- `bun run --cwd apps/server test` -> 4 files / 81 tests passing\n- Docker/Fly build ran `packages/shared`, `packages/cl-intelligence`, `apps/server`, and `apps/web` builds during `fly deploy`\n- `fly config validate -a fkb-titan`\n\n## Known follow-ups\n- Fly logs have shown Neon/Postgres compute quota errors from the cache worker. Tracked as `titan-wxb`.\n- Legacy `/api/*` proxy is temporary and should be hardened before DNS cutover or real traffic. Tracked as `titan-s4n`.\n- `apps/server check-types` still fails on existing repo type debt (`pg` declarations, pool-intelligence test `unknown` bodies, and strict-indexing issues already represented by `titan-16w`).\n- The old `switchblade` Fly app is still deployed and was not destroyed; retire it separately after `fkb-titan` is accepted.\n\n## Claude review\nInitial deployment plan was reviewed through `claude-review` before execution per Farhan request. Follow-up Claude review on the completed work flagged the SPA fallback as blocking; this branch now fixes that live on Fly and keeps the remaining proxy/DB concerns tracked as explicit follow-ups.",
    "timestamp": "2026-05-31T01:24:57-07:00",
    "url": "https://github.com/darkmatter/titan/commit/1bb691c3d74957e911d0bd536c7268bc61686266",
    "author": {
      "name": "cooper",
      "email": "1325802+czxtm@users.noreply.github.com",
      "date": "2026-05-31T01:24:57-07:00",
      "username": "czxtm"
    },
    "committer": {
      "name": "GitHub",
      "email": "noreply@github.com",
      "date": "2026-05-31T01:24:57-07:00",
      "username": "web-flow"
    },
    "added": [
      "Dockerfile.fly",
      "apps/extension/lib/background-fetch.test.ts",
      "apps/extension/lib/background-fetch.ts",
      "apps/extension/lib/provenance.test.ts",
      "apps/extension/lib/provenance.ts",
      "apps/server/src/basic-auth.test.ts",
      "apps/server/src/basic-auth.ts",
      "apps/server/src/spa-fallback.test.ts",
      "apps/server/src/spa-fallback.ts"
    ],
    "removed": [],
    "modified": [
      ".dockerignore",
      ".github/workflows/ci.yml",
      ".gitignore",
      "apps/extension/README.md",
      "apps/extension/entrypoints/background.ts",
      "apps/extension/entrypoints/popup/App.tsx",
      "apps/extension/lib/api.ts",
      "apps/extension/lib/compare-panel.ts",
      "apps/extension/lib/inline-panel.test.ts",
      "apps/extension/lib/inline-panel.ts",
      "apps/extension/lib/pool-detail-overlay.ts",
      "apps/extension/lib/sidebar.ts",
      "apps/extension/package.json",
      "apps/extension/wxt.config.ts",
      "apps/server/src/cors.test.ts",
      "apps/server/src/cors.ts",
      "apps/server/src/index.ts",
      "apps/server/src/routes/pool-intelligence/index.ts",
      "apps/web/vite.config.ts",
      "docs/extension-validation/active-vs-naive-apr-validation-plan.md",
      "docs/extension-validation/artifacts/uniswap-active-vs-naive-statistics-one-week.md",
      "docs/extension-validation/artifacts/uniswap-liquidity-enrichment-limit-8.md",
      "docs/extension-validation/artifacts/uniswap-liquidity-enrichment-one-week.md",
      "fly.toml"
    ]
  }
}