mermaid там, где структура — граф или автомат
Критерий: диаграмма заводится, если структура граф или автомат, а проза вынуждена его пересказывать. Где структура таблица соответствий — чек-лист синка, профили ревью, коды выхода — не заводится: дублировала бы таблицу и разошлась с ней. tasks: жизненный цикл записи по индексам — состояния это где числится строка, файл items/ не двигается ни на одном переходе. session: четыре шага сессии; текст говорил «это зависимость, а не список», но зависимости не показывал — теперь на рёбрах написано, что ломается. sprint.md: исходы задачи в спринте плюс два ребра, где порядок нарушается молча — урожай до sprint close и блокер в обход исходов. task-pipeline: одиннадцать шагов с развилкой «тривиальная» и досрочным исходом «крупнее задачи». promote.md: храповик находка → конвенция → правило → удаление, с обратным ребром; обязательность третьего шага теперь видна как ребро. calibration.md: счётчик retune до drop — таблица вердиктов его выразить не может, автомат может. README: граф вызовов между плагинами; односторонность зависимости pipeline → pm видна сразу. Все девять блоков прогнаны через mermaid-cli. README-схема и автомат калибровки переверстаны после просмотра: subgraph'ы ломали раскладку, self-loop наезжал подписями. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -23,6 +23,23 @@
|
||||
| `retune` уже был дважды подряд | `drop` | удаляем проход |
|
||||
| находит, но ложных больше трети от всех находок | `retune` | триаж съедает больше, чем экономит проход |
|
||||
|
||||
Вердикты образуют храповик со счётчиком — его-то таблица и не показывает:
|
||||
|
||||
```mermaid
|
||||
stateDiagram-v2
|
||||
state "проход в профиле" as live
|
||||
state "retune №1 — правка charter'а" as r1
|
||||
state "retune №2 — последняя попытка" as r2
|
||||
state "проход удалён" as dead
|
||||
|
||||
[*] --> live: заведён и откалиброван ДО включения
|
||||
live --> r1: 1/3, 0/3 или ложных больше трети
|
||||
r1 --> live: замер keep — счётчик сброшен
|
||||
r1 --> r2: снова не ловит
|
||||
r2 --> live: замер keep — счётчик сброшен
|
||||
r2 --> dead: снова не ловит — это театр
|
||||
```
|
||||
|
||||
**`retune` не более двух раз подряд.** Проход, не находящий дефект своего класса
|
||||
в 2 из 3 прогонов после двух правок промпта, — это театр. Удалять, а не
|
||||
бесконечно править формулировки: каждая итерация правки промпта стоит дороже,
|
||||
|
||||
@@ -11,6 +11,27 @@
|
||||
- **правила линтера** — то же с детерминированным оракулом и нулевой ценой
|
||||
внимания.
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
f["находка ревью"]
|
||||
cond{"принята и не специфична<br/>для одного места?"}
|
||||
no["промоуту не подлежит:<br/>место одно — комментарий в коде;<br/>вкусовщина — вон на триаже;<br/>нужен рантайм — в журнал ревью"]
|
||||
conv["конвенция:<br/>проверяемое свойство + какой проход нашёл"]
|
||||
rule["правило линтера, запретитель,<br/>тест-сканер или анализатор"]
|
||||
clean["шаг 3: формулировка удалена из конвенций,<br/>строка — в conventions/README.md"]
|
||||
|
||||
f --> cond
|
||||
cond -->|нет| no
|
||||
cond -->|да| conv
|
||||
conv --> rule
|
||||
rule --> clean
|
||||
rule -->|"ложных чаще, чем ловит (~треть)"| conv
|
||||
```
|
||||
|
||||
Ребро назад — обратное движение (внизу): правило, дающее ложные срабатывания
|
||||
чаще, чем ловит, снимается в прозу. Ребро `rule → clean` **обязательное**: без
|
||||
него первые два шага не окупаются, а именно его и пропускают.
|
||||
|
||||
## Шаг 1. Находка → конвенция
|
||||
|
||||
Условия: находка **принята** при ревью (не отвергнута, не понижена в гипотезу) и
|
||||
|
||||
@@ -148,6 +148,36 @@ description: Автономно проводит одну задачу чере
|
||||
|
||||
## Шаги
|
||||
|
||||
Одиннадцать шагов с одной развилкой и одним досрочным исходом:
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
s1["1. Прочитать задачу<br/>критерии приёмки выписать сразу"]
|
||||
triv{"тривиальная?"}
|
||||
big["исход «оказалась крупнее задачи»<br/>объявляется ДО заведения change"]
|
||||
s2["2. opsx:explore — груминг идеи"]
|
||||
s3["3. opsx:propose — change, дельта-спеки, tasks.md"]
|
||||
s4["4. ревью предложения, профиль design"]
|
||||
s5["5. отработать замечания + validate --strict"]
|
||||
s6["6. opsx:apply — код, гейт, поведенческая верификация"]
|
||||
s7["7. ревью кода, профиль по факту изменения"]
|
||||
s8["8. opsx:archive"]
|
||||
s9["9. синк документации — av-dev-pm:docs"]
|
||||
s10["10. коммит работы — av-dev-git:commit"]
|
||||
s11["11. закрыть задачу — av-dev-pm:tasks,<br/>вторым коммитом учёта"]
|
||||
|
||||
s1 --> triv
|
||||
s1 -.-> big
|
||||
triv -->|"нет: идея или мутная постановка"| s2
|
||||
s2 --> s3
|
||||
triv -->|"да: шаги 2 и 4 пропускаются"| s3
|
||||
s3 --> s4 --> s5 --> s6 --> s7 --> s8 --> s9 --> s10 --> s11
|
||||
```
|
||||
|
||||
Два чекпоинта ревью — шаги 4 и 7 — единственные места, где зовётся конвейер;
|
||||
порядок «сперва коммит работы, потом коммит учёта» на схеме тоже ребро, и оно
|
||||
обязательное (шаг 11).
|
||||
|
||||
### 1. Прочитать задачу
|
||||
|
||||
Задача задана извне (slug, файл, ссылка, описание) — прочитай её и связанные
|
||||
|
||||
Reference in New Issue
Block a user