← Files Aivana Incident IntelligenceARCHIVED FILE
scripts/run.py
2.93 KB · Oct 2, 2026 · 00:34 UTC
"""Combine sanitized incidents and explicit migration checks into a local brief."""
import re
from plugin_support import main, obj, records, text, validate_json
def _sanitize(value):
value = re.sub(r'\b[\w.+-]+@[\w.-]+\.[A-Za-z]{2,}\b', '[REDACTED_EMAIL]', value)
value = re.sub(r'\b(?:token|secret|api[_-]?key)=[^&\s]+', '[REDACTED_QUERY]', value, flags=re.I)
return re.sub(r'\b\d{2,}\b', '<id>', value)
def run(data):
obj(data); validate_json(data)
incidents = records(data.get('incidents'), 'incidents', limit=2000)
if not incidents: raise ValueError('At least one incident is required')
ids, groups, fixtures, findings = set(), {}, [], []
for index, incident in enumerate(incidents):
ident = incident['id']
if ident in ids: raise ValueError('incident IDs must be unique')
ids.add(ident); message = text(incident.get('message'), f'incidents[{index}].message'); signature = _sanitize(message)
groups.setdefault(signature, []).append(ident)
request = incident.get('request'); expected = incident.get('expected_response')
if isinstance(request, dict) and isinstance(expected, dict): fixtures.append({'event_id': ident, 'request': request, 'expected_response': expected})
else: findings.append({'type': 'not_reproducible', 'incident_id': ident, 'message': 'Request and expected_response are both required for a fixture'})
checks = records(data.get('migration_checks') or [], 'migration_checks', limit=2000); check_rows=[]
for index, check in enumerate(checks):
status = check.get('status', 'needs_review')
if status not in ('passed', 'failed', 'needs_review'): raise ValueError(f'migration_checks[{index}].status is invalid')
refs = check.get('evidence_ids', [])
if not isinstance(refs, list) or any(ref not in ids for ref in refs): raise ValueError('migration check evidence_ids must reference incident IDs')
check_rows.append({'id': check['id'], 'title': text(check.get('title'), f'migration_checks[{index}].title'), 'status': status, 'evidence_refs': refs})
if status != 'passed': findings.append({'type': 'migration_review_required', 'check_id': check['id'], 'status': status})
approval = bool(findings)
return {'plugin': 'aivana-incident-intelligence', 'schema_version': 1, 'status': 'needs_review' if findings else 'analyzed', 'summary': {'incidents': len(incidents), 'groups': len(groups), 'fixtures': len(fixtures), 'migration_checks': len(check_rows), 'findings': len(findings)}, 'groups': [{'signature': signature, 'incident_ids': values, 'count': len(values)} for signature, values in sorted(groups.items())], 'fixtures': fixtures, 'migration_checks': check_rows, 'findings': findings, 'approval_required': approval, 'limitations': ['Sanitization is heuristic and does not establish authenticity.', 'No traffic replay, migration, target validation, or remediation is performed.']}
if __name__ == '__main__': raise SystemExit(main(run))
SHA-256: c7a6705b47ee06a22f982708204a0a1c9c4ee21a8dd002ca8f00b814e69c5712