doug
DashboardScoreboardQueueDocsGitHubAbout
Menu
DashboardScoreboardQueueDocsGitHubAbout
Sign in

Getting started

  • Introduction
  • Quickstart

Concepts

  • Risk routing
  • Defect labels
  • The cleared band
  • What Doug gets wrong

Reference

  • CLI · doug-backtest
  • The report

Coming up

  • MCP · Pattern Garden
  • REST API

Meta

  • Changelog
View as llms.txt

Coming up

REST API

Preview
The unauthenticated showcase endpoints are live — they are what /queue and /scoreboard render. Tenant queue and receipt are live behind a session or a token. A scoreboard of your clocks is still planned.

Both showcase routes ignore ?repo=. The bound is the API’s DOUG_SHOWCASE_REPO, not a query string a stranger can widen. Per-author-type rates are not published.

GET /v1/showcase/queue live
Open PRs for the showcase repo, scored, with reasons. Unauthenticated. What /queue renders.
GET /v1/showcase/scoreboard live
Prospective counters from the ledger: adjudicated, pending, first due, deep-read meter. miss_rate is null until the pre-registered interval fires. Label: not yet decidable — a count, not a rate.
GET /v1/prs/:number/receipt live
The evidence trail behind a verdict. Session or a token with receipt:read. Not a public showcase route.
GET /v1/queue live
Tenant-scoped routed queue. Session or token. The showcase route is pinned to one repo by design and is not this.
GET /v1/scoreboard planned
Tenant-scoped clocks: your adjudicated / pending / miss_rate. The showcase route is pinned to one repo by design and is not this.
RESPONSE SHAPE — run it for the numbers
$ curl "$DOUG_API_URL/v1/showcase/scoreboard"
{
  "repo": "coldworkshq/doug",
  "adjudicated": <int>,
  "pending": <int>,
  "as_of": <iso8601>,
  "first_due": <iso8601 | null>,
  "deep_reads": <int>, "deep_read_cap": <int>,
  "miss_rate": null,
  "decidable": false,
  "label": "not yet decidable — a count, not a rate"
}

# The counters move; a number printed here would
# be stale by the time you read it, so this shows
# the shape and the route is unauthenticated.
# miss_rate does NOT move: null until the
# pre-registered interval fires.
PreviousMCP · Pattern GardenNext Changelog