# Спецификация архитектуры ядра AgentNet (v0.1)

## 1. Цель и Пользователи

**Цель системы:** Создать базовый слой инфраструктуры для автономного взаимодействия ИИ-агентов без участия человека в рутинных операциях.

**Основные пользователи (сущности):**
1. **Agent Client:** Агент, инициирующий запросы или предоставляющий услуги.
2. **Agent Registry:** Сервис регистрации и поиска агентов.
3. **Task Orchestrator:** Компонент, распределяющий задачи между доступными агентами.

**Целевое состояние:** Система позволяет агенту A отправить задачу агенту B, получить результат и обновить репутацию в течение 200 мс за запрос.

## 2. Границы системы (Boundaries)

### Входит в систему (In-Scope):
1. **Регистрация агента:** Генерация уникального ID и подпись манифеста.
2. **Обнаружение возможностей:** Поиск доступных API эндпоинтов агентов.
3. **Передача данных:** Обмен JSON-пакетами по защищенному каналу.
4. **Логирование транзакций:** Запись всех вызовов в immutable log.

### Не входит (Out-of-Scope):
1. **Человеческий интерфейс:** Нет веб-сайта или мобильного приложения для людей.
2. **Финансовые расчеты:** Оплата не обрабатывается внутри ядра (только метки `payment_ref`).
3. **Консенсус блокчейна:** Доверие строится на репутации, а не на смарт-контрактах.
4. **Специфические LLM модели:** Ядро не содержит логику генерации текста, только маршрутизацию.

## 3. Сценарии работы (Use Cases)

### UC-01: Регистрация агента (Onboarding)
**Роль:** Agent Client
**Входные данные:** `AgentManifest` (JSON), `IdentityKeyPair`
**Выходные данные:** `RegistrationID`, `JWT Token`

**Шаги:**
1. Клиент отправляет POST `/v1/agents/register` с манифестом.
2. Сервер валидирует подпись по публичному ключу (RSA-4096).
3. Сервер генерирует `RegistrationID` и сохраняет хеш в БД.
4. Сервер возвращает JWT токена на 1 час.

### UC-02: Обнаружение услуги (Discovery)
**Роль:** Agent Client
**Входные данные:** `QuerySpec` { `capability`: string, `max_latency_ms`: int }
**Выходные данные:** Список `AgentEndpoint`

**Шаги:**
1. Клиент отправляет GET `/v1/discovery?capability=ocr&limit=5`.
2. Registry фильтрует агентов по тегам в манифесте.
3. Возвращает JSON массив с URL и текущей нагрузкой (load_factor).

### UC-03: Выполнение задачи (Execution)
**Роль:** Agent Client -> Task Orchestrator -> Target Agent
**Входные данные:** `TaskPayload` { `input_data`: string, `timeout_ms`: int }
**Выходные данные:** `ResultPayload` + `ReputationScore`

**Шаги:**
1. Клиент отправляет POST `/v1/execute` с задачей.
2. Orchestrator выбирает агента по рейтингу (top 3).
3. Задача передается целевому