feat(@projects/@claire): update remote control naming to use bracketed host prefix

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Natalie 2026-06-02 16:06:12 -07:00
parent 53d05cfd41
commit deca1a280e
2 changed files with 14 additions and 10 deletions

View file

@ -384,10 +384,11 @@ def _send_kick(*, rcl: Rclaude, cwd: str) -> None:
def _register_remote_control(*, rcl: Rclaude, cwd: str, host_label: str) -> None:
"""Register the orchestrator session with claude.ai/code as
`claire-<host>` so per-host Claires are distinguishable in the browser.
Hyphen (not `@`) because claude.ai/code's remote-control name field
silently strips `@` observed when `claire@apricot` registered as
bare `claire` and produced duplicate entries.
`[<host>] claire` so per-host Claires are distinguishable in the browser's
remote dev list (e.g. `[plum] claire`, `[apricot] claire`, `[black] claire`).
The bracketed-host prefix is the operator's chosen convention; avoid `@`
in the name claude.ai/code's name field silently strips it (observed:
`claire@apricot` collapsed to bare `claire` and produced duplicates).
`/remote-control` is a Claude *slash command* it only takes effect
delivered as literal input, never from prose. The bootstrap kick is a
@ -402,7 +403,7 @@ def _register_remote_control(*, rcl: Rclaude, cwd: str, host_label: str) -> None
remote spawns.
"""
rcl.send(
text=f"/remote-control claire-{host_label}",
text=f"/remote-control [{host_label}] claire",
match=_cwd_slug(cwd),
yes=True,
dry_run=False,

View file

@ -71,11 +71,14 @@ def build_rounds_prompt(cfg: ClaireConfig) -> str:
" • `set_project_status name_or_id=<x> status=archived` for "
"anything that's clearly a sync/demo/test artifact — never "
"delete, just archive.\n"
"5. CONSIDER DISPATCH — call `budget_status` and "
"`fleet_load`. If there is unassigned open work, pick the "
"top-priority task that fits the envelope (under the daily "
"token cap; P0/P1 only if past the low-priority floor; a "
"host with capacity). "
"5. CONSIDER DISPATCH — first call `suggest_assignments` to "
"enumerate the UNASSIGNED open-work backlog (its leftover "
"tasks), then `budget_status` and `fleet_load`. An empty live "
"fleet does NOT mean idle — todo/in_progress tasks with no "
"active assignment are exactly what to dispatch. Pick the "
"top-priority unassigned task that fits the envelope (under "
"the daily token cap; P0/P1 only if past the low-priority "
"floor; a host with capacity). "
+ dispatch
+ "6. ALWAYS `report_status` with your own one-line summary.\n"
"7. ALWAYS Write the formatted output below to "