Repository navigation
feat(panicbot): directives from the repo deed, deny-only = full suite minus deny, deed-declared target - #672
Conversation
…uite minus deny, deed-declared dynamic target Owner rulings 2026-11-13. - Directives are read from the (bot panicbot ...) clause of <repo>_chora.deed first, then the legacy panicbot.a2ml (read only), else the full suite. A new strict S-expression reader (deed.rs) fails loudly on malformed input. - A directive with only deny is the full suite minus deny; explicit allow still narrows; deny wins. The old static-trio default is removed. - (target :build :program) declares the dynamic-mode target. :build runs via sh -c in the scanned repo under the suite budget; a failed build is an error part; pull_request_target / workflow_run refuse the build too. No target: dynamic parts are not_applicable with the deed-terms reason. --target overrides. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0136P7ZkERqsQWMogHRpM2z8
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 6 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
…ot ...) The deed grammar rejects a bare symbol after bot (standards #1502), so the reader accepts only the :name form and the bare form is an error naming the canonical spelling. Tests, docs and the no-target reason use the canonical form. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0136P7ZkERqsQWMogHRpM2z8
|
|
This security review couldn’t start because the paying account has exhausted its Codex allowance and has insufficient available credits. The payer can check their balance and add credits in the Codex usage dashboard, then try again. If you do not manage the paying account, contact this repository's admins. |
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 86a33422d6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if status.success() { | ||
| return Ok(()); |
There was a problem hiding this comment.
Terminate surviving helpers after a successful build
When a deed build backgrounds a process (for example, tool &) or a build tool launches a daemon and the shell exits successfully, this branch returns without killing the process group because cleanup only occurs on timeout. The helper can therefore keep running through later suite parts, and the detached reader threads may remain blocked on inherited output pipes. Tear down the process group after the shell completes, including on success.
Useful? React with 👍 / 👎.



Implements the owner rulings of 2026-11-13 for panicbot (
bots/panicbot). Based onmain(#670 has merged).allowstill narrows; deny wins. The old static-trio default (andAllowedCommands::legacy_static) is removed.(bot :name panicbot ...)entry in(bot-directives ...)of<repo>_chora.deedat the repo root; else the legacy.machine_readable/bot_directives/panicbot.a2ml(read only, no target); else the full suite with no target. If the deed entry exists the legacy file is ignored with a note.(target :build "..." :program "...")::buildruns once viash -cin the scanned repo, timeout drawn from the suite budget;:programgoes through the existing canonicalise/executable checks. A failed build is anerrorpart and nothing is attacked.pull_request_target/workflow_runrefuse the build as well as the attack. No target: dynamic parts arenot_applicable("no target declared in the deed (bot-directives (bot :name panicbot (target …)))"). CLI--targetoverrides the declared target, build included.Design notes
src/deed.rsis a small strict reader followingdeed.abnf. It is a reader, not the validator (deed_lintstays the gate). Malformed deed or clause shapes are errors, never a default.(bot :name panicbot ...)only (standards #1502). The bare form(bot panicbot ...)is an error naming the canonical spelling.build.rsis new andEnginegainsbuild.scanner.rsandmain.rsare untouched.Tests
Deny-only (deed and legacy), allow plus deny, deed over legacy, legacy fallback, neither source, malformed-shape table, bare bot form is an error (unit and CLI level), two deeds at the root, target built then assault/ambush/adjudicate on a stub engine, failed build, refused build under both privileged triggers, build timeout from the budget, CLI override, real
sh -cbuild tests, CLI-level stub tests. Three legacy tests that asserted the old trio default now assert the full suite, as the ruling requires. Run:cargo fmt --check,cargo clippy --all-targets -- -D warnings,cargo testin bots/panicbot,STANDARDS_DIR=... tests/fleet-report-back-test.sh(223 passed) andtests/fleet-report-back-build-test.sh(65 passed).Not done
:buildruns repository code by design and is not sandboxed beyond the privileged-trigger refusal and the timeout.🤖 Generated with Claude Code
https://claude.ai/code/session_0136P7ZkERqsQWMogHRpM2z8