JavaRush /Курси /Claude code /Рубрика ревʼю docs-as-code: перевірка документації через ...

Рубрика ревʼю docs-as-code: перевірка документації через diff, grep і find

Claude code
Рівень 8 , Лекція 4
Відкрита

1. Документація теж проходить через diff

Чернетка документа нічого не гарантує. Поки текст не пройшов diff і звірку з проєктом, це акуратно оформлене припущення.

«Документація — це теж код» звучить як лозунг, але думка практична. Поганий метод ламає застосунок. Поганий README ламає людину, яка намагається його запустити. Для команди різниця невелика.

Уявіть: Claude згенерував для Commerce OS новий docs/onboarding.md. Текст красивий і структурний. Там сказано, що проєкт запускається командами npm start і ./gradlew run, а платежі обробляє окремий модуль сповіщень. Новий розробник чесно робить усе за інструкцією — і спотикається на першій команді. Це не проблема стилю. Документ збрехав про систему.

Тому документація живе в репозиторії, змінюється через diff і проходить ревʼю. Навіть якщо ви працюєте самі без формального pull request, логіка та сама: будь-який текст про проєкт — перевірний артефакт, а не нотатка «на довірі».

Ось шлях документації від чернетки до прийнятого тексту:

flowchart TD
    D[Чернетка ШІ] --> F[Diff у репозиторії]
    F --> V[Перевірка за кодом, конфігами та командами]
    V --> C[Правки]
    C --> A[Документ ухвалено]

Ключовий зсув: документ ухвалюється не за впевненістю тону і не за тим, наскільки він «приємно читається», а за збігом із кодом, конфігами, командами запуску та реальною поведінкою системи. Claude прискорює написання, але право сказати «це правда» — за вами.

Документацію ухвалюють не за красою формулювань, а за збігом із кодом і поведінкою проєкту.

Для Commerce OS це критично: у нас уже є джерела істини — CODEBASE_INVENTORY.md, API_MAP.md, build-команди, конфіги, тести. Документація, що живе окремо від них, перетворюється на декорацію. А декоративний README працює до першої спроби щось запустити.

2. Вісім критеріїв доброго ревʼю документації

Часта помилка ревʼю — оцінювати все одразу. Коротка рубрика не замінює голову, але не дає пропустити очевидне — особливо коли текст написав ШІ і кожен другий рядок звучить підозріло розумно.

Тримайте цю рубрику поруч під час перевірки документації Commerce OS.

Критерій Питання ревʼюера Швидка перевірка
Точний Це справді збігається з кодом і конфігами? Відкрити файл, конфіг, тест або прогнати команду
Привʼязаний до джерела Твердження можна привʼязати до джерела? Указати шлях до файлу, ключ конфига, тест
Достатньо повний Чи достатньо цього для цільового читача? Уявити себе новим розробником або оператором
Без галюцинацій Тут немає вигаданих класів, модулів, маршрутів? find, grep, пошук по проєкту
Команди перевірені Чи справді команди з документа запускали? Скопіювати й запустити в терміналі
Припущення перелічені Чи зрозуміло, що документ припускає наперед? Явний розділ Assumptions
Обмеження включено Чи зрозуміло, де документ і система мають межі? Явний розділ Limitations
Diff придатний до ревʼю Чи можна спокійно перевірити зміни за один прохід? Якщо всього забагато — розбити diff

Тонкий момент: complete enough — це не «написати все на світі». Хороша документація не енциклопедія. В onboarding guide важливо, щоб новий розробник підняв Commerce OS локально і зрозумів, де основні модулі; трактат про всі крайні випадки потоку повернення коштів йому не потрібен. В архітектурній нотатці навпаки — там важливі зв’язки між модулями і межі інтеграцій.

Так само й source-anchored не вимагає академічного списку літератури в кожному абзаці. Сенс простіший: якщо документ стверджує щось нетривіальне, ви маєте швидко зрозуміти, звідки це взялося — з build.gradle, application.yml, src/payments/StripeClient.java, тесту на контролер, логу запуску. Джерело не знаходиться — твердження не пройшло перевірку.

Таблиця перетворює ревʼю з туманного «ну ніби нормально» на інженерний процес. Ви перевіряєте конкретні властивості артефакта, а не «красивість».

3. Перевіряємо команди, а не віримо їм на слово

Найдешевша й найкорисніша перевірка — запускати команди з документа власноруч. Саме на командах виявляються розбіжності між красивим текстом і реальним проєктом.

