crew.worker exists in each of them, so each city serves, claims, wakes on and
releases the other city’s rows.
A rig’s federation setting is the opt-in that keeps a city to its own rig’s
work in a shared store.
Set it
Set
federation = "rig" on the rig in every city that attaches the store.
The setting only constrains the city that sets it. Neither key can be set from
a [[patches.rigs]] entry: the load refuses it there.
A city that sets neither key behaves as before. The one visible difference is
that gc config show --json lists both fields, empty, on every rig, as it
does for any rig field.
Which identities a guarded rig admits
The rig’s namespace is its name followed by/, compared the way the bead
store compares actors: an exact -- reads as /, any other run of ., _ or
- reads as _, and letter case is kept (see the
identity separator contract).
The city’s own pool sessions of the rig’s agents are also admitted, by their
session records.
What the config load checks
These are load errors, so a bad value never starts or reloads a city:- a
federationornamespacevalue outside its list; namespace = "exclusive"withoutfederation = "rig";- a guarded rig name that is not one segment: letters, digits,
-and_, starting and ending with a letter or digit, with no--, because--reads as/; - two rigs whose names are one namespace once case is also ignored, for
example
my-rigandMy_Rig(the store keeps case, so this rule is stricter than the store’s); federationornamespacein a[[patches.rigs]]entry.
gc start, the supervisor, gc reload, gc rig add and config edits refuse a
config that breaks them, and a running city keeps its old config;
gc config show --validate, gc doctor and the config validation API report
it as an error.
- its own directory, shared with no other rig and not the city root;
- its agents attached by rig name, not by the rig’s path;
- no agent, pool slot, name-pool name or named session outside the rig whose
identity reads as one inside the namespace (a city agent named
beta--workerreads asbeta/worker); - every qualified
default_sling_targetinside the namespace.
See it
gc rig list --json shows federation and namespace on a rig when they are
not the default:
What it does not cover
bdrun directly by people or agents, and any writer other than Gas City.- Custom
work_query,scale_checkandsling_querycommands. - Session names built at runtime from
[workspace] session_templateor an agent’stmux_alias. The load checks only configured identities. - Other cities. Each city attaching the store must set the key itself.