Skip to content

Commit 5bdf4e1

Browse files
Pigbibicodex
andcommitted
fix(strategy): address review gate findings
Co-Authored-By: Codex <noreply@openai.com>
1 parent 51c9232 commit 5bdf4e1

2 files changed

Lines changed: 15 additions & 0 deletions

File tree

scripts/validate_strategy_review.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from typing import Any
1010

1111
STATUSES = {"pass", "fail", "insufficient_evidence", "not_applicable"}
12+
DECISIONS = {"pass", "fail", "insufficient_evidence"}
1213

1314

1415
def validate_review(payload: Any) -> list[str]:
@@ -17,6 +18,8 @@ def validate_review(payload: Any) -> list[str]:
1718
return ["top-level JSON must be an object"]
1819
if payload.get("schema_version") != "strategy_review.v1":
1920
issues.append("schema_version must be strategy_review.v1")
21+
if payload.get("decision") not in DECISIONS:
22+
issues.append("decision must be pass, fail, or insufficient_evidence")
2023
if not isinstance(payload.get("profile"), str) or not payload["profile"].strip():
2124
issues.append("profile must be a non-empty string")
2225
gates = payload.get("hard_gates")
@@ -45,6 +48,9 @@ def validate_review(payload: Any) -> list[str]:
4548
else:
4649
if evidence.get("metrics_kind") != "performance":
4750
issues.append("evidence.metrics_kind must be performance")
51+
for field in ("data_source", "cost_model"):
52+
if not isinstance(evidence.get(field), str) or not evidence[field].strip():
53+
issues.append(f"evidence.{field} must be a non-empty string")
4854
if evidence.get("placeholder_metrics") is not False:
4955
issues.append("placeholder metrics are not admissible evidence")
5056
if not isinstance(evidence.get("sample_count"), int) or evidence["sample_count"] < 0:

tests/test_strategy_review_validator.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,15 @@ def test_pass_cannot_override_failed_gate(self) -> None:
5454
payload = _review(decision="pass")
5555
self.assertTrue(any("cannot be pass" in issue for issue in MODULE.validate_review(payload)))
5656

57+
def test_unknown_decision_is_rejected(self) -> None:
58+
self.assertTrue(any("decision must be" in issue for issue in MODULE.validate_review(_review(decision="unknown"))))
59+
60+
def test_empty_provenance_is_rejected(self) -> None:
61+
payload = _review(evidence={**_review()["evidence"], "data_source": "", "cost_model": " "})
62+
issues = MODULE.validate_review(payload)
63+
self.assertTrue(any("data_source" in issue for issue in issues))
64+
self.assertTrue(any("cost_model" in issue for issue in issues))
65+
5766

5867
if __name__ == "__main__":
5968
unittest.main()

0 commit comments

Comments
 (0)