opencode-config/docs/decisions/018-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

39 lines
No EOL
4.8 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.

# ADR-018: Hotfix CONTEX7 typo + stale config/scripts paths
## Статус
Accepted (2026-07-24)
## Контекст
После миграции `config/``.opencode/` (PR#23, ADR-002) остались stale пути в deny rules, check-permissions.py и agent frontmatter. Также обнаружен typo `CONTEX7_API_KEY` (должно быть `CONTEXT7_API_KEY`) в 2 активных файлах — Context7 MCP не резолвит API key из-за несовпадения имён env var (`{env:CONTEX7_API_KEY}` в opencode.json не матчит `CONTEXT7_API_KEY` в окружении, и наоборот).
Зафиксировано как known issue:
- PR#24 digest: "env var `CONTEX7_API_KEY` (typo) захардкожена в 3 файлах... Не исправлено в PR#24 (вне scope). Следующий PR должен rename."
- PR#40 watch out: "check-permissions.py пути: скрипт использует `config/agents` и `config/opencode.json`, но файлы в `.opencode/`... Исправление путей — отдельный PR."
Stale `config/scripts/` deny rules в opencode.json (lines 218, 223) — мёртвый код (широкие паттерны `python3 *pipeline-status.py*` / `python3 */pipeline-status.py*` уже работали, матчат любой путь). Узкие `python3 config/scripts/...` — нет, т.к. директория мигрировала.
## Решение
### 1. CONTEX7 typo fix (2 файла)
- `.env.example:12``CONTEX7_API_KEY``CONTEXT7_API_KEY`
- `.opencode/opencode.json:369``"{env:CONTEX7_API_KEY}"``"{env:CONTEXT7_API_KEY}"`
Исторические `docs/handoff/pr-27-*` и `docs/decisions/007-pr-27-*` НЕ тронуты — это историческая документация миграции, не активный код. `CONTEX7` в них описывает что было dropped.
### 2. Stale config/scripts paths → .opencode/scripts (4 файла)
- `.opencode/opencode.json:218,223` — deny rules `python3 config/scripts/pipeline-status.py*` / `python3 config/scripts/spec-status.py*``.opencode/scripts/...`
- `.opencode/scripts/check-permissions.py:10-11``REPO_ROOT / "config" / "agents"` / `REPO_ROOT / "config" / "opencode.json"``.opencode/agents` / `.opencode/opencode.json`
- `.opencode/agents/reviewer.md:72,77` — deny rules → `.opencode/scripts/...`
- `.opencode/agents/docs-reviewer.md:61,66` — deny rules → `.opencode/scripts/...`
Узкие deny паттерны обновлены (НЕ удалены) — explicit > implicit. Широкие паттерны `python3 *pipeline-status.py*` / `python3 */pipeline-status.py*` уже покрывали (матчат любой путь), но узкие паттерны документируют конкретный path и добавляют defense-in-depth.
### 3. Тесты (6 новых)
- `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).
## Альтернативы
- **Удалить узкие deny паттерны вместо обновления** — отклонено: issue допускал оба варианта, но обновление сохраняет explicit path documentation + defense-in-depth. Удаление оставило бы gap если широкие паттерны когда-то изменят. Consistency с actual `.opencode/scripts/` path.
- **Тронуть исторические `CONTEX7` references в docs/handoff/pr-27 и docs/decisions/007** — отклонено: issue явно запрещает ("НЕ трогать `docs/handoff/pr-27-*` и `docs/decisions/007-pr-27-*` — исторические"). Это историческая документация миграции, `CONTEX7` описывает что было dropped в PR#27.
- **Fix all `config/scripts` references (docstrings, prompt body)** — отклонено: вне scope hotfix. Issue перечисляет конкретные строки (deny rules, check-permissions.py paths, agent frontmatter deny rules). Cosmetic references в docstrings/usage comments (pipeline-status.py:10-11,319; spec-status.py:12-13; scaffold-handoff.sh:3; reviewer.md:99; docs-reviewer.md:111; spec/SKILL.md:28) — potential follow-up cleanup PR.
- **Добавить auto-migration для `.env` пользователей** — отклонено: `.env` gitignored, скрипт не может его редактировать. User-facing note в handoff Watch out — достаточно.