Repository navigation
fix(tier3): include ATIF content parts in judge answer evidence - #203
Conversation
Signed-off-by: YMuskrat <Y.Laaouach@sussex.ac.uk>
Signed-off-by: YMuskrat <Y.Laaouach@sussex.ac.uk>
Signed-off-by: YMuskrat <Y.Laaouach@sussex.ac.uk>
Signed-off-by: YMuskrat <Y.Laaouach@sussex.ac.uk>
rng1995
left a comment
There was a problem hiding this comment.
Automated review: 1 findings (0 P1, 0 P2, 1 P3); 1 posted inline.
chrisknvidia
left a comment
There was a problem hiding this comment.
Reviewed 3a30acc7069ee8ebe005cb4b871eb367a11f18fa against main 098f96a0d169878ab85b6801a8f4609b29d11e50. The earlier media-only final-response finding is fixed in both host and verifier, including its evidence reference. No additional substantive code finding.
Not ready to merge yet:
- Commit
d04404fa7a8e1fd929eeef5bf59ad1aba5cf4ba0has noSigned-off-bytrailer. I reproduced the exact DCO workflow check locally over the non-merge PR commits; this commit fails it. Add the author's sign-off and push the corrected history. - Current-head DCO, CI, and Security workflow runs are all
action_required, so their checks have not run. After the sign-off fix, a maintainer must authorize the new-head workflows and the required checks must pass.
Verification: 435 focused tests passed with Harbor 0.24.0; changed-file Ruff passed; 20 copied standalone-verifier cases across ten message combinations and two evidence budgets validated all reward files and final-response references. Those subprocess cases used a localhost judge with synthetic responses. No live agent/provider/container E2E or full-suite pass is claimed.
Integration note: this branch and #201 currently conflict in CHANGELOG.md and the atif_helpers.py import. Whichever lands second will need to preserve both helper imports and rerun host/verifier coverage after resolving.
|
@YMuskrat thanks for the quick fix. The only failing check is DCO: git rebase --signoff origin/main && git push --force-with-leaseEverything else passes, and the PR is approved. |
Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
Resolve the CHANGELOG.md conflict with NVIDIA#188 and NVIDIA#193 by keeping both sides' Fixed entries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
Resolve the CHANGELOG.md conflict with NVIDIA#199 by keeping both sides' Fixed entries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
347bda3 to
ea748c9
Compare
|
@YMuskrat to unblock DCO, |
Resolve the CHANGELOG.md conflict with NVIDIA#203 by keeping both sides' Fixed entries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
Resolve the CHANGELOG.md conflict with #203 by keeping both sides' Fixed entries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
Resolve the CHANGELOG.md conflict with #203 by keeping both sides' Fixed entries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
Brings in #203 (ATIF content parts in judge answer evidence; media-only final steps skipped). Conflicts: - CHANGELOG.md: #203's Fixed entry added to the PR's single Unreleased Fixed section; every other entry unchanged. - tier3/eval_core/atif_helpers.py and tier3/harbor/templates/eval.py (host/verifier parity): keep the PR's index-based final response and budgeted tool history (_final_response_index, _history_entries, _fit_history). #203's behaviour now lives in those helpers. _final_response_index selects the last agent step for which atif_content_has_text is true, so a media-only step is skipped. get_final_response / _get_final_response and the final-response evidence ref excerpt return atif_content_text of that step. The history reads agent messages and the "Agent final answer" fallback through atif_content_text. The host also imports atif_content_has_text next to the PR's checks imports. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
…story The PR's budgeted tool history lists the final answer as "Agent final answer" when that step also made a tool call. It now reads ATIF content parts as #203 does. Check that a structured answer beside a tool call, followed by a blank structured step, reaches the history the same way on the host and in the Harbor verifier. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
Brings in #196 (tier integrity) and #203 (ATIF structured answers). Conflict: src/skillevaluator/validators/dependencies.py. Main reworked target pyproject audits to read static PEP 621 declarations, audit exact pins without installing the target, put conflicting pins in separate batches, and mark malformed metadata incomplete. This branch replaced the pip-audit result handling with a trusted-process contract that records pip_audit success evidence for publication. Resolution: keep main's pyproject audit as written and run each batch through this branch's contract. A batch now also needs a successful process and an integer exit code of 0 or 1, and its report goes through _process_pip_audit(exit_code=...). A batch that this check marks incomplete is not counted in audited_pins. Static metadata that parses cleanly but has no applicable exact pins records a pyproject_dependency_discovery success, like a target with no dependency files, so it still counts as executed Tier 1 work. Two tests in tests/validators/test_target_dependencies.py cover both cases. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
Summary
Valid ATIF answers such as
[{"type":"text","text":"The answer is 4."}]currently disappear before grading, and an earlier string message can incorrectly become the final response. Reuseatif_content_textfor agent text, final answers, conversation summaries and final-response evidence references in both host and verifier.Text parts reach all judge bundles; image/audio parts retain the existing safe markers. Tests validate fixtures through Harbor's schema and compare host/verifier evidence, including references to the correct final step.
Closes #202
Focused message, evidence compiler, behavior evidence and judge-use tests: 76 passed. Full suite: 11,200 passed, 53 skipped, 25 baseline failures.
Verification
make lint(passed)make testmake build(wheel and source distribution passed)The full suite used the repository's locked dependencies on Python 3.12 and pytest-xdist with four workers. It has 25 failures, all reproduced against unchanged main at f32c884. The identical failing test IDs occur on all three independent fixes; none is in a changed module. These include restricted Unix sockets/local subprocesses and existing SDK/CLI/report contracts. The full suite is not claimed green.
Release Impact