← весь дневник

Замер до работы отменяет половину плана

ПОНЯТНО МНЕ:

Вывод: за эти двенадцать часов четыре раза подряд замер, сделанный до работы, отменял написанный план. Хендофф обещал «один коммит в globals.css» — грепом нашлось 712 инлайновых fontSize в JSX, которые переменную не видят, и потребовался кодмод по 107 файлам. Светлую тему собирались писать — она уже была написана целиком, менялся один инициализатор в layout.tsx. Облако тегов по образцу dudarik.com собирались рисовать — счёт по 1032 карточкам показал 947 уникальных тегов, 655 из них встречаются ровно один раз, а жёсткий лимит tags[:4] делает фильтр по пяти тегам математически пустым, всегда. И число шаблонных карточек 384 → 344 выглядит как работа над качеством, а это удаление: из 78 снятых карточек стоицизма 40 несли шаблон. Партия 5 не запускалась.

Окно: 27.07 15:05 → 28.07 03:00. Тридцать шесть коммитов, 202 файла. Локальная main635169b, origin/maincbc03fc: последний коммит не запушен, дизайн-системы на сайте нет. Состояние прода не проверено — buyanov.io/sostoyanie из облачной сессии не открывается, [уточнить] глазами.

1. Сделано

Дизайн-система — первый настоящий заход

635169b — партия 1а: кегли, начертания, радиусы на токены. Причина, по которой прошлые попытки не двигались: хардкоды сидели не в CSS, а инлайном в JSX — 712 fontSize, 180 borderRadius, 129 fontWeight в 107 файлах. Инлайн всегда сильнее переменной, поэтому токены в globals.css их не перебивали. Введена шкала --fs-1..6 (48/34/22/17/14/12), --fw 400/600/700, --r 6px, --r-pill 999px. Основной текст переехал с 15.5px на 17px. Исключены генераторы картинок (icon/opengraph/cert) и графы Kosmos/Knowledge/Karta/Routes — холст 1200×630 и палитра категорий данных, шкала интерфейса им не годится. Замер scripts/design_metrics.py: кеглей-хардкодов 27 → 0, радиусов 15 → 1, начертаний 5 → 3. Цвета не тронуты — это партия 1б.

Признак — не проверить: коммит не в origin/main. После пуша — buyanov.io/?v=28: текст заметно крупнее, у карточек и кнопок одно скругление вместо разнобоя 2–16px.

