{
  "repo": "dm",
  "full_name": "pingcap/dm",
  "status": "scan_complete",
  "review_status": "pending_review",
  "scan_started_at": "2026-03-31T21:15:00+08:00",
  "scan_completed_at": "2026-03-31T21:15:00+08:00",
  "expected_binaries": [
    {
      "name": "dm-master",
      "path": "cmd/dm-master/main.go",
      "status": "completed",
      "role": "primary_service"
    },
    {
      "name": "dm-ctl",
      "path": "cmd/dm-ctl/main.go",
      "status": "completed",
      "role": "admin_cli"
    },
    {
      "name": "dm-syncer",
      "path": "cmd/dm-syncer/main.go",
      "status": "completed",
      "role": "worker"
    },
    {
      "name": "dm-worker",
      "path": "cmd/dm-worker/main.go",
      "status": "completed",
      "role": "worker"
    },
    {
      "name": "dm-portal",
      "path": "cmd/dm-portal/main.go",
      "status": "completed",
      "role": "primary_service"
    }
  ],
  "scanned_binaries": [
    {
      "name": "dm-master",
      "output_file": "cmd-dm-master"
    },
    {
      "name": "dm-ctl",
      "output_file": "cmd-dm-ctl"
    },
    {
      "name": "dm-syncer",
      "output_file": "cmd-dm-syncer"
    },
    {
      "name": "dm-worker",
      "output_file": "cmd-dm-worker"
    },
    {
      "name": "dm-portal",
      "output_file": "cmd-dm-portal"
    }
  ],
  "skipped_binaries": [],
  "files_generated": [
    "interfaces/cmd-dm-master.json",
    "interfaces/cmd-dm-ctl.json",
    "interfaces/cmd-dm-syncer.json",
    "interfaces/cmd-dm-worker.json",
    "interfaces/cmd-dm-portal.json",
    "service-mapping/cmd-dm-master.json",
    "service-mapping/cmd-dm-ctl.json",
    "service-mapping/cmd-dm-syncer.json",
    "service-mapping/cmd-dm-worker.json",
    "service-mapping/cmd-dm-portal.json"
  ],
  "scan_progress": "5/5",
  "current_binary": null,
  "codex_scan_at": "2026-03-31T21:15:00+08:00",
  "codex_scan_verdict": "scan_complete",
  "codex_scan_note": "Manual meta validation showed the repo model had interface drift. dm-master is the cluster control-plane service with gRPC plus grpc-gateway and OpenAPI HTTP surfaces on the embedded etcd listener. dm-worker is a long-running worker that multiplexes gRPC and status/metrics/pprof HTTP on the same port via cmux. dm-syncer is a standalone replication worker binary without inbound APIs, dm-ctl is a CLI, and dm-portal is a small HTTP portal service."
}
