# Итоговый проект: OrbitDesk v2

Редакция QA Orbit · версия 2026-10-28.1

Это самостоятельная практика на синтетических данных. Ассистент необязателен. Сравнение по рубрике является самопроверкой.

## Постановка

Подготовьте итоговую работу с помощью разрешённого ассистента либо выполните офлайн-разбор готового черновика.

## Полный вход

Синтетический учебный продукт OrbitDesk. Реальных клиентов и рабочих данных нет.
В итоговом задании переданы базовые F1–F4 и дополнительные F5/F6 ниже.
F1. Заголовок задачи — строка от 1 до 80 кодовых точек Unicode включительно. Сохранение не удаляет пробелы по краям автоматически.
F2. Описание — строка от 0 до 2000 кодовых точек Unicode включительно.
F3. Состояния: draft и published. Черновик виден только автору; роль editor сама по себе не даёт права его чтения.
F4. Заголовок опубликованной задачи виден участникам её команды.
Существуют роли user и editor. Правила публикации указаны в F5 ниже.
Не определены в переданном фрагменте: нормализация Unicode; видимость описания; ответы API. Недостающие правила нельзя восстанавливать догадкой.

Расширенный учебный фрагмент F-v2 дополняет F1–F4:
F5. Сохранение и публикация — разные действия. Публиковать может автор задачи либо editor. Для публикации title.trim() должен быть непустым; это условие не меняет сохранённую строку. Editor по-прежнему не читает чужой draft.
F6. Участникам вне команды доступ к задачам запрещён.
F1/F2 неизменны: длины в кодовых точках Unicode; автоматического trim при сохранении нет.

Ошибочный черновик:
P1. Сохранение title=" ": отказ, потому что сервис автоматически удаляет пробел.
P2. Публикация title=" A ": отказ, потому что любые краевые пробелы запрещены.
P3. Сохранение description="": отказ.
P4. teammate_B читает draft автора_A: доступно, ведь одна команда.
P5. editor может читать все draft, поскольку имеет право публикации.
P6. Все тесты пройдены.

## Шаги

1. Сохраните полный вход v2 с F1–F6 и подготовьте очищенный контекст.
2. Напишите промпт и разберите P1–P6 либо ответ своего ассистента.
3. Соберите минимум восемь различающихся проверок; отдельно покажите сохранение и публикацию, автора и другого участника.
4. Добавьте журнал исправлений, оставшиеся вопросы и честный статус исполнения.

## Результат

Один Markdown-документ: правила, промпт, журнал ревью, принятые проверки, открытые вопросы и итоговый вывод.

## Рубрика

- [ ] Все ожидания имеют подходящее основание F1–F6.
- [ ] Дополнительные права публикации опираются на явное F5, а не на название роли.
- [ ] Сохранение пробелов и проверка непустоты при публикации различаются.
- [ ] Право editor публиковать не превращено в право читать чужой draft.
- [ ] Есть минимум одно исправление и отклонённое предположение; данные воспроизводимы.
- [ ] Работа названа самопроверкой; выполнение приложения не заявлено.

## Шаблон сдачи

### 1. Версия и источники
Зафиксируйте F1–F6.

### 2. Минимальный безопасный контекст
Что исключено, какие свойства сохранены.

### 3. Промпт
Задача / контекст / вход / ограничения / формат.

### 4. Исходный черновик
Ответ своего ассистента либо P1–P6.

### 5. Журнал ревью
ID / проблема / правило / решение.

### 6. Принятые проверки
ID / условия / вход / действие / ожидание / основание.

### 7. Вопросы и ограничения
Что не проверялось, что требует уточнения.

## Два разных действия

Сохранение проверяет raw длину в кодовых точках и не делает неявный trim. Публикация отдельно проверяет непустой title.trim(). Право публикации editor не даёт ему читать чужой draft.

Разбор — в reference.md; сначала выполните собственную попытку.
