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 |
{
"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.
{
"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 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 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 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 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 Define the management decision, target outcome, aggregate unit, privacy boundary, cadence, and prediction/intervention horizon for this organization.
- 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 Estimate statistical parameters on training history, but obtain costs, utilities, risk tolerance, practical-effect thresholds, capacity, and policy constraints from accountable decision owners.
- 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 Deploy only if the returned decision clears evidence, overlap, calibration, robustness, and guardrail checks; warning, unsupported, schema-gap, and fallback decisions are abstentions.
- 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.
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.
Analyze coordination entropy
Quantify privacy-safe cross-team seam complexity, concentration, latency, and failure load.
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.
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.
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.