# ✨ Привязать запись к владельцу и отдавать только свои - **Тип:** feature - **Категория:** Очередь — Фундамент домена: без владельца знание UUID и есть право читать чужое, и на владельце стоят список, дедуп, удаление, учёт и квота. - **Зачем:** У задачи и файла нет владельца, поэтому знание UUID задачи и есть право её читать. Выборка чужой записи по её идентификатору возвращает «не найдено», а не содержимое. Берётся после `oidc-login`: до входа неизвестно, кто владелец. ## Затрагивает - таблица задач и таблица файлов — колонка владельца и её миграция; - `internal/contract`, интерфейсы репозиториев: чтение сужается владельцем; - `internal/adapter/repo/pocketbase` — все четыре места, где правятся колонки очереди: `applyToRecord`, `recordToJob`, `acquireColumns` и `acquiredRow`; - `internal/service`, оба метода заведения задачи; - `GET /api/status/:id` — ответ на чужую запись; - `docs/database.md` — схема и правило выборки. ## Критерии приёмки - Запрос чужой записи по её идентификатору возвращает «не найдено», а не содержимое и не «доступ запрещён». Оракул — тест: две сессии, задача первой запрашивается второй, ответ 404 и пустое тело. - Запись, заведённая из веба, принадлежит вошедшему. Оракул — тест приёма по HTTP со сверкой колонки владельца. - Выборка воркера владельцем **не** сужается: конвейер обрабатывает записи всех. Оракул — тест: задачи двух владельцев проходят конвейер одним воркером. - База заводится с чистого листа, колонка владельца обязательна и без умолчания. Оракул — прогон миграций на пустой базе и попытка вставки без владельца. ## Рамки Совместного доступа, ролей и передачи записи другому не делаем: владелец один и неизменяем. Данные не переносим — чистый лист. Владельца записи, пришедшей ботом, здесь не назначаем: связи чата с учётной записью ещё нет, её заводит `telegram-account-link` следующей задачей.