# validate_memory

> Проверка свежести всех записей одного источника по текущему хешу — параметры, отчёт и ошибки.

Из этой страницы вы узнаете, как одним вызовом проверить, какие записи из документа устарели после его изменения и какие из них в конфликте.

Сквозной пример: в `docs/deploy.md` поменялся способ деплоя staging. Агент считает новый хеш файла и спрашивает MMW, какие факты из этого документа теперь устарели.

## Назначение

`validate_memory` сравнивает `source_hash` всех записей с данным `source_id` с переданным текущим хешем источника и возвращает отчёт: сколько записей проверено, какие устарели, какие в конфликте. Инструмент только читает и ничего не меняет — что делать с устаревшими записями, решаете вы или агент.

## Параметры

| Параметр | Тип | По умолчанию | Описание |
| --- | --- | --- | --- |
| `workspace` | string | `"default"` | Рабочая область. |
| `source_id` | string | `""` | Источник, который проверяется. Обязателен по смыслу: пустое значение — ошибка. |
| `current_source_hash` | string | `""` | Свежий хеш текущего содержимого источника. Пустое значение — ошибка. |
| `scope` | string или null | `null` | Фильтр по ярлыку. |

## Ответ

| Поле | Описание |
| --- | --- |
| `api_version` | Версия API (`1.0`). |
| `workspace` | Рабочая область. |
| `tenant_id` | Идентификатор аккаунта. |
| `source_id` | Проверенный источник. |
| `current_source_hash` | Переданный хеш. |
| `checked` | Сколько активных записей этого источника проверено. |
| `stale_ids` | ID записей, у которых `source_hash` есть и отличается от текущего. |
| `conflict_ids` | ID записей, у которых в области есть версии с тем же `fact_key`, но другим содержимым. |
| `stale_count` | Число устаревших записей. |
| `conflict_count` | Число записей в конфликте. |

## Пример

```json title="arguments"
{
  "workspace": "default",
  "source_id": "docs/deploy.md",
  "current_source_hash": "sha256:51d7b0e3"
}
```

```json
{
  "api_version": "1.0",
  "workspace": "default",
  "tenant_id": "t-3f9a",
  "source_id": "docs/deploy.md",
  "current_source_hash": "sha256:51d7b0e3",
  "checked": 3,
  "stale_ids": [
    "4d428a41-e7b0-4f81-a886-f40c6f6c766c",
    "9a0f3e57-1c2b-4d8e-a6f4-7b3c2d1e0f99"
  ],
  "conflict_ids": [],
  "stale_count": 2,
  "conflict_count": 0
}
```

Дальше агент может сохранить новый факт с актуальным `source_hash` через [`remember`](/reference/remember/) и удалить устаревшие записи через [`forget`](/reference/forget/).

## Ошибки

| Текст | Причина |
| --- | --- |
| `source_id and current_source_hash are required` | Пустой `source_id` или `current_source_hash`. |
| `workspace '…' was deleted and cannot be reused` | Рабочая область удалена. |
| `403 Forbidden: workspace access denied for project` | Рабочая область принадлежит другому проекту. |
| `MCP rate limit exceeded`, `project call limit exceeded` | Слишком много вызовов в минуту. |
| `[MMW Notice]: …` | Нет подписки или аккаунт приостановлен. В льготный период проверка работает. |

## Примечания

- Записи без `source_hash` считаются в `checked`, но устаревшими не становятся: сравнивать не с чем.
- Хеш — сведения о происхождении, а не доказательство. Совпадение хешей не делает запись «проверенной»: статуса `verified` в MMW нет.
- В организации проверяются только записи, которые вы видите по правилам [видимости](/organizations/visibility/).
- Формат хеша не задан: важно лишь, чтобы при сохранении и при проверке он считался одинаково.

Используйте `validate_memory`, а не `search` с `current_source_hash`, когда проверяете один документ: `validate_memory` смотрит только на записи этого `source_id`.

## Что дальше
