From 79dd2f95a9cd0a79cd364d4b4302e406b7932a5e Mon Sep 17 00:00:00 2001 From: caballeto Date: Mon, 4 May 2026 15:53:25 +0200 Subject: [PATCH] chore(tests): add forensics ops to run-sdk harness MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Forensics resource (design 046) was added to the SDK in v0.6.0 but the test harness was never updated to dispatch the 5 ops, which caused the mono parity check (TestHarnessCompleteness) to fail after the release. Adds dispatch branches for: - forensics.incident-timeline → client.forensics.incident_timeline - forensics.check-trace → client.forensics.check_trace - forensics.policy-snapshot → client.forensics.policy_snapshot - forensics.monitor-rule-evaluations → client.forensics.monitor_rule_evaluations - forensics.monitor-transitions → client.forensics.monitor_transitions The two paginated ops use the existing `**opts` pattern (same as monitors.results / monitors.versions) — callers pass keyword-only args via JSON, mirroring the SDK signature. Co-authored-by: Cursor --- tests/run_sdk.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/run_sdk.py b/tests/run_sdk.py index 37a2d64..469a7e6 100644 --- a/tests/run_sdk.py +++ b/tests/run_sdk.py @@ -393,6 +393,20 @@ def run(client: Devhelm, resource: str, action: str, rest: list[str]) -> Any: # client.status_pages.subscribers.remove(rest[0], rest[1]) return None + # -- Forensics -- + if op == "forensics.incident-timeline": + return client.forensics.incident_timeline(rest[0]) + if op == "forensics.check-trace": + return client.forensics.check_trace(rest[0]) + if op == "forensics.policy-snapshot": + return client.forensics.policy_snapshot(rest[0]) + if op == "forensics.monitor-rule-evaluations": + opts = json.loads(rest[1]) if len(rest) > 1 and rest[1] else {} + return client.forensics.monitor_rule_evaluations(rest[0], **opts) + if op == "forensics.monitor-transitions": + opts = json.loads(rest[1]) if len(rest) > 1 and rest[1] else {} + return client.forensics.monitor_transitions(rest[0], **opts) + # -- Status Page Domains -- if op == "status-pages.domains.list": return client.status_pages.domains.list(rest[0])