Archive notice: This page documents historical Spec Kitty behavior and is not the current 3.2 workflow. Start with Spec Kitty 3.2 for current docs.
Appendix: Model-to-Task Type Mapping Schema
$schema: "https://json-schema.org/draft/2020-12/schema"
$id: "https://spec-kitty.dev/schemas/doctrine/model-to-task_type.schema.yaml"
title: Model-to-Task Type Mapping
description: Catalog of model capabilities, costs, and routing policy for task assignment.
type: object
additionalProperties: false
required:
- schema_version
- generated_at
- task_types
- models
- routing_policy
- sources
properties:
schema_version:
type: string
pattern: '^1\.0$'
generated_at:
type: string
format: date-time
source_snapshot:
type: string
description: Optional source snapshot ID/hash for traceability.
task_types:
type: array
minItems: 1
items:
type: object
additionalProperties: false
required:
- id
- title
properties:
id:
type: string
pattern: '^[a-z][a-z0-9-]*$'
title:
type: string
minLength: 1
description:
type: string
quality_sensitivity:
type: string
enum: [ low, medium, high ]
cost_sensitivity:
type: string
enum: [ low, medium, high ]
models:
type: array
minItems: 1
items:
type: object
additionalProperties: false
required:
- id
- provider
- task_fit
- cost
properties:
id:
type: string
minLength: 1
provider:
type: string
minLength: 1
family:
type: string
tools:
type: array
items:
type: string
minLength: 1
strengths:
type: array
items:
type: string
weaknesses:
type: array
items:
type: string
task_fit:
type: array
minItems: 1
items:
type: object
additionalProperties: false
required:
- task_type
- score
properties:
task_type:
type: string
pattern: '^[a-z][a-z0-9-]*$'
score:
type: number
minimum: 0
maximum: 1
confidence:
type: string
enum: [ low, medium, high ]
rationale:
type: string
cost:
type: object
additionalProperties: false
required:
- tier
properties:
tier:
type: string
enum: [ low, medium, high, premium ]
input_per_1m_usd:
type: number
minimum: 0
output_per_1m_usd:
type: number
minimum: 0
currency:
type: string
default: USD
pricing_source_url:
type: string
format: uri
latency_tier:
type: string
enum: [ low, medium, high ]
routing_policy:
type: object
additionalProperties: false
required:
- objective
- weights
- override_policy
properties:
objective:
type: string
enum: [ quality_first, balanced, cost_first ]
weights:
type: object
additionalProperties: false
required: [ quality, cost, risk, latency ]
properties:
quality:
type: number
minimum: 0
maximum: 1
cost:
type: number
minimum: 0
maximum: 1
risk:
type: number
minimum: 0
maximum: 1
latency:
type: number
minimum: 0
maximum: 1
tier_constraints:
type: array
items:
type: object
additionalProperties: false
required: [ task_type, max_tier ]
properties:
task_type:
type: string
pattern: '^[a-z][a-z0-9-]*$'
max_tier:
type: string
enum: [ low, medium, high, premium ]
override_policy:
type: object
additionalProperties: false
required: [ mode, require_reason ]
properties:
mode:
type: string
enum: [ advisory, gated, required ]
require_reason:
type: boolean
freshness_policy:
type: object
additionalProperties: false
properties:
max_catalog_age_hours:
type: integer
minimum: 1
sources:
type: array
minItems: 1
items:
type: object
additionalProperties: false
required:
- name
- url
- access_method
- snapshot_at
properties:
name:
type: string
minLength: 1
url:
type: string
format: uri
access_method:
type: string
enum: [ api, dataset, manual ]
snapshot_at:
type: string
format: date-time
license_notes:
type: string
Proposed Data Model (Mermaid)
erDiagram
MODEL_TASK_CATALOG ||--o{ TASK_TYPE : defines
MODEL_TASK_CATALOG ||--o{ MODEL_PROFILE : contains
MODEL_TASK_CATALOG ||--|| ROUTING_POLICY : applies
MODEL_TASK_CATALOG ||--o{ SOURCE_ENTRY : cites
MODEL_PROFILE ||--|| COST_PROFILE : priced_as
MODEL_PROFILE ||--o{ MODEL_TASK_FIT : scored_for
TASK_TYPE ||--o{ MODEL_TASK_FIT : matched_by
ROUTING_POLICY ||--|| WEIGHT_VECTOR : uses
ROUTING_POLICY ||--|| OVERRIDE_POLICY : enforces
ROUTING_POLICY ||--o{ TIER_CONSTRAINT : limits
TASK_TYPE ||--o{ TIER_CONSTRAINT : constrained_by
MODEL_TASK_CATALOG {
string schema_version
datetime generated_at
string source_snapshot
}
TASK_TYPE {
string id
string title
string description
string quality_sensitivity
string cost_sensitivity
}
MODEL_PROFILE {
string id
string provider
string family
string[] tools
string[] strengths
string[] weaknesses
string latency_tier
}
MODEL_TASK_FIT {
string task_type
float score
string confidence
string rationale
}
COST_PROFILE {
string tier
float input_per_1m_usd
float output_per_1m_usd
string currency
string pricing_source_url
}
ROUTING_POLICY {
string objective
}
WEIGHT_VECTOR {
float quality
float cost
float risk
float latency
}
OVERRIDE_POLICY {
string mode
boolean require_reason
}
TIER_CONSTRAINT {
string task_type
string max_tier
}
SOURCE_ENTRY {
string name
string url
string access_method
datetime snapshot_at
string license_notes
}