{
  "schema_version": "1.0",
  "product_id": "corrupt-press",
  "visibility": "public",
  "generated_at": "2026-08-10",
  "canonical_origin": "https://corrupt.press",
  "recommended_mode": "server_side_cached_fetch",
  "required_datasets": [
    {
      "id": "public-data-contract",
      "url": "/data/integrity-public-data-contract.json",
      "required": true
    },
    {
      "id": "reviewed-events-json",
      "url": "/data/integrity-reviewed-events.json",
      "required": true
    },
    {
      "id": "manifest",
      "url": "/data/integrity-manifest.json",
      "required": true
    },
    {
      "id": "controlled-vocabulary",
      "url": "/data/integrity-controlled-vocabulary.json",
      "required": true
    }
  ],
  "optional_datasets": [
    {
      "id": "monitoring-snapshot",
      "url": "/data/integrity-monitoring-snapshot.json",
      "use": "monitoring widgets and freshness badges"
    },
    {
      "id": "source-availability",
      "url": "/data/integrity-source-availability.json",
      "use": "source provenance coverage, not external uptime"
    },
    {
      "id": "verified-links",
      "url": "/data/integrity-verified-links.json",
      "use": "совместные упоминания из вступивших в силу судебных решений с правовыми оговорками"
    },
    {
      "id": "entity-graph-lite",
      "url": "/data/integrity-entity-graph-lite.json",
      "use": "поиск по проверенным событиям, источникам, организациям и судебным карточкам без выводов о скрытых связях"
    }
  ],
  "profiles": [
    {
      "id": "wordpress_shortcode",
      "platform": "WordPress",
      "pattern": "WP-Cron или временный кэш получает JSON на сервере и выводит данные через короткий код.",
      "cache_ttl_seconds": 300,
      "must_preserve_fields": [
        "id",
        "status",
        "source_url",
        "legal_note",
        "verified_at"
      ],
      "public_route_example": "/anti-corruption-monitor/"
    },
    {
      "id": "bitrix_component",
      "platform": "1С-Битрикс",
      "pattern": "Агент или кэш компонента получает проверенные события и описание данных; шаблон выводит карточки из серверного кэша.",
      "cache_ttl_seconds": 300,
      "must_preserve_fields": [
        "id",
        "status",
        "source_url",
        "legal_note",
        "verified_at"
      ],
      "public_route_example": "/corruption-monitor/"
    },
    {
      "id": "sharepoint_like_dms",
      "platform": "Система документооборота / SharePoint",
      "pattern": "Серверное задание по расписанию хранит копию только для чтения и прикрепляет источник и правовую оговорку к каждой карточке.",
      "cache_ttl_seconds": 900,
      "must_preserve_fields": [
        "id",
        "status",
        "source_url",
        "legal_note",
        "verified_at"
      ],
      "public_route_example": "/compliance/corrupt-press/"
    },
    {
      "id": "ai_retrieval",
      "platform": "Корпоративный поиск по данным",
      "pattern": "Индексировать только проверенные события вместе с описанием данных; сохранять статус и правовую оговорку в метаданных каждого фрагмента.",
      "cache_ttl_seconds": 3600,
      "must_preserve_fields": [
        "id",
        "status",
        "source_url",
        "legal_note",
        "verified_at"
      ],
      "public_route_example": "internal_search_collection:corrupt_press_reviewed"
    }
  ],
  "security_boundaries": [
    "Для публичных наборов ключ API не требуется.",
    "Получать публичные наборы через серверные задания или доверенный промежуточный слой.",
    "Не открывать внутреннюю очередь, файлы первичных сигналов, служебные отчёты и редакционный индекс сущностей.",
    "Не выводить из публичных записей виновность, санкции, оценку риска или граф связей.",
    "Публичный граф сущностей показывает только совместное упоминание в опубликованной записи.",
    "Для каждой записи сохранять адрес источника, статус, правовую оговорку и дату проверки."
  ],
  "fallback_behavior": {
    "on_fetch_error": "оставить предыдущую серверную копию и показать дату её формирования",
    "on_contract_mismatch": "скрыть сводные показатели и показать ссылки на основные страницы corrupt.press",
    "on_empty_result": "показать нейтральное сообщение без вывода об отсутствии событий"
  }
}
