cb3447b139
Tests collapse 13 change-detectors into 7 invariants (silent below threshold / without context, fires above, same-model re-select silent, config override and 0-disables, registry threading, agent context derivation). The legacy 5-arg guard test goes with the TypeError fallback it covered: that fallback was defence for a case nobody has (every in-tree guard and test double is *args-tolerant) and would re-run a guard whose real TypeError it masked, so the rebased port passes the context positionally like every other argument. Docs no longer claim the confirm fires on the Telegram/Discord pickers or the dashboard: those surfaces call combined_selection_warning() without a live agent, so the context-cache guard is (correctly) silent there.