Forecast operational recovery half life

Forecast how quickly operational performance recovers after incidents, migrations, reorganizations, outages, or other shocks: estimate each resolved shock's exponential remaining-loss half-life, retain stalled trajectories at a governed cap, partially pool log half-lives by severity, and simulate current recovery confidence plus cumulative value loss.

What it's for

Turns resilience from a backward-looking uptime number into a forward operating forecast: executives and investors can see recovery half-life, confidence of restoring required performance, and the economic area under the disruption curve.

What you give it

Inputs split into evidence read from your connected systems, calibration your team owns, and numerical controls that affect precision but never the result's meaning.

Field Type Role Required
confidence_level number ≥ 0.8, ≤ 0.99 Your calibration Optional
current_shocks array of objects (5 fields) ≥ 1 item Evidence Yes
historical_recoveries array of objects (5 fields) ≥ 80 items Evidence Yes
horizon_periods integer ≥ 1, ≤ 365 Your calibration Yes
max_detail_rows integer ≥ 1, ≤ 500 Numerical control Optional
maximum_half_life number ≥ 0.1, ≤ 10000 Your calibration Optional
seed integer Numerical control Optional
severity_prior_strength number ≥ 0, ≤ 10000 Your calibration Optional
simulations integer ≥ 500, ≤ 20000 Numerical control Optional
target_all_recovered_probability number ≥ 0.5, ≤ 0.999 Your calibration Optional

Each current_shocks record