Припустімо, Claude згенерував для Commerce OS такий фрагмент onboarding guide:

## Запуск проєкту

```bash
npm start
./gradlew run
```

На вигляд пристойно. Але ви його не обговорюєте — ви його перевіряєте:

npm start                     # npm ERR! Missing script: "start"
./gradlew run                 # Task 'run' not found in root project
./gradlew bootRun             # backend запускається на :8080
cd apps/web && npm run dev    # frontend запускається на :3000
docker compose up -d db       # PostgreSQL піднімається у фоновому режимі

За тридцять секунд зʼясовується: документ дає дві неправильні команди поспіль. Для нового розробника це перша точка контакту з проєктом. Після такого довіра до документації падає до «краще взагалі нічого не читати».

Принцип простий: команда правильна тільки після запуску. Не запускається — або документ помилився, або проєкт зламаний. Обидві ситуації корисно виявити.

Після перевірки фрагмент стає придатним до життя:

## Локальний запуск Commerce OS

```bash
docker compose up -d db       # PostgreSQL
./gradlew bootRun             # backend, порт 8080
cd apps/web && npm run dev    # frontend, порт 3000
```

Перевірено за:
- build.gradle
- apps/web/package.json
- application.yml

Хороший фрагмент конкретніший за поганий: він не просто називає команду, а показує контекст — з якої директорії запускати, який сервіс піднімається, на якому порту. Це важливо для студентів, які не впевнені в терміналі: їм потрібна не «підказка для запуску», а послідовність дій, яку можна чесно повторити.

І ще: приховані умови не можна залишати «між рядками». Потрібен .env — пишіть. База має бути піднята заздалегідь — пишіть. Інакше документ виглядає коректним, а на практиці лишається пасткою.

4. Архітектура, API і найупевненіші галюцинації

З командами все чесно: запускаються чи ні. З архітектурними нотатками й описами API складніше. ШІ пише такі абзаци з виглядом розробника, який особисто проєктував усі сервісні шари, черги та обробники подій. Тому architecture notes — найнебезпечніший тип документації.

Уявіть, що в чернетці щодо Commerce OS зʼявляється пасаж:

Для SMS-сповіщень про повернення коштів використовується модуль
`src/notifications/SmsGateway.java`, який викликається з потоку повернення коштів.

Звучить солідно. Але за правилом evidence-first наступний крок — не роздуми, а пошук:

find src -name "SmsGateway.java"   # нічого не знайдено
grep -R "SmsGateway" src           # збігів немає

Якщо ви рідко в терміналі, запамʼятайте дві команди. find шукає файл за імʼям, а grep — текст за вмістом проєкту. Прості, але вкрай корисні інструменти перевірки AI-документації. Іноді одного grep достатньо, щоб за дві секунди перетворити «упевнене архітектурне твердження» на галюцинацію.

Та сама логіка для API-документації. Якщо текст називає кінцеву точку, перевірте її за API_MAP.md, контролером і тестами. На попередніх лекціях ви вже зібрали карту API та інтеграцій Commerce OS — тепер вона працює як помічник ревʼюера.

Коректний, привʼязаний до джерела фрагмент про потік повернення коштів:

## Потік повернення коштів

- `POST /api/orders/{id}/refund`
- обробник: `src/orders/OrderController.java`
- сервіс: `src/refunds/RefundService.java`
- клієнт платежів: `src/payments/StripeClient.java`
- пов’язані тести: `src/test/java/.../RefundServiceTest.java`

Він добрий не довжиною, а перевірюваністю: ревʼюер швидко відкриє контролер, побачить виклик клієнта, звіриться з тестом. А якщо під час рефакторингу якийсь елемент зникне, diff покаже, що саме перестало відповідати коду.

Ще правило: якщо API_MAP.md уже містить перевірені факти про кінцеві точки та інтеграції, не вигадуйте їх заново в кожному документі. Спирайтеся на карту як на проміжне джерело і йдіть від неї до коду. Інакше вийде хор із пʼяти файлів, які по-різному розповідають одну історію.

5. Assumptions, Limitations і розмір diff

Спокусливо писати документацію як щось універсальне й завершене. ШІ це любить: у нього все «працює», «підтримується» й «інтегровано». Чесна документація показує не лише, що є в проєкті, а й що припускається і де закінчуються гарантії.

