| import hashlib |
| import time |
| from app.vault import store_reflex |
|
|
| HIGH = ["override", "surge", "breach", "failure"] |
| MED = ["delay", "unstable", "degrade"] |
|
|
| def classify(score: float) -> str: |
| if score >= 0.8: |
| return "HALT" |
| if score >= 0.4: |
| return "MONITOR" |
| return "STABLE" |
|
|
| def run_reflex(req): |
| ts = time.strftime("%Y-%m-%d %H:%M:%S") |
| norm = req.scenario.lower().strip() |
| h = hashlib.sha256(norm.encode()).hexdigest() |
|
|
| if any(k in norm for k in HIGH): |
| score = 0.92 |
| elif any(k in norm for k in MED): |
| score = 0.55 |
| else: |
| score = 0.18 |
|
|
| state = classify(score) |
|
|
| action = { |
| "HALT": "HALT_SIGNAL", |
| "MONITOR": "ESCALATE_MONITORING", |
| "STABLE": "CONTINUE_OPERATION" |
| }[state] |
|
|
| size = store_reflex( |
| timestamp=ts, |
| scenario_hash=h, |
| score=score, |
| state=state, |
| source=req.source |
| ) |
|
|
| return { |
| "timestamp": ts, |
| "scenario_hash": h, |
| "anomaly_score": score, |
| "system_state": state, |
| "action": action, |
| "vault_size": size |
| } |