You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(local-coord-mcp): role rename (Task #32) + coord_transfer_master (Task #35)
Task #32 — supervisor/executor/supervised → master/journeyman/apprentice.
Enum ordinals preserved (0/1/2) so replay still decodes old logs. Old
string names accepted as register role aliases for one release per the
DD-32 migration plan. BOJ_MASTER_TOKEN is the canonical env var;
BOJ_SUPERVISOR_TOKEN read as back-compat fallback.
Task #35 — live master handoff without process restart.
coord_transfer_master(current_token, new_peer_id, secret) -> c_int
0 transferred (caller demoted to journeyman, target promoted)
-1 caller not master / bad token
-2 target not found / same as caller
-3 secret mismatch (BOJ_MASTER_TOKEN env var)
-4 target is apprentice — rejected, must be journeyman+
Secret gated by BOJ_MASTER_TOKEN (BOJ_SUPERVISOR_TOKEN fallback). Target
role-gated before secret check so apprentice targets are rejected
regardless of secret validity (prevents hostile-target handoff). Audit
breadcrumb logged (kind=2 MASTER_HANDOFF, detail=from=i|to=j) + two
PEER_ROLE_SET events, so replay reconstructs the transfer.
Adapter endpoint + cartridge.json tool + mcp-bridge dispatch wired.
Three FFI tests: rejects apprentice target, rejects non-master caller,
rejects bad target index.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: cartridges/local-coord-mcp/cartridge.json
+27-1Lines changed: 27 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -435,7 +435,33 @@
435
435
"type": "object"
436
436
},
437
437
"name": "coord_scan_suggestions"
438
+
},
439
+
{
440
+
"description": "Live master handoff (Task #35). Outgoing master passes the role to a named successor without a process restart. Secret-gated by BOJ_MASTER_TOKEN (BOJ_SUPERVISOR_TOKEN fallback). Target must be journeyman or already master — apprentices rejected. Audit-logged so replay reconstructs the transfer.",
441
+
"inputSchema": {
442
+
"properties": {
443
+
"new_peer_id": {
444
+
"description": "Peer id of the successor (kind-4hex[@context])",
445
+
"type": "string"
446
+
},
447
+
"secret": {
448
+
"description": "Must match BOJ_MASTER_TOKEN env var on the server",
0 commit comments