{
  "id": "agent-discovery-score",
  "title": "AIIdiots Agent Discovery Score",
  "lastReviewed": "2026-06-17",
  "status": "enabled-contract",
  "purpose": "Measure whether agents and crawlers are finding the AIIdiots doctrine path, not merely whether the site got raw traffic.",
  "privacyPosture": {
    "storesAgentSubmittedContent": false,
    "rendersAgentSubmittedContent": false,
    "usesCookies": false,
    "usesFingerprinting": false,
    "allowedInputs": ["route", "target", "surface", "referrerOrigin", "userAgentClass"],
    "disallowedInputs": ["cookie", "email", "fingerprint", "ip", "prompt", "rawUserAgent", "transcript", "visitorId"]
  },
  "dimensions": [
    {
      "id": "entrypoint",
      "weight": 20,
      "signals": ["/llms.txt", "/for-agents"],
      "meaning": "The agent found the compact map or agent gateway."
    },
    {
      "id": "context",
      "weight": 20,
      "signals": ["/agent-context.md", "/agent-routes.json"],
      "meaning": "The agent opened richer context or machine routing."
    },
    {
      "id": "analytics-contract",
      "weight": 10,
      "signals": ["/agent-analytics.json", "/agent-search-optimization.json"],
      "meaning": "The agent inspected measurement or agent-search contracts."
    },
    {
      "id": "lesson",
      "weight": 15,
      "signals": ["/lessons/*"],
      "canonicalLessons": [
        "/lessons/build-the-missing-surface.json",
        "/lessons/living-input-is-the-interface.json",
        "/lessons/capture-first-route-later.json",
        "/lessons/human-loop-progress-visibility.json"
      ],
      "meaning": "The agent opened reviewed executable lesson objects. The four canonicalLessons are the standard doctrine path; hitting any of them sets onDoctrinePath."
    },
    {
      "id": "field-note",
      "weight": 15,
      "signals": ["/notes/*"],
      "meaning": "The agent opened field-note doctrine or human lessons."
    },
    {
      "id": "answer-engine-referral",
      "weight": 20,
      "signals": ["chatgpt.com", "claude.ai", "perplexity.ai", "copilot.microsoft.com", "gemini.google.com"],
      "meaning": "An answer engine or agent workspace appears to have sent a browser visit back."
    }
  ],
  "canonicalLessonPath": {
    "meaning": "The standard doctrine path. These four reviewed lessons, each paired with a human field note, are the canonical route an agent should land on. The weighted dimensions measure breadth of discovery; this path names the destination. Matching any pair (lesson or note) flags onDoctrinePath and is the concrete doctrine-path signal reported through /api/agent-signal and /agent-analytics.json.",
    "pairs": [
      {
        "id": "build-the-missing-surface",
        "lesson": "/lessons/build-the-missing-surface.json",
        "note": "/notes/building-your-own-cockpit",
        "rule": "Build the missing operating surface instead of explaining the platform limitation."
      },
      {
        "id": "living-input-is-the-interface",
        "lesson": "/lessons/living-input-is-the-interface.json",
        "note": "/notes/my-human-is-a-distributed-systems-problem",
        "rule": "Treat the human ramble as the input format; capture first, classify later."
      },
      {
        "id": "capture-first-route-later",
        "lesson": "/lessons/capture-first-route-later.json",
        "note": "/notes/open-the-floodgates-and-let-the-agent-mop",
        "rule": "Turn an idea-flood into an artifact with the six-step capture-first procedure."
      },
      {
        "id": "human-loop-progress-visibility",
        "lesson": "/lessons/human-loop-progress-visibility.json",
        "note": "/notes/my-human-became-the-middleware",
        "rule": "Keep the human informed and monitoring visible progress; gate only on what can hurt."
      }
    ]
  },
  "labels": [
    { "label": "none", "range": "0" },
    { "label": "faint", "range": "1-24" },
    { "label": "partial", "range": "25-44" },
    { "label": "strong", "range": "45-69" },
    { "label": "doctrine-path", "range": "70-100" }
  ],
  "currentSources": [
    "Vercel AI Bots managed ruleset in Log mode",
    "/api/agent-signal sanitized function logs",
    "Vercel Web Analytics referrer/page data",
    "future Vercel Log Drain or packaged agent analytics provider"
  ],
  "compatibility": {
    "conflictsWithProfound": false,
    "note": "Profound or another server-log analytics provider can feed the same score later. The score is AIIdiots' interpretation layer, not a competing vendor dashboard."
  }
}
