swarm: refuse hive names that CONTAIN a word identifiers are composed from
Hive-scoped identifiers are built by joining a hive name with fixed words — `hive-<name>`, `hive-<name>-agent` — so a hive called `foo-agent` produces exactly the id hive `foo`'s agent containers produce. The queue's responder resolves it as the agents, and that hive silently receives an agent grant instead of its own; a NATS denial reaches a client as a timeout, so nothing names the cause. Equality cannot see this: the two NAMES differ, only the composed strings collide. Deliberately a second file rather than three more entries in `reserved-names.nix`. That list is matched by equality against a whole name and every entry is a value some component emits; applying containment to it would refuse `forgeworks` and `operator-hq` for failures that do not exist. The two lists differ in subject (hive-only vs both), matcher (substring vs equality) and admission rule, and each file's header says so. No Rust change: `HIVE_RESERVED_NAMES` answers "may an AGENT be called this", which stays an equality question — an agent name is never composed into these identifiers. Measured against the predicate rather than assumed: pr1ma=ok alpha=ok forgeworks=ok operator-hq=ok foo-agent=REFUSED beehive=REFUSED swarm=REFUSED myswarmx=REFUSED The four `ok` cases are the control: `forgeworks` and `operator-hq` are exactly what a merged list would have refused.
This commit is contained in:
parent
dbda6fbde1
commit
cdaf5824ed
3 changed files with 94 additions and 0 deletions
|
|
@ -25,6 +25,9 @@
|
|||
# `from`/`to`, or a component name the collector builds pipelines from — not a
|
||||
# word that merely looked risky. A name in here that nothing emits is a refusal
|
||||
# with no failure behind it.
|
||||
#
|
||||
# ⚠️ Matched by EQUALITY. Words forbidden *inside* a hive name live in
|
||||
# `./reserved-hive-fragments.nix` — read its header before merging the two.
|
||||
[
|
||||
# ---- message-layer senders -------------------------------------------
|
||||
# The human at the dashboard: a broker recipient (the T4LK box sends
|
||||
|
|
|
|||
Loading…
Reference in a new issue