Skip to main content
GitHub

Fix Types

The 7 types of automatic fixes.

Risicare can generate 7 types of declarative fixes.

Overview

Fix Structure

All fixes share a common structure:

{
  "fix_id": "fix-abc123",
  "type": "retry",
  "target": {
    "error_codes": ["TOOL.EXECUTION.TIMEOUT"],
    "agents": ["researcher"],
    "tools": ["search_api"]
  },
  "config": {
    "max_attempts": 3,
    "backoff_seconds": 2
  },
  "rollback_strategy": {
    "type": "immediate",
    "trigger": "error_rate > baseline * 1.1"
  },
  "metadata": {
    "created_at": "2024-01-15T10:00:00Z",
    "diagnosis_id": "diag-xyz789",
    "confidence": 0.85
  }
}

Targeting

Fixes can target specific:

TargetDescription
error_codesSpecific error codes
agentsNamed agents
toolsSpecific tools
modelsLLM models
environmentsdev/staging/prod

Rollback Strategies

StrategyDescription
immediateInstant rollback on trigger
gradualRamp down over time
manualRequire human approval

Fix Precedence

When multiple fixes match:

  1. Most specific target wins
  2. Higher confidence wins
  3. Most recent wins

SDK Integration

Fix Runtime has nothing to apply until you promote a fix

risicare.init() starts the Fix Runtime automatically. It has no fixes to apply by default: /api/v1/fixes/active returns an empty list while every generated fix sits in draft. Promoting one with POST /api/v1/fixes/{fix_id}/promote moves it to canary, after which the runtime picks it up on its next refresh. No fix has ever been promoted in production, so treat that path as working-but-unproven. See Fix Runtime.

from risicare import init_runtime, FixRuntimeConfig
 
# init() already starts the runtime; this is only needed for custom config
runtime = init_runtime(config=FixRuntimeConfig(
    api_endpoint="https://app.risicare.ai",
    api_key="rsk-...",
))

Managing Fixes

Fixes are normally created by the diagnosis pipeline. A POST /api/v1/fixes (create) and PATCH /api/v1/fixes/{fix_id} (update) API also exist and accept a member-role key — but in practice fixes are surfaced for review rather than authored by hand. There is no delete-fix API. Today every fix stays in draft.

Via Dashboard

  1. Navigate to Healing → Fixes
  2. Browse generated fix recommendations and their diagnosis
  3. Inspect each fix's type, config, and confidence

Via API

# List fixes (all are status=draft today)
curl -X GET "https://app.risicare.ai/api/v1/fixes" \
  -H "Authorization: Bearer rsk-..."
 
# Get a single fix
curl -X GET "https://app.risicare.ai/api/v1/fixes/{fix_id}" \
  -H "Authorization: Bearer rsk-..."
 
# List active (deployed) fixes — empty until stage-4 promotion is connected
curl -X GET "https://app.risicare.ai/api/v1/fixes/active" \
  -H "Authorization: Bearer rsk-..."

Promotion is manual and admin-only

The only path that moves a fix out of draft is POST /api/v1/fixes/{fix_id}/promote, which requires the owner/admin role (any owner/admin API key, or a dashboard session) and is not invoked automatically. It is part of the not-yet-connected deployment pipeline.

Next Steps

Select a fix type to learn more: