Drift & coverage

Portfolio compass

Coverage map by vendor, tag, and watch type — plus gap lists and 30-day drift hotspots (CP-5.1).

GET /api/portfolio/compass Compass →

Auth

Bearer API key (dg_live_…) or trial session header. Unauthenticated requests return an empty compass (totalWatches: 0).

Response (200)

{
  "coverage": {
    "byVendor": [{ "vendor": "Stripe", "category": "payments", "watchCount": 2, "watchTypes": ["api"] }],
    "byWatchType": [{ "watchType": "mcp", "count": 3 }],
    "byTag": [{ "tag": "prod", "count": 4 }]
  },
  "gaps": {
    "neverRun": [{ "watchId": "…", "name": "…", "driftStatus": "never_run", "daysSinceCheck": null }],
    "staleChecks": [],
    "error": []
  },
  "hotspots": [{ "watchId": "…", "name": "…", "breakingCount30d": 2 }],
  "summary": { "totalWatches": 5, "vendorCount": 3, "gapCount": 1 }
}

Gap semantics

  • neverRun — no successful check yet
  • staleChecks — last check older than 30 days
  • error — drift_status: check_error

Guide

Operator workflow: Portfolio Compass guide.

curl https://driftguard.org/api/portfolio/compass \
  -H "Authorization: Bearer dg_live_…"