Repository navigation
feat(benchmark): benchmark accuracy, ground truth adjudication and CLI observability - #11
Merged
robertotru merged 4 commits intoNov 1, 2026
Conversation
…I observability
- Fix evaluation defect in dev_01 by adding semantic defect aliases and evidence anchors
- Audit dev_09 and establish versioned AdjudicationCatalog for auditable classification decisions
- Enforce bipartite 1-to-1 matching to prevent duplicate finding inflation
- Normalize requirement status ('satisfied' -> 'appears_satisfied') in engine and benchmark
- Implement offline rescoring capability (--rescore <PATH>) to evaluate runs deterministically
- Add streaming progress to stderr with --quiet support and pure JSON stdout
- Add comprehensive hermetic unit tests covering matching, adjudication, rescoring, and CLI streams
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
…ing, and fail-closed rescoring
|
robertotru
deleted the
feat/benchmark-accuracy-adjudication-observability
branch
November 2, 2026 19:36
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Summary
This pull request addresses evaluation defects and observability limitations in the VerifyCraft review quality benchmark identified during full-split live DeepSeek evaluations.
1. Root Cause Analysis & Scoring Accuracy
dev_01_req_violation_auth_expiry: Ground truth previously enforced rigid literal substring matching ("expiration"). Valid review findings expressing semantic equivalents (e.g."Expired tokens are accepted as valid"citingtoken.expires_at) were misclassified simultaneously as a false negative and an ungrounded false positive. Resolved by introducing versionedaliases("expired","expires_at","expiry") andevidence_anchors("expires_at","authenticate") linked to a stabledefect_id.dev_09KeyError Claim: Indev_09,get_lead_user_id(users: list[dict])accessesprimary['id']. Flagging this as a defect without input schema evidence is an unsupported caller assumption. Rather than silently dropping or ignoring it, a versionedAdjudicationCatalogwas established (benchmarks/data/review_eval/adjudications.json), classifying it auditably as anunsupported_claim(retained as a false positive).src/verifycraft/review/engine.pyand benchmark scoring to normalize valid provider statuses ("satisfied") into the canonicalappears_satisfiedenum.2. Offline Rescoring & Auditability (
--rescore)--rescore <PATH>CLI option to evaluate past live run reports deterministically and hermetically without live provider API calls.3. CLI Observability & Stream Separation
sys.stderrand flushed immediately.--quiet(-q) flag to suppress progress logs.--jsonis supplied, machine-readable JSON is emitted cleanly tostdoutwhile progress and diagnostics remain isolated onstderr.4. Verification & Invariants
tests/unit/test_benchmark_accuracy.py(11 new tests).pytest), strict type checking passing (mypy), and formatting/linting passing (ruff).