Skip to content

feat(verify): independent eval-evidence verify command (#10)#18

Merged
amitpaz1 merged 1 commit into
mainfrom
feat/issue-10-verify-evidence
Jun 26, 2026
Merged

feat(verify): independent eval-evidence verify command (#10)#18
amitpaz1 merged 1 commit into
mainfrom
feat/issue-10-verify-evidence

Conversation

@amitpaz1

Copy link
Copy Markdown
Member

Closes #10.

What: agenteval verify-evidence independently confirms a federated run's eval evidence in AgentLens — asks AgentLens to re-walk the session's hash chain (GET /api/audit/verify?sessionId=eval-<run-id>) and confirms it's intact AND non-empty. Because eval_result is excluded from AgentLens's client ingest enum, a verified eval session proves the evidence is server-authored: you can verify, you can't forge.

How:

  • verify.pyverify_eval_evidence(server, api_key, session_id) + session_id_for_run. An absent session (which verifies vacuously, sessionsVerified=0) is reported unverified; transport/HTTP errors raise VerifyError.
  • commands/verify.pyverify-evidence --run-id/--session-id --agentlens-server --agentlens-api-key [--format json|text] (env-backed AGENTLENS_SERVER/AGENTLENS_API_KEY), exits non-zero on failure (CI-gate friendly).
  • Uses an existing AgentLens endpoint (an audit/admin API key) — no agentlens-side change.

Tests: 7 (verified, vacuous→unverified, broken-chain, non-200→error, transport-error, session-id helper, command registered). pytest 7/7, mypy + ruff clean (venv).

Self-contained, additive; no behavior change to existing commands.

`agenteval verify-evidence` independently confirms a federated run's eval
evidence in AgentLens — it asks AgentLens to re-walk the session's hash chain
(GET /api/audit/verify?sessionId=eval-<run-id>) and confirms it's intact AND
non-empty. Because `eval_result` is excluded from AgentLens's client ingest enum,
a verified eval session proves the evidence is server-authored: you can verify,
you can't forge.

- verify.py: verify_eval_evidence(server, api_key, session_id) + session_id_for_run.
  An absent session (verifies vacuously, sessionsVerified=0) is reported
  UNVERIFIED; transport/HTTP errors raise VerifyError.
- commands/verify.py: `verify-evidence --run-id/--session-id --agentlens-server
  --agentlens-api-key [--format json|text]` (env-backed AGENTLENS_SERVER/API_KEY),
  exits non-zero on failure. Registered.

Uses an existing AgentLens endpoint (audit:read/admin key) — no agentlens change.
Tests: 7 (verified, vacuous-unverified, broken-chain, non-200, transport error,
session-id helper, command registered). pytest 7/7, mypy + ruff clean (venv).

Closes #10.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019tXZpN29akdmG8AEjgSZwk
@amitpaz1
amitpaz1 merged commit b8523fe into main Jun 26, 2026
4 checks passed
@amitpaz1
amitpaz1 deleted the feat/issue-10-verify-evidence branch June 26, 2026 07:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Independent eval-evidence verify command (re-walk chain, confirm server-authored/untampered)

1 participant