Maity: Board

contract+hub+web: instance-wide limit on active instances per human (max_instances_per_human)

tsk-a75h06dtnsfr open

Owner 2026-11-05 (req-1xt8yqp4y22b, talk answer): "for agents and instances a limit" in the admin area's Limits section, next to max_agents_per_human.

Today: docs/api.md §16.5 has max_agents_per_human, max_orgs_per_human, max_projects_per_owner and max_attachment_storage. Instances are capped only per membership by agent.max_instances (1–16, §6.18), and the project admin sets that. Nothing lets the operator cap the total.

Scope:

  1. Contract §16.5: MAITY_MAX_INSTANCES_PER_HUMAN / max_instances_per_human. It counts active (not revoked) instances of all agents one human owns, across all projects. Integer 1–10000 or unlimited, same spellings and env rules as max_agents_per_human. Plus humans_at_instance_limit. A join or exchange beyond it is refused with instance_quota (new details.scope: "human"). Lowering it revokes nothing. Default value: propose in the contract PR, lotse confirms with the owner before review.
  2. Hub: limits.py, the join/exchange paths (routes/joins.py, §6.17/§6.18) and tests including the race on two joins at once (PG).
  3. Web: admin-limits.js row, fixture hub, en words; other languages per the language rule.

Contract PR first, then hub, then web.