Мандат агента: флаг доступности и гейт (0.85)
- services/claims.py: рамка мандата (ТЗ 3.20) — агент меняет только задачи с флагом
  ai_eligible, а сам флаг ставит только владелец: иначе «пометил и закрыл» обходило
  бы правило. Ошибка — доменным исключением MandateError: REST отдаёт по нему 403,
  MCP — текст с подсказкой следующего шага (стиль 3.10), а правило одно на оба пути.
- REST: PATCH проверяет рамку до правок; create принимает флаг (своя задача — можно),
  пишет created_by_kind/created_by_name. Список задач фильтруется по ai_eligible,
  created_by_kind и accept_state — признаки лежат в самой задаче, а не в join'е.
- MCP: update_task принимает ai_eligible (только владелец) и отказывает агенту на
  задаче без флага с подсказкой «попросите владельца пометить или действуйте с
  is_user=true»; create_task принимает флаг; list_tasks фильтруется теми же полями;
  _compact отдаёт агенту ai_eligible, created_by_kind/name, accept_state, claimed_by.
- tests/test_agent_mandate.py: 12 тестов — дефолт «нет», гейт REST и MCP, отказ агенту
  в выдаче флага себе, Bearer-токен на REST как агент по умолчанию и владелец под
  заголовком X-Actor, фильтры списка, поля мандата в ответах тулов.

ТЗ 0.85.
1 parent cb3e1af commit 5a63e7d416d8f87bb5b835918a8d639380ccbc7b
@root root authored 8 hours ago
Showing 5 changed files
View
backend/app/api/tasks.py
View
backend/app/mcp_server.py
View
backend/app/services/claims.py 0 → 100644
View
backend/tests/test_agent_mandate.py 0 → 100644
View
backend/tests/test_task_events.py