Conversation
Engine half of a coordinated pair with trustabl/agent-reliability-rules#74, on a branch of the same name so the rules-sync job resolves the matching pack rather than main. Neither half should merge alone — check-rules-sync.sh fails if they do. Mirrors autogen/observability.yaml into testdata/rules-fixture and adds cases to policyRuleCases, as TestPolicyRules_AllRulesCovered requires. Three cases: the print, the module-logger remediation the fix text prescribes, and a pprint call that must stay silent. The third pins has_print_call's bare-callee behavior, so the rule cannot regress into substring matching that sweeps in pprint and every other callee whose name contains "print".
|
Thanks @bradAGI. I reviewed this together with trustabl/agent-reliability-rules#74, and the fixture copy is byte identical to the production pack, so the pair keeps |
What the pair adds
AutoGen had no observability rule; OpenAI ships OAI-010 and ADK ships ADK-009 for the same
print()pattern. The framing is AutoGen's own rather than a port: The conversation itself is narrated to stdout, so a tool print lands mid-transcript and reads as though it were part of the exchange — when it is invisible to the agents reasoning over it.What this PR does
observability.yamlintotestdata/rules-fixture/.policyRuleCases, asTestPolicyRules_AllRulesCoveredrequires.print("looking up " + order_id)logger.info("looking up %s", order_id)pprint({...})Three cases rather than two. The
pprintcase pinshas_print_call's bare-callee behavior — the rule must not regress into substring matching that sweeps inpprintand every other callee whose name merely contains "print". The schema calls that out explicitly as the traphas_body_textfalls into, so it's worth a standing test rather than a comment.The silent case applies the remediation the
fixtext prescribes (a module logger) rather than deleting the call.Verification