Usages:
  conventions: .goga/usages/conventions.md

Annotations: |
  Использовать `conventions` для правил написания кода и тестов.

  Загрузчик файлов проекта.

---

"load_codemanifest(cell_path: str, project_root: str = '') -> content:str":
  location: codemanifest.py
  annotations: |
    Читает файл CODEMANIFEST по пути cell.
    Возвращает содержимое файла как строку.
    Если файл не найден — выбрасывает FileNotFoundError.
    Если путь содержит ".." или начинается с "/" — выбрасывает ValueError.

    Защита от path traversal: путь не должен содержать ".." и не должен начинаться с "/".

    `cell_path`: относительный путь к cell (например "goga_tool_viewer/parser")
    `project_root`: абсолютный путь к корню проекта. Если пустой — используется текущая рабочая директория
    `content`: текстовое содержимое CODEMANIFEST

"load_usage_file(usage_path: str, project_root: str = '') -> content:str":
  location: codemanifest.py
  annotations: |
    Читает usage .md файл по относительному пути от корня проекта.
    Возвращает содержимое файла как строку.
    Если файл не найден — выбрасывает FileNotFoundError.
    Если путь содержит "..", начинается с "/", выходит за корень проекта
    или не имеет расширение .md — выбрасывает ValueError.

    Защита от path traversal: двухуровневая проверка, аналогично `load_codemanifest`.
    Дополнительно проверяет, что расширение файла — .md.

    `usage_path`: относительный путь к .md файлу от корня проекта
      (например ".goga/usages/conventions.md" или "goga_tool_viewer/parser/.usages/loading.md")
    `project_root`: абсолютный путь к корню проекта. Если пустой — используется текущая рабочая директория
    `content`: текстовое содержимое usage-файла

---

Author: Goga
CreatedAt: 03/06/26
Description: |
  Загрузчик файлов проекта — чтение артефактов из файловой системы.