JavaRush /Курсы /Claude Code SELF /Когда проект жалко потерять

Когда проект жалко потерять

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

Третий день дисциплины Тёма встречает ещё в постели, с телефоном в руке. В чате с Артём2036 сверху лежит свежая картинка.

Тёма смотрит на эту дверь дольше, чем хотел. Но так ничего и не решив, идет на работу.

Не забыв взять свой любимый кофе, он открывает ноутбук, и там его ждёт launch-портал. Тот самый клиентский проект Антона. Тёма скроллит его сверху вниз — вот блок, который он сам переписал три задачи назад, вот зона, где неделю назад разводил руками, а теперь знает каждый угол.

На витрине есть что подправить, мелочь на пару минут. Тёма открывает чат с агентом, начинает набивать: «Поправь блок…» — и останавливается. Палец висит над Enter. Раньше он бы дожал не глядя. А сейчас в голове чужой, непривычный вопрос: полезет агент — заденет соседнее? Сломает то, что уже работает?

— Чего завис? — Олег притормаживает у стола с кружкой, косится в экран. — Раньше ты в код влетал, как в свою квартиру.

— Да я… — Тёма ищет слова и сам удивляется тому, что говорит. — Слушай, странное. Раньше я не боялся что-то сломать. Песочница, игрушки, снёс — заново собрал. А тут вот эту штуку, — он тычет в блок, который сам вылизывал, — жалко. Реально жалко тронуть.

Олег хмыкает — без подколки, с узнаванием.

— О, поздравляю. Дорос.

— До чего дорос?

— До того, что есть что терять. — Олег отхлёбывает из кружки. — Месяц назад у тебя код был пустой, ноль ценности. Сломал — не жалко. А теперь ты своими руками довёл штуку до ума, и она стоит денег и нервов. Вот тебе и страшно. Это не трусость, салага. Это у тебя впервые появилось, что беречь.

Тёма молчит, переваривает. В точку.

— И знаешь, что смешно? — Олег кивает на портал. — Ты сейчас наступаешь ровно на мои старые грабли. Помнишь, я тебе про диплом травил? Диплом_финал, Диплом_финал_испр, Диплом_вот_этот?

— Это когда ты черновик на защиту припёр вместо чистовика? — Тёма фыркает. — Помню.

— Во-во. Я тогда что делал? Боялся потерять хорошую версию — и плодил копии. Ты, — Олег снова тычет в экран, — сейчас ХОЧЕШЬ сделать то же самое. Забоишься лезть в портал — начнёшь папки лепить: портал2, портал-финал, портал-точно. И утонешь в них, как я в дипломе. Как ты сам в том 2048 тонул.

Тёма морщится — узнаёт себя три недели назад.

— Ну а как тогда? Не лезть вообще? Так с места не сдвинешься.

1. Взрослые не плодят копии — у них сейф

— А взрослые копии не плодят, — Олег ставит кружку. — У взрослых для этого своя штука есть. Называется git. Слышал небось краем уха?

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

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

Тёма напрягается.

— Стоп. А ты откуда про ночь знаешь?

— Да весь этаж знает, — усмехается Олег. — Портал лёг, ты по нему /rewind долбил, а он не откатывал. Так вот слушай, почему не откатил.

Он опирается на стол — старая школа взялась объяснять.

— Твой /rewind живёт в разговоре с ИИ-агентом. Пока сессия жива — он тянет назад что угодно. Но ночью сессию снесло. А правки-то агент уже записал на диск, в сами файлы. Кнопке твоей стало нечего отматывать: разговора, где она работает, больше нет, а битый код лежит на диске сам по себе. Она до диска не дотягивается. Не потому что плохая — просто она с другого этажа.

Тёма медленно кивает — та безнадёга того утра наконец получает имя.

— А git? — спрашивает он.

— А git живёт на диске, вместе с проектом. Этажом ниже, чем твой разговор. Снеси хоть десять сессий — точки git как лежали, так и лежат. Вот тебе и разница: /rewind — страховка разговора, git — страховка самого проекта. Той ночью тебе нужен был нижний этаж, а построен был только верхний.

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

03:47  reward-flow.js — переписано
04:08  portal.js:15 — упростил проверку
        (за всю ночь — ни одной точки возврата)

Ни одной точки возврата. Агент всю ночь ломал, переписывал, отключал куски — и ни разу не оставил позади себя честного «вот тут ещё всё работало». Просто катился вперёд по битому стеклу, и за спиной не было ни одной целой ступеньки, куда упасть. Вот, значит, почему то утро было таким безнадёжным. Не в кнопке дело. В том, что падать было некуда.

2. Докажи, что провал обратим

Мысль про сейф уже засела, но прежде чем звать Олега разбирать git, Тёма открывает чат с Лёхой — надо оформить саму задачу. На портале ждёт доработка reward-flow, той самой зоны начисления награды. Тёма на автомате открывает TASK_SPEC и расписывает привычное: что сломано, что должно заработать, как поймём, что готово.

Лёха после ночного выгорания говорит вполголоса — сил на длинные разборы нет, тянет одним ревьюером. Но одного вопроса не пропускает:

— Ты расписал, как выглядит успех. А как выглядит безопасный провал? Заход сорвётся — портал переживёт? Докажи.

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

— Ну и куда ты вернёшься, если поедет? — не отстаёт Лёха. — И главное: провал ты как разгребать будешь — руками дочищать или…

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

— Вот. — Лёха слабо, но одобрительно кивает. — Ручная зачистка всегда оставляет хвост, которого ты не заметил. А откат к чистой точке — это не «вроде убрал», это «знаю, что чисто». Запиши в бланк рядом с задачей. А как этот откат устроен — спроси у деда, он сегодня в форме лучше меня.

Тёма дописывает в TASK_SPEC страховочный контур: работа идёт в стороне, на отдельной линии; до старта — точка возврата; перед принятием — обязательный просмотр; провал не дочищается, а выбрасывается весь.

ЧТО надо — ясно: отдельная линия, точка возврата, откат целиком. А вот ЧЕМ это делается — тут Тёма ловит Олега, когда тот снова шаркает мимо с кружкой.

— Дядь Олег, ты про сейф начал — договаривай. Как он внутри-то устроен?

1
Задача
Claude code, 13 уровень, 0 лекция
Недоступна
Разделение внутренних и внешних источников в Claude CLI
Разделение внутренних и внешних источников в Claude CLI
1
Задача
Claude code, 13 уровень, 0 лекция
Недоступна
Исправление capability contract для issue tracker
Исправление capability contract для issue tracker
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