Skip to main content

Capability Matrix

Blueprint · Capability matrix · Gateway task routing →

The matrix is versioned platform config, same discipline as the route table. It lists which endpoints may serve which model_profile and task. The agent prompt does not.

THE CLAIM

If it is not in the matrix, it is not a production model. Ad-hoc vendor URLs in application config are demos only.

Non-negotiables

RequirementWhy
Version id (2026.08.1)Examiners ask which pool served the call
Pin matrix_version per requestMid-flight swap breaks replay
Gateway loads; LLM never owns the matrixThe model cannot promote itself
CI on changeGolden task set blocks regression
Auditmatrix_version + model_route_id on every inference

Row shape

Each profile is a coarse tier from Plane ① (model_profile on the route row). Tasks are Plane ② signals (plan, synthesize, classify).

FieldPurpose
profile_idMatches model_profile on the route
tasksPer-task stable and optional canary endpoint ids
data_classesAllowed sensitivity (public, internal, confidential, restricted)
regionsResidency filter at the gateway
max_cost_usd_per_1k_tokensHard cap; exceed → next fit or abstain
max_latency_msSLO filter
entitlementsOptional claims required to use this profile
Capability matrix (JSON)
{
"matrix_version": "2026.08.1",
"profiles": [
{
"profile_id": "reasoning-standard",
"data_classes": ["internal", "confidential"],
"regions": ["au-east"],
"max_cost_usd_per_1k_tokens": 0.04,
"max_latency_ms": 8000,
"tasks": {
"plan": {
"stable": "ep.reason.au.stable",
"canary": "ep.reason.au.canary"
},
"synthesize": {
"stable": "ep.reason.au.stable"
}
}
},
{
"profile_id": "fast-chat",
"data_classes": ["public", "internal"],
"regions": ["au-east", "us-east"],
"max_cost_usd_per_1k_tokens": 0.008,
"max_latency_ms": 2000,
"tasks": {
"synthesize": { "stable": "ep.chat.au.stable" },
"classify": { "stable": "ep.chat.au.stable" }
}
}
]
}

Endpoints (ep.reason.au.stable) are registry ids, not vendor URLs. Map them in a separate endpoint catalog (provider, region, model revision, auth).

Storage patterns

PatternRegulated fit
GitOps + object storageStrong: PR review, immutable artifacts, rollback via active pointer
Model registry APIStrong: runtime rollback, multi-tenant, audit
Versioned file in repoGood pilot; rollback may need redeploy
Hardcoded in appDemos only

Typical layout:

Matrix and endpoint catalog layout
platform/models/
capability-matrix/
2026.08.1.yaml
active → 2026.08.1
endpoints/
2026.08.1.yaml

What does not belong here

Leave outWhy
Route route_id / manifestsPlane ① / ②
PEP rulesPGAR
Prompt textPrompt store, referenced from the route
API keysSecret store; gateway injects at call time

Failure classes

FailureSymptom
Squad pastes a vendor model name in the agentMatrix bypass; no residency or cost control
One mega-profile for every taskCost and latency SLOs cannot be met
Matrix only in the system promptInjection can rewrite the pool
No matrix_version in logsCannot tell which pool served an incident

Trace fields

matrix_version, model_profile, task_type, data_class, region, eligible_endpoints

Gateway task routing →