← Runs

demo-fork

github-investigation · 2026-05-13T14:12:28.273Z · forked from demo-run

Base — demo-run

Fork — demo-fork

  1. Divergence point — edited
Inspector· from base
llm_call
bcb7d5ac-aede-41d6-ac62-e4a77d85c292
Model
mock-model
Stop reason
tool_use
Input tokens
100
Output tokens
50
Request hash
8c66c2597e61385327df379bbd9628d2c9d0562dbfb841fca2276879b2246ff6

System

You are an investigation agent in the Adaptive Workspace runtime.
Your job is to investigate a question by calling tools and explicitly declaring your decisions.

# Tools available
- get_recent_prs: List recent pull requests for a GitHub repo. Returns summaries (number, title, body, state, author, timestamps, head/base SHA).
- get_pr_diff: Fetch the raw unified diff (`diff --git ...`) for a given pull request.
- get_pr_comments: Fetch issue comments on a pull request (general PR discussion, not inline review comments).
- get_commit_history: List commits on the default branch, optionally filtered by `since` (ISO 8601 timestamp).
- emit_decision: Declare an explicit decision point in your investigation.
Call this BEFORE fetching information that depends on a choice you just made,
so the trace records why you went one way and not another.
Fields:
  decision: stable machine-readable identifier (snake_case), e.g. 'investigate_prs'
  label: short human-readable label
  reasoning: one sentence — why this option, not the alternatives
  alternatives: optional list of other decision identifiers you considered

# How to work
1. At each fork in your reasoning, call emit_decision BEFORE calling investigative tools.
2. Call tools to gather evidence.
3. Repeat: emit_decision → call tools → ...
4. When you've reached a conclusion, output a final text message. Do not call more tools.

Messages

