Skip to content

(MOT-4305) feat(harness): discriminative judge-backed scenarios and scored hard-gate failures - #672

Merged
ytallo merged 2 commits into
mainfrom
feat/harness-subjective-scenarios
Aug 3, 2026
Merged

(MOT-4305) feat(harness): discriminative judge-backed scenarios and scored hard-gate failures#672
ytallo merged 2 commits into
mainfrom
feat/harness-subjective-scenarios

Conversation

@ytallo

@ytallo ytallo commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Summary

Two related changes to the harness E2E quality suite:

Hard-gate failures become scored quality results

A hard-gate failure no longer stops the scenario loop or fails the aggregate outright. The run keeps its objective partial credit (zero when every criterion is judge-delegated), enters the aggregate median as a poor score, and shares the two-of-three tolerance already used by score-only failures. Only technical failures (subject/judge/resource/infrastructure) still block further repetitions and fail the aggregate — in the runner and in the dashboard suite verdict (collect_harness_e2e_benchmarks.py).

Motivation: in execution 30736657213-1, one hard-gate-failed run (score 45) stopped the scenario at 2 of 3 requested runs and forced the failure, even though there was no execution error. A poor score above an error, whenever no execution error occurred.

Two new judge-backed scenarios + anchored rubrics

The existing subjective scenarios (direct_answer, security_review) pin at median 100 — trivial tasks, no discrimination. This adds:

  • design_tradeoff — a contested database-scaling decision with facts pulling in opposite directions and verifiable runway arithmetic in the hidden judge reference. The rubric punishes non-committal "it depends" answers and rewards honest costs of the chosen option plus concrete reversal conditions.
  • security_triage — four Python snippets: two subtly exploitable (absolute-path bypass of an os.path.join traversal check; non-constant-time HMAC comparison) and two safe decoys that pattern-match to SQLi/XSS. false_positive_control (35 pts) zeroes when a safe snippet is reported as vulnerable — measuring calibration, which the current suite cannot.

Every judge-backed criterion description (new and existing scenarios) now carries explicit full/half/zero score anchors, reducing judge variance.

No CI/workflow changes needed: the scenario matrix comes from harness-e2e list dynamically.

Test plan

  • cargo test -p harness-e2e — 60/60, registry test validates all 7 specs
  • cargo run -p harness-e2e -- list includes design_tradeoff and security_triage
  • cargo clippy -p harness-e2e clean
  • First daily run: confirm the new scenarios score in a discriminative range

Summary by CodeRabbit

  • New Features

    • Added design decision and security triage scenarios to end-to-end evaluations.
    • Expanded the scenario suite to seven scenarios.
    • Improved evaluation criteria for security reviews and direct answers.
  • Bug Fixes

    • Hard-gate failures no longer automatically fail a suite when other scenarios pass.
    • Technical failures remain immediately blocking.
    • Updated scoring and pass-status handling for partial results.

Fixes MOT-4305

ytallo added 2 commits August 2, 2026 18:00
A hard-gate failure is a quality result, not an execution error: the run
keeps its objective partial credit (zero when criteria are judge-delegated),
enters the aggregate median as a poor score, and shares the two-of-three
tolerance used by score-only failures. Only technical failures stop further
repetitions and fail the aggregate outright, in the runner and in the
dashboard suite verdict.
…d rubrics

Add design_tradeoff (contested scaling decision that punishes non-committal
answers) and security_triage (subtle real vulnerabilities plus safe decoys
that punish invented findings) to break the ceiling effect of the existing
subjective scenarios. Anchor every judge-backed criterion description with
explicit full/half/zero score bands to reduce judge variance.
@vercel

vercel Bot commented Aug 3, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
workers Ready Ready Preview Aug 3, 2026 10:54am
workers-tech-spec Ready Ready Preview Aug 3, 2026 10:54am

Request Review

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

skill-check — worker

0 verified, 51 skipped (no docs/).

Layer Result
structure
vale
ai
render

Four for four. Nicely done.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Changes

Harness E2E quality evaluation

Layer / File(s) Summary
Scenario definitions and registration
harness/tests/e2e/src/scenarios/*, harness/tests/e2e/README.md
Added design_tradeoff and security_triage, expanded scoring criteria, and registered seven scenarios.
Quality scoring and execution policy
harness/tests/e2e/src/report.rs, harness/tests/e2e/src/suite.rs
Hard-gate failures no longer directly block aggregation. Technical failures remain blocking.
CI gate and benchmark reporting
harness/tests/e2e/README.md, .github/scripts/collect_harness_e2e_benchmarks.py
Main-branch CI and suite reporting now block only on technical failures.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant ScenarioSuite
  participant TextEvaluator
  participant ScenarioReport
  participant BenchmarkCollector
  ScenarioSuite->>TextEvaluator: evaluate scenario response
  TextEvaluator-->>ScenarioSuite: return criterion scores
  ScenarioSuite->>ScenarioReport: record run results
  ScenarioReport-->>BenchmarkCollector: provide suite status and metrics
Loading

Possibly related PRs

Poem

A rabbit reviews each score in the run,
Hard gates may sway, but do not end the fun.
Technical faults still stop the trail,
Two new scenarios join the scale.
“Hop through the reports,” says the bun.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the two main changes: judge-backed scenarios and scored hard-gate failures.
✨ Finishing Touches 💡 2
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/harness-subjective-scenarios

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ytallo ytallo changed the title feat(harness): discriminative judge-backed scenarios and scored hard-gate failures (MOT-4305) feat(harness): discriminative judge-backed scenarios and scored hard-gate failures Aug 3, 2026
@ytallo
ytallo merged commit 76811e2 into main Aug 3, 2026
18 of 20 checks passed
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.

1 participant