In order
- A confirmed tool mapping names its workflows (one or several, each with its own
when). See Tool mapping. - Otherwise, a shortlist: maps whose facts match the record’s keys, whose apps match the app, or whose words share terms with the tool’s name and description. One candidate with clear evidence is picked without a model.
- Otherwise one fast model call picks 0, 1 or several maps whose rules govern this kind of action.
- Model off or failing: the best key-overlap map with at least two signals, so a check never waits on routing.
Several maps
The action is checked against each map concurrently. It is allowed only if every map allows it. Each violation carries itsworkflow_id, and the check log gets one row per map (chk_x, chk_x.2). A stop names every map whose rule it breaks.
Caching
Decisions are cached per app, tool, record shape and map versions (1 hour). When the router says the decision depends on an argument’s value (depends_on), the cache keys on that value too.
Passing a workflow
You can still pin it:POST /v1/check with workflow_id. An unknown id is a 404.
Server settings
CLAROS_ROUTER=off (no model step), CLAROS_ROUTER_TIMEOUT (6 s), CLAROS_ROUTER_CACHE_TTL (3600 s).