diff --git a/openspec/changes/host-agnostic-object-urls/.openspec.yaml b/openspec/changes/archive/2026-10-12-host-agnostic-object-urls/.openspec.yaml similarity index 100% rename from openspec/changes/host-agnostic-object-urls/.openspec.yaml rename to openspec/changes/archive/2026-10-12-host-agnostic-object-urls/.openspec.yaml diff --git a/openspec/changes/host-agnostic-object-urls/design.md b/openspec/changes/archive/2026-10-12-host-agnostic-object-urls/design.md similarity index 100% rename from openspec/changes/host-agnostic-object-urls/design.md rename to openspec/changes/archive/2026-10-12-host-agnostic-object-urls/design.md diff --git a/openspec/changes/host-agnostic-object-urls/proposal.md b/openspec/changes/archive/2026-10-12-host-agnostic-object-urls/proposal.md similarity index 100% rename from openspec/changes/host-agnostic-object-urls/proposal.md rename to openspec/changes/archive/2026-10-12-host-agnostic-object-urls/proposal.md diff --git a/openspec/changes/host-agnostic-object-urls/specs/storage-backends/spec.md b/openspec/changes/archive/2026-10-12-host-agnostic-object-urls/specs/storage-backends/spec.md similarity index 100% rename from openspec/changes/host-agnostic-object-urls/specs/storage-backends/spec.md rename to openspec/changes/archive/2026-10-12-host-agnostic-object-urls/specs/storage-backends/spec.md diff --git a/openspec/changes/host-agnostic-object-urls/tasks.md b/openspec/changes/archive/2026-10-12-host-agnostic-object-urls/tasks.md similarity index 100% rename from openspec/changes/host-agnostic-object-urls/tasks.md rename to openspec/changes/archive/2026-10-12-host-agnostic-object-urls/tasks.md diff --git a/openspec/specs/storage-backends/spec.md b/openspec/specs/storage-backends/spec.md index 9a70b83..212a71f 100644 --- a/openspec/specs/storage-backends/spec.md +++ b/openspec/specs/storage-backends/spec.md @@ -109,3 +109,20 @@ #### Scenario: Хранилище недоступно - **WHEN** выбранный бэкенд не отвечает на проверку - **THEN** состояние здоровья отражает деградацию + +### Requirement: Хост-независимые URL объектов +Выдаваемый клиенту подписанный URL объекта SHALL быть относительным к текущему источнику +(same-origin) и SHALL не содержать настроенный хост. Просмотр и скачивание медиа SHALL +работать за любым хостом или обратным прокси без настройки внешнего базового URL. + +#### Scenario: Другой хост +- **WHEN** приложение доступно по адресу, отличному от адреса по умолчанию, и клиент запрашивает фото +- **THEN** URL объекта указывает на тот же источник, что и страница, и превью загружается без дополнительной настройки + +#### Scenario: Обратный прокси +- **WHEN** приложение доступно за обратным прокси +- **THEN** URL объектов сохраняют тот же источник, что и страница приложения + +#### Scenario: Подпись сохраняется +- **WHEN** клиент получает относительный URL объекта +- **THEN** подпись, срок действия и кэширование объекта работают как прежде