opencode-config/docs/handoff/pr-44-hotfix-config-paths.md
Sergey f06c9f2422
fix(config): rename CONTEX7 typo + update stale config/scripts paths (#44)
* fix(config): rename CONTEX7_API_KEY to CONTEXT7_API_KEY

* fix(permissions): update stale config/scripts paths to .opencode/scripts

* test(config): add tests for typo fix and updated paths

* docs(handoff): add handoff and ADR-018 for hotfix

* docs(handoff): set PR number

---------

Co-authored-by: opencode-agent <agent@slaid098.dev>
2026-07-24 17:50:33 +03:00

5.9 KiB
Raw Blame History

pr title
44 rename CONTEX7 typo + update stale config/scripts paths

PR: rename CONTEX7 typo + update stale config/scripts paths

Что сделано

  • .env.example:12CONTEX7_API_KEYCONTEXT7_API_KEY (typo fix). Context7 MCP теперь резолвит API key.
  • .opencode/opencode.json:369"{env:CONTEX7_API_KEY}""{env:CONTEXT7_API_KEY}" (typo fix в context7 MCP server config).
  • .opencode/opencode.json:218,223 — deny rules python3 config/scripts/pipeline-status.py* / python3 config/scripts/spec-status.py*.opencode/scripts/... (stale paths после миграции config/ → .opencode/ PR#23). Широкие паттерны python3 *pipeline-status.py* / python3 */pipeline-status.py* уже работали (матчат любой путь); узкие config/scripts/... — мёртвый код. Узкие обновлены на актуальный путь.
  • .opencode/scripts/check-permissions.py:10-11REPO_ROOT / "config" / "agents" / REPO_ROOT / "config" / "opencode.json".opencode/agents / .opencode/opencode.json. Скрипт был бесполезен (paths не существовали → AGENTS_DIR.exists() / OPENCODE_JSON.exists() → False → false negative "OK").
  • .opencode/agents/reviewer.md:72,77 — deny rules python3 config/scripts/....opencode/scripts/... (консистентно с global opencode.json).
  • .opencode/agents/docs-reviewer.md:61,66 — deny rules python3 config/scripts/....opencode/scripts/... (консистентно с global opencode.json).
  • tests/test_permissions.py — 4 новых теста: CONTEXT7_API_KEY present в .env.example и opencode.json; CONTEX7_API_KEY (typo) absent из обоих файлов.
  • tests/test_check_permissions.py — 2 новых теста: AGENTS_DIR points to .opencode/agents/ (exists); OPENCODE_JSON points to .opencode/opencode.json (exists).
  • ADR-018 + этот handoff

Почему

После миграции config/.opencode/ (PR#23) остались stale пути в deny rules, check-permissions.py и agent frontmatter (зафиксировано в PR#24 digest как known issue, в PR#40 watch out как pre-existing). Также обнаружен typo CONTEX7_API_KEY (должно быть CONTEXT7_API_KEY) — Context7 MCP не резолвит env var из-за несовпадения имён.

Этот PR — hotfix, чинит 2 проблемы в минимальном scope:

  1. Typo CONTEX7CONTEXT7 в 2 активных файлах (.env.example, .opencode/opencode.json). Исторические docs/handoff/pr-27-* и docs/decisions/007-pr-27-* НЕ тронуты — это историческая документация, не активный код.
  2. Stale config/scripts/.opencode/scripts/ в deny rules (opencode.json), check-permissions.py paths, agent frontmatter (reviewer.md, docs-reviewer.md). Узкие deny паттерны актуализированы (широкие уже работали).

Остальные config/scripts references (docstrings в pipeline-status.py, spec-status.py, scaffold-handoff.sh usage comment, prompt-body explanations в agents/skills) — ВНЕ scope этого hotfix. Они cosmetic (не functional — deny rules и paths исправлены), cleanup возможен в отдельном PR.

Pending

  • Cosmetic config/scripts references в docstrings/usage comments (pipeline-status.py:10-11,319; spec-status.py:12-13; scaffold-handoff.sh:3; reviewer.md:99 prompt body; docs-reviewer.md:111 prompt body; spec/SKILL.md:28) — вне scope этого hotfix, potential follow-up cleanup PR.
  • CONTEX7_API_KEY в .env пользователей (если скопировали из старого .env.example) — rename не автоматический, user-facing note может потребоваться.

Watch out

  • .env пользователей НЕ обновляется автоматически — typo fix только в .env.example. Пользователи, скопировавшие .env из старого .env.example, имеют CONTEX7_API_KEY (typo) в своём .env. После pull им нужно вручную rename в .envCONTEXT7_API_KEY, иначе context7 MCP не резолвит key.
  • Исторические CONTEX7 references сохраненыdocs/handoff/pr-27-configure-opencode-rewrite.md:6 и docs/decisions/007-pr-27-configure-opencode-rewrite.md:11 НЕ тронуты (историческая документация). check-adr-refs.py не падает — эти файлы не содержат ADR-NNN refs к CONTEX7.
  • Узкие deny паттерны обновлены, НЕ удалены — issue допускал оба варианта (обновить ИЛИ удалить, т.к. широкие python3 *pipeline-status.py* / python3 */pipeline-status.py* покрывают). Решено обновить (consistency с .opencode/scripts/ actual path, explicit > implicit). Удаление оставило бы gap если широкие паттерны когда-то изменят.
  • check-permissions.py теперь реально проверяет конфиги — до фикса скрипт возвращал false negative "OK" (paths не существовали → violations=[] → exit 0). После фикса он находит .opencode/agents/*.md и .opencode/opencode.json и реально валидирует. Существующие тесты test_check_permissions_passes / test_clean_configs_pass подтверждают exit 0 (конфиги чистые).
  • ADR number = sequential (018), НЕ PR number. Проверить ADR naming в handoff до push (эволюция паттерна PR#26 docs-reviewer typo).