JavaRush /Курсы /Claude Code SELF /Починка с доказательством

Починка с доказательством

Claude Code SELF
11 уровень , 4 лекция
Открыта

1. Чиню по карточке, а не по вайбу

Тёма берёт свою аварийную карточку — ту, что заполнил при Лёхе, — и подаёт Сане не размытое «почини портал», а её:

Саня, чини по этой карточке. Строго по ней, не шире.

# INCIDENT_NOTE
СИМПТОМ:    reward-flow начисляет невпопад — цифры пляшут
ГДЕ ВИДЕН:  подать заявку → награда неверная; в логе TypeError reward-flow.js:30
ОЖИДАЕТСЯ:  за 3 совпадения ровно 30, стабильно
ЧЕМ ДОКАЖУ: reward-flow.test.js зелёный + сборка ОК + ручной прогон

— Во, — говорит он вслух сам себе. — Не «спаси-помоги», а «сделай вот это, проверим вот этим». Один симптом, не весь портал.

Разница чувствуется почти на ощупь. Раньше он кидал агенту «портал сломался, разберись» — и тот бросался чинить всё сразу, наугад, ровно как ночью. Теперь рамка узкая: одна поломка, и заранее сказано, чем будем мерить успех.

И тут же выручает вчерашний вечерний жест. На прошлом уровне Тёма завёл в портале файл CLAUDE.mdкороткую документацию проекта для агента: где витрина, где reward-flow, где лидерборд, что несущее, куда не лезть. Агент читает его сам в начале каждой сессии. Вчера Тёма лепил его со скукой, «ну положено», — а сейчас Саня не стартует с нуля. Знает карту портала из CLAUDE.md, не переспрашивает «а что у тебя где», заходит и сразу работает по делу.

— Ну ничего себе, — бормочет Тёма. — Вчерашний скучный файлик, а сегодня полсессии экономит. В тот самый момент, когда каждая минута на счету.

2. «Готово»? Докажи

Саня чинит по карточке и рапортует привычное: готово, тесты зелёные, симптом убран. И палец Тёмы уже почти кивает «ну отлично, дальше» — ровно как всю неделю. Слово «готово» от агента раньше было зелёным светом.

Но он осаживает себя на полужесте. Утренние руины слишком свежие. Ночью агент тоже писал «готово» — и вот результат.

Пишет Сане не «молодец», а ровно то, чему утром учил Лёха, — требование факта:

Не пиши «готово». Запусти тесты и покажи мне их реальный вывод.
И подними проект — он должен стартовать.

Саня через терминал сам прогоняет проверку. Несколько секунд, пока непонятно, чем кончится. Тёма замер над клавиатурой. И на экран выпадает не зелёное, на которое он уже почти настроился, а факт:

> node --test

✖ начисление считает верно     # рапорт говорил «починено» — а тест красный
✔ таблица собирается из очков
ℹ tests 3
ℹ pass 2
ℹ fail 1

Тёма смотрит на красное. Саня бодро написал «готово, зелёные» — а тест красный. Рапорт не совпал с фактом.

— Опа, — выдыхает Тёма. — А если б я кивнул на слово… — и тихо, почти с уважением к собрату по ремеслу: — Врёт как я. С той же честной рожей.

— Вот тебе и «готово», — хмыкает он экрану. — Кивнул бы — отдал бы Антону сломанное и был бы уверен, что молодец. Спасибо, что не поверил.

Теория из утреннего разговора вдруг стала под пальцами: рапорт агента сам по себе не значит ничего. Смотреть — на то, что показали тесты, а не на то, что про них сказали.

Раз красное — Тёма чинит дальше, но уже не наугад. Он помнит, к чему утром привело гадание агента, и помнит, что сам с Лёхой уже прочитал эти улики. Поэтому не пишет «у меня тест красный, разберись как-нибудь». Он подаёт Сане ту самую улику, точечно, через значок @:

Вот стектрейс падения: @test-fail.log. Почини именно эту причину.

@test-fail.log — файл, куда сохранён вывод упавшего теста со стектрейсом. Значок @ говорит агенту: возьми этот файл и держи перед глазами. Тот же приём точечной подачи, что с прошлого уровня, — не «весь проект», а нужный кусок с привязкой к месту.

И разница видна сразу. Саня не латает строку 30 в reward-flow.js, где задымило. Он идёт к корню — к проверке входных данных в portal.js, которую ночной автопилот «упростил». Симптом в одном файле, мина — в другом, тремя шагами раньше; ровно как Лёха говорил про дым и проводку.

— Смотри-ка, — Тёма тычет в ответ, — он полез не туда, где красным горело, а туда, где ночью намудрили. В portal.js. Дал точную улику — починил по корню.

3. Доказываю связкой улик

Починили — и теперь Тёма доказывает по-настоящему, не одной галочкой. Снова поручает прогон, но просит сразу всю связку:

Прогони тесты, собери проект и покажи мне реальный вывод.
Я сам пройду сценарий руками.

Саня гоняет — и на экран сходятся три независимых доказательства. Первые два:

> node --test

✔ начисление считает верно     # зелёный: то, что работало, не сломалось
✔ таблица собирается из очков
ℹ tests 3
ℹ pass 3
ℹ fail 0

● npm run build
  build OK                      # проект поднимается

Тест зелёный — значит, чиня одно, не сломал рядом другое. Сборка прошла — значит, проект вообще стартует, а не «красиво выглядит код». Остаётся третье, и его Тёма делает сам, руками: открывает портал, кликает по пути пользователя — заявка, reward-flow, витрина.

Та самая витрина, что утром встретила его битым блоком.

Курсор над кнопкой. Палец завис — ровно как утром завис над /rewind, который не спас. «Ну, — бормочет Тёма в пустую комнату, — или починил, или опять руины». Жмёт.

