Skip to content

symfonic.services.effects.incident

incident

Security-revert incident evidence.

The incident is the artifact a reviewer reads afterwards, so its rendering is deliberately literal about the one thing that is easy to overstate. Per invocation it prints either SUPPRESSED or EXPOSED — and EXPOSED carries the reason inline, so "we reverted, everything is fine" cannot be read out of a document that in fact contains an unfenced opaque extension or an irreversible effect that had already left.

fencing_claim_withheld is derived, never assigned: any exposure, any withheld per-invocation claim, or any degradation of the lease store takes it true. There is no field an operator can set to make an incident look clean.

SecurityRevertIncident dataclass

SecurityRevertIncident(incident_id: str, bundle_id: str, reason: str, actor: str, linearized_at: float, fence: Fence, revoked_leases: tuple[str, ...] = (), stale_admissions: tuple[str, ...] = (), cancelled: tuple[str, ...] = (), affected_tickets: tuple[str, ...] = (), suppressed_commits: tuple[str, ...] = (), quarantined: tuple[str, ...] = (), exposures: tuple[ExposureRecord, ...] = (), compensations: tuple[CompensationOutcome, ...] = (), claims: tuple[FencingClaim, ...] = (), cutover_blocked: tuple[str, ...] = (), degraded: bool = False, degraded_reason: str = '', drain: DrainReport = (lambda: DrainReport(drained=(), contained=(), budget=0.0, elapsed=0.0))())

Every leg of one security revert, in one reviewable record.

fencing_claim_withheld property

fencing_claim_withheld: bool

Derived. Exposure, a withheld claim, or degradation all take it true.