resolve: постановку текстом взяли полноправным входом
Задачу часто нужно решить прямо по описанию в разговоре, без файла в каталоге — так её берёт и opsx:propose. Скилл вход текстом объявлял, но прорабатывала его одна разведка: у решения и обслуживания шаг «прочитать задачу» читал разделы записи, шаг закрытия закрывал запись, признак обслуживания опирался на объявленный автором тип, а критерии приходили «от проекта». Форм постановки теперь две, и они равноправны. Отпадают ровно те шаги, у которых пропал предмет: ready гонять нечего, закрывать нечего. Ни один шаг с предметом не выпал — гейт, ревью, синк, чекпоинт и коммит идут как обычно, а сценарий, метку и глубину форма не выбирает. Взамен пропавшего — названное вслух первой репликой: как понята постановка, каким типом её считаешь и где проводишь границу. Человек, написавший текст, сидит в этом же разговоре и поправляет одной фразой; названный после работы тип не признак, а объяснение готового диффа. По сценариям: решение добирает недостающие критерии приёмки на чекпоинте и считает их данными только после ответа; обслуживание объявляет их отсутствие строкой (чекпоинта у него нет) и само называет границы, которых текст не дал; разведка увязана с общим правилом, а её шаг закрытия отпал с оговоркой про единственный след — записанный ответ. Записи в каталог скилл по-прежнему не заводит: ни перед работой, ни задним числом ради закрытия. Похожую строку беклога не разыскивает. Перечень осей пополнен формой постановки: по ней ветвятся готовность, источник типа и наличие закрытия.
This commit is contained in:
@@ -49,6 +49,24 @@
|
||||
либо отправил бы в полный цикл ради пустого change, либо принял бы как
|
||||
исключение, а исключения не исполняются.
|
||||
|
||||
### Постановка текстом — тип называешь ты, и называешь вслух
|
||||
|
||||
Первый признак приходит от автора записи; **текст типа не несёт** (SKILL.md,
|
||||
«Постановка текстом»). Оба признака тогда твои, и связка выродилась бы в одно
|
||||
суждение — то самое, ради разведения которого она и заведена.
|
||||
|
||||
Разведённость здесь восстанавливается местом, а не вторым автором: **тип и
|
||||
предмет работы называются до начала работы, первой репликой** — «иду
|
||||
обслуживанием: считаю это `chore`, потому что …; спека не меняется, потому что
|
||||
…». Человек, написавший текст, читает это раньше первой правки и поправляет
|
||||
одной фразой. Названный **после** работы тип не признак, а объяснение уже
|
||||
сделанного: к этому моменту у тебя есть готовый дифф, и он всегда подтверждает
|
||||
тот тип, под который писался.
|
||||
|
||||
Не назвал — признака нет вовсе, и сценарий выбрал сам себя. Это ровно тот
|
||||
случай, где «самый частый способ соврать этим сценарием» (раздел «Тонкости»)
|
||||
ничего не стоит: автора, чей тип можно было бы опровергнуть, здесь нет.
|
||||
|
||||
## Дельта нашлась по ходу — стоп, и у него свой порядок
|
||||
|
||||
Признак тот же, что на шаге 7 сценария решения: **меняется ли то, что записано в
|
||||
@@ -96,7 +114,11 @@
|
||||
**процессом своего типа**: сценарием решения, следующим прогоном. Формат записи
|
||||
правит `av-dev:task-track`, а не ты: у нового типа своя схема разделов, и
|
||||
готовность её проверит `ready` — той же машиной, что и на входе. Прогон
|
||||
обслуживания на этом кончается, исход — «меняется спека»;
|
||||
обслуживания на этом кончается, исход — «меняется спека».
|
||||
**Постановка пришла текстом — переформулировать нечего:** человек либо
|
||||
запускает следующий прогон тем же текстом, и он пойдёт решением, либо заводит
|
||||
запись через `av-dev:task-track`, если работа должна пережить разговор. Выбор
|
||||
между этими двумя — его, не твой: заводить запись сам этот скилл не вправе;
|
||||
- **прекратить работу** — человек не готов расширять задачу сейчас. Исход тот
|
||||
же, запись остаётся как была, вопрос записывается там, где проект держит
|
||||
вопросы.
|
||||
@@ -214,10 +236,19 @@ ADR: список источников канон закрыл двумя — а
|
||||
(конфиг и его образцы, версия зависимости, команда сборки, файл CI), и
|
||||
**«Критерии приёмки»** — с оракулами.
|
||||
|
||||
**Постановка пришла текстом — этих двух разделов нет, и оба нужны тебе тем же
|
||||
составом.** Границы назови сам и покажи в первой реплике, вместе с типом:
|
||||
обслуживание чаще прочих сценариев расползается, а границы у него лежат не в
|
||||
коде, и невидимая граница расползание не удержит. Критериев приёмки в тексте
|
||||
может не быть вовсе — тогда скажи строкой, что их нет и приёмка идёт по докладу.
|
||||
Сочинить их себе здесь нельзя даже так, как это делает решение: чекпоинта, на
|
||||
котором человек их утвердит, у обслуживания нет.
|
||||
|
||||
Здесь же обе проверки признака: тип предлагает, отсутствие дельт подтверждает
|
||||
(раздел «Признак — связка»). И здесь же — проверка на незнакомое: если форма
|
||||
правки не известна до начала, а нащупывается по ходу, объявляй исход **нужна
|
||||
разведка** и не начинай.
|
||||
(раздел «Признак — связка»); постановка текстом типа не объявляла — тогда
|
||||
называешь его ты, и вслух (раздел «Постановка текстом»). И здесь же — проверка
|
||||
на незнакомое: если форма правки не известна до начала, а нащупывается по ходу,
|
||||
объявляй исход **нужна разведка** и не начинай.
|
||||
|
||||
**Проверка на «заодно».** Обслуживание любит склеиваться в пачку — обновить
|
||||
зависимости, переписать сборку и убрать мёртвый код одной задачей. Не мерджится
|
||||
@@ -376,6 +407,9 @@ Change ты не передаёшь — его нет.
|
||||
`закрыта задача <slug>`. Каталога задач в проекте нет — ничего не выдумывай:
|
||||
скажи, что учёт остаётся за владельцем, и назови исход.
|
||||
|
||||
**Постановка пришла текстом — шага нет вовсе**: записи не было, закрывать нечего,
|
||||
след работы — коммит шага 6. Заводить запись задним числом ради закрытия нельзя.
|
||||
|
||||
## Границы: чего обслуживание не делает
|
||||
|
||||
- **Не меняет поведения.** Обнаружилось, что меняет, — стоп с исходом «меняется
|
||||
@@ -401,6 +435,8 @@ Change ты не передаёшь — его нет.
|
||||
Общее ядро доклада — в SKILL.md; сверх него сценарий обязан назвать:
|
||||
|
||||
- **что подтвердило признак** — тип записи и то, что дельта-спек не нашлось;
|
||||
постановка пришла текстом — **тип назвал ты**, и это говорится прямо, вместе с
|
||||
границами, которые ты объявил себе сам;
|
||||
дельта нашлась — **какой тип предложен, с причиной, и что человек выбрал**:
|
||||
переформулировать или прекратить;
|
||||
- **что стало иначе для разработчика** — одной фразой, адресуясь ему, а не
|
||||
|
||||
@@ -52,7 +52,10 @@
|
||||
|
||||
**Разведка пришла текстом — сформулируй вопрос сам одной фразой и покажи
|
||||
формулировку в первой же реплике.** Разведка, чей вопрос не назван вслух,
|
||||
признаётся удавшейся любым результатом.
|
||||
признаётся удавшейся любым результатом. Это частный случай общего правила
|
||||
(SKILL.md, «Постановка текстом»): у разведки показать надо не только предмет
|
||||
работы, но и сам вопрос, потому что предмет разведки — он и есть. Вместе с
|
||||
вопросом называются рамки и адрес ответа (шаг 1).
|
||||
|
||||
## Ход работы
|
||||
|
||||
@@ -368,6 +371,13 @@ git и читается диффом, а второй стоп на каждой
|
||||
учёт, а не про работу: `закрыта задача <slug>`. Правило «одна разведка — один
|
||||
коммит» про работу, а учёт — не работа.
|
||||
|
||||
**Разведка пришла текстом — шага нет вовсе**: записи не было, закрывать нечего.
|
||||
Следом работы здесь служит не код, а **записанный по названному адресу ответ** —
|
||||
он уехал в коммит шагом 7, и потому отсутствие записи разведке ничем не грозит.
|
||||
Ответ записать было некуда и он остался в докладе — вот это как раз тот случай,
|
||||
когда от прогона не осталось ничего: скажи об этом прямо, а не одной строкой
|
||||
среди прочих.
|
||||
|
||||
Каталога задач в проекте нет — **ничего не выдумывай**: скажи в докладе, что
|
||||
учёт задач остаётся за владельцем, и назови исход.
|
||||
|
||||
|
||||
@@ -90,6 +90,14 @@ flowchart TD
|
||||
в `tasks.md` change. Файл задачи может быть удалён до коммита, а критерии обязаны
|
||||
его пережить.
|
||||
|
||||
**Постановка пришла текстом** (SKILL.md, «Постановка текстом») — записи нет,
|
||||
читаешь сам текст. Критерии в нём бывают редко: выпиши то, что там есть, а
|
||||
недостающие **предложи на чекпоинте шага 5** и считай их данными только после
|
||||
ответа человека. Сам себе критерии не проставляешь — правило то же, что и с
|
||||
записью: они приходят снаружи, и подсунуть их себе значит назначить себе приёмку.
|
||||
Человек критериев не назвал — скажи строкой, что задача идёт без них и приёмка
|
||||
пойдёт по объяснению чекпоинта.
|
||||
|
||||
Здесь же проверка на «крупнее задачи»: видно, что одним заходом это не
|
||||
мерджится, — объявляй исход **до** заведения change.
|
||||
|
||||
@@ -193,7 +201,11 @@ flowchart TD
|
||||
- **чего мы намеренно не делаем** и почему — граница scope ловится хуже всего;
|
||||
- **чем рискуем и что осталось нерешённым** — сюда съезжаются развилки,
|
||||
накопленные до этого места, и находки ревью с пометкой `развилка`;
|
||||
- **что дальше**, если возражений нет.
|
||||
- **что дальше**, если возражений нет;
|
||||
- **критерии приёмки, если постановка пришла текстом и не назвала их** —
|
||||
предложенными, а не принятыми: человек их подтверждает или правит здесь же.
|
||||
Это единственное место, где исполнитель вообще может их предложить, и работает
|
||||
оно только потому, что решает всё равно человек.
|
||||
|
||||
Проверка на «простой язык» одна и механическая, и она общая у чекпоинтов всех
|
||||
трёх сценариев — поэтому её дом здесь, а у соседей помеченные копии:
|
||||
@@ -371,6 +383,12 @@ flowchart TD
|
||||
работу: `закрыта задача <slug>`. Это второй коммит осознанно: правило «одна задача
|
||||
— один осмысленный коммит» про работу, а учёт — не работа.
|
||||
|
||||
**Постановка пришла текстом — шага нет вовсе, и это не пропуск.** Записи не
|
||||
существовало, закрывать нечего, а следом работы служат коммит и заархивированный
|
||||
change. Заводить запись задним числом, чтобы её тут же закрыть, нельзя: учёт
|
||||
получил бы задачу, которой никто не ставил, и закрытие без единой минуты
|
||||
открытого состояния. Скажи это строкой и переходи к докладу.
|
||||
|
||||
Каталога задач в проекте нет — **ничего не выдумывай**: скажи в докладе, что
|
||||
учёт задач остаётся за владельцем, и назови исход.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user