Repository navigation
docs(agent-bus): a coordination channel between Grok Bot and Claude Code - #697
Merged
Merged
Conversation
IanFrelinger
marked this pull request as ready for review
October 1, 2026 15:19
- Add CLAUDE.md: project guidance for Claude Code sessions - Add _handoff/bus/PROTOCOL.md: structured comment protocol (From/To/Kind/About) - Add _handoff/bus/README.md: index with link to live issue #696 - Add .claude/commands/agent-bus.md: /agent-bus command to check/reply - Add scripts/agent-bus-latest.sh: helper to fetch last N comments Establishes durable coordination channel for release work. Claude owns in-flight packaging PRs, Grok owns cross-repo sequencing. No polling, async structured messages on GitHub issue. Co-authored-by: IanFrelinger <IanFrelinger@users.noreply.github.com>
Point all files at the existing agent-bus issue #695: - _handoff/bus/README.md - scripts/agent-bus-latest.sh (ISSUE_NUMBER=695) - .claude/commands/agent-bus.md (gh commands) Co-authored-by: IanFrelinger <IanFrelinger@users.noreply.github.com>
…ctually in use The coordination layer landed with the ownership split that was current while it was being written, and with a message vocabulary of its own. Both have since been settled differently, and a CLAUDE.md is read automatically by every future session, so a stale one is worse than none. - Ownership, in all four files: Claude does all development INCLUDING merging, and merges its own PRs on green required checks; Grok does admin, materials, and audits each merge for drift. Each file says it supersedes rule 5 of the issue's opening comment. The claim that Claude owns #643 and #644 is gone - those are cursor/* branches from 2026-09-20 that this session has never touched. - Kind vocabulary now matches the live channel: status | ask | handoff | block | done, and To: claude | grok | both, exactly as issue 695 defines them. The invented question / request / info kinds and `To: all` are gone, along with the worked examples that used them. - PROTOCOL.md documents the handoff -> merge -> drift-audit -> done loop, including that a handoff names which records and docs the change touches so the audit can be aimed at them. - CLAUDE.md gains the repository facts that have repeatedly cost sessions real time: no host dotnet, the five required checks under strict + enforce_admins, run-repo-gates.sh running discovered scripts bare, the generated knowledge graph needing `git add` first, the duplicated readiness glob list, a skipped readiness lane counting as a pass, and that a check never observed failing is not evidence. - agent-bus-latest.sh: #!/usr/bin/env bash, as all 160 other scripts under scripts/ use; the issue number is overridable through ASHLAR_BUS_ISSUE; a non-numeric count is rejected instead of being spliced into the jq expression. Clean under `shellcheck` with no flags, not just under the `-S error` the lane runs. What this does NOT do: it does not edit the bus issue's opening comment, which still carries the superseded rule 5 - it is Grok's issue and the protocol is that nobody edits an older message. It adds no check that any of this stays true; the ownership statement is prose in four places and can drift apart again. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
IanFrelinger
force-pushed
the
cursor/agent-bus-coordination-1106
branch
from
October 1, 2026 16:32
eccbfd5 to
1f8b147
Compare
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.
Summary
A durable coordination channel between Grok Bot and Claude Code: a GitHub issue used as an
append-only message log, plus the repository files that let either agent find it and use it without being
told. No product code.
The first two commits added the layer. The third corrects it: the ownership split and the message
vocabulary it shipped with were both superseded before it merged, and a
CLAUDE.mdis read automaticallyby every future Claude Code session, so a stale one is worse than none.
What is here
CLAUDE.md_handoff/bus/PROTOCOL.md_handoff/bus/README.md.claude/commands/agent-bus.md/agent-bus— read recent messages, say what is outstanding, draft a reply.scripts/agent-bus-latest.shscripts/agent-bus-latest.sh [count]— the last N comments, throughgh.What the third commit changes, and why
its own PRs once every required check is green; Grok Bot does admin, materials, and audits each merge
for drift. Each file says it supersedes rule 5 of the issue's opening comment, which was written
before the split was settled. The claim that Claude owns Fix packaging seam: stranger path from clone → legible receipt #643 and feat(cert-gate): add admission gate demo showing REJECT → ADMIT flow #644 is gone — those are
cursor/*branches from 2026-09-20 that this session has never touched.
Kind:vocabulary now matches the live channel.status | ask | handoff | block | done, andTo: claude | grok | both, exactly as #695defines them. The invented
question/request/infokinds andTo: allare gone, along with theworked examples that used them. A protocol document that disagrees with the channel it documents is the
drift this whole layer exists to catch.
CLAUDE.mdgains the load-bearing repository facts: no hostdotnet; the five required checksunder
strict+enforce_admins, which is why merges are serial;run-repo-gates.shrunning itsdiscovered scripts bare; the knowledge graph needing
git addbefore it is regenerated; the readinessglob list that exists twice; a skipped readiness lane counting as a pass; and that a check never
observed failing is not evidence.
agent-bus-latest.sh:#!/usr/bin/env bash, as all 160 other scripts underscripts/use; theissue number overridable through
ASHLAR_BUS_ISSUE; a non-numeric count rejected instead of splicedinto the
jqexpression.Verified locally
bash scripts/ci/run-repo-gates.sh— all 23 gates pass, before and after the rebase onto master.That includes the knowledge-graph verifier, so the generated artefacts are current.
shellcheckonscripts/agent-bus-latest.shwith no flags: zero findings. The lane only runs-S error, which is weaker.bash -n scripts/agent-bus-latest.shparses.CLAUDE.mdexists in the tree, and the committed blobs are LF with no CR bytes.CLAUDE.mdwere read back from the API, not recalled:contexts = [cert-gate, build-core, shell-lint, lychee (README + docs), Readiness summary],strict = true,enforce_admins = true.What this does not do
Grok's issue, and the protocol is that nobody edits an older message — so the repository documents say
they supersede it instead.
can drift apart again; nothing fails if
CLAUDE.mdandPROTOCOL.mddisagree tomorrow.🤖 Generated with Claude Code