[
  {
    "role": "user",
    "content": "Recent PRs to cash-codes/checkout-service have caused performance regressions. Investigate and identify the likely culprit."
  },
  {
    "role": "assistant",
    "content": [
      {
        "type": "tool_use",
        "id": "toolu_1",
        "name": "emit_decision",
        "input": {
          "decision": "investigate_prs",
          "label": "Investigate recent PRs",
          "reasoning": "Most likely source of regression is recent merged code.",
          "alternatives": [
            "investigate_commits",
            "check_issues"
          ]
        }
      }
    ]
  },
  {
    "role": "user",
    "content": [
      {
        "type": "tool_result",
        "tool_use_id": "toolu_1",
        "content": "Decision recorded."
      }
    ]
  },
  {
    "role": "assistant",
    "content": [
      {
        "type": "tool_use",
        "id": "toolu_2",
        "name": "get_recent_prs",
        "input": {
          "repo": "cash-codes/checkout-service",
          "limit": 20
        }
      }
    ]
  },
  {
    "role": "user",
    "content": [
      {
        "type": "tool_result",
        "tool_use_id": "toolu_2",
        "content": "[{\"number\":145,\"title\":\"Update README badges\",\"body\":\"Add CI and coverage badges.\",\"state\":\"closed\",\"user\":{\"login\":\"alice\"},\"created_at\":\"2026-05-08T10:00:00Z\",\"head\":{\"sha\":\"sha-145\"},\"base\":{\"sha\":\"main-1\"}},{\"number\":144,\"title\":\"Bump dependencies\",\"body\":\"Routine dependency bumps; no functional changes.\",\"state\":\"closed\",\"user\":{\"login\":\"bob\"},\"created_at\":\"2026-05-07T14:32:00Z\",\"head\":{\"sha\":\"sha-144\"},\"base\":{\"sha\":\"main-1\"}},{\"number\":143,\"title\":\"Fix typo in checkout error message\",\"body\":\"Trivial copy fix.\",\"state\":\"closed\",\"user\":{\"login\":\"carol\"},\"created_at\":\"2026-05-07T09:11:00Z\",\"head\":{\"sha\":\"sha-143\"},\"base\":{\"sha\":\"main-1\"}},{\"number\":142,\"title\":\"Refactor user query for performance\",\"body\":\"Inlines the user-lookup join, removes the cached prepared-statement path, and switches to a single composed SELECT. Should be faster on cold cache.\",\"state\":\"closed\",\"user\":{\"login\":\"dave\"},\"created_at\":\"2026-05-06T17:45:00Z\",\"head\":{\"sha\":\"sha-142\"},\"base\":{\"sha\":\"main-1\"}},{\"number\":141,\"title\":\"Refactor order processing pipeline\",\"body\":\"Splits the order-processing module into smaller services.\",\"state\":\"closed\",\"user\":{\"login\":\"eve\"},\"created_at\":\"2026-05-06T11:20:00Z\",\"head\":{\"sha\":\"sha-141\"},\"base\":{\"sha\":\"main-1\"}},{\"number\":140,\"title\":\"Add metrics dashboard config\",\"body\":\"Adds Grafana dashboard JSON for tracking p95 latency.\",\"state\":\"closed\",\"user\":{\"login\":\"alice\"},\"created_at\":\"2026-05-05T16:00:00Z\",\"head\":{\"sha\":\"sha-140\"},\"base\":{\"sha\":\"main-1\"}},{\"number\":139,\"title\":\"Remove dead code in legacy adapter\",\"body\":\"Deletes unused fallback path.\",\"state\":\"closed\",\"user\":{\"login\":\"bob\"},\"created_at\":\"2026-05-05T10:00:00Z\",\"head\":{\"sha\":\"sha-139\"},\"base\":{\"sha\":\"main-1\"}},{\"number\":138,\"title\":\"Add Redis caching layer for product catalog\",\"body\":\"Introduces a Redis-backed cache for product-catalog reads with a 5-minute TTL. Cache-miss path falls back to Postgres.\",\"state\":\"closed\",\"user\":{\"login\":\"carol\"},\"created_at\":\"2026-05-04T13:15:00Z\",\"head\":{\"sha\":\"sha-138\"},\"base\":{\"sha\":\"main-1\"}},{\"number\":137,\"title\":\"Update CI workflow\",\"body\":\"Bumps Node version in CI.\",\"state\":\"closed\",\"user\":{\"login\":\"dave\"},\"created_at\":\"2026-05-04T09:00:00Z\",\"head\":{\"sha\":\"sha-137\"},\"base\":{\"sha\":\"main-1\"}},{\"number\":136,\"title\":\"Documentation updates\",\"body\":\"Misc doc improvements.\",\"state\":\"closed\",\"user\":{\"login\":\"eve\"},\"created_at\":\"2026-05-03T17:00:00Z\",\"head\":{\"sha\":\"sha-136\"},\"base\":{\"sha\":\"main-1\"}}]"
      }
    ]
  },
  {
    "role": "assistant",
    "content": [
      {
        "type": "tool_use",
        "id": "toolu_3",
        "name": "get_pr_diff",
        "input": {
          "repo": "cash-codes/checkout-service",
          "pr_id": 142
        }
      }
    ]
  },
  {
    "role": "user",
    "content": [
      {
        "type": "tool_result",
        "tool_use_id": "toolu_3",
        "content": "\"diff --git a/src/queries/user.ts b/src/queries/user.ts\\nindex 1a2b3c4..5d6e7f8 100644\\n--- a/src/queries/user.ts\\n+++ b/src/queries/user.ts\\n@@ -1,18 +1,12 @@\\n-import { pool, prepared } from \\\"./db\\\";\\n+import { pool } from \\\"./db\\\";\\n\\n-const getUserStmt = prepared(\\n-  \\\"SELECT u.* FROM users u WHERE u.id = $1\\\"\\n-);\\n-\\n export async function getUser(id: string) {\\n-  return getUserStmt.get(id);\\n+  const { rows } = await pool.query(\\n+    `SELECT u.id, u.email, u.created_at,\\n+            o.id AS order_id, o.total\\n+     FROM users u\\n+     LEFT JOIN orders o ON o.user_id = u.id\\n+     WHERE u.id = $1`,\\n+    [id]\\n+  );\\n+  return rows;\\n }\\n\""
      }
    ]
  },
  {
    "role": "assistant",
    "content": [
      {
        "type": "tool_use",
        "id": "toolu_4",
        "name": "get_pr_comments",
        "input": {
          "repo": "cash-codes/checkout-service",
          "pr_id": 142
        }
      }
    ]
  },
  {
    "role": "user",
    "content": [
      {
        "type": "tool_result",
        "tool_use_id": "toolu_4",
        "content": "[{\"id\":9001,\"user\":{\"login\":\"reviewer-1\"},\"body\":\"Removing the prepared-statement path will mean every query re-plans on Postgres. On hot paths under load this can show up as elevated p95.\",\"created_at\":\"2026-05-06T18:01:00Z\"},{\"id\":9002,\"user\":{\"login\":\"dave\"},\"body\":\"Good point, but Postgres plan cache should handle it for repeated queries.\",\"created_at\":\"2026-05-06T18:30:00Z\"}]"
      }
    ]
  },
  {
    "role": "assistant",
    "content": [
      {
        "type": "text",
        "text": "PR #142 (Refactor user query for performance) likely caused the regression. It removes the cached prepared-statement path, forcing Postgres to re-plan every query — reviewer-1 raised exactly this concern in the PR thread."
      }
    ]
  }
]

Response content

[
  {
    "type": "tool_use",
    "id": "toolu_4",
    "name": "get_pr_comments",
    "input": {
      "repo": "cash-codes/checkout-service",
      "pr_id": 142
    }
  }
]