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

37 lines
No EOL
5.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
pr: 44
title: rename CONTEX7 typo + update stale config/scripts paths
---
# PR: rename CONTEX7 typo + update stale config/scripts paths
## Что сделано
- `.env.example:12``CONTEX7_API_KEY``CONTEXT7_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-11``REPO_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 `CONTEX7``CONTEXT7` в 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 в `.env``CONTEXT7_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).