Conversation
Ports OAI-010 to AutoGen. AutoGen makes it especially deceptive: 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 and carries no marker for which round or tool call produced it. Anyone reconstructing the run from a log sink rather than a terminal loses it entirely.
|
Thanks @bradAGI, this is a model contribution. I checked the rule against the engine at main: |
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".
Ports OAI-010 to AutoGen — the observability dimension isn't covered in any of the five newer packs.
AutoGen makes this especially deceptive, which is what the rule text leads with. The conversation itself is narrated to stdout, so a tool
printlands in the middle of the transcript and reads as though it were part of the exchange — when in fact it's invisible to the agents reasoning over it and carries no marker for which round or which tool call produced it. Anyone reconstructing the run from a log sink rather than a terminal loses it entirely.The fix points at the return value as "the only channel the agents actually read," which is the distinction that matters in a two-agent reply loop.
Verification — engine built at
main:Fire (
print(f"looking up {order_id}")in a tool registered viaregister_for_llm/register_for_execution):AG2-018, AG2-201Silent (
logger.info("looking up %s", order_id)):AG2-201has_print_callmatches a bareprintcallee, sopprintand other attribute calls don't false-positive.No new predicates, so no
schema_versionbump.