Repository navigation
Carry policy switches and typed actions (#6) to main - #7
Merged
Merged
Conversation
…t switches (#6) * feat(multibot): make review independence, draft readiness, CI trigger and publishing switchable multi_bot.policy carries validated switches into the run request and the packaged policy documents them. Public defaults stay conservative (model_class independence, unknown author holds, no draft readying, no CI trigger, no publishing, no fix PRs); an instance opts in per key. Unknown keys or wrong types fail closed before launch. The switches loosen no hold, lock, exclude_writes or permission-ceiling rule. Two tests in test_multibot_resources.py already fail on this branch before the change under Windows checkouts (line endings, path comparison); not touched here. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013G793TMH12ptWX1f6PYcZU * feat(actions): typed merge/ready/CI/PR/push actions gated by multi_bot switches api.request can only be scoped by endpoint prefix; "repos/<owner>/" would allow every write in every repository, and draft-ready needs GraphQL. Add six narrow actions instead: pr.merge (fresh read, exact sha, default base, not a draft, mergeable_state clean, configured merge account, sha-bound PUT, merged readback), pr.ready (GraphQL markPullRequestReadyForReview at the exact draft head), actions.dispatch (active workflow only), actions.rerun (completed, non-fork run of the exact head), pr.create (bot-prefixed branch onto the default branch) and git.push_branch (no force, bot prefix, never the default branch, ls-remote readback). They are in the default ceiling but never enabled by default, and each also needs its multi_bot switch, so a permission alone opens nothing. The MULTI-BOT run contract now reports effective_enabled. New `act` command for one action through the existing preview/apply/expect-plan contract. The policy prompt routes merges, ready, CI triggers and fix PRs through these actions and treats a job waiting for a (self-hosted) runner as HOLD, never green. Prompt and JSON resources are pinned to LF so the bound policy hash no longer depends on core.autocrlf. Ticket: T-20261017-353754430 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C4ZiDnWpjFvgsu8AjdPgbN --------- Co-authored-by: Lukas Geiger <lukas@um-bruch.org> Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#6 was merged into
feat/multibot-resourcesafter #5 had already been squash-merged intomain, somainlacks the policy switches (539b0d0) and the typed actions (93864c8).This PR cherry-picks the #6 squash commit
52b5410ontomain. The tree is byte-identical to52b5410(git diff 52b5410 HEADis empty), and the tree ofb42a5eeequals the #5 squashfe3ba8e. No new content; CI onmainnow runs for the first time on this code.🤖 Generated with Claude Code
https://claude.ai/code/session_01C4ZiDnWpjFvgsu8AjdPgbN