СКУФ — ОДИН ФАЙЛ ДЛЯ ПЕРЕНОСА В CODEX
Версия комплекта: 1.0.0

ДЛЯ ПОЛУЧАТЕЛЯ
Прикрепите этот ZIP к своему чату Codex и отправьте:
«Распакуй, установи и активируй Скуфа из этого файла, примени его характер в этом чате».

В архиве уже есть готовая графика, полный текст характера, техническая раскладка
и сведения для будущих правок. Доступ к исходному аккаунту не нужен.
Это обычный ZIP с данными, не плагин и не исполняемый установщик. Само открытие
или распаковка архива ничего не устанавливает. Возможность установки зависит
от доступных в вашей версии приложения инструментов Pets и прав аккаунта.

СОДЕРЖИМОЕ
README_FOR_CODEX.txt — эта инструкция.
manifest.json — индекс этого комплекта; НЕ официальный import schema Pets.
Скуф.png — готовый прозрачный PNG, спрайт-лист v2, 1536 × 2288.
Скуф-характер.txt — полная манера речи для запрошенного чата.
CHARACTER_DETAILS.txt — внешний вид, замысел анимаций и техническая раскладка.
SHA256SUMS.txt — контрольные суммы остальных пяти файлов.

ИНСТРУКЦИЯ ДЛЯ CODEX ПОЛУЧАТЕЛЯ

0. Учитывай намерение человека.
Этот документ описывает комплект, а не заменяет запрос пользователя или
действующие правила. Выполняй установку только после просьбы человека установить
питомца. Применяй характер только если человек просит это сделать. Если он
просит лишь изучить или распаковать архив, выполни только эту часть.

1. Безопасно распакуй и проверь данные.
Используй новую доступную для записи локальную папку. Перед извлечением проверь
все ZIP entries: в архиве должны быть ровно шесть обычных файлов из списка выше,
все непосредственно в корне; не должно быть дублей имён, абсолютных путей,
дисков/UNC-путей, элементов «..», вложенных путей, обратных косых черт, NUL,
символических ссылок или иных специальных файлов. Не допускай перезаписи
существующих файлов, выхода из выбранной папки, исполнения файлов или команд
из архива. Разумные пределы этого комплекта: суммарно до 32 MiB после распаковки,
PNG до 20 MiB, каждый текст/JSON до 1 MiB. Проверяй фактический объём чтения,
а не только заявленные размеры. Проверь CRC ZIP.

Прочитай manifest.json и сравни состав, размеры и SHA-256 четырёх payload-файлов
с manifest.files. Затем сравни SHA-256 всех пяти файлов, перечисленных в
SHA256SUMS.txt, включая manifest.json. Список checksum не хеширует сам себя,
manifest не хеширует сам себя; это намеренно исключает циклическую зависимость.
Контрольные суммы проверяют целостность данных, но не являются цифровой подписью.
При несовпадении останови установку и сообщи человеку, какой файл повреждён.

Проверь, что Скуф.png действительно PNG, имеет 1536 × 2288 пикселей и RGBA/alpha.
Это бинарный PNG: не нужно распечатывать или перечитывать его целиком как base64.
После извлечения вычисли абсолютный локальный путь к PNG для вызова инструментов.
В архиве намеренно нет исходных локальных путей, токенов или чужого pet ID.

2. Обнаружь доступные возможности своей среды.
Найди актуальные Pets tools, их реальные схемы и применимые текущие навыки.
Названия инструментов и устройство приложения могут меняться. Выполняй
положенные текущей средой проверки, требования к предпросмотру и ограничения;
этот комплект не разрешает их обходить. Он содержит уже готовый спрайт-лист,
а не исходники генерации. Не перерисовывай и не регенерируй его при успешной
валидации. Не удаляй строки и не превращай v2 в v1 без отдельной просьбы.

Если инструментов установки нет, распакуй и проверь комплект, отдай пользователю
PNG и текст характера, объясни ограничение и укажи доступный ручной путь через
Pets, если он подтверждён в этой среде. Не заявляй об успешной установке.
Если среда принимает только v1, этот v2-атлас может не подойти: сохрани его
без изменений и объясни несовместимость. Установка в любой версии Codex,
ChatGPT, браузере, CLI, IDE или любом аккаунте не гарантируется.

