fix(reviewer): deny project-status.py oracle script #106
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/reviewer/deny-project-status-oracle"
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?
Что сделано
Добавил 5 deny-правил для
project-status.pyв.opencode/agents/reviewer.md(блокpermission.bash), симметрично существующим правилам дляpipeline-status.py(строки 63-67) иspec-status.py(строки 68-72):Правила размещены сразу после блока
spec-status.py, перед"node --version*": allow. Порядок last-match-wins сохранён — deny идут после"python3*": allow/"python *": allow.Также добавил тест
test_reviewer_denies_all_oracle_scriptsвtests/test_permissions.py— проверяет, что для каждого из 3 oracle-скриптов есть ровно 5 deny-правил ожидаемого формата. Тест закрепляет контракт ADR-019 и защитит от регрессии (если кто-то удалит/переименует deny-правило, тест упадёт).Почему
Issue #103: в
reviewer.mdбыли deny-правила только для 2 из 3 oracle-скриптов (pipeline-status.py,spec-status.py). Из-за"python3*": allow(строка 61) reviewer мог запуститьpython3 .opencode/scripts/project-status.pyнапрямую через bash, обходя нативный toolproject-status— нарушение ADR-019 (oracle-скрипты вызываются ТОЛЬКО через нативные tools).vision.mdуже содержала все 3 набора правил (после PR #102),reviewer.mdотставал — асимметрия.Watch out
— Отдельно зафиксирован баг #105:
check-permissions.pyвDANGEROUS_PATTERNSне содержит паттернов дляproject-status.py(валидируются толькоpipeline-status.py/spec-status.py). Валидатор проверяет толькоallow-правила, поэтому deny из этого PR проходят корректно, но если какой-то агент получитallowдляproject-status.py, валидатор это пропустит. Fix — в issue #105, вне scope этого PR.Pending
— Fix issue #105 (check-permissions.py симметрия для project-status.py).
Closes #103
Code Review Summary
PR добавляет 5 deny-правил для
project-status.pyвreviewer.md(симметрично существующим блокамpipeline-status.py/spec-status.py) и регрессионный тест, закрепляющий контракт ADR-019 для всех 3 oracle-скриптов. Изменения минимальны, точны и закрывают асимметрию сvision.md(PR #102). CI green, тесты проходят (30 passed).Positives
python3 *X*,python3 .opencode/scripts/X*,python3 */X*,python *X*,python */X*), размещены после catch-all"python3*": allow/"python *": allow— last-match-wins сохранён._parse_agent_bash_rules, не дублирует парсинг.check-permissions.pyне содержит паттернов дляproject-status.py) честно задокументирован в Watch out и вынесен в issue #105 — вне scope, не блокирует.reviewer.md) + reader (tests/test_permissions.py) обновлены совместно, окно сломанного main закрыто.check-permissions.pyне ломается — валидатор проверяет толькоallow-правила, deny проходят (подтвержденоtest_check_permissions_passes).Suggestions (info, not blocking)
ORACLE_SCRIPTS), чтобы тест не перечислял их inline — но текущий вариант читается хорошо и соответствует стилю соседних тестов, менять не обязательно.reviewer.md;vision.md(уже содержит все 3 набора после #102) остаётся без аналогичной проверки. Если симметрия агентов важна — можно расширить тест на оба агента в будущем PR (не блокирует).Verdict: APPROVE