Add quick gate and independent review pipeline
Introduce tools/quick_gate.py: a one-second check that parses every file in protocol, tests and tools, imports each protocol module, and runs the functional tests of the labs that need no experiment data. Wire it to a PostToolUse hook so edits under protocol or tests are checked automatically, and add two read-only review agents with slash commands that drive them: verifier for independent re-derivation of results, adversary for unsafe-state hunting in control, failsafe, session and reset code. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
35
.claude/commands/check.md
Normal file
35
.claude/commands/check.md
Normal file
@@ -0,0 +1,35 @@
|
||||
---
|
||||
description: Независимая проверка уже сделанной работы — verifier и, при необходимости, adversary
|
||||
argument-hint: [что проверяем: номер лабы, модуль или «текущие изменения»]
|
||||
---
|
||||
|
||||
Проверяем: $ARGUMENTS
|
||||
|
||||
Если аргумент не задан, проверяем незакоммиченные изменения — возьми их из
|
||||
`git status --porcelain` и `git diff`.
|
||||
|
||||
## Что сделать
|
||||
|
||||
1. Собери фактуру: какие файлы затронуты, какая лаба или модуль за это отвечает,
|
||||
какой командой прогоняется полный тест.
|
||||
|
||||
2. Запусти `python tools/quick_gate.py`. Если шлюз не пройден — дальше не иди,
|
||||
сначала почини, агентов дёргать бессмысленно.
|
||||
|
||||
3. Запусти агента `verifier`. Передай ему:
|
||||
- список затронутых файлов,
|
||||
- команду полного прогона,
|
||||
- указание брать требование из `README.md` и `PROJECT_LOG.md`, а не из твоих слов.
|
||||
|
||||
4. Агента `adversary` запускай **только** если затронуто что-то из списка:
|
||||
управление, failsafe, аварийная остановка, сеансы, перезапуск, сброс,
|
||||
подлинность сообщений. Для видео, сжатия, FEC и модуляции он бесполезен —
|
||||
не трать лимит.
|
||||
|
||||
5. Разбери находки как арбитр: воспроизведи, отклони невоспроизводимые вслух,
|
||||
почини подтверждённые.
|
||||
|
||||
## Отчёт пользователю
|
||||
|
||||
Коротко: что запускалось, что нашли, что починили, что отклонили и почему.
|
||||
Отчёты агентов пользователь не видит — пересказывай сам, не отсылай к ним.
|
||||
68
.claude/commands/lab.md
Normal file
68
.claude/commands/lab.md
Normal file
@@ -0,0 +1,68 @@
|
||||
---
|
||||
description: Полный цикл работы над лабой — аудит, план, реализация, независимая проверка
|
||||
argument-hint: <номер лабы> [краткая постановка]
|
||||
---
|
||||
|
||||
Работаем над лабой: $ARGUMENTS
|
||||
|
||||
Порядок обязательный. Не перескакивай через этапы и не начинай писать код,
|
||||
пока пользователь не согласовал план.
|
||||
|
||||
## Этап 1. Аудит
|
||||
|
||||
Запусти агента `Explore` с запросом: что в `protocol/` уже относится к этой задаче,
|
||||
какие модули придётся трогать, где есть пересечение или дублирование, как устроены
|
||||
две-три ближайшие по смыслу лабы в `tests/`.
|
||||
|
||||
Прочитай сам последние записи в `PROJECT_LOG.md` — там указано, чем должен
|
||||
заниматься следующий этап.
|
||||
|
||||
Выдай карту: что есть, чего нет, что придётся изменить. Только карта, без решений.
|
||||
|
||||
## Этап 2. План
|
||||
|
||||
На основе карты предложи план: какие модули создаются, какие меняются, что именно
|
||||
измеряет лаба, какие CSV и PNG появятся в `data/processed`, какие функциональные
|
||||
проверки будут в `run_functional_tests`.
|
||||
|
||||
**Остановись и дождись согласования.** Это прямое требование пользователя.
|
||||
|
||||
## Этап 3. Реализация
|
||||
|
||||
Пишешь ты, в этом же треде. Отдельного агента-кодера не запускай — у тебя уже есть
|
||||
весь контекст, а он начнёт с нуля и потратит лимит впустую.
|
||||
|
||||
Держи стиль проекта: русские докстроки и подписи осей, `from __future__ import annotations`,
|
||||
датаклассы для метрик, CSV и PNG в `data/processed`, `run_functional_tests` и `main`
|
||||
как в соседних лабах.
|
||||
|
||||
После каждой заметной правки: `python tools/quick_gate.py`.
|
||||
|
||||
## Этап 4. Проверка
|
||||
|
||||
Запусти агента `verifier`. В задании передай:
|
||||
- номер и постановку лабы своими словами,
|
||||
- список созданных и изменённых файлов,
|
||||
- команду полного прогона,
|
||||
- прямое указание читать требование из `README.md` и `PROJECT_LOG.md`, а не из твоего пересказа.
|
||||
|
||||
Если лаба касается управления, аварийной остановки, сеансов, сброса или подлинности
|
||||
сообщений — параллельно запусти `adversary` с брифом на атаку под эту тему.
|
||||
|
||||
Оба агента read-only. Правки вносишь ты.
|
||||
|
||||
## Этап 5. Разбор находок
|
||||
|
||||
Ты арбитр. По каждой находке:
|
||||
- воспроизведи её сам, прежде чем чинить;
|
||||
- невоспроизводимую отклони и скажи об этом вслух;
|
||||
- подтверждённую почини и перезапусти проверку.
|
||||
|
||||
Не чини всё подряд из вежливости к агенту.
|
||||
|
||||
## Этап 6. Завершение
|
||||
|
||||
Полный прогон лабы, затем `python tools/quick_gate.py`.
|
||||
Запись в `PROJECT_LOG.md` в том же формате, что предыдущие записи.
|
||||
Коммит в стиле проекта: `LabNNN: краткое описание на английском`.
|
||||
Коммить только после явного согласия пользователя.
|
||||
Reference in New Issue
Block a user