Секунда. Портал моргает.

Витрина грузится — и встаёт целиком. Тёма прокликивает заявку. reward-flow считает — цифры больше не пляшут, начисление ложится ровно. Путь, на котором утром всё валилось, — живой под пальцами.

— Вот теперь да, — тихо говорит он себе. — Тест зелёный, собралось, руками прошёл. Три глаза, и все три сказали одно. Не Саня сказал «готово» — я сам увидел.

Один симптом закрыт. Но портал утром лёг не в одном месте — лидерборд тоже был пуст. Тёма не кидается «и это заодно почини». Он делает то же самое ещё раз, уже привычнее: заводит вторую аварийную карточку.

# INCIDENT_NOTE
СИМПТОМ:    лидерборд пустой — таблица лидеров не собирается
ГДЕ ВИДЕН:  открыть портал → вкладка «Лидеры» → пусто
ОЖИДАЕТСЯ:  таблица показывает игроков по убыванию очков
ЧЕМ ДОКАЖУ: leaderboard.test.js зелёный + сборка ОК + вкладка руками

Тот же цикл: подал карточку Сане → починил → «покажи реальный вывод», не «готово» → npm test зелёный, сборка ОК → сам открыл вкладку, глянул — таблица на месте. Второй раз идёт вдвое быстрее: рука уже знает движение. Симптом — карточка — починка по корню — доказательство в три глаза. Не геройство, а рутина, которую можно повторять.

4. След и новое правило

Тёма не закрывает день на «ну вроде ожило». По каждому починенному симптому он оставляет короткий доказательный следEVIDENCE_LOG. Маленькая честная запись: что было сломано, чем чинил, чем доказал.

# EVIDENCE_LOG-lite
СИМПТОМ:      reward-flow начислял невпопад
УЛИКА:        стектрейс reward-flow.js:30 + строка ночного журнала «подогнал reward-flow»
ДО ПРАВКИ:    на сломанном состоянии — тест красный, цифры пляшут
ПОДТВЕРЖДЕНО: тест зелёный + проект поднялся + ручной прогон сценария чистый

— И знаешь, что тут самое взрослое, — говорит Тёма Сане, перечитывая запись. — Раньше доказательством было моё «ну я же вижу, что работает». А тут оно лежит отдельно от меня. Открой любой — и проверь по фактам, не на веру. Не «вау», как ожившая карта. Тихо. Но я больше не один со своим «вроде работает».

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

— Утром руины, сейчас портал на ногах — и я это доказал, а не на глаз прикинул. Всё, — говорит он экрану. — На слово больше не верю никому. Особенно ИИ.

Правило, которого вчера не было, теперь при нём: результат без доказательства — не результат. Не «агент сказал готово». Не «вроде работает». Только то, что прошло через факт.

Одно царапает, тихо. Сегодня он научился разгребать после: агент натворил — он разобрал и починил. И подмывает решить, что теперь-то он защищён: что случись — разгребу. Но «после» — это всё равно после. Авария уже была, проект уже лежал, ресурс уже сгорел.

— Чинить катастрофу, — тихо проговаривает он, — это ж не то же, что не дать ей случиться.

Мысль неудобная, и он её пока откладывает. Не на сегодня.

5. Чем закончился день

Вечером в чат с Артём2036 падает сообщение — и Тёма опять цепляет, что старший сегодня не тот. Утром был сухой, жёсткий, с развилкой без жалости. А сейчас в тоне проступило что-то деловитое, прикидывающее — будто он смотрит на сегодняшний разбор не как на драму парня, а как на что-то, из чего можно извлечь выгоду.

Артём2036
в сети
Текст снова рваный, в кляксах — утренняя чистота кончилась, guard опять на посту. Но костяк читается:

— Разгребать после ты сегодня освоил неплохо. Девять из десяти на твоём месте к утру бы просто сбежали — чужой проект в руинах, проще свалить и сделать вид, что не твоё. А ты остался и разгрёб. Не как все.

— Только запомни. Чинить катастрофу — это навык. А вот не дать ей случиться — это уже ██████████, и стоит оно ██████████████. Сними руку с ████████ заранее — и однажды это ██████ зачтётся. Кому и сколько — █████ поймёшь.

— Ты, который научился чинить после. А про предохранитель ██████ узнаешь.

— Опять полтекста сожрало, — ворчит Тёма, щурясь. И усмехается: съело-то не абы как. Где старший хвалит, что он не сбежал, — читается. А чуть свернул на «сколько это стоит» — глухие кляксы, точь-в-точь как на седьмом уровне, когда он спросил про деньги и получил труху. — Далась тебе эта цена. Каждый раз на ней и затыкаешься.

— Не как все, значит, — повторяет он, и впервые за день по-настоящему улыбается.

Он захлопывает крышку. Где-то на краю мысли уже шевелится: раз он умеет разгребать после, рано или поздно придётся учиться держать руль до. Но не сегодня. Сегодня хватит и того, что есть: утром были руины, вечером — портал на ногах, поднятый по-честному. И вытащил его не Санин рапорт «готово», а он сам — тем, что впервые не поверил на слово, а доказал.

1
Задача
Claude code, 11 уровень, 4 лекция
Недоступна
Роли reviewer и tester: чиним engineering contract
Роли reviewer и tester: чиним engineering contract
1
Задача
Claude code, 11 уровень, 4 лекция
Недоступна
Выбор роли и review-layer для багфикса
Выбор роли и review-layer для багфикса
1
Опрос
Subagents и делегирование в Claude Code, 11 уровень, 4 лекция
Недоступен
Subagents и делегирование в Claude Code
Subagents и делегирование в Claude Code
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