Field Type Required
current_performance_fraction number (≥ 0, ≤ 1) Yes
id string (non-empty) Yes
required_performance_fraction number (≥ 0, ≤ 1) Yes
severity string (non-empty) Yes
value_loss_per_fraction_period number (≥ 0) Optional
Example input
{
  "current_shocks": [
    {
      "current_performance_fraction": 0.2,
      "id": "current-high",
      "required_performance_fraction": 0.8,
      "severity": "high",
      "value_loss_per_fraction_period": 1000
    }
  ],
  "historical_recoveries": [
    {
      "elapsed_periods": 0,
      "id": "recovery-0-0",
      "performance_fraction": 0.19999999999999996,
      "severity": "low",
      "shock_id": "shock-0"
    },
    {
      "elapsed_periods": 1,
      "id": "recovery-0-1",
      "performance_fraction": 0.4343145750507619,
      "severity": "low",
      "shock_id": "shock-0"
    },
    {
      "elapsed_periods": 2,
      "id": "recovery-0-2",
      "performance_fraction": 0.6,
      "severity": "low",
      "shock_id": "shock-0"
    },
    {
      "elapsed_periods": 3,
      "id": "recovery-0-3",
      "performance_fraction": 0.7171572875253809,
      "severity": "low",
      "shock_id": "shock-0"
    },
    {
      "elapsed_periods": 4,
      "id": "recovery-0-4",
      "performance_fraction": 0.8,
      "severity": "low",

Truncated for display — the full payload is 717 lines.

What you get back

This is the actual output of running the example above — computed by the same function the platform calls, not an illustration.

Example output
{
  "assumptions": [
    "Within a stable severity/response epoch, remaining performance loss decays approximately exponentially and historical recovery trajectories are comparable to current shocks.",
    "Performance fractions share one baseline and required-service interpretation, stalled histories are retained at the governed half-life cap, and censoring is not silently treated as recovery.",
    "Severity pooling, current performance, recovery requirements, and value conversion are organization-owned and validated on later shocks."
  ],
  "current_shock_forecast": [
    {
      "half_life_interval": [
        3.4929,
        7.6893
      ],
      "historical_severity_support": 10,
      "median_recovery_period": 8,
      "probability_recovered_within_horizon": 0.218,
      "severity": "high",
      "shock_id": "current-high"
    }
  ],
  "decision": "aggregate_recovery_capacity_risk_material",
  "executive_summary": {
    "cumulative_value_loss_interval": [
      2654.4651,
      4544.0907
    ],
    "expected_cumulative_value_loss": 3625.1786,
    "historical_stalled_fraction": 0,
    "probability_all_recovered_within_horizon": 0.218,
    "target_all_recovered_probability": 0.8,
    "unseen_current_severities": []
  },
  "historical_recovery_diagnostics": [
    {
      "half_life": 2,
      "log_gap_rmse": 0,
      "severity": "low",
      "shock_id": "shock-0",
      "stalled_or_nonrecovering": false
    },
    {
      "half_life": 6,
      "log_gap_rmse": 0,
      "severity": "high",
      "shock_id": "shock-1",

Truncated for display — the full payload is 251 lines.

How it works

Forecasting & survival — Estimate when something completes or fails, with censoring and unresolved work handled honestly rather than dropped.

  1. 1 Build version-consistent shock trajectories with a common performance baseline, severity, cadence, period zero, and at least three pre-ceiling recovery observations; preserve stalled and unresolved behavior rather than keeping successful recoveries only.
  2. 2 Fit log remaining-performance loss against elapsed time inside each historical shock, convert negative slopes to half-life, cap stalled/nonrecovering slopes visibly, and partially pool severity log half-life mean/variance toward the organization-wide reference.
  3. 3 Draw severity-specific half-lives for each current shock, continue its observed performance gap over the decision horizon, test its governed required-performance floor, and aggregate performance and value-loss paths while disclosing unseen-severity fallback.
  4. 4 Report joint probability all current shocks recover, period distributions, per-shock recovery timing, historical stalls, model support, and explicit abstention when recovery capacity does not clear the owner-set confidence target.

Before you trust it

Every tool in the catalog ships with the conditions under which its answer is meaningful — and the conditions under which it should abstain instead of guessing.

Assumptions & guardrails

  • Training examples precede their outcomes, censoring and unresolved work are represented, and deployment populations remain comparable to validation cohorts.
  • Remaining performance loss decays approximately exponentially within a stable severity/response epoch, with comparable shock starts, performance baselines, observation cadence, and recovery definitions.
  • Historical selection retains slow, stalled, censored, and failed recoveries; concurrent shocks, interventions, and capacity coupling are absent or represented in severity and stress analysis.
  • Current performance, required service floor, severity, horizon, and economic loss conversion are current organization-owned inputs rather than copied benchmarks.
  • A predictive interval or risk estimate is not a deadline promise, causal explanation, or individual-performance judgment.
  • Recovery half-life is a local reference-class forecast, not a causal estimate of a response team's effectiveness or a permanent organizational trait.
  • Aggregate resilience cannot be decomposed into named-person burnout, competence, blame, or termination risk from this function.
  • Economic loss is conditional on the supplied conversion and must not be presented as audited revenue impact without finance attribution.

Minimum evidence

  • historical_recoveries: at least 80 rows/items
  • current_shocks: at least 1 rows/items
  • horizon_periods: required and organization-defined

How to validate it

Use chronological train/calibration/test windows, compare proper scores and decision value with a simple baseline, and recalibrate only from outcomes resolved after prediction time.

Calibrating it to your org

Same for everyone

The mathematical kernel, validation rules, method version, and JSON output semantics are organization-independent; no tenant-trained coefficients or company benchmark is embedded in the function.

Specific to you

  • a complete shock-by-elapsed-period performance fraction panel beginning at period zero and retaining stalled/censored trajectories
  • current shock performance gap plus severity-specific historical support and unseen-severity fallback
  • shock and severity taxonomy, start, baseline, performance fraction, required floor, cadence, recovery/ceiling and censoring rules, historical epoch, half-life cap, pooling strength, horizon, confidence, and finance-owned loss conversion

Calibration workflow

  1. 1 Define the management decision, target outcome, aggregate unit, privacy boundary, cadence, and prediction/intervention horizon for this organization.
  2. 2 Build a tenant-scoped historical cohort using only information available before each prediction or decision; preserve zero periods, censoring, assignment probabilities, and unresolved outcomes when the method requires them.
  3. 3 Estimate statistical parameters on training history, but obtain costs, utilities, risk tolerance, practical-effect thresholds, capacity, and policy constraints from accountable decision owners.
  4. 4 Validate on later time windows or held-out aggregate units at the deployment grain, against a simple baseline and the function-specific validation strategy.
  5. 5 Deploy only if the returned decision clears evidence, overlap, calibration, robustness, and guardrail checks; warning, unsupported, schema-gap, and fallback decisions are abstentions.
  6. 6 Monitor realized outcomes, data drift, coverage, and decision regret; recalibrate at a governed cadence or after a detected regime/definition change, never merely because a stakeholder dislikes the result.

Call it from your AI

You don't wire up 388 tools in your MCP client. The GitRevio MCP server exposes 18 tools, three of which let an agent search the catalog, read a tool's schema, and run it — so the assistant finds this one on its own.

gitrevio_capabilities_search
  { "q": "forecast how quickly operational performance recovers" }
  → finds "forecast_operational_recovery_half_life"

gitrevio_capability_describe
  { "capability_id": "forecast_operational_recovery_half_life" }
  → returns the input schema and agent guidance shown on this page

gitrevio_capability_run
  { "capability_id": "forecast_operational_recovery_half_life", "arguments": { ... } }
  → returns the result shown above

Works in Claude Desktop, Claude Code, Cursor, Cline, Continue.dev, Goose and Aider. See the MCP server.

Related tools

Analyze delayed management feedback stability

Stress the dynamic stability of a delayed signed organizational feedback model: build a VAR companion matrix from interval-valued lagged influences, evaluate midpoint, interval corners, and sampled simultaneous coefficients, calculate spectral and transient amplification margins, and rank one-edge damping leverage without claiming an exhaustive robust-control certificate.

Decision analysis

Audit multigroup metric measurement invariance

Audit whether a multi-indicator aggregate management metric measures a comparable one-factor construct across teams, products, repositories, periods, or companies: fit training-only pooled and group PCA loadings, test configural dominance, metric loading cosine, scalar intercept range, residual variance, and untouched-test reconstruction invariance before any group ranking is trusted.

Statistical audit & measurement

Analyze coordination entropy

Quantify privacy-safe cross-team seam complexity, concentration, latency, and failure load.

Decision analysis

Audit decision flow integrity

Audit management decision histories for unresolved work, state cycles, unowned dwell and excessive lead-time tails using immutable event sequences, whole-decision bootstrap uncertainty, simultaneous flow-level gates and state bottleneck diagnostics.

Statistical audit & measurement

Audit executive technology reporting integrity

Audit a frozen executive technology pack for complete metric/risk scope, point-in-time source and definition lineage, numerical reconciliation, supported narrative direction, independent review and evidence coverage.

Statistical audit & measurement

Audit organizational change simulation integrity

Audit whether an organizational or technology what-if simulation is fit for reliance by checking point-in-time model lineage, local history, factor support, second-order dependency structure, calibration, scenario reconciliation and individual-level safeguards.

Statistical audit & measurement

See every tool in Org design, incentives & decisions →

Ready to See Your Engineering work clearly?

Request a free demo