Skip to content

[WIP] Integrate multi-judge metrics into TUI - #523

Merged
Nicola Franco (franconicola) merged 5 commits into
mainfrom
claude/integrate-multi-judge-metrics
Jul 26, 2026
Merged

[WIP] Integrate multi-judge metrics into TUI#523
Nicola Franco (franconicola) merged 5 commits into
mainfrom
claude/integrate-multi-judge-metrics

Conversation

@Claude

@Claude Claude AI commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Thanks for asking me to work on this. I will get started on it and keep this PR's description up to date as I form a plan and make progress.


This section details on the original issue you should resolve

<issue_title>Integrate multi-judge metrics into dashboard and TUI</issue_title>
<issue_description>Multi-judge metrics such as Majority ASR, Fleiss Kappa, strictness and bias gap are already available in the dashboard but they are missing in the TUI.

DoD
Some kind of visualization of the multi-judge metrics in the TUI.</issue_description>

Comments on the Issue (you are @claude[agent] in this section)

bias_gap_str = (
f" Bias gap: [bold]{float(bias_gap):.3f}[/bold]"
)
except (TypeError, ValueError):
@codecov

codecov Bot commented Jul 26, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@franconicola

Copy link
Copy Markdown
Member

@claude[agent] fix the CI Checks

@Claude

Claude AI commented Jul 26, 2026

Copy link
Copy Markdown
Contributor Author

@claude[agent] fix the CI Checks

Two CI jobs were failing.

1. Linting and Formattingruff format --check flagged tests/integration/tui/results/test_widget_lifecycle.py. Fixed in ad560fe; ruff check . and ruff format --check both pass now, and all 21 tests in that file still pass.

2. Commit Messagescz check rejects 4 commits in the PR range because they lack a cz_gitmoji type prefix: 38418eb ("Initial plan"), a7f7155, 1aa95a6, and cfcb1d7. My new commit ad560fe passes. Fixing the older ones requires rewriting those commit messages and force-pushing, which I'm not able to do. The simplest resolutions are to either squash-merge this PR with a compliant title (e.g. ✨ feat(tui): show multi-judge metrics in run summary), or force-push a reworded history yourself. Let me know if you'd prefer a different approach.

Preview of the TUI change (the Strictness / Bias gap line is new):

▌ Selected Run
  🆔 5963782a...  📅 2026-07-26 12:00:00  Status: COMPLETED

▌ Evaluation Summary
  Total: 40  ASR: 55.0%  Majority ASR: 47.5%  Fleiss κ: 0.612
  Strictness — harm judge: 0.500  jailbreak judge: 0.325  refusal judge: 0.675  Bias gap: 0.350

@franconicola

Copy link
Copy Markdown
Member

@claude[agent] fix the CI Commit Checks

@Claude

Claude AI commented Jul 26, 2026

Copy link
Copy Markdown
Contributor Author

@claude[agent] fix the CI Commit Checks

I attempted this but I'm blocked by tooling — the commit check can't be fixed from my side.

What I tried: squashed all 5 commits into a single compliant commit (✨ feat(tui): show multi-judge metrics in run summary), verified cz check --rev-range 8118622..HEAD returned "Commit validation: successful!", and confirmed the resulting tree was byte-identical to ad560fe. But my push tool only does fetch + rebase + non-force push, so it rebased onto the remote and dropped the squash ("patch contents already upstream"), restoring the original 5 commits. I have no way to force-push.

The 4 offending commits lack a cz_gitmoji type prefix — note 38418eb ("Initial plan") was auto-created when the PR was opened, not by me:

  • 38418eb Initial plan (empty commit)
  • a7f7155 Add per-judge strictness and bias gap to TUI run summary
  • 1aa95a6 Guard against empty strictness parts list
  • cfcb1d7 Document judge key naming convention in TUI summary

Two ways to resolve:

A. Squash-merge (no local work) — merge with a compliant title, e.g. ✨ feat(tui): show multi-judge metrics in run summary. cz check only gates the PR, so the merged commit is the one that matters.

B. Force-push the squash:

git checkout claude/integrate-multi-judge-metrics
git reset --soft 8118622
git commit -m "✨ feat(tui): show multi-judge metrics in run summary"
git push --force-with-lease

Either way the code itself is unchanged and green: ruff check . and ruff format --check . both pass on ruff 0.15.22 (the uv.lock-pinned version CI uses), and all 92 tests in tests/integration/tui/results/ pass.

@franconicola

Copy link
Copy Markdown
Member

@claude[agent] fix the CI Commit Checks

@Claude

Claude AI commented Jul 26, 2026

Copy link
Copy Markdown
Contributor Author

@claude[agent] fix the CI Commit Checks

This one needs you — I can't fix it, and retrying won't change that.

Latest run 30203967056 on ad560fe: 19/20 jobs green, only Commit Messages fails. The lint/format fix landed.

Why I'm blocked: cz check validates every commit already on the branch, so the only fix is rewriting pushed history. My push tool does fetchrebase → non-force push. I did produce the correct squash last round (cz check passed, tree byte-identical to ad560fe), but the rebase step discarded it as "patch contents already upstream" and restored the old commits. I have no force-push capability, and I'm not going to weaken the gate by editing ci.yml or adding allowed_prefixes to pyproject.toml.

Fastest fix — squash-merge the PR with title ✨ feat(tui): show multi-judge metrics in run summary. cz check only gates the PR; the squashed merge commit is what lands on main.

Or force-push:

git fetch origin claude/integrate-multi-judge-metrics
git checkout claude/integrate-multi-judge-metrics
git reset --soft 8118622
git commit -m "✨ feat(tui): show multi-judge metrics in run summary"
git push --force-with-lease

Note 38418eb "Initial plan" is an empty commit auto-created when the PR opened, so nothing is lost either way. Code is unchanged and green: ruff check . / ruff format --check . pass on the uv.lock-pinned ruff 0.15.22, and 92/92 tests in tests/integration/tui/results/ pass.

@franconicola
Nicola Franco (franconicola) force-pushed the claude/integrate-multi-judge-metrics branch from ad560fe to 430b6e6 Compare July 26, 2026 15:26
@franconicola
Nicola Franco (franconicola) marked this pull request as ready for review July 26, 2026 15:35
Copilot AI review requested due to automatic review settings July 26, 2026 15:35

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR extends the Results TUI run summary header to surface multi-judge evaluation metrics so they’re visible in the terminal UI (aligning with what’s already available in the dashboard), addressing #279.

Changes:

  • Render per-judge strictness values and bias gap in the Results TUI run summary when is_multi_judge is true.
  • Add integration tests to verify multi-judge metrics are displayed (and that strictness/bias gap are hidden for single-judge runs).

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
hackagent/cli/tui/views/results.py Adds conditional rendering of per-judge strictness and bias gap to the run summary header panel.
tests/integration/tui/results/test_widget_lifecycle.py Adds integration coverage for the run summary header to validate multi-judge metrics rendering behavior.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@franconicola
Nicola Franco (franconicola) merged commit 012d714 into main Jul 26, 2026
25 checks passed
@franconicola
Nicola Franco (franconicola) deleted the claude/integrate-multi-judge-metrics branch July 26, 2026 15:39
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.

Integrate multi-judge metrics into dashboard and TUI

3 participants