{
  "name": "rampa",
  "url": "https://rampa.git-pull.com",
  "description": "Async Python load testing, inspired by k6.",
  "sourceRepository": "https://github.com/tony/rampa/",
  "agentEntrypoints": {
    "manifest": "/docs.json",
    "llms": "/llms.txt",
    "llmsFull": "/llms-full.txt"
  },
  "pages": [
    {
      "title": "ADR 001: Pure Python/Rust Accelerator Module Compatibility Requirements",
      "description": "Status: Accepted Date: 2026-05-28",
      "section": "Documentation",
      "url": "/adrs/001-pure-python-rust-accelerator-module-compatibility-requirements/",
      "markdownUrl": "/adrs/001-pure-python-rust-accelerator-module-compatibility-requirements.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "ADR 001: Pure Python/Rust Accelerator Module Compatibility Requirements"
        },
        {
          "id": "context",
          "level": 2,
          "text": "Context"
        },
        {
          "id": "decision",
          "level": 2,
          "text": "Decision"
        },
        {
          "id": "scope",
          "level": 2,
          "text": "Scope"
        },
        {
          "id": "requirements",
          "level": 2,
          "text": "Requirements"
        },
        {
          "id": "pure-python-first",
          "level": 3,
          "text": "1. Pure Python first"
        },
        {
          "id": "rust-as-companion-accelerator",
          "level": 3,
          "text": "2. Rust as companion accelerator"
        },
        {
          "id": "optional-accelerator",
          "level": 3,
          "text": "3. Optional accelerator"
        },
        {
          "id": "shared-compatibility-tests",
          "level": 3,
          "text": "4. Shared compatibility tests"
        },
        {
          "id": "duck-typing-preservation",
          "level": 3,
          "text": "5. Duck typing preservation"
        },
        {
          "id": "error-behavior",
          "level": 3,
          "text": "6. Error behavior"
        },
        {
          "id": "documentation-and-type-hints",
          "level": 3,
          "text": "7. Documentation and type hints"
        },
        {
          "id": "packaging",
          "level": 3,
          "text": "8. Packaging"
        },
        {
          "id": "ci",
          "level": 3,
          "text": "9. CI"
        },
        {
          "id": "unsafe-rust",
          "level": 3,
          "text": "10. Unsafe Rust"
        },
        {
          "id": "consequences",
          "level": 2,
          "text": "Consequences"
        },
        {
          "id": "positive-consequences",
          "level": 3,
          "text": "Positive consequences"
        },
        {
          "id": "tradeoffs",
          "level": 3,
          "text": "Tradeoffs"
        },
        {
          "id": "risks",
          "level": 3,
          "text": "Risks"
        },
        {
          "id": "implementation-guidance",
          "level": 2,
          "text": "Implementation guidance"
        },
        {
          "id": "pull-request-checklist",
          "level": 2,
          "text": "Pull request checklist"
        },
        {
          "id": "final-position",
          "level": 2,
          "text": "Final position"
        }
      ]
    },
    {
      "title": "Architecture Decision Records",
      "description": "Significant design decisions and their rationale.",
      "section": "Documentation",
      "url": "/adrs/",
      "markdownUrl": "/adrs/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Architecture Decision Records"
        }
      ]
    },
    {
      "title": "rampa check",
      "description": "Validate a test script without running it. Discovers scenarios, validates executor configurations, and reports a summary.",
      "section": "Documentation",
      "url": "/cli/check/",
      "markdownUrl": "/cli/check.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "rampa check"
        },
        {
          "id": "command",
          "level": 2,
          "text": "Command"
        },
        {
          "id": "check-usage",
          "level": 3,
          "text": "Usage"
        },
        {
          "id": "check-positional-arguments",
          "level": 3,
          "text": "Positional Arguments"
        },
        {
          "id": "example-output",
          "level": 2,
          "text": "Example output"
        },
        {
          "id": "what-it-checks",
          "level": 2,
          "text": "What it checks"
        },
        {
          "id": "exit-codes",
          "level": 2,
          "text": "Exit codes"
        }
      ]
    },
    {
      "title": "rampa doctor",
      "description": "Report the runtime environment — Python version, rampa version, platform, and optional dependency availability.",
      "section": "Documentation",
      "url": "/cli/doctor/",
      "markdownUrl": "/cli/doctor.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "rampa doctor"
        },
        {
          "id": "command",
          "level": 2,
          "text": "Command"
        },
        {
          "id": "doctor-usage",
          "level": 3,
          "text": "Usage"
        },
        {
          "id": "example-output",
          "level": 2,
          "text": "Example output"
        },
        {
          "id": "checked-dependencies",
          "level": 2,
          "text": "Checked dependencies"
        }
      ]
    },
    {
      "title": "CLI",
      "description": "The rampa CLI runs load tests from the terminal and produces structured output for scripts and CI.",
      "section": "Documentation",
      "url": "/cli/",
      "markdownUrl": "/cli/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "CLI"
        }
      ]
    },
    {
      "title": "CLI Reference",
      "description": "Auto-generated reference for all rampa commands.",
      "section": "Documentation",
      "url": "/cli/reference/",
      "markdownUrl": "/cli/reference.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "CLI Reference"
        },
        {
          "id": "command-rampa",
          "level": 2,
          "text": "Command: rampa"
        },
        {
          "id": "usage",
          "level": 3,
          "text": "Usage"
        },
        {
          "id": "run-examples",
          "level": 3,
          "text": "Run Examples"
        },
        {
          "id": "check-examples",
          "level": 3,
          "text": "Check Examples"
        },
        {
          "id": "inspect-examples",
          "level": 3,
          "text": "Inspect Examples"
        },
        {
          "id": "doctor-examples",
          "level": 3,
          "text": "Doctor Examples"
        },
        {
          "id": "options",
          "level": 3,
          "text": "Options"
        },
        {
          "id": "entry-points",
          "level": 2,
          "text": "Entry Points"
        },
        {
          "id": "rampa.cli.create_parser",
          "level": 3,
          "text": "create_parser()"
        },
        {
          "id": "rampa.cli.build_docs_parser",
          "level": 3,
          "text": "build_docs_parser()"
        },
        {
          "id": "rampa.cli.main",
          "level": 3,
          "text": "main()"
        }
      ]
    },
    {
      "title": "rampa run",
      "description": "Execute a load test script.",
      "section": "Documentation",
      "url": "/cli/run/",
      "markdownUrl": "/cli/run.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "rampa run"
        },
        {
          "id": "command",
          "level": 2,
          "text": "Command"
        },
        {
          "id": "run-usage",
          "level": 3,
          "text": "Usage"
        },
        {
          "id": "run-positional-arguments",
          "level": 3,
          "text": "Positional Arguments"
        },
        {
          "id": "run-options",
          "level": 3,
          "text": "Options"
        },
        {
          "id": "examples",
          "level": 2,
          "text": "Examples"
        },
        {
          "id": "exit-codes",
          "level": 2,
          "text": "Exit codes"
        }
      ]
    },
    {
      "title": "Benchmarks",
      "description": "Four benchmark scripts measure different layers of the framework. All produce JSON output for CI regression tracking.",
      "section": "Documentation",
      "url": "/dev/benchmark/",
      "markdownUrl": "/dev/benchmark.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Benchmarks"
        },
        {
          "id": "throughput",
          "level": 2,
          "text": "Throughput"
        },
        {
          "id": "scheduler-precision",
          "level": 2,
          "text": "Scheduler precision"
        },
        {
          "id": "metric-engine",
          "level": 2,
          "text": "Metric engine"
        },
        {
          "id": "http-overhead",
          "level": 2,
          "text": "HTTP overhead"
        },
        {
          "id": "json-output",
          "level": 2,
          "text": "JSON output"
        }
      ]
    },
    {
      "title": "Development",
      "description": "Contributing to rampa and understanding its internals.",
      "section": "Documentation",
      "url": "/dev/",
      "markdownUrl": "/dev/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Development"
        },
        {
          "id": "setup",
          "level": 2,
          "text": "Setup"
        },
        {
          "id": "quality-gates",
          "level": 2,
          "text": "Quality gates"
        },
        {
          "id": "test-suite",
          "level": 2,
          "text": "Test suite"
        },
        {
          "id": "architecture",
          "level": 2,
          "text": "Architecture"
        }
      ]
    },
    {
      "title": "Getting Started",
      "description": "Write and run your first load test in 60 seconds.",
      "section": "Documentation",
      "url": "/getting-started/",
      "markdownUrl": "/getting-started/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Getting Started"
        },
        {
          "id": "install",
          "level": 2,
          "text": "Install"
        },
        {
          "id": "write-a-scenario",
          "level": 2,
          "text": "Write a scenario"
        },
        {
          "id": "run-it",
          "level": 2,
          "text": "Run it"
        },
        {
          "id": "add-thresholds",
          "level": 2,
          "text": "Add thresholds"
        },
        {
          "id": "save-results",
          "level": 2,
          "text": "Save results"
        },
        {
          "id": "next-steps",
          "level": 2,
          "text": "Next steps"
        }
      ]
    },
    {
      "title": "Changelog",
      "description": "Notes on the upcoming release will go here.",
      "section": "Documentation",
      "url": "/history/",
      "markdownUrl": "/history.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Changelog"
        },
        {
          "id": "rampa-0-0-1a2-2026-05-27",
          "level": 2,
          "text": "rampa 0.0.1a2 (2026-05-27)"
        },
        {
          "id": "rampa-0-0-1a1-2026-05-27",
          "level": 2,
          "text": "rampa 0.0.1a1 (2026-05-27)"
        },
        {
          "id": "what-s-new",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "output-backend-ecosystem",
          "level": 4,
          "text": "Output backend ecosystem"
        },
        {
          "id": "websocket-and-grpc-protocol-clients",
          "level": 4,
          "text": "WebSocket and gRPC protocol clients"
        },
        {
          "id": "distributed-execution-primitives",
          "level": 4,
          "text": "Distributed execution primitives"
        },
        {
          "id": "tui-dashboard",
          "level": 4,
          "text": "TUI dashboard"
        },
        {
          "id": "rust-hdr-histogram",
          "level": 4,
          "text": "Rust HDR histogram"
        },
        {
          "id": "pause-resume-and-live-thresholds",
          "level": 4,
          "text": "Pause/resume and live thresholds"
        },
        {
          "id": "rampa-inspect-command",
          "level": 4,
          "text": "rampa inspect command"
        },
        {
          "id": "ci-integration",
          "level": 4,
          "text": "CI integration"
        },
        {
          "id": "mcp-discovery-and-control-tools",
          "level": 4,
          "text": "MCP discovery and control tools"
        },
        {
          "id": "unittest-integration",
          "level": 4,
          "text": "unittest integration"
        },
        {
          "id": "documentation",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "auto-generated-reference-docs-for-cli-mcp-and-pytest",
          "level": 4,
          "text": "Auto-generated reference docs for CLI, MCP, and pytest"
        },
        {
          "id": "development",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "build-backend-switched-to-maturin",
          "level": 4,
          "text": "Build backend switched to maturin"
        },
        {
          "id": "rampa-0-0-1a0-2026-05-24",
          "level": 2,
          "text": "rampa 0.0.1a0 (2026-05-24)"
        },
        {
          "id": "id2",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "headless-engine-with-typed-events",
          "level": 4,
          "text": "Headless engine with typed events"
        },
        {
          "id": "eventbus-for-multi-consumer-event-delivery",
          "level": 4,
          "text": "EventBus for multi-consumer event delivery"
        },
        {
          "id": "six-executor-types",
          "level": 4,
          "text": "Six executor types"
        },
        {
          "id": "typed-metric-model",
          "level": 4,
          "text": "Typed metric model"
        },
        {
          "id": "http-client-with-automatic-metrics",
          "level": 4,
          "text": "HTTP client with automatic metrics"
        },
        {
          "id": "cli-with-run-check-and-doctor-commands",
          "level": 4,
          "text": "CLI with run, check, and doctor commands"
        },
        {
          "id": "mcp-server",
          "level": 4,
          "text": "MCP server"
        },
        {
          "id": "pytest-plugin",
          "level": 4,
          "text": "pytest plugin"
        },
        {
          "id": "threshold-expressions",
          "level": 4,
          "text": "Threshold expressions"
        },
        {
          "id": "event-log-jsonl-output",
          "level": 4,
          "text": "--event-log JSONL output"
        },
        {
          "id": "id3",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "benchmark-scripts",
          "level": 4,
          "text": "Benchmark scripts"
        }
      ]
    },
    {
      "title": "rampa",
      "description": "Async Python load testing, inspired by k6.",
      "section": "",
      "url": "/",
      "markdownUrl": "/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "rampa"
        },
        {
          "id": "your-first-load-test",
          "level": 2,
          "text": "Your first load test"
        },
        {
          "id": "what-you-get",
          "level": 2,
          "text": "What you get"
        },
        {
          "id": "six-executor-types",
          "level": 3,
          "text": "Six executor types"
        },
        {
          "id": "automatic-http-metrics",
          "level": 3,
          "text": "Automatic HTTP metrics"
        },
        {
          "id": "threshold-expressions",
          "level": 3,
          "text": "Threshold expressions"
        },
        {
          "id": "multiple-frontends-and-outputs",
          "level": 3,
          "text": "Multiple frontends and outputs"
        }
      ]
    },
    {
      "title": "CI integration",
      "description": "rampa integrates with CI pipelines for automated benchmarking and performance regression detection.",
      "section": "Documentation",
      "url": "/library/ci/",
      "markdownUrl": "/library/ci.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "CI integration"
        },
        {
          "id": "github-action",
          "level": 2,
          "text": "GitHub Action"
        },
        {
          "id": "result-comparison",
          "level": 2,
          "text": "Result comparison"
        },
        {
          "id": "github-actions-output-backend",
          "level": 2,
          "text": "GitHub Actions output backend"
        }
      ]
    },
    {
      "title": "Distributed execution",
      "description": "rampa supports splitting load tests across multiple machines for higher throughput. The coordinator manages workers and aggregates metrics centrally.",
      "section": "Documentation",
      "url": "/library/distributed/",
      "markdownUrl": "/library/distributed.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Distributed execution"
        },
        {
          "id": "architecture",
          "level": 2,
          "text": "Architecture"
        },
        {
          "id": "execution-segments",
          "level": 2,
          "text": "Execution segments"
        },
        {
          "id": "test-archives",
          "level": 2,
          "text": "Test archives"
        },
        {
          "id": "wire-protocol",
          "level": 2,
          "text": "Wire protocol"
        }
      ]
    },
    {
      "title": "Executors",
      "description": "Executors control how iterations are scheduled — how many virtual users run, for how long, and at what rate. rampa provides six executor types matching k6’s scheduling vocabulary.",
      "section": "Documentation",
      "url": "/library/executors/",
      "markdownUrl": "/library/executors.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Executors"
        },
        {
          "id": "which-executor-should-i-use",
          "level": 2,
          "text": "Which executor should I use?"
        },
        {
          "id": "constant-vus",
          "level": 2,
          "text": "constant-vus"
        },
        {
          "id": "ramping-vus",
          "level": 2,
          "text": "ramping-vus"
        },
        {
          "id": "shared-iterations",
          "level": 2,
          "text": "shared-iterations"
        },
        {
          "id": "per-vu-iterations",
          "level": 2,
          "text": "per-vu-iterations"
        },
        {
          "id": "constant-arrival-rate",
          "level": 2,
          "text": "constant-arrival-rate"
        },
        {
          "id": "ramping-arrival-rate",
          "level": 2,
          "text": "ramping-arrival-rate"
        }
      ]
    },
    {
      "title": "Library",
      "description": "Use rampa as a Python library to build, configure, and run load tests programmatically.",
      "section": "Documentation",
      "url": "/library/",
      "markdownUrl": "/library/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Library"
        }
      ]
    },
    {
      "title": "Metrics",
      "description": "rampa automatically collects metrics for every iteration and HTTP request. You can also emit custom metrics from your scenario code.",
      "section": "Documentation",
      "url": "/library/metrics/",
      "markdownUrl": "/library/metrics.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Metrics"
        },
        {
          "id": "built-in-metrics",
          "level": 2,
          "text": "Built-in metrics"
        },
        {
          "id": "execution-metrics",
          "level": 3,
          "text": "Execution metrics"
        },
        {
          "id": "http-metrics",
          "level": 3,
          "text": "HTTP metrics"
        },
        {
          "id": "http-phase-timing",
          "level": 3,
          "text": "HTTP phase timing"
        },
        {
          "id": "check-metrics",
          "level": 3,
          "text": "Check metrics"
        },
        {
          "id": "metric-types",
          "level": 2,
          "text": "Metric types"
        },
        {
          "id": "custom-metrics",
          "level": 2,
          "text": "Custom metrics"
        }
      ]
    },
    {
      "title": "Output backends",
      "description": "rampa ships metric samples to output backends during and after a test run. Use --output to send results to multiple destinations simultaneously.",
      "section": "Documentation",
      "url": "/library/outputs/",
      "markdownUrl": "/library/outputs.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Output backends"
        },
        {
          "id": "built-in-backends",
          "level": 2,
          "text": "Built-in backends"
        },
        {
          "id": "cli-usage",
          "level": 2,
          "text": "CLI usage"
        },
        {
          "id": "csv",
          "level": 2,
          "text": "CSV"
        },
        {
          "id": "influxdb",
          "level": 2,
          "text": "InfluxDB"
        },
        {
          "id": "prometheus",
          "level": 2,
          "text": "Prometheus"
        },
        {
          "id": "opentelemetry",
          "level": 2,
          "text": "OpenTelemetry"
        },
        {
          "id": "webhook",
          "level": 2,
          "text": "Webhook"
        },
        {
          "id": "programmatic-usage",
          "level": 2,
          "text": "Programmatic usage"
        }
      ]
    },
    {
      "title": "Protocol clients",
      "description": "rampa provides protocol-specific clients that auto-emit metrics. Each client is lazily initialized via a Worker property.",
      "section": "Documentation",
      "url": "/library/protocols/",
      "markdownUrl": "/library/protocols.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Protocol clients"
        },
        {
          "id": "http-built-in",
          "level": 2,
          "text": "HTTP (built-in)"
        },
        {
          "id": "websocket-built-in",
          "level": 2,
          "text": "WebSocket (built-in)"
        },
        {
          "id": "grpc-optional",
          "level": 2,
          "text": "gRPC (optional)"
        },
        {
          "id": "custom-protocols",
          "level": 2,
          "text": "Custom protocols"
        }
      ]
    },
    {
      "title": "API Reference",
      "description": "User-facing configuration models for rampa.",
      "section": "Documentation",
      "url": "/library/reference/",
      "markdownUrl": "/library/reference.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "API Reference"
        },
        {
          "id": "module-rampa.config",
          "level": 2,
          "text": "Configuration"
        },
        {
          "id": "rampa.config.parse_duration",
          "level": 3,
          "text": "parse_duration()"
        },
        {
          "id": "rampa.config.Duration",
          "level": 3,
          "text": "Duration"
        },
        {
          "id": "rampa.config.Stage",
          "level": 3,
          "text": "Stage"
        },
        {
          "id": "rampa.config.Stage.duration",
          "level": 4,
          "text": "duration"
        },
        {
          "id": "rampa.config.Stage.target",
          "level": 4,
          "text": "target"
        },
        {
          "id": "rampa.config.Stage._abc_impl",
          "level": 4,
          "text": "_abc_impl"
        },
        {
          "id": "rampa.config.Stage.model_config",
          "level": 4,
          "text": "model_config"
        },
        {
          "id": "rampa.config.ScenarioConfig",
          "level": 3,
          "text": "ScenarioConfig"
        },
        {
          "id": "rampa.config.ScenarioConfig.executor",
          "level": 4,
          "text": "executor"
        },
        {
          "id": "rampa.config.ScenarioConfig.vus",
          "level": 4,
          "text": "vus"
        },
        {
          "id": "rampa.config.ScenarioConfig.duration",
          "level": 4,
          "text": "duration"
        },
        {
          "id": "rampa.config.ScenarioConfig.iterations",
          "level": 4,
          "text": "iterations"
        },
        {
          "id": "rampa.config.ScenarioConfig.stages",
          "level": 4,
          "text": "stages"
        },
        {
          "id": "rampa.config.ScenarioConfig.rate",
          "level": 4,
          "text": "rate"
        },
        {
          "id": "rampa.config.ScenarioConfig.time_unit",
          "level": 4,
          "text": "time_unit"
        },
        {
          "id": "rampa.config.ScenarioConfig.pre_allocated_vus",
          "level": 4,
          "text": "pre_allocated_vus"
        },
        {
          "id": "rampa.config.ScenarioConfig.max_vus",
          "level": 4,
          "text": "max_vus"
        },
        {
          "id": "rampa.config.ScenarioConfig.exec_fn",
          "level": 4,
          "text": "exec_fn"
        },
        {
          "id": "rampa.config.ScenarioConfig.start_time",
          "level": 4,
          "text": "start_time"
        },
        {
          "id": "rampa.config.ScenarioConfig.graceful_stop",
          "level": 4,
          "text": "graceful_stop"
        },
        {
          "id": "rampa.config.ScenarioConfig.tags",
          "level": 4,
          "text": "tags"
        },
        {
          "id": "rampa.config.ScenarioConfig.env",
          "level": 4,
          "text": "env"
        },
        {
          "id": "rampa.config.ScenarioConfig._abc_impl",
          "level": 4,
          "text": "_abc_impl"
        },
        {
          "id": "rampa.config.ScenarioConfig.model_config",
          "level": 4,
          "text": "model_config"
        },
        {
          "id": "rampa.config.Options",
          "level": 3,
          "text": "Options"
        },
        {
          "id": "rampa.config.Options.vus",
          "level": 4,
          "text": "vus"
        },
        {
          "id": "rampa.config.Options.duration",
          "level": 4,
          "text": "duration"
        },
        {
          "id": "rampa.config.Options.iterations",
          "level": 4,
          "text": "iterations"
        },
        {
          "id": "rampa.config.Options.stages",
          "level": 4,
          "text": "stages"
        },
        {
          "id": "rampa.config.Options.tags",
          "level": 4,
          "text": "tags"
        },
        {
          "id": "rampa.config.Options.setup_timeout",
          "level": 4,
          "text": "setup_timeout"
        },
        {
          "id": "rampa.config.Options.teardown_timeout",
          "level": 4,
          "text": "teardown_timeout"
        },
        {
          "id": "rampa.config.Options._abc_impl",
          "level": 4,
          "text": "_abc_impl"
        },
        {
          "id": "rampa.config.Options.model_config",
          "level": 4,
          "text": "model_config"
        },
        {
          "id": "rampa.config.Config",
          "level": 3,
          "text": "Config"
        },
        {
          "id": "rampa.config.Config.scenarios",
          "level": 4,
          "text": "scenarios"
        },
        {
          "id": "rampa.config.Config.thresholds",
          "level": 4,
          "text": "thresholds"
        },
        {
          "id": "rampa.config.Config.options",
          "level": 4,
          "text": "options"
        },
        {
          "id": "rampa.config.Config._validate_threshold_expressions",
          "level": 4,
          "text": "_validate_threshold_expressions()"
        },
        {
          "id": "rampa.config.Config._abc_impl",
          "level": 4,
          "text": "_abc_impl"
        },
        {
          "id": "rampa.config.Config._validate_no_shortcut_with_scenarios",
          "level": 4,
          "text": "_validate_no_shortcut_with_scenarios()"
        },
        {
          "id": "rampa.config.Config.model_config",
          "level": 4,
          "text": "model_config"
        },
        {
          "id": "module-rampa.engine",
          "level": 2,
          "text": "Engine"
        },
        {
          "id": "rampa.engine.EngineOptions",
          "level": 3,
          "text": "EngineOptions"
        },
        {
          "id": "rampa.engine.EngineOptions.run_id",
          "level": 4,
          "text": "run_id"
        },
        {
          "id": "rampa.engine.EngineOptions.metric_flush_interval",
          "level": 4,
          "text": "metric_flush_interval"
        },
        {
          "id": "rampa.engine.EngineOptions.on_sample",
          "level": 4,
          "text": "on_sample"
        },
        {
          "id": "rampa.engine.EngineOptions.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.engine.RunController",
          "level": 3,
          "text": "RunController"
        },
        {
          "id": "rampa.engine.RunController.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.engine.RunController.run_id",
          "level": 4,
          "text": "run_id"
        },
        {
          "id": "rampa.engine.RunController.wait",
          "level": 4,
          "text": "wait()"
        },
        {
          "id": "rampa.engine.RunController.stop",
          "level": 4,
          "text": "stop()"
        },
        {
          "id": "rampa.engine.RunController.pause",
          "level": 4,
          "text": "pause()"
        },
        {
          "id": "rampa.engine.RunController.resume",
          "level": 4,
          "text": "resume()"
        },
        {
          "id": "rampa.engine.RunController.is_paused",
          "level": 4,
          "text": "is_paused"
        },
        {
          "id": "rampa.engine.RunController.snapshot",
          "level": 4,
          "text": "snapshot()"
        },
        {
          "id": "rampa.engine.RunController.events",
          "level": 4,
          "text": "events()"
        },
        {
          "id": "rampa.engine.Engine",
          "level": 3,
          "text": "Engine"
        },
        {
          "id": "rampa.engine.Engine.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.engine.Engine.start",
          "level": 4,
          "text": "start()"
        },
        {
          "id": "rampa.engine.Engine._run",
          "level": 4,
          "text": "_run()"
        },
        {
          "id": "module-rampa.events",
          "level": 2,
          "text": "Events"
        },
        {
          "id": "rampa.events.RunStatus",
          "level": 3,
          "text": "RunStatus"
        },
        {
          "id": "rampa.events.RunStatus.PASSED",
          "level": 4,
          "text": "PASSED"
        },
        {
          "id": "rampa.events.RunStatus.THRESHOLD_FAILED",
          "level": 4,
          "text": "THRESHOLD_FAILED"
        },
        {
          "id": "rampa.events.RunStatus.SETUP_FAILED",
          "level": 4,
          "text": "SETUP_FAILED"
        },
        {
          "id": "rampa.events.RunStatus.EXECUTION_FAILED",
          "level": 4,
          "text": "EXECUTION_FAILED"
        },
        {
          "id": "rampa.events.RunStatus.TEARDOWN_FAILED",
          "level": 4,
          "text": "TEARDOWN_FAILED"
        },
        {
          "id": "rampa.events.RunStatus.STOPPED",
          "level": 4,
          "text": "STOPPED"
        },
        {
          "id": "rampa.events.RunStatus._generate_next_value_",
          "level": 4,
          "text": "_generate_next_value_()"
        },
        {
          "id": "rampa.events.RunStatus.__new__",
          "level": 4,
          "text": "__new__()"
        },
        {
          "id": "rampa.events._make_run_id",
          "level": 3,
          "text": "_make_run_id()"
        },
        {
          "id": "rampa.events.EngineEvent",
          "level": 3,
          "text": "EngineEvent"
        },
        {
          "id": "rampa.events.EngineEvent.run_id",
          "level": 4,
          "text": "run_id"
        },
        {
          "id": "rampa.events.EngineEvent.timestamp_ns",
          "level": 4,
          "text": "timestamp_ns"
        },
        {
          "id": "rampa.events.EngineEvent.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.events.PhaseEvent",
          "level": 3,
          "text": "PhaseEvent"
        },
        {
          "id": "rampa.events.PhaseEvent.phase",
          "level": 4,
          "text": "phase"
        },
        {
          "id": "rampa.events.PhaseEvent.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.events.PauseEvent",
          "level": 3,
          "text": "PauseEvent"
        },
        {
          "id": "rampa.events.PauseEvent.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.events.ResumeEvent",
          "level": 3,
          "text": "ResumeEvent"
        },
        {
          "id": "rampa.events.ResumeEvent.paused_seconds",
          "level": 4,
          "text": "paused_seconds"
        },
        {
          "id": "rampa.events.ResumeEvent.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.events.SnapshotEvent",
          "level": 3,
          "text": "SnapshotEvent"
        },
        {
          "id": "rampa.events.SnapshotEvent.snapshot",
          "level": 4,
          "text": "snapshot"
        },
        {
          "id": "rampa.events.SnapshotEvent.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.events.ThresholdEvent",
          "level": 3,
          "text": "ThresholdEvent"
        },
        {
          "id": "rampa.events.ThresholdEvent.results",
          "level": 4,
          "text": "results"
        },
        {
          "id": "rampa.events.ThresholdEvent.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.events.LiveThresholdEvent",
          "level": 3,
          "text": "LiveThresholdEvent"
        },
        {
          "id": "rampa.events.LiveThresholdEvent.results",
          "level": 4,
          "text": "results"
        },
        {
          "id": "rampa.events.LiveThresholdEvent.will_abort",
          "level": 4,
          "text": "will_abort"
        },
        {
          "id": "rampa.events.LiveThresholdEvent.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.events.RunResult",
          "level": 3,
          "text": "RunResult"
        },
        {
          "id": "rampa.events.RunResult.run_id",
          "level": 4,
          "text": "run_id"
        },
        {
          "id": "rampa.events.RunResult.status",
          "level": 4,
          "text": "status"
        },
        {
          "id": "rampa.events.RunResult.snapshot",
          "level": 4,
          "text": "snapshot"
        },
        {
          "id": "rampa.events.RunResult.threshold_results",
          "level": 4,
          "text": "threshold_results"
        },
        {
          "id": "rampa.events.RunResult.error",
          "level": 4,
          "text": "error"
        },
        {
          "id": "rampa.events.RunResult.stop_reason",
          "level": 4,
          "text": "stop_reason"
        },
        {
          "id": "rampa.events.RunResult.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.events.serialize_event",
          "level": 3,
          "text": "serialize_event()"
        },
        {
          "id": "module-rampa.worker",
          "level": 2,
          "text": "Worker"
        },
        {
          "id": "rampa.worker.ExecutionInfo",
          "level": 3,
          "text": "ExecutionInfo"
        },
        {
          "id": "rampa.worker.ExecutionInfo.worker_id",
          "level": 4,
          "text": "worker_id"
        },
        {
          "id": "rampa.worker.ExecutionInfo.scenario",
          "level": 4,
          "text": "scenario"
        },
        {
          "id": "rampa.worker.ExecutionInfo.iteration",
          "level": 4,
          "text": "iteration"
        },
        {
          "id": "rampa.worker.ExecutionInfo.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.worker.Worker",
          "level": 3,
          "text": "Worker"
        },
        {
          "id": "rampa.worker.Worker.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.worker.Worker.http",
          "level": 4,
          "text": "http"
        },
        {
          "id": "rampa.worker.Worker.ws",
          "level": 4,
          "text": "ws"
        },
        {
          "id": "rampa.worker.Worker.grpc",
          "level": 4,
          "text": "grpc"
        },
        {
          "id": "rampa.worker.Worker._emit",
          "level": 4,
          "text": "_emit()"
        },
        {
          "id": "rampa.worker.Worker.check",
          "level": 4,
          "text": "check()"
        },
        {
          "id": "rampa.worker.Worker.counter",
          "level": 4,
          "text": "counter()"
        },
        {
          "id": "rampa.worker.Worker.gauge",
          "level": 4,
          "text": "gauge()"
        },
        {
          "id": "rampa.worker.Worker.trend",
          "level": 4,
          "text": "trend()"
        },
        {
          "id": "module-rampa.http",
          "level": 2,
          "text": "HTTP Client"
        },
        {
          "id": "rampa.http.Response",
          "level": 3,
          "text": "Response"
        },
        {
          "id": "rampa.http.Response.status",
          "level": 4,
          "text": "status"
        },
        {
          "id": "rampa.http.Response.headers",
          "level": 4,
          "text": "headers"
        },
        {
          "id": "rampa.http.Response.body",
          "level": 4,
          "text": "body"
        },
        {
          "id": "rampa.http.Response.url",
          "level": 4,
          "text": "url"
        },
        {
          "id": "rampa.http.Response.json",
          "level": 4,
          "text": "json()"
        },
        {
          "id": "rampa.http.Response.text",
          "level": 4,
          "text": "text()"
        },
        {
          "id": "rampa.http.Response.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.http._estimate_request_size",
          "level": 3,
          "text": "_estimate_request_size()"
        },
        {
          "id": "rampa.http._TraceTimings",
          "level": 3,
          "text": "_TraceTimings"
        },
        {
          "id": "rampa.http._TraceTimings.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.http._build_trace_config",
          "level": 3,
          "text": "_build_trace_config()"
        },
        {
          "id": "rampa.http.HttpClient",
          "level": 3,
          "text": "HttpClient"
        },
        {
          "id": "rampa.http.HttpClient.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.http.HttpClient._ensure_session",
          "level": 4,
          "text": "_ensure_session()"
        },
        {
          "id": "rampa.http.HttpClient.close",
          "level": 4,
          "text": "close()"
        },
        {
          "id": "rampa.http.HttpClient._emit",
          "level": 4,
          "text": "_emit()"
        },
        {
          "id": "rampa.http.HttpClient._emit_phase_timings",
          "level": 4,
          "text": "_emit_phase_timings()"
        },
        {
          "id": "rampa.http.HttpClient.request",
          "level": 4,
          "text": "request()"
        },
        {
          "id": "rampa.http.HttpClient.get",
          "level": 4,
          "text": "get()"
        },
        {
          "id": "rampa.http.HttpClient.post",
          "level": 4,
          "text": "post()"
        },
        {
          "id": "rampa.http.HttpClient.put",
          "level": 4,
          "text": "put()"
        },
        {
          "id": "rampa.http.HttpClient.delete",
          "level": 4,
          "text": "delete()"
        },
        {
          "id": "rampa.http.HttpClient.patch",
          "level": 4,
          "text": "patch()"
        },
        {
          "id": "module-rampa.metrics",
          "level": 2,
          "text": "Metrics"
        },
        {
          "id": "rampa.metrics.Metric",
          "level": 3,
          "text": "Metric"
        },
        {
          "id": "rampa.metrics.Metric.name",
          "level": 4,
          "text": "name"
        },
        {
          "id": "rampa.metrics.Metric.metric_type",
          "level": 4,
          "text": "metric_type"
        },
        {
          "id": "rampa.metrics.Metric.value_type",
          "level": 4,
          "text": "value_type"
        },
        {
          "id": "rampa.metrics.Metric.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.metrics.CounterSink",
          "level": 3,
          "text": "CounterSink"
        },
        {
          "id": "rampa.metrics.CounterSink.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.metrics.CounterSink.add",
          "level": 4,
          "text": "add()"
        },
        {
          "id": "rampa.metrics.CounterSink.format",
          "level": 4,
          "text": "format()"
        },
        {
          "id": "rampa.metrics.GaugeSink",
          "level": 3,
          "text": "GaugeSink"
        },
        {
          "id": "rampa.metrics.GaugeSink.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.metrics.GaugeSink.add",
          "level": 4,
          "text": "add()"
        },
        {
          "id": "rampa.metrics.GaugeSink.format",
          "level": 4,
          "text": "format()"
        },
        {
          "id": "rampa.metrics.RateSink",
          "level": 3,
          "text": "RateSink"
        },
        {
          "id": "rampa.metrics.RateSink.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.metrics.RateSink.add",
          "level": 4,
          "text": "add()"
        },
        {
          "id": "rampa.metrics.RateSink.format",
          "level": 4,
          "text": "format()"
        },
        {
          "id": "rampa.metrics.TrendSink",
          "level": 3,
          "text": "TrendSink"
        },
        {
          "id": "rampa.metrics.TrendSink.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.metrics.TrendSink.add",
          "level": 4,
          "text": "add()"
        },
        {
          "id": "rampa.metrics.TrendSink._ensure_sorted",
          "level": 4,
          "text": "_ensure_sorted()"
        },
        {
          "id": "rampa.metrics.TrendSink.percentile",
          "level": 4,
          "text": "percentile()"
        },
        {
          "id": "rampa.metrics.TrendSink.format",
          "level": 4,
          "text": "format()"
        },
        {
          "id": "rampa.metrics.SinkProtocol",
          "level": 3,
          "text": "SinkProtocol"
        },
        {
          "id": "rampa.metrics.SinkProtocol.add",
          "level": 4,
          "text": "add()"
        },
        {
          "id": "rampa.metrics.SinkProtocol.format",
          "level": 4,
          "text": "format()"
        },
        {
          "id": "rampa.metrics.SinkProtocol.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.metrics.SinkProtocol._abc_impl",
          "level": 4,
          "text": "_abc_impl"
        },
        {
          "id": "rampa.metrics.SinkProtocol._is_protocol",
          "level": 4,
          "text": "_is_protocol"
        },
        {
          "id": "rampa.metrics.Sink",
          "level": 3,
          "text": "Sink"
        },
        {
          "id": "rampa.metrics.HdrTrendSink",
          "level": 3,
          "text": "HdrTrendSink"
        },
        {
          "id": "rampa.metrics.HdrTrendSink.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.metrics.HdrTrendSink.add",
          "level": 4,
          "text": "add()"
        },
        {
          "id": "rampa.metrics.HdrTrendSink.format",
          "level": 4,
          "text": "format()"
        },
        {
          "id": "rampa.metrics.create_sink",
          "level": 3,
          "text": "create_sink()"
        },
        {
          "id": "rampa.metrics.SubmetricKey",
          "level": 3,
          "text": "SubmetricKey"
        },
        {
          "id": "rampa.metrics.MetricRegistry",
          "level": 3,
          "text": "MetricRegistry"
        },
        {
          "id": "rampa.metrics.MetricRegistry.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.metrics.MetricRegistry.get_or_create",
          "level": 4,
          "text": "get_or_create()"
        },
        {
          "id": "rampa.metrics.MetricRegistry.get_sink",
          "level": 4,
          "text": "get_sink()"
        },
        {
          "id": "rampa.metrics.MetricRegistry.all_metrics",
          "level": 4,
          "text": "all_metrics()"
        },
        {
          "id": "rampa.metrics.MetricRegistry.all_sinks",
          "level": 4,
          "text": "all_sinks()"
        },
        {
          "id": "rampa.metrics.MetricRegistry.get_or_create_sub_sink",
          "level": 4,
          "text": "get_or_create_sub_sink()"
        },
        {
          "id": "rampa.metrics.MetricRegistry.get_sub_sink",
          "level": 4,
          "text": "get_sub_sink()"
        },
        {
          "id": "rampa.metrics.MetricRegistry.all_sub_sinks",
          "level": 4,
          "text": "all_sub_sinks()"
        },
        {
          "id": "rampa.metrics.MetricSnapshot",
          "level": 3,
          "text": "MetricSnapshot"
        },
        {
          "id": "rampa.metrics.MetricSnapshot.timestamp",
          "level": 4,
          "text": "timestamp"
        },
        {
          "id": "rampa.metrics.MetricSnapshot.duration",
          "level": 4,
          "text": "duration"
        },
        {
          "id": "rampa.metrics.MetricSnapshot.values",
          "level": 4,
          "text": "values"
        },
        {
          "id": "rampa.metrics.MetricSnapshot.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.metrics.register_builtins",
          "level": 3,
          "text": "register_builtins()"
        },
        {
          "id": "rampa.metrics.MetricEngine",
          "level": 3,
          "text": "MetricEngine"
        },
        {
          "id": "rampa.metrics.MetricEngine.registry",
          "level": 4,
          "text": "registry"
        },
        {
          "id": "rampa.metrics.MetricEngine.sample_queue",
          "level": 4,
          "text": "sample_queue"
        },
        {
          "id": "rampa.metrics.MetricEngine.flush_interval",
          "level": 4,
          "text": "flush_interval"
        },
        {
          "id": "rampa.metrics.MetricEngine.on_sample",
          "level": 4,
          "text": "on_sample"
        },
        {
          "id": "rampa.metrics.MetricEngine.on_snapshot",
          "level": 4,
          "text": "on_snapshot"
        },
        {
          "id": "rampa.metrics.MetricEngine.thresholds",
          "level": 4,
          "text": "thresholds"
        },
        {
          "id": "rampa.metrics.MetricEngine.threshold_interval",
          "level": 4,
          "text": "threshold_interval"
        },
        {
          "id": "rampa.metrics.MetricEngine.on_threshold",
          "level": 4,
          "text": "on_threshold"
        },
        {
          "id": "rampa.metrics.MetricEngine.abort_callback",
          "level": 4,
          "text": "abort_callback"
        },
        {
          "id": "rampa.metrics.MetricEngine._thread",
          "level": 4,
          "text": "_thread"
        },
        {
          "id": "rampa.metrics.MetricEngine._running",
          "level": 4,
          "text": "_running"
        },
        {
          "id": "rampa.metrics.MetricEngine._start_time",
          "level": 4,
          "text": "_start_time"
        },
        {
          "id": "rampa.metrics.MetricEngine._last_threshold_check",
          "level": 4,
          "text": "_last_threshold_check"
        },
        {
          "id": "rampa.metrics.MetricEngine._grace_deadlines",
          "level": 4,
          "text": "_grace_deadlines"
        },
        {
          "id": "rampa.metrics.MetricEngine._snapshots",
          "level": 4,
          "text": "_snapshots"
        },
        {
          "id": "rampa.metrics.MetricEngine._snapshot_lock",
          "level": 4,
          "text": "_snapshot_lock"
        },
        {
          "id": "rampa.metrics.MetricEngine._cached_sub_sinks",
          "level": 4,
          "text": "_cached_sub_sinks"
        },
        {
          "id": "rampa.metrics.MetricEngine.start",
          "level": 4,
          "text": "start()"
        },
        {
          "id": "rampa.metrics.MetricEngine.stop",
          "level": 4,
          "text": "stop()"
        },
        {
          "id": "rampa.metrics.MetricEngine.get_latest_snapshot",
          "level": 4,
          "text": "get_latest_snapshot()"
        },
        {
          "id": "rampa.metrics.MetricEngine._run",
          "level": 4,
          "text": "_run()"
        },
        {
          "id": "rampa.metrics.MetricEngine._drain_available",
          "level": 4,
          "text": "_drain_available()"
        },
        {
          "id": "rampa.metrics.MetricEngine._ingest",
          "level": 4,
          "text": "_ingest()"
        },
        {
          "id": "rampa.metrics.MetricEngine.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.metrics.MetricEngine._emit_snapshot",
          "level": 4,
          "text": "_emit_snapshot()"
        },
        {
          "id": "rampa.metrics.MetricEngine._check_thresholds",
          "level": 4,
          "text": "_check_thresholds()"
        },
        {
          "id": "rampa.metrics.MetricEngine._find_threshold",
          "level": 4,
          "text": "_find_threshold()"
        },
        {
          "id": "module-rampa.thresholds",
          "level": 2,
          "text": "Thresholds"
        },
        {
          "id": "rampa.thresholds.ThresholdExpression",
          "level": 3,
          "text": "ThresholdExpression"
        },
        {
          "id": "rampa.thresholds.ThresholdExpression.aggregation",
          "level": 4,
          "text": "aggregation"
        },
        {
          "id": "rampa.thresholds.ThresholdExpression.aggregation_value",
          "level": 4,
          "text": "aggregation_value"
        },
        {
          "id": "rampa.thresholds.ThresholdExpression.operator",
          "level": 4,
          "text": "operator"
        },
        {
          "id": "rampa.thresholds.ThresholdExpression.value",
          "level": 4,
          "text": "value"
        },
        {
          "id": "rampa.thresholds.ThresholdExpression.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.thresholds.parse_threshold",
          "level": 3,
          "text": "parse_threshold()"
        },
        {
          "id": "rampa.thresholds.parse_submetric",
          "level": 3,
          "text": "parse_submetric()"
        },
        {
          "id": "rampa.thresholds.Threshold",
          "level": 3,
          "text": "Threshold"
        },
        {
          "id": "rampa.thresholds.Threshold.source",
          "level": 4,
          "text": "source"
        },
        {
          "id": "rampa.thresholds.Threshold.expression",
          "level": 4,
          "text": "expression"
        },
        {
          "id": "rampa.thresholds.Threshold.abort_on_fail",
          "level": 4,
          "text": "abort_on_fail"
        },
        {
          "id": "rampa.thresholds.Threshold.grace_period",
          "level": 4,
          "text": "grace_period"
        },
        {
          "id": "rampa.thresholds.Threshold.last_failed",
          "level": 4,
          "text": "last_failed"
        },
        {
          "id": "rampa.thresholds.Threshold.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.thresholds.ThresholdResult",
          "level": 3,
          "text": "ThresholdResult"
        },
        {
          "id": "rampa.thresholds.ThresholdResult.source",
          "level": 4,
          "text": "source"
        },
        {
          "id": "rampa.thresholds.ThresholdResult.passed",
          "level": 4,
          "text": "passed"
        },
        {
          "id": "rampa.thresholds.ThresholdResult.lhs",
          "level": 4,
          "text": "lhs"
        },
        {
          "id": "rampa.thresholds.ThresholdResult.rhs",
          "level": 4,
          "text": "rhs"
        },
        {
          "id": "rampa.thresholds.ThresholdResult.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.thresholds._sink_key",
          "level": 3,
          "text": "_sink_key()"
        },
        {
          "id": "rampa.thresholds.evaluate_threshold",
          "level": 3,
          "text": "evaluate_threshold()"
        },
        {
          "id": "rampa.thresholds.evaluate_thresholds",
          "level": 3,
          "text": "evaluate_thresholds()"
        },
        {
          "id": "module-rampa.loader",
          "level": 2,
          "text": "Loader"
        },
        {
          "id": "rampa.loader.scenario",
          "level": 3,
          "text": "scenario()"
        },
        {
          "id": "rampa.loader.TestPlan",
          "level": 3,
          "text": "TestPlan"
        },
        {
          "id": "rampa.loader.TestPlan.scenarios",
          "level": 4,
          "text": "scenarios"
        },
        {
          "id": "rampa.loader.TestPlan.config",
          "level": 4,
          "text": "config"
        },
        {
          "id": "rampa.loader.TestPlan.setup_fn",
          "level": 4,
          "text": "setup_fn"
        },
        {
          "id": "rampa.loader.TestPlan.teardown_fn",
          "level": 4,
          "text": "teardown_fn"
        },
        {
          "id": "rampa.loader.TestPlan.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.loader.load_test",
          "level": 3,
          "text": "load_test()"
        }
      ]
    },
    {
      "title": "Thresholds",
      "description": "Thresholds define pass/fail criteria for your load test. When any threshold breaches, rampa run exits with code 1.",
      "section": "Documentation",
      "url": "/library/thresholds/",
      "markdownUrl": "/library/thresholds.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Thresholds"
        },
        {
          "id": "syntax",
          "level": 2,
          "text": "Syntax"
        },
        {
          "id": "aggregation-functions",
          "level": 2,
          "text": "Aggregation functions"
        },
        {
          "id": "operators",
          "level": 2,
          "text": "Operators"
        },
        {
          "id": "examples",
          "level": 2,
          "text": "Examples"
        },
        {
          "id": "in-a-script",
          "level": 2,
          "text": "In a script"
        }
      ]
    },
    {
      "title": "TUI dashboard",
      "description": "rampa includes a live terminal dashboard for real-time monitoring during load tests.",
      "section": "Documentation",
      "url": "/library/tui/",
      "markdownUrl": "/library/tui.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "TUI dashboard"
        },
        {
          "id": "installation",
          "level": 2,
          "text": "Installation"
        },
        {
          "id": "usage",
          "level": 2,
          "text": "Usage"
        },
        {
          "id": "keyboard-shortcuts",
          "level": 2,
          "text": "Keyboard shortcuts"
        },
        {
          "id": "progressive-display-options",
          "level": 2,
          "text": "Progressive display options"
        }
      ]
    },
    {
      "title": "Tutorial",
      "description": "Build a load test step by step — from a minimal scenario to a complete test with checks, thresholds, and structured output.",
      "section": "Documentation",
      "url": "/library/tutorial/",
      "markdownUrl": "/library/tutorial.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Tutorial"
        },
        {
          "id": "minimal-scenario",
          "level": 2,
          "text": "Minimal scenario"
        },
        {
          "id": "http-requests",
          "level": 2,
          "text": "HTTP requests"
        },
        {
          "id": "checks",
          "level": 2,
          "text": "Checks"
        },
        {
          "id": "thresholds",
          "level": 2,
          "text": "Thresholds"
        },
        {
          "id": "custom-metrics",
          "level": 2,
          "text": "Custom metrics"
        },
        {
          "id": "setup-and-teardown",
          "level": 2,
          "text": "Setup and teardown"
        },
        {
          "id": "multiple-scenarios",
          "level": 2,
          "text": "Multiple scenarios"
        }
      ]
    },
    {
      "title": "MCP Server",
      "description": "The rampa-mcp server lets AI agents start, stop, and query load tests via the Model Context Protocol.",
      "section": "Documentation",
      "url": "/mcp/",
      "markdownUrl": "/mcp/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "MCP Server"
        },
        {
          "id": "what-you-can-do",
          "level": 2,
          "text": "What you can do"
        },
        {
          "id": "load-testing",
          "level": 3,
          "text": "Load Testing"
        },
        {
          "id": "observability",
          "level": 3,
          "text": "Observability"
        }
      ]
    },
    {
      "title": "API Reference",
      "description": "FastMCP server factory, run registry, event models, and configuration types used by the MCP tools and resources.",
      "section": "Documentation",
      "url": "/mcp/reference/",
      "markdownUrl": "/mcp/reference.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "API Reference"
        },
        {
          "id": "server",
          "level": 2,
          "text": "Server"
        },
        {
          "id": "rampa.mcp.server.build_mcp_server",
          "level": 3,
          "text": "build_mcp_server()"
        },
        {
          "id": "rampa.mcp.server.main",
          "level": 3,
          "text": "main()"
        },
        {
          "id": "registry",
          "level": 2,
          "text": "Registry"
        },
        {
          "id": "rampa.mcp.registry.RunRecord",
          "level": 3,
          "text": "RunRecord"
        },
        {
          "id": "rampa.mcp.registry.RunRecord.run_id",
          "level": 4,
          "text": "run_id"
        },
        {
          "id": "rampa.mcp.registry.RunRecord.script_path",
          "level": 4,
          "text": "script_path"
        },
        {
          "id": "rampa.mcp.registry.RunRecord.started_at",
          "level": 4,
          "text": "started_at"
        },
        {
          "id": "rampa.mcp.registry.RunRecord.runtime",
          "level": 4,
          "text": "runtime"
        },
        {
          "id": "rampa.mcp.registry.RunRecord.result",
          "level": 4,
          "text": "result"
        },
        {
          "id": "rampa.mcp.registry.RunRecord.events",
          "level": 4,
          "text": "events"
        },
        {
          "id": "rampa.mcp.registry.RunRecord.is_complete",
          "level": 4,
          "text": "is_complete"
        },
        {
          "id": "rampa.mcp.registry.RunRecord.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.mcp.registry.RuntimeRun",
          "level": 3,
          "text": "RuntimeRun"
        },
        {
          "id": "rampa.mcp.registry.RuntimeRun.controller",
          "level": 4,
          "text": "controller"
        },
        {
          "id": "rampa.mcp.registry.RuntimeRun.wait_task",
          "level": 4,
          "text": "wait_task"
        },
        {
          "id": "rampa.mcp.registry.RuntimeRun.event_task",
          "level": 4,
          "text": "event_task"
        },
        {
          "id": "rampa.mcp.registry.RuntimeRun.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.mcp.registry.RunRegistry",
          "level": 3,
          "text": "RunRegistry"
        },
        {
          "id": "rampa.mcp.registry.RunRegistry.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "rampa.mcp.registry.RunRegistry.register",
          "level": 4,
          "text": "register()"
        },
        {
          "id": "rampa.mcp.registry.RunRegistry.get",
          "level": 4,
          "text": "get()"
        },
        {
          "id": "rampa.mcp.registry.RunRegistry.list_all",
          "level": 4,
          "text": "list_all()"
        },
        {
          "id": "rampa.mcp.registry.RunRegistry.complete",
          "level": 4,
          "text": "complete()"
        },
        {
          "id": "events",
          "level": 2,
          "text": "Events"
        },
        {
          "id": "configuration",
          "level": 2,
          "text": "Configuration"
        },
        {
          "id": "metrics",
          "level": 2,
          "text": "Metrics"
        }
      ]
    },
    {
      "title": "Resources",
      "description": "MCP resources expose passive read-only data at rampa:// URIs. Clients read them with resources/read.",
      "section": "Documentation",
      "url": "/mcp/resources/",
      "markdownUrl": "/mcp/resources.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Resources"
        },
        {
          "id": "all-runs",
          "level": 2,
          "text": "All runs"
        },
        {
          "id": "fastmcp-resource-all-runs",
          "level": 3,
          "text": "all_runs"
        },
        {
          "id": "run-details",
          "level": 2,
          "text": "Run details"
        },
        {
          "id": "fastmcp-resource-template-run-details",
          "level": 3,
          "text": "run_details"
        },
        {
          "id": "run-metrics",
          "level": 2,
          "text": "Run metrics"
        },
        {
          "id": "fastmcp-resource-template-run-metrics",
          "level": 3,
          "text": "run_metrics"
        },
        {
          "id": "specific-metric",
          "level": 2,
          "text": "Specific metric"
        },
        {
          "id": "fastmcp-resource-template-run-metric",
          "level": 3,
          "text": "run_metric"
        },
        {
          "id": "threshold-results",
          "level": 2,
          "text": "Threshold results"
        },
        {
          "id": "fastmcp-resource-template-run-thresholds",
          "level": 3,
          "text": "run_thresholds"
        },
        {
          "id": "event-log",
          "level": 2,
          "text": "Event log"
        },
        {
          "id": "fastmcp-resource-template-run-events",
          "level": 3,
          "text": "run_events"
        }
      ]
    },
    {
      "title": "Tools",
      "description": "The rampa MCP server provides six tools for load test lifecycle management, metric retrieval, and threshold evaluation.",
      "section": "Documentation",
      "url": "/mcp/tools/",
      "markdownUrl": "/mcp/tools.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Tools"
        },
        {
          "id": "run-lifecycle",
          "level": 2,
          "text": "Run Lifecycle"
        },
        {
          "id": "fastmcp-tool-start-run",
          "level": 3,
          "text": "start_run"
        },
        {
          "id": "fastmcp-tool-stop-run",
          "level": 3,
          "text": "stop_run"
        },
        {
          "id": "fastmcp-tool-get-status",
          "level": 3,
          "text": "get_status"
        },
        {
          "id": "fastmcp-tool-list-runs",
          "level": 3,
          "text": "list_runs"
        },
        {
          "id": "metrics",
          "level": 2,
          "text": "Metrics"
        },
        {
          "id": "fastmcp-tool-get-metrics",
          "level": 3,
          "text": "get_metrics"
        },
        {
          "id": "thresholds",
          "level": 2,
          "text": "Thresholds"
        },
        {
          "id": "fastmcp-tool-get-thresholds",
          "level": 3,
          "text": "get_thresholds"
        }
      ]
    },
    {
      "title": "pytest Plugin",
      "description": "Run load tests inside your existing test suite.",
      "section": "Documentation",
      "url": "/pytest/",
      "markdownUrl": "/pytest/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "pytest Plugin"
        },
        {
          "id": "install",
          "level": 2,
          "text": "Install"
        },
        {
          "id": "fixtures",
          "level": 2,
          "text": "Fixtures"
        },
        {
          "id": "rampa.pytest_plugin.rampa_result",
          "level": 3,
          "text": "rampa_result"
        },
        {
          "id": "quick-start",
          "level": 2,
          "text": "Quick start"
        },
        {
          "id": "marker-pytest-mark-rampa-scenario",
          "level": 2,
          "text": "Marker: @pytest.mark.rampa_scenario"
        },
        {
          "id": "complete-example",
          "level": 2,
          "text": "Complete example"
        }
      ]
    },
    {
      "title": "API Reference",
      "description": "",
      "section": "Documentation",
      "url": "/pytest/reference/",
      "markdownUrl": "/pytest/reference.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "API Reference"
        },
        {
          "id": "plugin-hooks",
          "level": 2,
          "text": "Plugin hooks"
        },
        {
          "id": "rampa.pytest_plugin.pytest_configure",
          "level": 3,
          "text": "pytest_configure()"
        },
        {
          "id": "fixture-implementation",
          "level": 2,
          "text": "Fixture implementation"
        },
        {
          "id": "internal",
          "level": 2,
          "text": "Internal"
        },
        {
          "id": "rampa.pytest_plugin._run_plan",
          "level": 3,
          "text": "_run_plan()"
        }
      ]
    }
  ]
}
