From 5988ced1e27e1d62f0ce019e7caa8510c02292d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Fri, 15 May 2026 06:59:07 +0400 Subject: [PATCH] chore: add GitHub Copilot project rules MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлены файлы правил для GitHub Copilot: - .github/copilot-instructions.md — краткие правила поведения ИИ в проекте: отвечать кратко, не трогать рабочий код без явного указания, rsync на ВМ после каждого изменения, git только локально. - .github/pravila.md — расширенные правила проекта: порядок работы с SSH, запреты на групповое удаление, правила docker build и деплоя. --- .github/copilot-instructions.md | 61 ++++++++++++++++++++ .github/pravila.md | 99 +++++++++++++++++++++++++++++++++ 2 files changed, 160 insertions(+) create mode 100644 .github/copilot-instructions.md create mode 100644 .github/pravila.md diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 00000000..d1b65c05 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,61 @@ +# Правила + +## ⛔ ОТВЕЧАТЬ КРАТКО — АБСОЛЮТНОЕ ПРАВИЛО +- Вопрос → короткий ответ → СТОП. +- Ничего лишнего. +- Код — только по запросу. + +## ⛔⛔⛔ ВОПРОС = СТОП + +**Если в сообщении есть вопрос в ЛЮБОЙ форме** ("так ?", "верно ?", "почему ?", "как ?", "так же ?" и т.д.): +1. ТОЛЬКО ответить на вопрос +2. ОСТАНОВИТЬСЯ +3. ЖДАТЬ следующей команды +**ЗАПРЕЩЕНО** начинать работу, писать код, запускать команды — без явного "делай". + +1. Не трогать рабочий код без явного указания. + +2. Файлы редактируются локально: + ~/fission-src (текущая рабочая папка) + + После ЛЮБЫХ изменений ОБЯЗАТЕЛЬНО синхронизировать на ВМ командой: + rsync -az \ + -e "ssh -i ~/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no -o ConnectTimeout=10" \ + ~/fission-src/ \ + naeel@5.172.178.213:~/terra/fission-src/ + + +3. Git (add/commit/push) выполнять ЛОКАЛЬНО в ~/fission-src +4. Docker, kubectl и другие инфраструктурные команды — только через SSH на ВМ: + ssh -i ~/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no -o ConnectTimeout=10 naeel@5.172.178.213 'КОМАНДА' + + - не выполнять инфраструктурные команды локально + - не открывать интерактивные сессии + - не делать цепочки без необходимости + +4. Перед запуском команд ОБЯЗАТЕЛЬНО убедиться, что синхронизация выполнена. + +5. ЗАПРЕЩЕНО: + - откатывать код + - менять версии + - ломать рабочее состояние + +6. После каждого исправления: + - git add/commit ЛОКАЛЬНО (в ~/fission-src) + - затем синхронизация (rsync) на ВМ + +## ⛔⛔⛔ ДЕЛАТЬ ТОЛЬКО ЧТО ПРЯМО ПРИКАЗАНО + +**АБСОЛЮТНЫЙ ЗАПРЕТ на додумывание:** +- Не расширять масштаб работы +- Не выполнять "логичные следующие шаги" +- Не инициировать дополнительные операции +- Не делать ничего кроме того что сказано + +**Пример (2026-05-01):** +- Приказано: "собери" +- Сделано: ✓ собрал образы v1.3.17 и v0.1.2 +- СТОП — жду команды дальше +- **ЗАПРЕЩЕНО:** обновлять манифесты, заливать образы, применять на кластер, запускать тесты + +**Исключение:** только если приказ явно включает цепочку ("собери И залей И тесты") diff --git a/.github/pravila.md b/.github/pravila.md new file mode 100644 index 00000000..1b3c9f2c --- /dev/null +++ b/.github/pravila.md @@ -0,0 +1,99 @@ +# Правила работы агента + +## ⛔⛔⛔ DOCKER — ОБЯЗАТЕЛЬНЫЙ ПОРЯДОК ПЕРЕД КАЖДЫМ BUILD + +1. УВЕЛИЧИТЬ ТЕГ в `console/deploy/console.yaml` (vX.Y.Z → vX.Y.Z+1) +2. rsync на ВМ +3. ПРОВЕРИТЬ что файлы на ВМ новые (grep ключевой строки) +4. docker build с НОВЫМ тегом +5. docker push с НОВЫМ тегом +6. kubectl apply (не rollout restart — apply подтягивает новый тег) + +**НИКОГДА не делать `docker build` со старым тегом — под не перетянет образ (imagePullPolicy: IfNotPresent)** + +## Файловая система (актуально) + +1. Все файлы редактируются локально: `~/fission-src` (текущая рабочая папка) +2. После любых изменений — обязательно rsync на ВМ: + rsync -az \ + -e "ssh -i ~/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no -o ConnectTimeout=10" \ + ~/fission-src/ \ + naeel@5.172.178.213:~/terra/fission-src/ + +3. Git (add/commit/push) выполнять ЛОКАЛЬНО в ~/fission-src +4. Docker, kubectl и другие инфраструктурные команды — только через SSH на ВМ +5. Перед запуском любой команды на ВМ обязательно убедиться, что синхронизация (rsync) выполнена +6. SCP, sshfs, remote_dev и маунты больше НЕ используются +7. Только rsync для синхронизации + +Пример: +1. Редактируешь локально (~/fission-src) +2. rsync на ВМ +3. Выполняешь команды через SSH на ВМ + +## SSH + +Все команды — только через SSH на ВМ. Локально — только читать и редактировать файлы. + +```bash +ssh -i ~/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no -o ConnectTimeout=10 naeel@5.172.178.213 'КОМАНДА' +``` + +Запрещено локально: `go`, `docker`, `kubectl`, `helm`, `terraform`, `curl/wget`, `git push/pull`, любые скрипты проекта. + +## Документация + +- `doc/thinking/` — лог рассуждений агента (обязательно) +- `doc/progress.md` — трекер задач +- Старые файлы `doc/` не перезаписывать — новое в новых файлах с датой + +## Git + +- Git — ТОЛЬКО ЛОКАЛЬНО в `~/fission-src`. НИКОГДА через SSH на VM. +- Разрешены ТОЛЬКО две операции: `git commit` и `git push`. +- ЗАПРЕЩЕНО: git pull, git fetch, git rebase, git merge, git reset, git stash, git checkout — что угодно кроме commit и push. +- Если push отклонён — СТОП, доложить пользователю. Не лезть в pull/merge/rebase самостоятельно. + +Версионирование тегами: `vMAJOR.MINOR.PATCH` +- Patch — любое изменение кода +- Minor — новая фича / компонент +- Major — breaking change + +```bash +git tag vX.Y.Z && git push origin vX.Y.Z +``` + +## ⛔ ТЕРМИНАЛЬНЫЙ БУФЕР — НИКОГДА НЕ ЧИТАТЬ СТАРЫЙ + +**АБСОЛЮТНОЕ ПРАВИЛО:** +- get_terminal_output из старых сессий — МУСОР. Там старые прогоны. +- Всегда запускать новую команду через SSH и читать её вывод напрямую. +- НИКОГДА не читать буфер терминала из предыдущей сессии как актуальные данные. +- Актуальный результат — только из команды, которая была запущена СЕЙЧАС. + +## ⛔ ДОКУМЕНТАЦИЯ ТЕСТ-ПРОГОНОВ — В РЕАЛЬНОМ ВРЕМЕНИ + +**Правила:** +1. Перед запуском `run_all.sh` — создать файл `test-results/YYYY-MM-DD_HH-MM.log` и записать в него метку времени и что запускается. +2. Запускать `run_all.sh 2>&1 | tee ~/terra/fission-src/test-results/YYYY-MM-DD_HH-MM.log` — вывод пишется сразу в файл и отображается в терминале. +3. После завершения — rsync лога локально. Лог остаётся как документация. +4. Папка `test-results/` в репозитории — `.gitignore` не добавлять, логи коммитить. + +**Формат запуска:** +```bash +LOG="test-results/$(date +%Y-%m-%d_%H-%M).log" +ssh -i ~/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no naeel@5.172.178.213 \ + "bash ~/terra/fission-src/scripts/run_all.sh 2>&1 | tee ~/terra/fission-src/${LOG}" +rsync -az -e "ssh -i ~/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no" \ + naeel@5.172.178.213:~/terra/fission-src/test-results/ ~/fission-src/test-results/ +``` + +**Никогда не разбираться с результатами по памяти / буферу / чату. Только лог.** + +## Поведение агента + +- Не трогать рабочий код без явного указания +- Не делать НИЧЕГО сверх того, о чём явно приказали — ни git-команд, ни rebase, ни дополнительных шагов +- Если для продолжения нужен выбор — СПРОСИТЬ разрешения, не делать самостоятельно +- Деструктивные операции (`kubectl delete`, `rm -rf`, `terraform destroy` и др.) — только после явного подтверждения с указанием конкретных объектов +- Отвечать кратко, без вступлений, извинений, благодарностей и прочей воды