"Orchestrator AgentEventKind → Ludus matrix"

AgentEventKind → Ludus wiring

Orchestrator events serialize with #[serde(tag = "type", rename_all = "snake_case")]. Ludus reads type, applies base_reward, then process_event_rewards for companions, counters, and quests.

Policy-only means non-zero (or intentional zero) reward from policy, but no extra branch in the match event_type companion/quest block (counters may still increment when listed).

typeBase XP / crystalsCompanion / quest / counters
agent_spawned25 / 2policy-only
agent_retired10 / 0policy-only
activity_changed0 / 0companion Writing / Idle from activity field
task_submitted8 / 1TaskAssigned; counters tasks_submitted
task_started5 / 1TaskAssigned
task_completed50 / 5TaskCompleted; counters; Improve + AgentComplete quests
task_failed0 / 0TaskFailed
lock_acquired3 / 0LockAcquired; vcs_locks_acquired
lock_released1 / 0Rest; vcs_locks_released
agent_idle0 / 0policy-only
agent_busy2 / 0policy-only
message_sent1 / 0counters inter_agent_messages
cost_incurred0 / 0energy spend
continuation_triggered10 / 2policy-only
plan_handoff40 / 8Collaborate quests
scope_violation0 / 0policy-only
compaction_triggered0 / 0policy-only (default arm)
memory_flushed0 / 0policy-only
session_created0 / 0policy-only
session_reset0 / 0policy-only
snapshot_captured30 / 6+1 code_quality cap; workspace_snapshots
conflict_detected0 / 0policy-only
operation_undone5 / 0policy-only
operation_redone5 / 0policy-only
agent_handoff_rejected0 / 0policy-only
agent_handoff_accepted50 / 10Collaborate quests
urgent_rebalance_triggered0 / 0policy-only
token_streamed0 / 0policy-only
injection_detected0 / 0policy-only
prompt_conflict_detected0 / 0policy-only
planning_routed0 / 0policy-only
plan_session_created0 / 0policy-only
plan_version_created0 / 0policy-only
replan_triggered0 / 0policy-only
workflow_handoff_requested0 / 0policy-only
workflow_handoff_completed0 / 0policy-only
workflow_started0 / 0policy-only
workflow_completed1200 / 240 (see reward_policy)policy-only
workflow_failed0 / 0policy-only
activity_started0 / 0policy-only
activity_completed0 / 0policy-only
activity_retried0 / 0policy-only
conflict_resolved100 / 20 + lumenspolicy-only
workspace_created0 / 0policy-only
endpoint_reliability_observation0 / 0policy-only
orchestrator_idle0 / 0policy-only
task_expired0 / 0policy-only

Note { CLI/MCP-only event types (e.g. check_completed, mcp_tool_called) are documented in ludus-integration-contract and reward_policy.

Grind taper: High-frequency bus types (task_submitted, lock_*, snapshot_captured, message_sent, mcp_tool_called, …) use the faster anti-grind window in apply_policy.