jarvis / tests /test_services_proactive_runtime.py
Jonathan Haas
Wave 38: proactive dedupe hardening and runtime decomposition
2ba439c
Raw
History Blame Contribute Delete
1.97 kB
from __future__ import annotations
from jarvis.tools.services_proactive_runtime import (
has_recent_dispatch,
nudge_bucket,
nudge_fingerprint,
nudge_reason_counts,
prune_recent_dispatches,
record_recent_dispatch,
)
def test_nudge_fingerprint_prefers_candidate_id() -> None:
fingerprint = nudge_fingerprint(
row={"id": " Leak-ALERT-1 "},
title="Basement Leak",
severity="critical",
source="sensor",
)
assert fingerprint == "id:leak-alert-1"
def test_nudge_bucket_interrupt_policy_softens_during_quiet_window() -> None:
bucket, reason = nudge_bucket(
policy="interrupt",
quiet_active=True,
severity_rank=2,
overdue_sec=120.0,
due_soon_sec=60.0,
)
assert bucket == "notify"
assert reason == "quiet_window_softened"
def test_recent_dispatch_prune_and_lookup() -> None:
rows: list[dict[str, object]] = []
record_recent_dispatch(rows, fingerprint="id:a", dispatched_at=1000.0)
record_recent_dispatch(rows, fingerprint="id:b", dispatched_at=1100.0)
pruned = prune_recent_dispatches(
rows,
now_ts=1200.0,
dedupe_window_sec=150.0,
max_entries=10,
)
assert [str(row["fingerprint"]) for row in pruned] == ["id:b"]
assert has_recent_dispatch(
pruned,
fingerprint="id:b",
now_ts=1200.0,
dedupe_window_sec=150.0,
)
assert not has_recent_dispatch(
pruned,
fingerprint="id:a",
now_ts=1200.0,
dedupe_window_sec=150.0,
)
def test_nudge_reason_counts_collates_all_buckets() -> None:
counts = nudge_reason_counts(
interrupt=[{"reason": "policy_interrupt"}],
notify=[{"reason": "context_user_busy"}],
defer=[{"reason": "policy_defer"}, {"reason": "policy_defer"}],
)
assert counts["policy_interrupt"] == 1
assert counts["context_user_busy"] == 1
assert counts["policy_defer"] == 2