refactor(config+docker+docs): remove gh, Forgejo-first env/permissions, ADRs #14
Loading…
Reference in a new issue
No description provided.
Delete branch "refactor/config-docker/forgejo-first"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что сделано
Dockerfile
ghCLI (apt sourcecli.github.com/packages, keyring, пакетgh)git config --system credential.helper '!gh auth git-credential'cloudflareddownload оставлен наgithub.com(Cloudflare публикует releases только там) — помечено комментариемcurl,git,python3,nodeостаются в образе (нужны для tools/scripts).env.example
GITHUB_TOKENOPENCODE_MEMORY_REMOTE→https://git.slaid098.dev/slaid098/opencode-memory.gitFORGEJO_URL/FORGEJO_TOKEN— primary authopencode.json permissions
gh*permission rules (14 allow, 1 deny, 1 ask, 8 deny в safety block)curl * -X DELETE *FORGEJO_URL*: denygit commit *: denyи force-push/tag-deny rules остаютсяAGENTS.md
## Git Hostпосле## Pipeline— документирует Forgejo-first политикуcheck-permissions.py
gh*паттерны изDANGEROUS_PATTERNS(мёртвый код —ghCLI не установлен)python* *pipeline-status.py/python* *spec-status.pyпаттерны остаютсяpyproject.toml / README.md
github.com/slaid098/...→git.slaid098.dev/slaid098/...ADRs
092-forgejo-dispatch.md— Forgejo dispatch в status oracles и_shared.ts093-forgejo-first.md— стратегия Forgejo-first migration094-host-agnostic-docs.md— host-agnostic документация в skills/agents095-curl-in-skills-where-no-tool.md— curl в skills для операций без tool'аТесты
test_dockerfile.py: +3 теста (gh не установлен, credential helper удалён, curl остался)test_permissions.py: удаленыgh*deny-ассерты, добавленыtest_gh_rules_removed,test_curl_delete_forgejo_denied, env.example Forgejo-first тестыtest_check_permissions.py:gh pr checks*тесты заменены наgit reset *(gh паттерны удалены)Почему
GitHub аккаунт удалён —
ghCLI мёртв, все operations идут через Forgejo REST API. PR #10 (tools) и PR #13 (skills/agents) вырезали GitHub fallback из кода и промптов. Этот PR завершает адаптацию: Dockerfile, env, permissions, docs, ADRs.Watch out
cloudflaredbinary всё ещё скачивается сgithub.com— это не наш код, Cloudflare публикует releases только тамpre-commit-config.yamlhook repos (github.com/astral-sh/ruff-pre-commit,github.com/pre-commit/mirrors-mypy) — не трогаем, third-partydocker buildне запущен (нет Docker daemon в окружении), ноghудалён из apt install — образ соберётся без негоcreate-prtool не использовался (баг #9 — не передаётheadfield), PR создан через raw curlPending
docker-compose restartпосле merge — opencode поднимается безgh, tools работаютREADME.mdсодержит устаревшую ссылку/support(нужно/contactsper PR#270) — вне scope этого issuerun-pipeline/SKILL.md:150+bug-discovery/SKILL.md:10-12docs-drift (PR#13 follow-up) — вне scopeCloses #7
Code Review Summary
Чистый, хорошо структурированный refactor: удаление GitHub-специфики (gh CLI, GITHUB_TOKEN, 24 gh* permission rules) и миграция на Forgejo-first подход. 4 новых ADR (092-095) документируют решения, 3 старых ADR помечены SUPERSEDED. 773 теста проходят, coverage 83.6%, ruff чист. Cross-file paired updates (reviewer.md, memory-syncer.md) в одном PR — окно сломанного main закрыто.
Positives
curl * -X DELETE *FORGEJO_URL*: denysafety net добавлен, нет broad curl allow. JSON валиден (145 rules total).git.slaid098.dev.## Git Hostдобавлена после## Pipeline, описывает Forgejo-first политику, host-agnostic язык для skills/agents.*/pulls/*,*/issues/*read-only), инструкции заменены на curl к Forgejo API. Связь обновлена совместно в одном PR.git.slaid098.dev, нет битых ссылок наgithub.com/slaid098.Suggestions (info, not blocking)
no-any-returnнаparse_global_bash_rules(config.get("permission", {}).get("bash", {})возвращаетAny). Подтверждено pre-existing — ошибка есть на main (строка 142 до удаления gh* patterns). Не введено этим PR, не блокирующее. Можно исправить отдельным PR:return dict(config.get("permission", {}).get("bash", {}))или type cast.gh pr checks/gh pr view --json statusCheckRollup— но в контексте "Запрещено" (секция API Restrictions), корректно. Можно заменить на host-agnostic "raw checks-rollup API" для консистентности с ADR-094, но не критично.Verdict: APPROVE