cbc03fc — бумага по умолчанию вместо чёрного. Светлая тема в globals.css была написана давно и полностью ([data-theme="light"], фон #FBFAF7, текст #23201A), по умолчанию включался только тёмный. Изменён один инициализатор. Акцент на бумаге приглушён до #C2431F — кислотный #ff6a3d на белом не читается. Признак — buyanov.io/?v=27 открывается на светлом тёплом фоне; оранжевый стал тёмно-медным и живёт только в акцентах. Где остался тёмный хардкод — подозреваемые /hydro и картинки-превью, [уточнить].

Витрина — русский язык и живые цифры

0823d70. 636 карточек из 1120 назывались по-английски, при том что русский tldr посчитан у всех. Теперь в списке разборов, в «горячем» и в «в работе у тебя» первой идёт русская суть, английское название ушло справкой. Даты «26 июля 2026» вместо 2026-07-26T10:11:47+00:00. Кнопка связи в шапке на каждой странице — закрывает строку карты задач «кнопку связи вынести наверх». Снята выдуманная цифра «≈4008 ч ручного эквивалента»: делилось на 45 строк в час, выходило 138 часов в сутки. Числа разборов и бесплатных сервисов стали живыми — было вшито «157», в каталоге 160. Признак — buyanov.io/materialy?v=22: заголовки русские, под ними серым английский оригинал; счётчик 1042, а не 1120; в шапке телефона знак @ слева от солнца.

51cf1b2 — поле zagolovok в образце карточки. До него заголовок на витрине собирала ruTitle() обрезкой сводки по 90 символов и рвала слово посреди, а на самой странице разбора русского заголовка не было вовсе. Признак — buyanov.io/lenta/0fgJPhYcbVk?v=26: карточка называется «Фоновые агенты: конец ведения модели за руку», а не обрезком.

9dacced — образец карточки №1. Разбор идёт по всему ролику, а не по первым 12 000 символам: 12 глав вместо пяти, tldr про видео а не про проект, главы утверждениями вместо «Обсуждение…», note и body больше не дублируются. Признак — там же: 12 пронумерованных глав, у глав с 6-й по 12-ю таймкода нет (их берём отдельно, не выдумывая), слово buyanov в сводке не встречается ни разу.

Перестройка навигации

890fccb. Карта уехала на /kosmos во весь экран — шапка и подвал скрыты, вертикальный свайп наконец вращает карту, а не листает страницу. На главной первым экраном пульт. Дерево переехало на /glubzhe, где прокрутка и есть замысел. В списке разборов появился поиск. Признак — buyanov.io/kosmos?v=25 с телефона: нет шапки, страница не прокручивается, палец вверх-вниз вращает карту.

508af57. В космосе кнопка «← списком», фильтр тем и заголовок разведены по высоте — раньше лежали друг на друге. Звёзды резкие на стартовой орбите: было 0.15 резкости из единицы, стало 0.56. Пульт не прыгает при переключении режима. Признак — buyanov.io/kosmos?v=25: заголовок и фильтр не пересекаются, у звёзд видно точку в середине.

ecb0655, c41d943. Ползунок увеличения сначала переехал вниз — у края экрана он перехватывал системный свайп; через сорок минут поднят над пультом видов. Туда же фильтр по темам с числами и подсветка «моё в деле» зелёным вместо сильнейших по баллу. Признак — /kosmos?v=25 с телефона: ползунок не спорит со свайпом и не лежит под пультом видов; зелёным подсвечены отмеченные, а не топ по баллу.

Пульт

d532a32 — два режима, «просто спросить» и «по моим разборам». Раньше разборы подкладывались в любой вопрос, включая договор аренды. Признак — buyanov.io/?v=25: спроси не про AI — в обычном режиме под ответом нет строки «по разборам».

f17a9c1, 785930d, 39f28e4 — ход работы тремя шагами по фактическим событиям, счётчик закрытых; примеры по категориям и «удиви меня»; честный остаток запусков в интерфейсе. Порог поиска по разборам поднят: минимум два разных слова и попадание в заголовок или тег, иначе честная строка «не нашлось».

e3368eb — прикрепление текстового файла с телефона и с компьютера, отдельный потолок 6000 знаков на документ; в ленте видно имя и объём, сам текст в чат не выводится. Признак — buyanov.io/?v=25: слева от строки ввода кнопка +.

5eeaabf — потолок ответа 350 → 1000 токенов; под ответом расход вход/выход фактом от провайдера, цена показывается только если задана в MODEL_PRICE_RUB. Признак — серая строка «расход · вход N · выход M токенов» под ответом.

Остальное

3e2fa04, 037c089, 1555ffe — страница /sobrat. Короткая фраза → развёрнутое задание для внешней модели, живой образец результата в песочнице до нажатия, ход сборки по фактам, скачивание html и md. Признак — buyanov.io/sobrat?v=25: под полем ввода работающая страница веломастерской и кнопки «открыть в Grok / ChatGPT / Claude».

f32676b — карта разбора переделана. Дерево на два уровня вместо колеса из пяти кружков, заголовки не режутся, таймкод главы открывает ролик с нужной секунды. Таймкоды есть у всех 1041 карточки — лежат JSON-строкой, прогон за кредиты не нужен. Признак — buyanov.io/materialy?v=25 → любой разбор с баллом 8+: под заголовком «карта разбора · N глав», главы раскрываются плюсом.

c177ac1 — поля ввода 16px. На iOS кегль меньше шестнадцати заставляет браузер зумить страницу при фокусе. Признак — с айфона тап в поиск по разборам не увеличивает страницу.

0535b3d, 02ec246 — аналитика. Убран дубль скрипта из layout (он уже грузится в Analytics после согласия) и снято условие на переменную. Признак — в исходнике страницы скрипт Vercel один, появляется после согласия на куки.

f0ace25, 3947386 — страница /sostoyanie. Живая проверка хранилища: сервер стучится в user_state и показывает ответ; видно причину, почему GitHub не ответил, поддержан GITHUB_TOKEN.

490e623, 6e69aaf/about. Схема конвейера: источник → расшифровка → выжимка → выходы, куда растёт и где не подходит; механика описана без привязки к видео.

ecee697/avtor. Снят блок про письмо Торпу вместе с упоминаниями в призмах Торпа и Талеба; призмы и библиотека раскрыты фактами — кто эти люди, без похода в гугл; мёртвая цифра «299 разборов» заменена счётчиком (5586806 — то же на /prizmy).

f34a49d — мета-теги для /blog и /glubzhe: описание, canonical, превью для соцсетей. 7546aa3 — на /glubzhe дерево отделено от текста, две карточки-призыва сведены в одну с двумя путями. 49fc32d, d2338c5 — на /materialy убрана метафора окна с тремя точками, карточка на телефоне ужата вдвое. 3851831 — журнал изменений обновлён (693 строки в changelog-data.ts).

1181d35 — правило пользы. Найден второй признак брака: упоминание сайта в тексте карточки. Поле tldr тоже бывает заражено. Признак — раздел в ПРАВИЛО_польза.md, на сайт не выходит.

f2a0f52 — одна новая карточка Yersham, iy7sjplZh-I.

2. Хотел, но не успел

  • Партия 5 ленты не запущена. Шаблонных 344 из 1043 — цифра упала только за счёт удаления. Тест перегенерации на 14 карточках подготовлен и стоит в СВЯЗЬ.md готовой командой, но требует OPENAI_API_KEY — запускает владелец.
  • Аккаунты. Код готов на 90 %, слой спит за флагом NEXT_PUBLIC_AUTH_ENABLED. Ждёт трёх действий владельца: OAuth-клиент в Google Cloud → три переменные в Vercel → SQL. Пока отметка «применил» ставится только командой в терминале, операторский слой не наполнится.
  • Дизайн-система, партия 1б — цвета. Кегли и радиусы сведены, палитра не тронута.
  • Пустые поля по бокам на широком экране — строка карты задач не двинулась.
  • Отдельный чат под дизайн и Midjourney не заведён; Midjourney оплачен, движения ноль.
  • Карта задач в Miro не сделана.
  • Голосовые записи: скрипт на папку не повешен, две записи по час сорок не расшифрованы.
  • Скиллы: не знают о новых файлах проекта; правила и факты не разведены.
  • План роста — по-прежнему нигде нет: ни в инструкциях, ни в скиллах.

3. Решил иначе

Дизайн-система: кодмод вместо одного коммита. Хендофф предполагал правку globals.css. Замер грепом до работы: 712 инлайновых fontSize в JSX, которые CSS-переменную не перебивают. План поменялся на скрипт по 107 файлам плюс scripts/design_metrics.py, чтобы результат считался, а не оценивался на глаз.

Светлая тема: ничего не писали. Собирались делать светлую тему — она уже была в globals.css целиком. Работа свелась к одному инициализатору в layout.tsx и приглушению акцента. Проверка «а не сделано ли уже» стоила пяти минут и сняла задачу на день.

Облако тегов отложено, витрина после системы тегов. Владелец принёс образец dudarik.com с мультивыбором и живым счётчиком. Замер по 1032 карточкам: 947 уникальных тегов, 655 встречаются один раз; верхние три бесполезны как фильтр (оркестрация 663, автоматизация 600, агенты 430 из 1032); лимит tags[:4] жёстко зашит в lenta_common.summarize. Проверка на данных: оркестрация 663 → +автоматизация 445 → +агенты 263 → +безопасность 21 → пятый тег 0. Сценарий «10 тегов → 2 темы» при нынешней схеме невозможен математически. Решено: сначала словарь на 40–60 тегов, вшитый в промпт, лимит поднять до 6–8, перетегировать заодно с перегенерацией сводок — отдельного прогона и отдельных денег не нужно. Интерфейс — после.

Тест перегенерации пересчитан с 20 карточек на 14. Шесть из двадцати — пустышки без транскрипта (тело 60 символов), перегенерировать нечем; одна из них стоит в списке на удаление. Критерий «меньше 4 из 20» заменён на «меньше 3 из 14». Заодно опровергнута посылка «вся тысяча сделана на gpt-4o-mini»: choose_model уводит транскрипты длиннее 6000 символов на gpt-4.1-mini, и семь из восьми шаблонных карточек выборки сделаны именно им. Прогон с жёстко заданной моделью сравнил бы яблоки с грушами.

Карта уехала на свою страницу. Космос жил на /materialy внутри прокручиваемой страницы и потому не вращался пальцем по вертикали. Вместо борьбы с жестами карта вынесена на /kosmos во весь экран без шапки и подвала. Конфликт снялся сам.

Пульт: заземление стало режимом, а не всегдашним поведением. Разборы подкладывались в любой вопрос — модель отвечала про AI-агентов на вопрос про договор аренды. Развели на два режима вместо того, чтобы улучшать порог релевантности.

Ползунок увеличения переехал дважды за сорок минут — вниз, потом наверх. Первый переезд решал перехват системного свайпа у края, второй — наложение на пульт видов. Признак того, что расположение элементов на телефоне подбирается вслепую; замера тут не было, и это стоило лишнего коммита.

4. Перехотел

  • 78 карточек стоицизма убраны из ленты (лежат в ~/Desktop/_ЛЕНТА_убрано_27-07). Причина: лента — про вход в AI, стоицизм в неё попал прогоном канала и разбавлял выборку. Побочный эффект — из 384 шаблонных ушли 40 просто вместе с файлами.
  • Блок «горячее» снят с главной (508af57). На первом экране должен быть пульт, а не витрина; два входа в один и тот же контент конкурировали.
  • Выдуманный ручной эквивалент «≈4008 ч» снят. Считался делением на 45 строк в час и давал 138 часов в сутки. Цифра, которую нельзя защитить, снимается, а не подгоняется.
  • Блок про письмо Торпу снят с /avtor вместе с упоминаниями в двух призмах — история про неотправленное письмо не работала на широкую аудиторию.
  • Метафора «окна с тремя точками» убрана с /materialy — украшение, которое ничего не объясняло.
  • Прогон ленты остановлен намеренно. Кредиты Supadata живут до 8 августа, спешить некуда; сначала система тегов и перегенерация, потом новые каналы.
  • Локальная Ollama из плана перегенерации выбывает — гипотеза «дело в слабой модели» не подтверждена, шаблон коррелирует с длиной транскрипта, а не с моделью.

5. Что дальше

  1. Запушить 635169b — дизайн-системы на сайте нет, замер её эффекта пока невозможен.
  2. Разобрать 26 незакоммиченных файлов в рабочем дереве. Правки по 26 файлам висят несохранёнными, авторство внутри сессий не размечено — сначала понять, чьи они, потом коммитить явным списком.
  3. Тест перегенерации на 14 карточках — команда готова в СВЯЗЬ.md, запускает владелец с ключом. Критерий: «Оператор…» меньше 3 из 14 и хотя бы пара честных «прямой связи нет».
  4. Словарь тегов, черновик на 40–60 позиций — из нынешних 947 склейкой синонимов и отсечкой единичных. Финальный список утверждает владелец: это его язык.
  5. Партия 1б дизайн-системы — цвета. Кегли уже на токенах, палитра следующая; заодно проверить /hydro и превью-картинки на тёмный хардкод.
Ещё по теме — в Telegram-канале

Разборы, находки и записи по входу в AI. Заходи, там продолжение.

Читать канал →