Rivals-into-router
Description
When two implementation choices present as rival investments — “we should use A” vs. “we should use B” — the reframe is: the missing piece is often a router that uses both conditioned on situation-shape. The perceived competition was an artifact of asking “which one?” instead of “when is each one right?” The router doesn’t choose between A and B; it dispatches to A or B based on a gradient signal or threshold.
The form depends on the rivals being genuinely complementary along some dimension — they don’t need to be symmetric, they need to be decomposable. A and B are rivals in the sense that their full cost is only justified under specific conditions; the router’s job is to match each condition to the appropriate strategy. This is structurally different from “use A first, fall back to B if it fails” (which is cost-cascade); rivals-into-router is about deliberate conditional dispatch rather than defensive fallback.
Composition
= gradient (the dimension along which A and B each excel) + asymmetric-gate (the threshold that determines which branch fires) + shape (the shared structural contract both branches satisfy).
The gradient identifies the dimension of variation (e.g., query complexity, cost tolerance, confidence level). The asymmetric-gate sets the boundary condition that routes between branches. The shape ensures both A and B satisfy the same output contract — the router is transparent to the caller.
Encounters
- MAC→FAC in the engine — MAC retrieval (cheap, approximate) + FAC structural alignment (expensive, precise). The apparent choice “use MAC or FAC?” resolves to a router: MAC always runs; FAC runs on MAC’s top-k candidates. The rivalry was a design artifact; the router was the right move.
- Gemini Flash vs. Pro — “should we use Flash or Pro?” resolves to a router: Flash for common path, Pro for hard cases. The conditional dispatch is on query difficulty or confidence threshold.
- Embedding vs. keyword search — hybrid search routers are a standard retrieval pattern: dense retrieval for semantic queries, sparse (BM25) for exact-match queries. The router uses query-type signals to dispatch.
- KCC routing: standard form vs. conversational interface — two UI modes that look like rivals; the router uses query-intent signals to choose.
- T2 methodology: cheap LLM call + expensive verification — rivals-into-router where the cheap path handles the common case and the expensive path handles the edge.
When it applies / triggers on
User-initiated: User is framing a decision as an either/or between two approaches (“should we do A or B?”). The rivals-into-router frame surfaces when both options have real merit under different conditions rather than one being clearly better.
Agent-initiated: Engine detects a debate or decision where two options each have valid advocates. Candidate inference: “these aren’t truly rivals — is there a condition under which each is the right call? If so, the missing piece is the router that dispatches based on that condition.”
Vocabulary cues: “either … or,” “versus,” “which one,” “A or B,” “choose between,” “competing approaches,” “rival strategies,” “tradeoff between.”
Situation-shape signals: Two options with different cost/quality profiles that serve the same output contract. The key diagnostic: if you can state a condition under which each option is strictly better, a router is indicated. If one option is simply better in all cases, it’s not rivals-into-router — it’s just selection.
Composes with
- asymmetric-gate (composition relationship) — the routing condition is often an asymmetric gate: below threshold, use cheap option; above threshold, use expensive option.
- gradient (composition relationship) — the dimension along which the router dispatches (cost, complexity, confidence) is a gradient; the router maps position on the gradient to branch selection.
- cost-cascade (creation relationship) — cost-cascade is a specialization of rivals-into-router where the routing condition is “did the cheap path fail or fall short?” rather than a proactive signal. Rivals-into-router is the more general form.
- shape (composition relationship) — the shared output contract both branches satisfy. Without shape-alignment, the caller can’t be transparent to which branch ran.
- seam (composition relationship) — the router is itself a seam: it’s the junction where two implementations meet and the place most likely to accumulate complexity over time.
When it doesn’t apply
- Genuine tradeoffs without a routing dimension — sometimes A and B are genuinely incompatible worldviews (e.g., different data models) rather than complementary strategies on the same dimension. The router can’t reconcile them.
- When one option dominates — if A is better than B in all relevant conditions, there’s no router to design; just use A. The rivals frame requires genuine conditional complementarity.
- When the routing condition itself is too expensive — if determining which branch to use costs more than either branch, the router eliminates the value proposition. (Edge case: sometimes the routing condition is cheap and the savings are large; sometimes it’s expensive and the dispatch is moot.)
- When the output contracts differ — if A and B produce genuinely different outputs (not just different processes arriving at the same shape), the caller is not transparent to the routing and the form breaks down.
Sources
- Emerged from the analogical inference engine design (MAC→FAC as router, not rivals).
- Strategy pattern (GoF design patterns) — the router corresponds to the Context object that selects and delegates to Strategy implementations.
- Ensemble methods (ML) — using multiple models conditioned on signal rather than choosing one.
- Named “rivals-into-router” during analogy-project design work, 2026-05-17.
Canonical exemplars from corpus (T2 2026-05-17)
Caveat — very low corpus support. Only 4 backfill-only matches at score ≥ 2; the bundle is mostly anticipated from design-conversation framing rather than instantiated at scale in the corpus. The lexical pattern is narrow and most “A vs B” decisions get resolved without the router-reframe being explicitly named. Exemplars below illustrate the form’s shape but should be read as a small sample, not a representative distribution.
- A vs B encode different mental models (cwd: campconnect, 2026-05-03): “A and B look similar but encode different mental models. A says ‘selection is a first-class action; you do it, then read the details.’ B says ‘we picked one for you and made it loudly visible; you can change it from the list.’ Both are valid — the difference is whether the page communicates that a choice happened or that a default happened. For programs with one clearly-correct session…” — the form’s nearest corpus instance: two options that look like rivals are each right under different conditions (single-session vs multi-session programs), with the routing condition being session-count.
- Conditional dispatch encoded in kickoff principles (cwd: campconnect, 2026-04-28, task-notification): “Conditional dispatch is the right pattern when the next decision depends on ground truth the goldfish can establish in seconds. Rather than spend a round-trip on recon (‘what is this surface?’) and another on action (‘now do this’), I’m encoding your principles into the kickoff so the goldfish acts on what it finds.” — conditional dispatch as the named move; routing on situation-shape rather than picking one branch upfront.
- Format (a) vs (b) vs (c) as a doctrine-application choice (cwd: campconnect, 2026-05-07): “Format (a)
host:jumbula.commatches inference-honesty (closed-enum + visible-honest-label-on-uncertainty), format (b) bare host coerces uncertain inference into a fact, format (c) splits across two fields and dilutes…” — three-way rivals resolved by appealing to a doctrine that scores each option against an invariant; not literally a router but the same “stop asking ‘which one?’ and start asking ‘what discriminates?’” move.
Trigger pattern (T2): Rivals-into-router surfaces when the user frames a decision as either/or and the agent recognizes both options have valid merit under different conditions. Lexical signal in the corpus is rare — the form is mostly named in design-conversation rather than instantiated. Caveat: with n=4, the trigger pattern is necessarily speculative; treat the exemplars above as a small qualitative sample, not a representative distribution. Cross-domain coverage (ML ensembles, hybrid search, strategy pattern) is plausible but corpus-thin.