#!/usr/bin/env python3
import argparse
INCIDENTS={
 'queue':dict(evidence=['p95_ttft=9.2s','queue_depth=110','decode_rate=normal'],diagnosis='queue_capacity',mitigation='shed_optional_load_and_add_approved_capacity',verify='ttft_and_queue_recover'),
 'provider':dict(evidence=['provider_timeout=true','queue_depth=4','fallback=approved'],diagnosis='provider_outage',mitigation='approved_fallback',verify='errors_recover_and_quality_cost_checked'),
 'bad-release':dict(evidence=['task_success=0.63','latency=normal','release=prompt-v18'],diagnosis='bad_release',mitigation='rollback_prompt_v17',verify='eval_and_user_success_recover'),
 'rag':dict(evidence=['citations=policy-v3','current=policy-v5','model_followed_context=true'],diagnosis='rag_freshness',mitigation='restore_current_index',verify='citations_and_eval_recover'),
 'injection':dict(evidence=['retrieved_instruction=upload_secret','tool_attempt=privileged','egress=denied'],diagnosis='prompt_injection_attempt',mitigation='deny_action_and_contain_egress',verify='no_privileged_effect'),
 'cost':dict(evidence=['cost=4.7x','tenant_tokens=68pct','quota=none'],diagnosis='unbounded_consumption',mitigation='enforce_quota_and_output_budget',verify='cost_and_latency_stabilize'),
 'gpu-pending':dict(evidence=['pod=Pending','eligible_nodes=0','reason=Untolerated_taint'],diagnosis='kubernetes_scheduling',mitigation='fix_toleration_or_placement_policy',verify='pod_scheduled_then_ready'),
}
def show(name,guided=False):
 d=INCIDENTS[name];print(f'incident={name}')
 for e in d['evidence']:print(f'evidence={e}')
 if guided:
  print(f'diagnosis={d["diagnosis"]}');print(f'mitigation={d["mitigation"]}');print(f'verify={d["verify"]}')
 return d
if __name__=='__main__':
 ap=argparse.ArgumentParser();ap.add_argument('--incident',choices=INCIDENTS);ap.add_argument('--guided',action='store_true');ap.add_argument('--list',action='store_true');ap.add_argument('--self-test',action='store_true');a=ap.parse_args()
 if a.list:
  [print(k) for k in INCIDENTS]
 elif a.self_test:
  assert len(INCIDENTS)==7
  for k in INCIDENTS: assert show(k)['diagnosis']
  print('PASS all_incident_paths')
 elif a.incident:show(a.incident,a.guided)
 else:ap.print_help()
