* 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>
5.9 KiB
5.9 KiB
| pr | title |
|---|---|
| 44 | 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 rulespython3 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 rulespython3 config/scripts/...→.opencode/scripts/...(консистентно с global opencode.json)..opencode/agents/docs-reviewer.md:61,66— deny rulespython3 config/scripts/...→.opencode/scripts/...(консистентно с global opencode.json).tests/test_permissions.py— 4 новых теста:CONTEXT7_API_KEYpresent в.env.exampleиopencode.json;CONTEX7_API_KEY(typo) absent из обоих файлов.tests/test_check_permissions.py— 2 новых теста:AGENTS_DIRpoints to.opencode/agents/(exists);OPENCODE_JSONpoints 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:
- Typo
CONTEX7→CONTEXT7в 2 активных файлах (.env.example,.opencode/opencode.json). Историческиеdocs/handoff/pr-27-*иdocs/decisions/007-pr-27-*НЕ тронуты — это историческая документация, не активный код. - 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/scriptsreferences в 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.- Исторические
CONTEX7references сохранены —docs/handoff/pr-27-configure-opencode-rewrite.md:6иdocs/decisions/007-pr-27-configure-opencode-rewrite.md:11НЕ тронуты (историческая документация).check-adr-refs.pyне падает — эти файлы не содержатADR-NNNrefs к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).