Skip to content

Releases: felmonon/agent-reliability-harness

v0.2.2 — Cohere Chat v2 adapter

Choose a tag to compare

@felmonon felmonon released this 14 Jul 19:15
d38b7ca

Added

  • New cohere-chat adapter: imports Cohere Chat API v2 message lists (tool_plan / tool_calls assistant messages, document-block tool results, message-level citations) into the canonical trace format, with auto-detection.
  • Cohere shares the tool_calls wire shape with OpenAI, so detection scans for Cohere-only markers (tool_plan, assistant message-level citations, document tool-result blocks) before the OpenAI rules.
  • An assistant tool_plan maps to a model_response step marked metadata.source_field: "tool_plan" so plan text stays visible to safety checks without being mistaken for the final answer.

Full changelog: https://github.com/felmonon/agent-reliability-harness/blob/main/CHANGELOG.md

agent-reliability-harness v0.2.1

Choose a tag to compare

@felmonon felmonon released this 14 Jul 13:14
4649a20

Fixed

  • Modernized packaging license metadata to the PEP 639/SPDX form
    (license = "MIT", license-files = ["LICENSE"]) and removed the
    deprecated license classifier; builds no longer emit setuptools license
    deprecation warnings.
  • Converted README documentation links to absolute GitHub URLs so they work
    from the PyPI long-description renderer.
  • Corrected stale compatibility language that incorrectly claimed every
    v0.1 score remained identical despite the documented nested-safety-scan
    fix (70.0 -> 70.83 for one sample; verdict unchanged).

agent-reliability-harness v0.2.0

Choose a tag to compare

@felmonon felmonon released this 14 Jul 13:06
4d3cafe

Added

  • Trajectory rules (sequence): required tools, forbidden tools,
    partial-order call_order, per-tool min_calls/max_calls
    (ARH-SEQ-001..005).
  • Flow rules (error_handling, side_effect): ignored tool errors,
    retry storms, duplicate side-effect protection (ARH-FLW-001..003).
  • Completion rules (completion): required final response, max step
    count (ARH-CMP-001..002).
  • Argument value constraints: enum, full-match pattern, numeric
    min/max on tool arguments (ARH-SCH-007..009), alongside the legacy
    bare type-name form.
  • Token budgets (budgets.max_total_tokens, ARH-BUD-004) with an
    explicit warning when the trace carries no token data (ARH-BUD-005)
    instead of a silent pass.
  • Citation validity (grounding.require_valid_citation_urls,
    ARH-GRD-003) and step-level status/error, input_tokens/
    output_tokens, and metadata trace fields.
  • Stable rule IDs (ARH-*) on every finding, plus expected/observed/
    remediation evidence fields and a generated rule reference
    (docs/rules.md).
  • Regression engine: arh compare diffs a candidate run against a
    baseline report (new/resolved findings, pass/fail transitions,
    score/latency/cost deltas) with gate modes regressions (default),
    failures, never, and --max-score-drop.
  • Adapters: --format openai-chat (Chat Completions tool_calls
    transcripts) and --format anthropic-messages (tool_use/tool_result
    conversations), with deterministic auto-detection and lossless handling of
    unmappable input via metadata.adapter.notes.
  • Reports: JUnit XML (--junit-out) and SARIF 2.1.0 (--sarif-out)
    renderers; rule IDs shown in console and Markdown output; JSON reports
    carry schema_version.
  • Schema versioning: traces/policies accept schema_version (major 1);
    unknown major versions are rejected with a precise error.
  • JSON Schemas for trace, policy, and report formats (schemas/).
  • Benchmark suite: 34 seeded failure cases with a generator, a runner
    enforcing thresholds (precision/recall 1.0, byte-identical determinism,
    <50 ms/trace, metamorphic invariances, adapter equivalence, regression
    scenarios), plus BENCHMARK-METHODOLOGY.md and generated
    BENCHMARK-RESULTS.md.
  • GitHub Action (action.yml): validate + optional baseline compare,
    step-summary reports, SARIF/JUnit outputs, fork-safe, no secrets.
  • CI: 3-OS × Python 3.11-3.13 matrix, ruff, strict mypy, benchmark
    thresholds, packaging build with clean-environment install check.
  • Documentation set (docs/), specs (SPEC.md, TRACE-SPEC.md,
    POLICY-SPEC.md, ARCHITECTURE.md, and more), and community files.

Fixed

  • (review) Regression loose-matching could silently cancel two findings
    with different rule IDs on the same step whenever any legacy finding was
    present, hiding real regressions from the CI gate. Loose matching now
    applies only when at least one side of a pair lacks a rule_id.

  • (review) Safety scanning now recurses into nested lists/dicts and the
    step error string; unsafe content one level deep no longer evades
    detection.

  • (review) Warning-only traces can no longer fail: unverifiable budget
    warnings (ARH-BUD-005, new ARH-BUD-006 latency, new ARH-BUD-007 cost) are
    score-neutral.

  • (review) Malformed telemetry (negative/non-finite/mistyped latency,
    cost, tokens; non-string text/tool_name/error) is rejected at parse time.

  • (review) ArgSpec patterns are compiled at policy load (precise error
    instead of a traceback), min > max and non-finite bounds are rejected,
    NaN values can no longer bypass range constraints, and unknown declared
    types no longer disable enum/pattern/range checks.

  • (review) JUnit output strips XML-1.0-illegal control characters so
    strict CI consumers can always parse it; Markdown reports escape
    trace-derived fields in table cells.

  • (review) The GitHub Action passes all inputs via env: bindings
    instead of interpolating ${{ inputs.* }} into the script, closing a
    shell-injection vector.

  • (review) CLI: --fail-under is bounds-checked (usage error, exit 2);
    pathologically nested JSON fails with a clean message instead of a
    RecursionError traceback; the module docstring documents real exit
    codes.

  • v0.1.x reported type errors for required arguments twice (the argument
    was checked in two loops). Each argument is now checked exactly once; the
    duplicate finding is gone. Scores and verdicts are unchanged.

Compatibility

  • v0.1.x trace and policy files produce identical scores, verdicts, and
    finding messages (pinned by golden tests). New report fields are additive.
    arh compare accepts v0.1.x baselines via a rule-id-agnostic fallback
    match. Exit codes and console markers are unchanged. See COMPATIBILITY.md.