Model rules: who a chat's model may bring into a conversation

Rules read from the main model decide who it is offered as a crowd member,
a friend and on its roster; any-to-any with denies by default, or
none-to-none with allows. The crowd picker names what it holds back and
why, and a model held back only by a person's own rule -- or by anything,
with the new rules.override -- can still be added by hand. Another data
group is now a deny that an explicit rule opens. Admin -> Model rules and
a card in Settings, each with a matrix drawn by the enforcing function.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-29 17:20:40 +00:00
co-authored by Claude Opus 5.5
parent 9970bb43c6
commit c27fe47d4d
24 changed files with 1324 additions and 29 deletions
+33
View File
@@ -16,6 +16,39 @@ for 1.0.0 have something to be assembled from.
## Unreleased
## 1.11.0
Rules for which model may talk to which. This is the second of three releases;
the third adds helpers on a different model.
- **Model rules.** The new **Admin → Model rules** page sets who a chat's model
may bring into the conversation: as a crowd member, as a friend it asks, and
on its list of other models. A rule names two models, or *any model* on either
side, and allows or forbids. The starting point is either *any model may talk
to any other* (the default, so nothing changes) or *no model may talk to
another*. The most specific rule wins. The page ends with a table of every
model against every other, drawn by the same rules that are enforced.
- **A rule is read from the chat's own model.** If gpt-oss may not talk to
qwen38, then in a gpt-oss chat qwen38 is not on its list of other models, it
cannot be asked as a friend, and the crowd picker does not offer it. Members
of a crowd are not checked against each other.
- **The crowd picker names what it holds back, and why.** Models the rules do
not offer are listed under *Not offered to this model* with the reason. You
can still tick one by hand when the rule holding it back is your own, or when
you may override the instance's rules. A member added by hand keeps speaking
when the round runs; one the instance later forbids is skipped and shown
crossed out, as a member that cannot be reached always was.
- **Your own rules.** Settings → Models has a card for your own starting point
and rules, and the same table for you. Anybody can narrow the instance's
rules for themselves. With the new *Override the model rules for themselves*
permission (off by default), your rules and starting point win over the
instance's, and you can add any model to a crowd by hand.
- **Another data group is a rule, not a wall.** In 1.10.0 a model from another
data group could never join a conversation. Now it is not offered unless a
rule explicitly allows it: the instance's, or your own with the override.
When it does join, it reads its own group's memories and notes, never the
chat's.
## 1.10.0
Data groups: a provider's models read only the data of the group their