Уявіть onboarding guide, який дає команди запуску — і все. Формально документ є. Практично — ні: новий розробник не розуміє, чи потрібна локальна база, чи зібрано .env, чи працюють платежі в dev-режимі, чи відтворюються webhooks локально. Це не можна залишати на телепатію.

Тому Assumptions і Limitations — не декоративний додаток, а частина перевірки якості:

## Припущення
- локальна база піднята через `docker compose up -d db`
- `.env` зібрано на основі `.env.example`

## Обмеження
- Stripe працює тільки з test keys
- webhooks локально не відтворюються без зовнішнього тунелю

Такі секції роблять документ чесним: показують не тільки «що робити», а й «у яких межах це має сенс». Новачок менше звинувачує себе в тому, що «не зміг підняти проєкт», коли документ заздалегідь визнає обмеження середовища.

Окремо — розмір diff. ШІ любить щедрість. Попросили «поліпшити документацію» — отримаєте переписаний README, новий onboarding guide, розширені архітектурні нотатки, секцію про API і кілька порад щодо запуску. Виглядає старанно. Ревʼюиться жахливо.

Хороший docs diff — reviewable: його реально прочитати й перевірити за один підхід. Переписав Claude одразу все — reviewer майже неминуче пропустить помилку. Великі зміни ріжте: окремо запуск, окремо потік повернення коштів, окремо архітектурна нотатка про payments. Документація любить акуратне нарізання не менше за код.

«Занадто багато корисного одразу» — це реальна проблема. Корисне, яке не встигли перевірити, в репозиторії перетворюється на ризик.

6. Повний прохід по docs diff на прикладі Commerce OS

Зберемо все в один сценарій. Claude підготував оновлення docs/onboarding.md для Commerce OS: розділи про локальний запуск, коротка архітектурна довідка, невеликий блок про payments. Ваше завдання — не «оцінити враження», а провести ревʼю.

Спочатку відкриваєте diff і дивитеся на ширину. Якщо в одному зміненні переписані разом запуск, API, архітектура й troubleshooting — просіть розбити правки. Інакше перевірка перетворюється на лотерею.

Далі — найдешевший і найкорисніший шлях: копіюєте команди й запускаєте. ./gradlew bootRun, npm run dev, docker compose up -d db працюють — добрий знак. Ні — правите документ або зʼясовуєте, що зламано налаштування.

Наступний прохід — по іменованих сутностях. Усі класи, шляхи, контролери, конфіги, інтеграції мають існувати. Тут допомагають find, grep, пошук в IDE і зібраний API_MAP.md. Посилання на неіснуючий SmsGateway.java або вигаданий маршрут — фрагмент видаляється або позначається як неперевірена гіпотеза і до фіналу не потрапляє.

Потім дивитеся на цілісність очима читача. Onboarding guide: чи запустить новий розробник Commerce OS і не застрягне в глухому куті на першому кроці? Чи є assumptions? Чи є limitations? Чи зрозуміло, що платежі локально лише тестові? Чи не обіцяє текст більше, ніж проєкт уміє?

Лише після цих перевірок документ можна лишити в репозиторії. Виправлений фрагмент скромніший за AI-чернетку, зате йому можна довіряти:

## Локальний запуск Commerce OS

```bash
docker compose up -d db       # PostgreSQL
./gradlew bootRun             # backend, :8080
cd apps/web && npm run dev    # frontend, :3000
```

### Припущення
- `.env` зібрано з `.env.example`

### Обмеження
- платежі працюють лише в тестовому режимі

У цей момент ви закриваєте не лише конкретний diff. У вас зібрана повна ланка: тримати проєкт у чистому Git-стані, формулювати задачу, керувати контекстом, будувати CODEBASE_INVENTORY.md, збирати API_MAP.md, використовувати докази з рантайму і ухвалювати документацію за збігом із системою, а не за красою тексту. Claude як і раніше допомагає швидко, але право сказати «цьому документу можна довіряти» — за вами. Це не магія, а нормальна інженерна робота.

І тут видно, які ручні кроки починають повторюватися: зібрати source-anchored evidence, оновити артефакт, перевірити команди, ухвалити diff. Коли вони стабілізувалися вручну, їх пора пакувати в reusable workflow assets і спільний Workflow Kit — явні правила, шаблони та чеклисти, а не збірку з нуля щоразу.

1
Опитування
Документація та evidence-сигнали, рівень 8, лекція 4
Недоступний
Документація та evidence-сигнали
Документація та evidence-сигнали
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