Skip to content

Carry policy switches and typed actions (#6) to main - #7

Merged
lukisch merged 1 commit into
mainfrom
fix/carry-typed-actions-to-main
Oct 17, 2026
Merged

lukisch merged 1 commit into
mainfrom
fix/carry-typed-actions-to-main

Conversation

@ellmos-multi-bot

Copy link
Copy Markdown
Collaborator

#6 was merged into feat/multibot-resources after #5 had already been squash-merged into main, so main lacks the policy switches (539b0d0) and the typed actions (93864c8).

This PR cherry-picks the #6 squash commit 52b5410 onto main. The tree is byte-identical to 52b5410 (git diff 52b5410 HEAD is empty), and the tree of b42a5ee equals the #5 squash fe3ba8e. No new content; CI on main now runs for the first time on this code.

🤖 Generated with Claude Code

https://claude.ai/code/session_01C4ZiDnWpjFvgsu8AjdPgbN

…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>
@lukisch
lukisch merged commit c56f105 into main Oct 17, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants