Для кого: команды creative ops и маркетинга, которые выкладывают маркетинговые PNG из Figma или аналогов и обязаны доказать контраст WCAG до запуска рассылок и платных креативов. Что строим: на удалённом Mac с OpenClaw — дебаунс-мониторинг корня экспорта дизайна, гейты AA или строже AAA по зафиксированному манифесту, JSONL как доказательная база, классифицированные повторы и шаблон пакетного переэкспорта только для проваливших SKU. Чем отличается от типичных watchdog экспорта: единица качества — математика доступности по заявленным цветам, а не размеры, POT-геометрия спрайтов или покадровые последовательности; те конвейеры подключайте отдельно. Связка с референсным QC и оверлеями — в материале «референсный обзор PNG и выборочный QC»; дисциплина watch, retry и архива логов — в «мониторинг PNG: повторы и архив логов».
Содержание
Почему контраст проскальзывает при приёмке статичных PNG
- Дрейф hex: после экспорта дизайнер меняет переменные в файле; байты PNG на диске уже не совпадают с таблицей, которую утвердил маркетинг.
- Ложное спокойствие: ночные гейты по ширине и ICC проходят, а соотношение цвета заголовка и подложки никто не считает до запроса юридического отдела.
- Шум повторов: без классификации автоматика крутит retry на каждом провале гейта, скрывая реальные ошибки данных и сжигая CPU на общем удалённом Mac.
Закрепите передачу от дизайна так: каждая поставка содержит не только PNG, но и строку contrast-manifest.yaml на актив. Ops смотрит на каталог и хеш манифеста, а не на переписку в мессенджере. Для размеров соцбаннеров держите согласованность с «матрицей PNG для соцбаннеров». Установку шлюза зафиксируйте по «установке OpenClaw на поддерживаемых платформах».
Матрица порогов и доказательств
| Профиль WCAG | Обычный текст | Крупный текст | Типичный маркетинг |
|---|---|---|---|
| AA (гейт по умолчанию) | 4.5:1 | 3:1 | Основной текст на плоских фирменных заливках |
| AAA для заголовков | 7:1 | 4.5:1 | Финансы, здоровье, регулируемые промо |
| Журнал JSONL | Поля: trace_id, sku, ratio, threshold_profile, pass, retry_class |
||
Воспроизводимые шаги HowTo
- Установите и ограничьте OpenClaw. Привяжите Gateway к loopback, allowlist только корень экспорта, путь манифеста, каталоги
quarantine/,templates/иlogs/, как в общих гайдах по безопасному развёртыванию. - Опубликуйте манифест вместе с выгрузкой. В каждой строке укажите
png_path,fg_hex,bg_hex,text_size_class(normalилиlargeпо определениям WCAG) и при необходимостиprofile(aaилиaaa). Тот же файл коммитят в Git вместе с креативным брифом. - Соберите цикл мониторинга. На APFS NVMe игнорируйте
*.tmpи служебные файлы, потребуйте два стабильных опроса размера, затем тихое окно после последней записи — для крупных PNG часто 45–90 секунд — и только после этого ставьте задачу в очередь шлюза. Используйте single-flight сflock, чтобы параллельные сохранения не дублировали задания. - Реализуйте Skill контраста. Переведите hex в линейные каналы sRGB, примените формулу WCAG, сравните с профилем и верните структурированный pass или fail с числовым отношением. Skill оставляйте только для чтения исходных PNG; перемещение в
quarantine/выполняйте после fsync строки лога. - Классифицируйте повторы. Автоматически повторяйте только транзиенты — файл занят, краткий таймаут Gateway, гонка блокировок — до трёх попыток с экспоненциальным backoff и потолком около 90 секунд. Ошибки данных, включая отсутствующую строку манифеста или невозможный hex, направляйте в карантин без автоматического retry до обновления YAML дизайном.
- Сформируйте шаблон пакетного переэкспорта. Для каждого провалившего
skuдобавьте строку CSV для плагина Figma или пресета macOS Shortcut, проверенного в репозитории вtemplates/reexport.csv. Дизайнеры переэкспортируют только отмеченные кадры; успешные копии складывайте вpass/YYYY-MM-DD/. - Ротируйте логи. Пишите
logs/YYYY-MM-DD.jsonl, сжимайте файлы старше семи суток и при эскалации прикладывайте последние строки плюс хеш манифеста. Политика ротации и launchd согласуется с чеклистом «merge, launchd и watch экспорта», если тот же хост обслуживает несколько демонов.
Ориентиры для runbook
- Тихое окно: начинайте с 60 секунд, если экспортёр пишет превью рядом; уменьшайте только после замеров стабильного закрытия файлов.
- Дисковый пол: приостанавливайте постановку в очередь, когда свободного места на томе заданий остаётся меньше 15 ГБ, чтобы Skill не обрывался на временных файлах середине батча.
- Корреляция trace: один и тот же
trace_idдолжен проходить через enqueue наблюдателя, вызов Skill и строки CSV переэкспорта, чтобы дизайнер искал один идентификатор от Slack до диска.
FAQ
Можно ли «тихо» исправлять контраст внутри PNG?
Для брендовых активов нет. Автоматика должна флагировать, логировать и запускать контролируемый переэкспорт с утверждёнными токенами цвета — не переписывать пиксели без ревью.
Фон — градиент или фотография?
Режим манифеста работает, если дизайн декларирует худший сплошной цвет по стопам градиента. Для фото-hero добавьте второй опциональный растровый Skill и примите более медленные задания; документируйте это отдельно от рецепта плоских пар.
Нужен ли GPU шлюзу?
Расчёт контраста из hex — чистый CPU. Области GPU отключайте, пока не появятся перцептивные превью.
Итог: сочетание манифеста от дизайна, дебаунс-мониторинга, гейтов WCAG AA или AAA, JSONL и CSV шаблона переэкспорта даёт воспроизводимую приёмку маркетинговых PNG без ручного пересчёта каждого пикселя. Публичные страницы без входа: главная MacPng, раздел Технические идеи, аренда узла, тарифы, помощь по SSH и VNC. Для панели Skills и визуального watchdog выдачи см. «Skills UI и watchdog экспорта PNG».