A Remediation represents a corrective action targeting one or more root causes. Remediations enable closed-loop validation - measuring whether fixes actually reduced operational pain.
Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://plexusone.dev/signal-spec/remediation.schema.json"
}
Fields
Required Fields
| Field |
Type |
Description |
id |
string |
Unique remediation identifier |
title |
string |
Summary of the fix |
status |
Status |
Current lifecycle state |
root_cause_ids |
string[] |
Targeted root causes |
owner_team |
string |
Responsible team |
created_at |
datetime |
When remediation was proposed |
Optional Fields
| Field |
Type |
Description |
description |
string |
Implementation details |
assignee |
string |
Individual owner |
deployed_at |
datetime |
When fix was deployed |
validated_at |
datetime |
When efficacy was measured |
efficacy |
Efficacy |
Measured effectiveness |
external_links |
SourceSystem[] |
Related PRs, tickets, etc. |
metadata |
object |
Additional context |
tags |
Tag[] |
User-defined labels |
Status Enum
Lifecycle state of the remediation.
| Value |
Description |
proposed |
Remediation identified |
approved |
Approved for implementation |
in_progress |
Work underway |
deployed |
Released to production |
validating |
Measuring effectiveness |
effective |
Confirmed working |
ineffective |
Did not achieve outcome |
rolled_back |
Reverted due to issues |
cancelled |
Abandoned |
Efficacy
Measured effectiveness of the remediation.
| Field |
Type |
Description |
signal_reduction |
float |
Percentage decrease in signals |
validation_period |
TimeRange |
Measurement window |
confidence_level |
float |
Statistical confidence (0-1) |
notes |
string |
Context on measurement |
Example
{
"id": "rem-001",
"title": "Implement Redis read-after-write consistency for session validation",
"description": "Modify session validation to use WAIT command ensuring replication before read.",
"status": "deployed",
"root_cause_ids": ["rc-auth-001"],
"owner_team": "identity-platform",
"assignee": "jsmith",
"created_at": "2024-03-10T09:00:00Z",
"deployed_at": "2024-03-14T16:30:00Z",
"validated_at": null,
"efficacy": null,
"external_links": [
{
"type": "code_change",
"name": "github",
"external_id": "PR-4521",
"url": "https://github.com/company/oauth-service/pull/4521"
},
{
"type": "incident",
"name": "pagerduty",
"external_id": "INC-2024-0234",
"url": "https://company.pagerduty.com/incidents/Q1234567"
}
],
"tags": ["redis", "consistency", "auth"],
"metadata": {
"rollback_plan": "Revert PR-4521 and restart oauth-service pods",
"validation_criteria": "Signal rate drops >80% within 7 days"
}
}
Go Usage
import "github.com/plexusone/signal-spec/pkg/remediation"
rem := remediation.Remediation{
ID: "rem-001",
Title: "Implement Redis read-after-write consistency",
Status: remediation.StatusInProgress,
RootCauseIDs: []string{"rc-auth-001"},
OwnerTeam: "identity-platform",
Assignee: "jsmith",
CreatedAt: time.Now(),
}
Validation
Remediations are validated against these rules:
id is required and must be non-empty
title is required and must be non-empty
root_cause_ids must contain at least one ID
tags must be lowercase kebab-case
signal-spec validate -t remediation remediation.json
ValidationSignal
A ValidationSignal represents evidence of remediation effectiveness. Generated after deployment to measure signal decay or resurgence.
Fields
| Field |
Type |
Description |
id |
string |
Unique validation signal ID |
remediation_id |
string |
Linked remediation |
root_cause_id |
string |
Linked root cause |
type |
ValidationResult |
Outcome |
observed_at |
datetime |
When validation occurred |
baseline_signal_rate |
float |
Pre-remediation rate |
current_signal_rate |
float |
Post-remediation rate |
reduction_percent |
float |
Calculated improvement |
notes |
string |
Context |
ValidationResult Enum
| Value |
Description |
improved |
Signal rate decreased |
no_change |
Signal rate unchanged |
regressed |
Signal rate increased |
Example
{
"id": "val-001",
"remediation_id": "rem-001",
"root_cause_id": "rc-auth-001",
"type": "improved",
"observed_at": "2024-03-21T09:00:00Z",
"baseline_signal_rate": 15.3,
"current_signal_rate": 2.1,
"reduction_percent": 86.3,
"notes": "7-day rolling average post-deployment"
}