fix(reviewer): deny project-status.py oracle script #103
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Контекст
В PR #102 (добавили deny-правила для oracle-скриптов в
vision.md) reviewer отметил существующую асимметрию междуreviewer.mdиvision.md— она не была внесена этим PR, но мешает консистентности ADR-019.Задача
Добавить deny-правила для
project-status.pyв.opencode/agents/reviewer.md(симметрично сvision.md:71-75и с уже существующими правилами дляpipeline-status.py/spec-status.pyвreviewer.md:63-72).Сейчас
reviewer.mdсодержит deny-правила только для 2 из 3 oracle-скриптов:pipeline-status.py(5 правил, строки 63-67) ✅spec-status.py(5 правил, строки 68-72) ✅project-status.py— ОТСУТСТВУЕТ ❌Из-за правила
"python3*": allow(строка 61) reviewer может запуститьpython3 .opencode/scripts/project-status.pyнапрямую через bash, что нарушает ADR-019 (oracle-скрипты вызываются ТОЛЬКО через нативные toolspipeline-status/spec-status/project-status, НЕ через bash).Контракты
reviewer.md:63-72):reviewer.mdсразу после блокаspec-status.py(после строки 72), перед"node --version*": allow(строка 73)."python3*": allowи"python *": allow(строки 61-62) — это уже соблюдается, вставка после spec-status.py блока сохранит порядок.Инварианты
pipeline-status.pyиspec-status.pydeny-правила (уже корректны).vision.md(уже содержит все 3 набора правил после PR #102).reviewer.md.check-permissions.py— exit 0.tests/test_permissions.pyиtests/test_agent_frontmatter.py— зелёные (проверить, нет ли хардкода количества bash-правил для reviewer; если есть — обновить).Граничные случаи
check-permissions.pyвалидирует deny-паттерны — убедиться, что новые правила не триггерят false positive (они симметричны существующим для pipeline-status/spec-status, которые уже проходят).Влияние на связанные компоненты
.opencode/agents/reviewer.md— bash permission block.tests/test_permissions.py— возможно, обновить ожидания (если есть count-assert).AGENTS.mdсекция «Символьная навигация (Serena)» — не связано.Вне scope
project-status.pyскрипта.Критерии приемки
uv run pytest tests/ -x -q— все зелёные.python3 .opencode/scripts/check-permissions.py— exit 0.reviewer.mdесть 5 deny-правил дляproject-status.py(симметрично сvision.md:71-75).python3*/python *allow (last-match-wins сохранён).project-status.pyчерез bash (deny срабатывает).