Private media
Message images, будущие documents, originals и generated artifacts.
Версия 0.4.4 закрыла прямую публикацию storage и построила контролируемую delivery boundary. Версия 0.4.5 распространила tenant isolation, owner checks и recovery guarantees на durable uploads, bindings и cleanup.
Trusted backend проверяет пользователя и бизнес-права. Pulse Media аутентифицирует backend, назначает namespace, применяет exact-owner policy, проверяет lifecycle transition, разрешает media через catalog и только затем открывает bytes из storage.
Security model охватывает identities, namespace, catalog, signing keys, upload operations, bindings, processing profiles, audit и backups.
Message images, будущие documents, originals и generated artifacts.
Service credentials, namespace, exact owner, resource mapping, visibility и signing keys.
Catalog, migrations, operation history, bindings, audit, cleanup, reconciliation и backups.
Private catalog policy применяется к фактической выдаче каждого artifact, а filesystem больше не является HTTP API.
Durable operations, bindings и cleanup используют тот же authenticated namespace и не доверяют namespace, owner или service identity из client payload.
Уникальность key ограничена namespace, service identity и operation type. Повтор с другим fingerprint получает conflict.
Upload status, activate и release доступны только при точном совпадении namespace и owner context.
Catalog relations используют namespace-scoped queries и составную referential integrity, блокируя cross-tenant linkage.
Durable operation сохраняет terminal result, а uncertain response восстанавливается через status/replay без duplicate media.
Media не переходит в deleting, пока существует хотя бы один pending или active binding. Retention отделяет release от физического удаления.
Startup reconciliation работает в dry-run режиме. Destructive repair не выполняется автоматически, legacy media исключено из lifecycle cleanup.
Позитивный сценарий недостаточен: защита подтверждается negative, concurrency, recovery и end-to-end tests.
Public route не выдаёт private media, signed route не выдаёт public media.
Invalid signature и unknown key не превращают endpoint в oracle существования media ID.
Variant разрешается по catalog kind, а не строится из client-controlled path.
Один key нельзя повторно использовать с другим файлом, owner, resource type или processing context.
Pending, active и released меняются только по разрешённым переходам; повторные activate/release идемпотентны.
Deleting state возобновляется после restart, отсутствие уже удалённого файла обрабатывается идемпотентно, history и tombstone сохраняются.
Каждая новая поверхность добавляет новую trust boundary и не выпускается без negative, recovery и abuse model.
Limits, per-object policy и partial results без раскрытия чужих media.
Decoder allowlist, pixel/resource budgets, immutable profiles и artifact inheritance.
Service token не попадает client, replay ограничен, quota применяется до processing.
Scopes, quotas, targeted revoke, credential lifecycle и cross-tenant test suite.
Security review является частью обычного development flow.
Кто authenticated, какой namespace установлен, какой owner/resource и operation разрешены.
Body, pixels, rate, concurrency, temporary storage и aggregate quota.
Что происходит после delete, release, key compromise или policy change.
Partial failure, backup, restore, migration, reconciliation и rollback.
Стабильные события без secrets, raw signatures и unsafe filenames.
Cross-tenant access, tampering, expiry, replay, fingerprint conflict, traversal и invalid transitions.
Private Preview может показывать направление продукта. Production API, direct upload или multi-tenant service выпускаются только после закрытия соответствующих trust boundaries, abuse controls и recovery scenarios.