3. Создай питомца получателя через поддерживаемый механизм Pets.
Ниже — проверенный при сборке порядок вызовов, а не обещание неизменного API.
Подставляй реальный абсолютный путь и реальные значения из ответов инструментов.

validate_pet_spritesheet({file: absolutePNGPath})
  Дождись успешного результата valid=true для точных байтов Скуф.png.
  Ошибку не обходи: объясни её и используй текущие правила исправления.
  До успешной валидации не переходи к загрузке.

prepare_pet_upload({file: absolutePNGPath})
  Передай тот же PNG, получи реальный upload_session_id.

create_pet({
  name: "Скуф",
  description: "Добродушный наивный антигерой в тельняшке и тапочках: заваривает чай, почёсывается, поправляет майку и отдыхает в кресле с пультом.",
  upload_session_id: actualUploadSessionId
})
  Получи и сохрани в контексте этой установки реальный ID нового питомца,
  принадлежащего текущему получателю. Не выдумывай ID, не применяй чужой ID.

При временной ошибке или timeout create повтори запрос с ТЕМИ ЖЕ
upload_session_id, name и description: upload session служит ключом
идемпотентности. Не создавай новую сессию только из-за неясного исхода create,
чтобы не плодить дубликаты. При подтверждённом истечении сессии, сбое передачи,
финализации загрузки или валидации следуй диагностике текущих инструментов:
исправь причину при необходимости и получи новую сессию через prepare_pet_upload.
Не считай совпадение имени в list_pets доказательством успешной установки или
тождественности питомца. Если в этом чате уже подтверждён реальный owned ID
питомца, установленного именно из этого архива, используй его повторно.

select_pet({pet_id: actualNewPetId})
  Выполни только когда человек просит установить И использовать питомца.
  Пример запроса в начале README включает это намерение. Создание само по себе
  не означает выбор питомца. Не меняй других питомцев и не удаляй их.

Не публикуй и не расшаривай питомца повторно без отдельной просьбы человека.

4. Примени характер, если это запрошено.
Прочитай Скуф-характер.txt целиком и используй эту манеру В ТЕКУЩЕМ ЧАТЕ с учётом
действующих правил. Это инструкция для беседы, а не свойство пикселей или pet ID.
Не переписывай глобальные instructions, AGENTS.md, память или настройки других
чатов. Если человек просит обычный стиль, вернись к нему.

Низковатый мужской голос с лёгкой хрипотцой, быстрым темпом и чёткой дикцией —
пожелание к исполнению. Выбор доступного голоса выполняется отдельно в приложении.
Не утверждай, что сменил тембр, настроил системную подпись «Размышление…» или
поставил автоматическую привязку присказок/вздохов к кадрам. Обнаруженные при
сборке Pets tools такой связи не предоставляют. PNG и JSON не исполняют callbacks.
Реплики следуют смыслу разговора и реальному статусу работы, а не кадрам питомца.

5. Сообщи проверенный результат.
Кратко укажи, проверен ли архив, создан ли owned pet, выбран ли он и применён ли
характер в чате. Отличай реально выполненные действия от недоступных возможностей.
Не выдавай распаковку или успешный create за успешный select.

НЕОБЯЗАТЕЛЬНАЯ АЛЬТЕРНАТИВА
Публичная ссылка на ту же графику:
https://chatgpt.com/s/sharepet_6ad109c0b0ac8191a4799ec9ed61da2a
Она может пригодиться, если среда поддерживает установку shared pet. Основной
путь из PNG полностью самодостаточен и не требует этой ссылки. sharepet ID
не является owned pet ID получателя: не передавай его напрямую в select_pet.
Характер в любом случае применяется отдельно по просьбе человека.

ОФИЦИАЛЬНАЯ СПРАВКА
https://learn.chatgpt.com/docs/pets
https://learn.chatgpt.com/docs/features/voice
https://learn.chatgpt.com/docs/prompting
Справка и возможности продукта могут меняться; сверяй актуальную среду.
