test_p8_no_auto_mutation.py 1.3 KB

123456789101112131415161718192021222324252627282930
  1. from content_agent.business_modules import learning_review
  2. from content_agent.integrations.runtime_files import LocalRuntimeFileStore
  3. from tests.test_p8_strategy_review import _write_minimal_runtime
  4. def test_strategy_review_does_not_rewrite_runtime_inputs(tmp_path):
  5. runtime = LocalRuntimeFileStore(tmp_path / "runtime")
  6. run_id = "run_no_auto"
  7. policy_run_id = "policy_no_auto"
  8. runtime.prepare_run(run_id)
  9. _write_minimal_runtime(runtime, run_id, policy_run_id)
  10. final_before = runtime.read_json(run_id, "final_output.json")
  11. decisions_before = runtime.read_jsonl(run_id, "rule_decisions.jsonl")
  12. clues_before = runtime.read_jsonl(run_id, "search_clues.jsonl")
  13. review = learning_review.run(run_id, policy_run_id, runtime)
  14. assert runtime.read_json(run_id, "final_output.json") == final_before
  15. assert runtime.read_jsonl(run_id, "rule_decisions.jsonl") == decisions_before
  16. assert runtime.read_jsonl(run_id, "search_clues.jsonl") == clues_before
  17. assert all(item["requires_human_approval"] is True for item in review["recommendations"])
  18. forbidden_patch_fields = {
  19. "auto_" + "apply",
  20. "rule_pack_" + "patch",
  21. "walk_strategy_" + "patch",
  22. "budget_" + "patch",
  23. "publish_job_" + "patch",
  24. }
  25. for item in review["recommendations"]:
  26. assert forbidden_patch_fields.isdisjoint(item)