What shipped, and when. Two open-source libraries on one trust thesis — SafeAct (safe actions) and wobbly (label-free output checks).
tool_call_id — hidden from the LLM schema.@safe and safe_tool auto-detect async def tools and await them — same exactly-once guarantee (agent & MCP tools are often async).safe_tool), composing under MCPServer.tool().LICENSE; fixed the PyPI homepage link.@safe exactly-once execution, honest IN_DOUBT state (never a blind retry), and Saga compensation / rollback.length_bias() + length_invariant() — catch verbosity bias (does your judge/model prefer longer answers?) with no labels.wobbly judge CLI — measure position bias in your own LLM judge straight from the terminal.judge_bias() — label-free position-bias measurement for an LLM-as-judge (resolves the judge's letter to the chosen answer before comparing).coverage="rotate" — Latin-square positional rotation so every option visits every position (random stays the default).order_invariant, distractor_robust, formatting_invariant, paraphrase_invariant — each a fair relation a correct system can't fail.equivalent() assertion for free-text outputs (you inject your own embedder; baseline-spread aware).check() with per-relation violation rates; assert_robust() pytest/CI helper; cached_system() wrapper; a minimal wobbly CLI.check + Relation + Report: find wrong AI outputs with no answer key.unchanged() works on any output type; non-receipt classifier example.