Архитектурная концепция

PAME — Pulse Adaptive Media Engine.

Перспективный движок, который превращает фиксированный набор resize-операций в versioned, объяснимый и resource-aware processing plan.

Важно

PAME не строится ради сложности.

Он рождается из реальных ограничений Messenger и текущего Media Core: лишних PNG artifacts, memory copies, стоимости storage и traffic, разных сроков жизни вариантов и необходимости безопасно восстанавливать воспроизводимые данные.

Pipeline

От фактов — к контролируемому плану.

PAME разделяет принятие решения и выполнение. Planner ничего не кодирует, а Executor не придумывает policy во время обработки.

01 / FACTS

Media Facts

MIME, decoder format, dimensions, pixel count, alpha, orientation, checksum, visibility и lifecycle state.

02 / PROFILE

Processing Profile

Immutable versioned policy: допустимые inputs, artifacts, formats, quality, retention и resource budget.

03 / PLANNER

Planner

Строит декларативный plan и объясняет каждое решение: selected format, skipped artifact, prevented upscale или reject.

04 / EXECUTOR

Executor

Выполняет шаги с timeout, cancellation, concurrency budget, cleanup и structured metrics.

05 / MANIFEST

Artifact Manifest

Описывает artifacts без storage paths и отделяет identity данных от short-lived delivery URL.

06 / DELIVERY

Secure Delivery

Каждый artifact наследует owner, namespace, visibility и generation исходного media object.

Artifact classes

Не все варианты должны жить одинаково.

Классификация позволяет управлять стоимостью без потери возможности восстановления и без размывания access policy.

КлассНазначениеПоведение
originalИсходные bytesХранятся только по profile/retention policy
canonicalОсновной нормализованный источникДолговечный источник rebuild
durableОбязательный часто используемый artifactХранится постоянно
cacheОптимизированный delivery artifactМожет удаляться и перестраиваться
temporaryВход или промежуточный результатУдаляется после commit или по TTL
First profiles

Начало — с двух реальных сценариев Pulse.

Первые profiles остаются внутренними и versioned. Пользователь не получает arbitrary transformation language.

pulse.avatar.v1

Avatar profile

  • квадратный canonical master;
  • 64/128/256/512 artifacts;
  • metadata stripping;
  • public immutable delivery;
  • безопасная замена старого avatar.
pulse.message-image.v1

Message image profile

  • orientation normalization;
  • canonical master до 2048 px;
  • durable preview;
  • rebuildable chat artifact;
  • private signed delivery;
  • pending TTL до отправки сообщения.
Security

Адаптивность не означает произвольность.

PAME расширяет attack surface, поэтому profile registry, resource limits и наследование access policy являются частью самого движка.

Input limits

Decoder allowlist, byte/dimension/pixel limits, decompression-bomb protection, timeout и cancellation.

Immutable profiles

Клиент выбирает только разрешённый profile ID. Plan не приходит из пользовательского JSON.

Inherited policy

Rebuild и новые artifacts не меняют owner, namespace, visibility и revoke generation.

Критерии успеха

PAME полезен только тогда, когда эффект измерим.

Движок должен доказуемо уменьшать storage, delivery traffic или memory pressure, не ухудшая UX и безопасность Messenger. Сложность без измеримого результата не является успехом.