Apple
d40b1e87c6
feat(matrix-bridge-dagi): harden mixed rooms with safe defaults and ops visibility (M2.2)
Guard rails (mixed_routing.py):
- MAX_AGENTS_PER_MIXED_ROOM (default 5): fail-fast at parse time
- MAX_SLASH_LEN (default 32): reject garbage/injection slash tokens
- Unified rejection reasons: unknown_agent, slash_too_long, no_mapping
- REASON_REJECTED_* constants (separate from success REASON_*)
Ingress (ingress.py):
- per-room-agent concurrency semaphore (MIXED_CONCURRENCY_CAP, default 1)
- active_lock_count property for /health + prometheus
- UNKNOWN_AGENT_BEHAVIOR: "ignore" (silent) | "reply_error" (inform user)
- on_routed(agent_id, reason) callback for routing metrics
- on_route_rejected(room_id, reason) callback for rejection metrics
- matrix.route.rejected audit event on every rejection
Config + main:
- max_agents_per_mixed_room, max_slash_len, unknown_agent_behavior, mixed_concurrency_cap
- matrix_bridge_routed_total{agent_id, reason} counter
- matrix_bridge_route_rejected_total{room_id, reason} counter
- matrix_bridge_active_room_agent_locks gauge
- /health: mixed_guard_rails section + total_agents_in_mixed_rooms
- docker-compose: all 4 new guard rail env vars
Runbook: section 9 — mixed room debug guide (6 acceptance tests, routing metrics, session isolation, lock hang, config guard)
Tests: 108 pass (94 → 108, +14 new tests for guard rails + callbacks + concurrency)
Made-with: Cursor
2026-03-05 01:41:20 -08:00
..
2026-03-02 08:11:13 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-02-09 08:46:46 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-02-09 08:46:46 -08:00
2026-02-09 08:46:46 -08:00
2026-03-03 07:14:14 -08:00
2026-02-27 05:24:09 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:38:54 -08:00
2026-03-05 00:54:14 -08:00
2026-03-05 01:41:20 -08:00
2026-03-05 01:41:20 -08:00
2026-03-05 01:07:04 -08:00
2026-03-05 00:54:14 -08:00
2026-03-05 01:21:07 -08:00
2026-03-03 07:14:14 -08:00
2026-02-27 02:55:44 -08:00
2026-02-27 02:44:05 -08:00
2026-02-27 02:44:05 -08:00
2026-02-27 02:44:05 -08:00
2026-02-09 08:46:46 -08:00
2026-02-09 08:46:46 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-02-19 00:14:06 -08:00
2026-02-27 02:55:44 -08:00
2026-03-03 07:14:14 -08:00
2026-03-02 09:42:10 -08:00
2026-03-02 09:42:10 -08:00
2026-03-02 09:29:14 -08:00
2026-03-02 08:12:19 -08:00
2026-03-02 04:03:30 -08:00
2026-03-02 04:03:30 -08:00
2026-03-02 04:03:30 -08:00
2026-03-02 08:00:35 -08:00
2026-03-03 04:36:52 -08:00
2026-03-03 07:14:14 -08:00
2026-03-02 08:18:59 -08:00
2026-03-02 09:08:54 -08:00
2026-03-02 04:52:04 -08:00
2026-03-02 09:24:21 -08:00
2026-03-03 05:07:52 -08:00
2026-03-03 04:49:19 -08:00
2026-03-03 04:57:22 -08:00
2026-03-02 08:24:54 -08:00
2026-02-09 08:46:46 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00
2026-03-03 07:14:14 -08:00