Media Facts
MIME, decoder format, dimensions, pixel count, alpha, orientation, checksum, visibility и lifecycle state.
Перспективный движок, который превращает фиксированный набор resize-операций в versioned, объяснимый и resource-aware processing plan.
Он рождается из реальных ограничений Messenger и текущего Media Core: лишних PNG artifacts, memory copies, стоимости storage и traffic, разных сроков жизни вариантов и необходимости безопасно восстанавливать воспроизводимые данные.
PAME разделяет принятие решения и выполнение. Planner ничего не кодирует, а Executor не придумывает policy во время обработки.
MIME, decoder format, dimensions, pixel count, alpha, orientation, checksum, visibility и lifecycle state.
Immutable versioned policy: допустимые inputs, artifacts, formats, quality, retention и resource budget.
Строит декларативный plan и объясняет каждое решение: selected format, skipped artifact, prevented upscale или reject.
Выполняет шаги с timeout, cancellation, concurrency budget, cleanup и structured metrics.
Описывает artifacts без storage paths и отделяет identity данных от short-lived delivery URL.
Каждый artifact наследует owner, namespace, visibility и generation исходного media object.
Классификация позволяет управлять стоимостью без потери возможности восстановления и без размывания access policy.
| Класс | Назначение | Поведение |
|---|---|---|
| original | Исходные bytes | Хранятся только по profile/retention policy |
| canonical | Основной нормализованный источник | Долговечный источник rebuild |
| durable | Обязательный часто используемый artifact | Хранится постоянно |
| cache | Оптимизированный delivery artifact | Может удаляться и перестраиваться |
| temporary | Вход или промежуточный результат | Удаляется после commit или по TTL |
Первые profiles остаются внутренними и versioned. Пользователь не получает arbitrary transformation language.
PAME расширяет attack surface, поэтому profile registry, resource limits и наследование access policy являются частью самого движка.
Decoder allowlist, byte/dimension/pixel limits, decompression-bomb protection, timeout и cancellation.
Клиент выбирает только разрешённый profile ID. Plan не приходит из пользовательского JSON.
Rebuild и новые artifacts не меняют owner, namespace, visibility и revoke generation.
Движок должен доказуемо уменьшать storage, delivery traffic или memory pressure, не ухудшая UX и безопасность Messenger. Сложность без измеримого результата не является успехом.