Дизайн-процес продукту
Stack
Магазин спортивного харчування для українського ринку, побудований навколо тренерів, які замовляють для своїх спортсменів. Нижче - маршрут проєкту: дванадцять етапів від дослідження до хендофу.
Маршрут
Було → стало
Найдорожча частина роботи - те, що зловили і виправили, - інакше лишається невидимою. Тут зведення класами, а не переліком рядків; повний лог - docs/critique-alignment.md. Критика йшла в два прилади: Claude із браузером і Codex read-only, набори знімалися незалежно до будь-якого злиття. Перетин - одна знахідка з 27: браузер і лічильник бачать одне, суцільне читання джерела - інше. Більшість знахідок Codex - шкода, яку наробив саме цей переїзд, тобто те, що прилад-виконавець бачить найгірше.
| Клас | Було | Стало | Хто знайшов | Статус |
|---|---|---|---|---|
| Дублювання | сайдбар інлайновою копією в 30 сторінках: розмітка, css і власний IntersectionObserver у кожній | один реєстр /_nav.js + один /_nav.css; −165 KB, статус сторінки = один прапорець |
Claude | виправлено |
| Файл правил | CLAUDE.md 537 рядків / 94 KB, один рядок на 36 691 символ; статус усередині |
184 рядки самих правил; журнал → docs/decisions.md, статус → README + реєстр |
Claude | виправлено |
| Правило не діяло | «без em dash в output-файлах» ніколи не доїхало до документації: 3 681 входження в 71 файлі (продукт був чистий) | 3 621 замінено, 60 лишено за названим винятком (знак «немає значення» в комірці таблиці), і виняток покриває реальні випадки | Claude · скрипт | виправлено |
| Число без джерела | інвентар публікував 50 компонентів / 14 організмів, «12 лише рендер-функції», «футер на всіх 142 екранах» | порахували: 51 / 15, 9 лише-JS, футер на 129 екранах. Три числа, і жодне не виглядало помилковим | Claude · лічильник | виправлено |
| Сирота | 18 вузлів IA мали по 3-14 секцій і не оголошували жодної - панель не могла їх показати | секції під'єднані з власних <h2> сторінок: 218 оголошених, 0 без якоря |
Claude | виправлено |
| Шкода від переїзду | _theme.css → kit/kit.css на рівень глибше тихо зламав 43 відносні url() |
полагоджено; видно було лише в консолі браузера, у діфі - чистий git mv |
Claude · браузер | виправлено |
| Сирота · переїзд | 17 посилань на шляхи, які цей переїзд перейменував, пережили першу зачистку; троє документів указували на теку, свідомо видалену ще в c87b2a6 | полагоджено в 19 файлах; мертві вказівники названі, а не переписані мовчки | Codex | виправлено |
| Суперечність | код переїхав, проза - ні: conventions.md досі давав index.html роль хаба, а сторінки етапів описували вже зроблене як майбутнє |
ролі й статуси вирівняні; заміну названо на місці, щоб наступний читач не гадав | Codex | виправлено |
| Обіцянка без виконавця | два документи віддали текст сповіщень у microcopy.md - такого набору там не було. Обіцянку створив цей самий прохід |
Розділ H: чернетка на кожен перехід, тоном фази 8, набір переходів позначено [?] | Codex | виправлено |
| Число без [?] | тарифи доставки й retention 80% подані як факт, хоча CLAUDE.md вимагає [?], а сусідній файл ту саму цифру вже помічав |
помічено в cart.md, product.md, aarrr.md |
Codex | виправлено |
| Сліпа пляма приладу | ia/flows.html оголошував NAV_SECTIONS двічі, і виграє друге. Моя перевірка брала перше входження - вона була структурно нездатна це побачити |
полагоджено і сторінку, і прилад: тепер він обходить усі оголошення | Codex | виправлено |
| Хибний сигнал | ідл-контроль показав 2 рядки реєстру, що вказують на неіснуючі файли | перечитано: рендерер робить лінк лише при done:true. Рядок - це маршрут, а не обіцянка файлу |
Claude · скрипт | знято при верифікації |
| Хибний сигнал | «у вайрфрейми потрапив зелений акцент» - оголошено --d-accent:#2d5a3d |
перевірено: змінна оголошена і жодного разу не використана (0 звернень). Колір нікуди не потрапляв. Мертве оголошення все одно прибрано | Codex | знято при верифікації |
Джерела правди - у
docs/ кожного етапу. Правила проєкту - CLAUDE.md,
записи рішень - docs/decisions.md, статуси - README.md
і цей маршрут. Маршрут читається з того самого реєстру /_nav.js, що й бокова панель,
тому розійтися з нею він не може.