Skip to content

[Router] Interfaces + fixtures stub (foundation) #2407

Description

@ramkrishna2910

Goal

Land the shared C++ interface headers + schema fixtures that every downstream issue codes against. This is the first development step after schema sign-off and the unlock for the parallel engine/wiring/trust tracks — once these compile, work fans out against interfaces instead of finished implementations.

Scope (headers + fixtures only — no behavior)

  • Types (Decision-side, no trust verdict in core): RouteContext (input text, params {model, has_tools, has_images, chars}, metadata), Decision { route_to, matched_rule, default_used, outputs, trace }, Rule { id, match, route_to, outputs }, MatchExpr/Condition node.
  • Interfaces: Classifier { Score evaluate(const ClassifierContext&) const; on_error }, the Condition leaf (deterministic op | classifier-condition band), ClassifierServices { embed(), run_classifier() }, and the RoutingPolicyEngine constructor signature.
  • Fixtures: the lean collection.router examples (L0a–L3, from [Schema][Router] route_policy — routing block in collection.router JSON #2375) + a Decision/trace example ([Schema][Router] Decision + trace object (pure selection) #2376), checked in for downstream unit tests to load.
  • A fake ClassifierServices for tests (fixed embeddings / fixed classifier scores).

Out of scope

Any implementation/behavior — the AST evaluator (#2378), registry (#2379), conditions/classifiers (#2380/#2381/#2405), engine assembly (#2382), parsing (#2383), real wiring (#2384). This issue is the contract surface only.

Acceptance

Why it's its own issue

It gates four otherwise-parallel tracks (#2378, #2379, #2384, and the trust-milestone #2387 against the trace contract). Keeping it a visible node avoids a hidden serialization where everyone waits on whoever first defines the headers.


Depends on: #2375, #2376 (the frozen schemas)

Metadata

Metadata

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions