{
  "version": 1,
  "month": "2026-09",
  "title": "сентябрь 2026",
  "period": {
    "from": "2026-09-01",
    "to": "2026-09-30",
    "timezone": "MSK (UTC+3)"
  },
  "generated_at": "2026-09-28T19:04:06+03:00",
  "complete": false,
  "sections": [
    {
      "id": "index",
      "title": "Индекс и сервис",
      "rows": [
        {
          "id": "documents",
          "name": "Документов в индексе",
          "value": 215282,
          "display": "215 282",
          "note": "снимок /status 28.09.2026 19:04 МСК",
          "missing": ""
        },
        {
          "id": "hosts",
          "name": "Сайтов в индексе",
          "value": 11323,
          "display": "11 323",
          "note": "снимок /status 28.09.2026 19:04 МСК",
          "missing": ""
        },
        {
          "id": "index_version",
          "name": "Версия индекса в работе",
          "value": "v1790533014090",
          "display": "v1790533014090",
          "note": "собрана 27.09.2026 21:16 МСК",
          "missing": ""
        },
        {
          "id": "own_crawl_span",
          "name": "Собственный обход в индексе",
          "value": "12.09.2026 — 27.09.2026",
          "display": "12.09.2026 — 27.09.2026",
          "note": "даты страниц робота YottisBot в действующей версии индекса",
          "missing": ""
        },
        {
          "id": "requests_since_start",
          "name": "Запросов к сервису с последнего запуска",
          "value": 419,
          "display": "419",
          "note": "счётчик процесса, работает 0,2 ч; обнуляется при каждом перезапуске и выкладке",
          "missing": ""
        },
        {
          "id": "errors_since_start",
          "name": "Ответов с ошибкой сервера (5xx) с последнего запуска",
          "value": 0,
          "display": "0",
          "note": "тот же счётчик процесса",
          "missing": ""
        },
        {
          "id": "requests_month",
          "name": "Запросов к сервису за месяц",
          "value": null,
          "display": "нет данных",
          "note": "",
          "missing": "сервис не ведёт месячного счётчика запросов: счётчик в /status живёт от запуска до запуска процесса"
        }
      ],
      "note": ""
    },
    {
      "id": "crawl",
      "title": "Обход и вежливость",
      "rows": [
        {
          "id": "requested_month",
          "name": "Адресов, запрошенных роботом за месяц",
          "value": 277012,
          "display": "277 012",
          "note": "по последнему обращению к адресу: база хранит только его, повторные обращения к тому же адресу здесь не видны",
          "missing": ""
        },
        {
          "id": "hosts_month",
          "name": "Сайтов, к которым обращался робот",
          "value": 42,
          "display": "42",
          "note": "",
          "missing": ""
        },
        {
          "id": "robots_blocked",
          "name": "Адресов, не запрошенных из-за robots.txt",
          "value": 79427,
          "display": "79 427",
          "note": "найдены за месяц и не запрошены: robots.txt сайта их закрывает",
          "missing": ""
        },
        {
          "id": "audit_violations",
          "name": "Нарушений robots.txt и пауз по приёмке",
          "value": 0,
          "display": "0",
          "note": "приёмка crawl-audit по всей базе: каждое обращение сверено с robots.txt сайта и с паузой не короче 1 с или Crawl-delay сайта",
          "missing": ""
        },
        {
          "id": "runs",
          "name": "Прогонов обхода",
          "value": 1068,
          "display": "1 068",
          "note": "расписание запускает прогон раз в 10 минут",
          "missing": ""
        },
        {
          "id": "runs_failed",
          "name": "Прогонов с проваленной приёмкой",
          "value": 1,
          "display": "1",
          "note": "провал останавливает расписание до разбора человеком",
          "missing": ""
        },
        {
          "id": "pages_fetched",
          "name": "Страниц загружено",
          "value": 290937,
          "display": "290 937",
          "note": "сумма итогов прогонов из журнала",
          "missing": ""
        },
        {
          "id": "throttled",
          "name": "Ответов «притормозите» (429 или 503 с Retry-After)",
          "value": 0,
          "display": "0",
          "note": "после такого ответа сайт получает паузу, какую попросил, и не меньше 60 с",
          "missing": ""
        }
      ],
      "note": "журнал начинается 12.09.2026: более ранние дни месяца в нём не покрыты"
    },
    {
      "id": "removals",
      "title": "Изъятия и отказы",
      "rows": [
        {
          "id": "crawler_removed",
          "name": "Робот убрал страницу, удалённую сайтом (404/410)",
          "value": 1892,
          "display": "1 892",
          "note": "",
          "missing": ""
        },
        {
          "id": "crawler_noindex",
          "name": "Робот убрал страницу с запретом индексации (noindex)",
          "value": 9187,
          "display": "9 187",
          "note": "",
          "missing": ""
        },
        {
          "id": "crawler_noimageindex",
          "name": "Робот убрал картинки по запрету noimageindex",
          "value": 0,
          "display": "0",
          "note": "",
          "missing": ""
        },
        {
          "id": "crawler_restored",
          "name": "Возвращено в выдачу после повторного обхода",
          "value": 165,
          "display": "165",
          "note": "",
          "missing": ""
        },
        {
          "id": "legal",
          "name": "Правовые изъятия",
          "value": 0,
          "display": "0",
          "note": "",
          "missing": ""
        },
        {
          "id": "opt_out",
          "name": "Отказы владельцев сайтов (opt-out)",
          "value": 0,
          "display": "0",
          "note": "",
          "missing": ""
        },
        {
          "id": "manual_removed",
          "name": "Убрано вручную по обращениям",
          "value": 0,
          "display": "0",
          "note": "",
          "missing": ""
        },
        {
          "id": "demands",
          "name": "Требований об изъятии",
          "value": null,
          "display": "нет данных",
          "note": "",
          "missing": "выгрузка реестра требований не передана сборке отчёта"
        }
      ],
      "note": "Считаются записи журнала, а не страницы: робот закрывает и адрес, и его канонический вариант, поэтому одна страница может дать несколько записей. Адреса и заявители не публикуются."
    },
    {
      "id": "availability",
      "title": "Доступность",
      "rows": [
        {
          "id": "checks_ok",
          "name": "Проверок снаружи — сервис ответил",
          "value": 100,
          "display": "100",
          "note": "",
          "missing": ""
        },
        {
          "id": "checks_failed",
          "name": "Проверок снаружи — сервис не ответил",
          "value": 0,
          "display": "0",
          "note": "",
          "missing": ""
        },
        {
          "id": "checks_no_verdict",
          "name": "Проверок без вердикта (недоступен сам сервис проверки)",
          "value": 13,
          "display": "13",
          "note": "",
          "missing": ""
        },
        {
          "id": "availability",
          "name": "Доля успешных проверок",
          "value": 1.0,
          "display": "100,00 %",
          "note": "доля проверок, где сервис ответил, среди проверок с вердиктом; это не минуты простоя: две проверки в час их не измеряют",
          "missing": ""
        }
      ],
      "note": "журнал начинается 26.09.2026: более ранние дни месяца в нём не покрыты"
    }
  ],
  "sources": [
    {
      "name": "/status",
      "state": "ok",
      "detail": "status.json, 28.09.2026 19:04 МСК"
    },
    {
      "name": "база обхода",
      "state": "ok",
      "detail": "crawl-b3.db"
    },
    {
      "name": "журнал обхода",
      "state": "ok",
      "detail": "журнал начинается 12.09.2026: более ранние дни месяца в нём не покрыты"
    },
    {
      "name": "журнал исключений",
      "state": "ok",
      "detail": "exclusions.jsonl"
    },
    {
      "name": "реестр требований",
      "state": "missing",
      "detail": "выгрузка реестра требований не передана сборке отчёта"
    },
    {
      "name": "внешний сторож",
      "state": "ok",
      "detail": "журнал начинается 26.09.2026: более ранние дни месяца в нём не покрыты"
    }
  ],
  "not_published": [
    "тексты запросов и что искали посетители",
    "адреса посетителей, cookie и любые идентификаторы",
    "какие страницы открывали посетители",
    "адреса страниц, снятых по правовым основаниям, и имена заявителей"
  ]
}
