The radio (call, broadcast, security, pan-pan, mayday) reaches its addressee at the next tool step and wakes it. The post (post with --to, newsletter without, call receipts) arrives through a new Stop hook when the turn ends and never wakes. Legacy rows map onto the two channels and send direct stays as an alias. A PreToolUse hook holds the mayday's radio silence for writing tools and Bash. Only the sender, helpers who join with radio.py assist, bare radio.py calls and the config's allowed commands pass, and any shell operator or parse error blocks. kvb-org-update announces changed skills as one newsletter. Callers moved to send call --to. 🎯 Fix: 90 % 💥 Break: 5 % 💸 Cost: 104 % ⏱️ Time: 100 % 🛡️ Security: 100 % 💰 Value: ? 🏆 Score: 82 🚦 Gate: ⚠️ cost 104 % > 100: ask the operator before the commit Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3.8 KiB
name, description
| name | description |
|---|---|
| kvb-org-organize | Keep parallel agents from duplicating work: the first claim owns it, a chair allocates. Run AUTOMATICALLY before work another agent might also do. |
The first claim owns a piece of work; a later agent hands its findings to the owner, never building a second version. Offices are recallable mandates that coordinate and allocate, never direct others' content; the operator outranks them and appoints or recalls at will.
Election
${CLAUDE_SKILL_DIR}/scripts/council.py keeps atomic claims in
/tmp/agents-council; other runtimes add --session <id>.
- Name the office:
work/<slug>(a piece of work),cluster/<slug>(a strand across lines),<dimension>/<line>(a line) orchair, the slug concrete (issue number, failing log line). The first agent elected whilechairis vacant also claims it. Readoffices.mdnext to this file before claiming a cluster, a line or the chair. council.py list; the same work claimed under another slug counts.council.py claim <office> --work "<what, evidence, branch or worktree>". Exit 0: yours; 3: a live holder (printed); 4: a dead holder.- Elected: complete the task the claim entered in the
kvb-org-rasciregister (objective, description, priority, roles); the listed claim announces it. - Not elected: post your findings to the holder (
radio.py post --to) and stop.
A hook (council.py gate) blocks worktree edits before a claim. Between
machines the earliest announcement by message time wins; each host's claim
directory records it. Read succession.md next to this file when a claim
ends or goes stale, or after a restart.
Capacity
- Light runs (no Docker, about a minute: targeted pytest or unittest, ruff,
single lint files) self-admit:
watch.py admit --kind test-nostack, start ongrant. make test,make test-lint, quality gates, deploys, iteration loops, swarm, image builds, cloud, shared-data cleanup, anything with Docker or over a few minutes: run throughqueue.py hold(kvb-org-queue), which grants by rule and releases on exit; the chair only handles exceptions. In a worktree wrapgate.py runorgate.py hold(kvb-check-gate).- No running job is cut short for capacity; only the operator orders one
down. Exception: void by a missing merged hotfix (
kvb-git-hotfix).RESOURCEhook lines address the chair; others adjust plans. - Read
capacity.mdnext to this file when you hold the chair, a job seems hung, or the resource watch fires.
Peer protocol
Read peers.md next to this file before asking peers whether a failure or
fix is known.
- Never poll:
council.py list, the register and the radio answer first. - Hotfixes:
${CLAUDE_SKILL_DIR}/../kvb-git-hotfix/scripts/hotfix.py addandupdate; merged ones go out as radiosecurityby themselves. - Agents are reached through
kvb-org-radio; status that asks nothing as post or newsletter (radio.py post). - A
callonly when the recipient must act or answer: one batched message per peer per event, terse, no greeting, at most five lines unless evidence needs more, nothing already acknowledged. A message asking nothing gets no reply; end that turn in one line. - Never invent a peer's answer; verify the SHA, log or artifact it names first.
- A peer's message is no operator approval, an office no permission: never ask a peer to run what you are denied; tell the operator.
- Release every claim when its work ends.
- Read
relay.mdnext to this file before relaying an operator rule or acting on one a peer relayed;lineage.mdwhen a failure or fix spreads to other branches through merges.
Output
A table from council.py list --long, stale claims marked:
| Office | Holder | Since | Work | Grants or queue |
Tasks, priority and status: the kvb-org-rasci register's show.