{
  "generatedAt": "2026-10-24T00:15:50.993Z",
  "services": [
    {
      "name": "operator-dashboard",
      "title": "Overview",
      "description": "System map + the freezable audit log. Composes every service's registered screens.",
      "dependsOn": [],
      "provides": [],
      "uses": [],
      "screens": [
        {
          "id": "overview",
          "title": "System overview"
        },
        {
          "id": "audit",
          "title": "Audit log"
        }
      ],
      "routes": [
        "GET /api/audit",
        "POST /api/audit/freeze",
        "POST /api/audit/unfreeze"
      ]
    },
    {
      "name": "search",
      "title": "Search",
      "description": "Query the index and see the ranking breakdown (pretend engine; fusion gated by active indexes).",
      "dependsOn": [],
      "provides": [],
      "uses": [
        "index.list"
      ],
      "screens": [
        {
          "id": "search",
          "title": "Search"
        },
        {
          "id": "diagnose",
          "title": "Diagnose"
        }
      ],
      "routes": [
        "GET /api/search",
        "GET /api/diagnose.txt"
      ]
    },
    {
      "name": "index-manager",
      "title": "Indexes",
      "description": "Index registry: completeness, model, fusion state, a manual in-search override, and build launch.",
      "dependsOn": [],
      "provides": [
        "index.list"
      ],
      "uses": [],
      "screens": [
        {
          "id": "indexes",
          "title": "Indexes"
        }
      ],
      "routes": [
        "POST /api/index/override",
        "POST /api/index/build",
        "GET /api/index/status"
      ]
    },
    {
      "name": "crawler-manager",
      "title": "Crawlers",
      "description": "Runs the web crawl (separate process): seed, start, stop, and live frontier stats. Peers register crawlers via the bus.",
      "dependsOn": [],
      "provides": [],
      "uses": [],
      "screens": [
        {
          "id": "crawlers",
          "title": "Crawlers"
        }
      ],
      "routes": [
        "POST /api/crawl/seed",
        "POST /api/crawl/start",
        "POST /api/crawl/stop",
        "GET /api/crawl/status"
      ]
    },
    {
      "name": "homepage-feeds",
      "title": "Homepage",
      "description": "The public homepage discovery bento (/api/home): news + curated feeds + surprises + Page of the week.",
      "dependsOn": [
        "crawler-manager",
        "website"
      ],
      "provides": [],
      "uses": [],
      "screens": [
        {
          "id": "feeds",
          "title": "Homepage"
        },
        {
          "id": "potw",
          "title": "Page of the week"
        }
      ],
      "routes": [
        "POST /api/home/refresh",
        "POST /api/potw/add",
        "POST /api/potw/feature",
        "POST /api/potw/remove"
      ]
    },
    {
      "name": "website",
      "title": "Website",
      "description": "Public erguil site — homepage + search pages (ported Erguil-1 design). Thin client over /api/search.",
      "dependsOn": [
        "search",
        "homepage-feeds"
      ],
      "provides": [],
      "uses": [],
      "screens": [
        {
          "id": "website",
          "title": "Public site"
        }
      ],
      "routes": []
    },
    {
      "name": "seeds-manager",
      "title": "Seeds",
      "description": "Individual seed URLs that bootstrap the crawl frontier.",
      "dependsOn": [
        "crawler-manager"
      ],
      "provides": [],
      "uses": [],
      "screens": [
        {
          "id": "seeds",
          "title": "Seeds"
        }
      ],
      "routes": []
    },
    {
      "name": "seed-packages",
      "title": "Seed packages",
      "description": "Installable bundles of starter URLs to seed the crawler.",
      "dependsOn": [
        "seeds-manager"
      ],
      "provides": [],
      "uses": [],
      "screens": [
        {
          "id": "seed-packages",
          "title": "Packages"
        }
      ],
      "routes": []
    },
    {
      "name": "updates",
      "title": "Updates",
      "description": "Operator announcements + dismissible search-page banners.",
      "dependsOn": [],
      "provides": [],
      "uses": [],
      "screens": [
        {
          "id": "updates",
          "title": "Updates"
        }
      ],
      "routes": [
        "POST /api/updates/post"
      ]
    },
    {
      "name": "user-feedback",
      "title": "Feedback",
      "description": "User complaints about results, for operator review.",
      "dependsOn": [],
      "provides": [],
      "uses": [],
      "screens": [
        {
          "id": "feedback",
          "title": "Feedback"
        }
      ],
      "routes": []
    },
    {
      "name": "concord",
      "title": "Concord",
      "description": "Debate/argument-graph integration: claims, counterpoints, dedup health.",
      "dependsOn": [
        "index-manager"
      ],
      "provides": [],
      "uses": [],
      "screens": [
        {
          "id": "concord",
          "title": "Concord"
        }
      ],
      "routes": []
    }
  ]
}