c0re: lift manager-stop guard in dashboard post_kill (#443)
#446 (agent selection + bulk actions) already merged, which removed the per-card R3ST4RT/ST0P/etc buttons entirely. So the frontend half of the original #445 (lift the c.is_manager gate around the per-card stop button) is now redundant — there ARE no per-card buttons left, and the selection bar's ST0P button is already manager-aware. What remains and what this commit ships: the host-side guard in `dashboard.rs::post_kill` that rejects stop on the manager with "kill: refusing to stop the manager". Removed. Rationale: hive-c0re owns the dashboard server, so stopping the manager has no dashboard disruption. Per-agent approvals submitted by other sub-agents still process through the host-side approval queue without the manager up, and operator-driven meta-input updates work from the dashboard either way. The MCP-surface self-kill guard in `manager_server.rs::ManagerRequest::Kill` stays in place: a manager calling Kill on its own container is self-suicide mid-call, not a legitimate operator action; the guard prevents that footgun. Destroy / purge guards (`actions.rs:578` — "refusing to destroy the manager") stay in place; mara's ask was specifically about stop, and destroying the manager is a much bigger blast radius.
This commit is contained in:
parent
086cbc0311
commit
f2efb69132
1 changed files with 10 additions and 4 deletions
|
|
@ -1684,10 +1684,16 @@ where
|
|||
}
|
||||
|
||||
async fn post_kill(State(state): State<AppState>, AxumPath(name): AxumPath<String>) -> Response {
|
||||
let logical = strip_container_prefix(&name);
|
||||
if logical == lifecycle::MANAGER_NAME {
|
||||
return error_response("kill: refusing to stop the manager");
|
||||
}
|
||||
// #443: manager is stoppable from the dashboard like any other
|
||||
// agent. The host's dashboard server keeps running (it's
|
||||
// hive-c0re, not the manager container), per-agent approvals
|
||||
// submitted by other sub-agents still process through the
|
||||
// host-side approval queue without the manager up, and
|
||||
// operator-driven meta-input updates work from the dashboard
|
||||
// either way. The MCP-surface self-kill guard in
|
||||
// `manager_server.rs::ManagerRequest::Kill` stays in place: a
|
||||
// manager calling Kill on its own container is self-suicide
|
||||
// mid-call, not a legitimate operator action.
|
||||
lifecycle_action(
|
||||
&state,
|
||||
&name,
|
||||
|
|
|
|||
Loading…
Reference in a new issue