Incident reporting — Articles 26 & 73¶
⚠️ Not legal advice. What counts as a "serious incident" and the exact reporting deadline are legal determinations for the deployer.
Article 26 obliges deployers to monitor for malfunctions and serious incidents; Article 73 requires reporting serious incidents to the competent authority, generally within 15 days of awareness.
Detection¶
SeriousIncidentDetector is a composable rule set over AgentEvents. The default
rule classifies governance breaches and terminal failures as MALFUNCTION; add
rules to escalate domain-specific events to SERIOUS (the highest severity wins).
from techrevati.runtime.compliance import (
SeriousIncidentDetector, IncidentSeverity, IncidentReportingSink,
)
detector = SeriousIncidentDetector()
def fundamental_rights(event):
if event.detail and "rights breach" in event.detail:
return IncidentSeverity.SERIOUS
return None
detector.add(fundamental_rights)
Reporting sink¶
IncidentReportingSink is an EventSink — incidents derive from AgentEvents
(including governance.breach and agent.failed), which flow through the event
sink, not the hook chain. It materializes an IncidentReport per detected event
and mirrors it to the audit log.
sink = IncidentReportingSink(detector, audit_log=kit.audit_log,
on_incident=notify_dpo)
for report in sink.incidents:
print(report.id, report.severity, report.reporting_deadline)
if report.overdue():
escalate(report) # past the 15-day Article 73 window
EUAIActComplianceKit.standard() wires an IncidentReportingSink to the audit
log automatically.