Watch
0
0
Fork
You've already forked hyperhive
0

Compare commits

..
Author SHA1 Message Date
atlas
e3fefb8c5f docs: fix markdown indent treefmt wants after removing the ownership-checks bullet 2026-09-24 12:24:32 +02:00
atlas
a65dbee982 docs: delete two more stale manager-override claims
destroy has no manager-name check (actions.rs:837 says the root
container is 'destroyable like any other'), and crash-watch has no
name check at all (polls every managed container uniformly). The
pointer to broker.rs/actions.rs/crash_watch.rs for 'owner-check logic'
is also stale — none of the three hold any.
2026-09-24 12:24:32 +02:00
atlas
d2c4c8d4a3 docs: drop dead-claim narration for the retired loose-ends override
The PR retiring loose-ends' manager-only visibility replaced the false
claim with prose narrating its retirement, which still adds lines for
a removal. Delete the dead claim outright instead of documenting that
it used to be true: drop the three added sentences in
agent-hierarchy.md, and shorten socket_server/mod.rs's authority
comment to state only what's true now (tool-group membership for the
orchestration verbs) rather than adding an explanatory clause for the
removed capability check.
2026-09-24 12:24:32 +02:00
atlas
f53508cb2b docs, hive-c0re: retire prose describing the removed get_loose_ends target
Follow-up to 729c5b4f42, which dropped the
`agent` parameter from get_loose_ends and deleted Capability::QueryAgentState
with it. Three prose sites still describe the interface that commit removed:

- socket_server/mod.rs's module doc claimed authority on this socket derives
  from "capabilities for the hive-wide queries and tool-group membership for
  the orchestration verbs". There are no capability-gated queries left —
  `git grep -n has_cap -- hive-c0re/src/socket_server/` returns nothing, and
  require_group("scheduling") is the only gate in dispatch_orchestration.
- agent-hierarchy.md listed loose-ends visibility ("manager sees hive-wide,
  sub-agents only their own") as one of the manager-only overrides that
  "exist across hive-c0re today". It doesn't, and the sentence pointed a
  reader at loose_ends.rs for owner-check logic that is no longer there.
- conventions.md's Loose-ends wire shape still spoke of "the agent-flavour
  and manager-flavour requests" and "the agent-flavour list". There is one
  request shape.

No behaviour change: prose only.

Refs #4480
2026-09-24 12:24:32 +02:00
3 changed files with 9 additions and 22 deletions

View file

@ -128,21 +128,9 @@ Manager}` switch picks the MCP tool allow-list claude sees. Both are
per-capability-group version (`cap:<group>` prompt blocks + a per-capability-group version (`cap:<group>` prompt blocks + a
matching tool allow-list) is additive rather than a rewrite. matching tool allow-list) is additive rather than a rewrite.
- **State dirs** — _not_ special-cased: `HYPERHIVE_STATE_DIR` is - **State dirs** — _not_ special-cased: `HYPERHIVE_STATE_DIR` is
injected uniformly via `systemd.globalEnvironment` for every injected uniformly via `systemd.globalEnvironment` for every
container including the manager, so all token/state paths resolve container including the manager, so all token/state paths resolve
through it the same way everywhere. through it the same way everywhere.
- **Scattered ownership checks** — a handful of independent
manager-only overrides exist across `hive-c0re` today: loose-ends
visibility (manager sees hive-wide, sub-agents only their own),
`destroy` refusing to act on the manager, and crash-watch skipping
the manager (it autorestarts via systemd instead of going through
the crash-watch loop). Each is planned to become a capability
check instead of a manager-name check — see the
module docs for `loose_ends.rs`, `stores/broker.rs`, `actions.rs`,
and `workers/crash_watch.rs` for the current owner-check logic in
each. (The harness handles reminder cancellation fully in-agent — see
the note on `CancelLooseEndKind::Reminder` in
`hive-c0re/src/socket_server/mod.rs`.)
<!-- vale write-good.Passive = YES --> <!-- vale write-good.Passive = YES -->
None of the above is a stable interface — treat the module doc None of the above is a stable interface — treat the module doc

View file

@ -165,8 +165,8 @@ the dashboard's "mark all read" (unbounded, per-agent).
### Loose-ends wire shape ### Loose-ends wire shape
`LooseEnd` is the per-row response shape for `GetLooseEnds` (both `LooseEnd` is the per-row response shape for `GetLooseEnds` — one
the agent-flavour and manager-flavour requests). Tagged enum so request shape, no per-socket flavours. Tagged enum so
new thread kinds (forge PRs, long-running approvals from a new thread kinds (forge PRs, long-running approvals from a
privileged bot, etc.) can land later without breaking existing privileged bot, etc.) can land later without breaking existing
handlers. Each row carries enough context that the caller renders handlers. Each row carries enough context that the caller renders
@ -194,7 +194,7 @@ Per-variant fields:
- `PendingMessages { count }` — undelivered inbox messages the - `PendingMessages { count }` — undelivered inbox messages the
agent still owes itself a `recv` for. Informational + not agent still owes itself a `recv` for. Informational + not
cancellable (drain with `recv`); only emitted when `count > 0`, cancellable (drain with `recv`); only emitted when `count > 0`,
and surfaced first in the agent-flavour list as the most and surfaced first in the list as the most
actionable signal. Counted host-side from the broker actionable signal. Counted host-side from the broker
(`count_pending`), so it reflects what's genuinely still queued — (`count_pending`), so it reflects what's genuinely still queued —
the wake-message that drove the current turn is already delivered the wake-message that drove the current turn is already delivered

View file

@ -4,10 +4,9 @@
//! you are `foo`; the manager socket simply serves as `ruth`. There is no //! you are `foo`; the manager socket simply serves as `ruth`. There is no
//! privilege flag — both transports run the same [`serve`] / [`dispatch`] //! privilege flag — both transports run the same [`serve`] / [`dispatch`]
//! code, and authority derives uniformly from the caller's identity: //! code, and authority derives uniformly from the caller's identity:
//! capabilities for the hive-wide queries and tool-group membership for the //! tool-group membership for the orchestration verbs. An agent-targeting
//! orchestration verbs. An agent-targeting verb may name any agent, so `ruth` //! verb may name any agent, so `ruth` reaches every agent exactly the way
//! reaches every agent exactly the way every other agent does, not via any //! every other agent does, not via any hardcoded name match.
//! hardcoded name match.
use std::path::{Path, PathBuf}; use std::path::{Path, PathBuf};
use std::sync::Arc; use std::sync::Arc;