Skip to content

fix(ci): size context work budget for bounded embeddings - #167

Open
asutermo wants to merge 1 commit into
mainfrom
fix/evaluator-context-budget
Open

asutermo wants to merge 1 commit into
mainfrom
fix/evaluator-context-budget

Conversation

@asutermo

Copy link
Copy Markdown
Collaborator

Summary

Fix the mainline context / eval-author work-budget failure without reducing skill content, skipping comparisons, or relaxing similarity thresholds.

  • Raise both revision-guarded SkillEvaluator v0.7.0 scalar-work limits from 100m to 300m, recorded as full-pairwise-300m-v1.
  • Preserve the 512-chunk ceiling, vector validation, exact pairwise algorithm, and five-minute timeout. Exceeding the work/time budget remains incomplete, not passing.
  • Retain only check-specific, bounded integer guard metadata in diagnostics. Do not estimate missing dimensions or publish raw provider/source metadata.

Incident and budget rationale

Run https://github.com/NVIDIA-NeMo/eval-author/actions/runs/41132259985 (job https://github.com/NVIDIA-NeMo/eval-author/actions/runs/41132259985/job/124337600119) evaluated 69 files / 417 chunks and hit scalar_comparison_limit (100000000) after about four seconds. PR #166 was already merged and its dual-guard version fix was deployed; this is real exhaustion of the existing allowance, not the former 25m clustering override or a timeout.

The recorded model route is nvidia/nvidia/nemotron-3-embed-1b. Its documented output is 2048 dimensions, but the actual incident response dimension was not retained; this PR does not claim it was observed. At 2048 dimensions, 417 chunks require 177,635,328 scalar work, and the existing maximum 512 chunks requires 267,911,168. A 300m bound accommodates that maximum while retaining a finite guard.

Verification

  • Tests-first regressions reproduced the prior work-budget rejection and missing safe diagnostics.
  • Installed pinned v0.7.0: 136 focused/native tests passed, zero skips.
  • Network-disabled Linux ARM64 Docker: 25 native tests passed. The actual wrapper/CLI and downstream collector parser accepted synthetic 417×2048 and 512×2048 probes; 512×2294 (300,091,904) remained incomplete. Native boundary tests admit 512×2293 (299,961,088).
  • Excess chunks and invalid provider vectors remain rejected. Synthetic vectors are deliberately labeled; these results do not establish real-content semantic findings or live-provider completion.
  • Ruff, formatting, Python 3.12/3.13 typing, copyright, license and whitespace checks passed. Independent review passed with no security or logic findings.
  • Final stable-tree full suite: 3,427 passed, 25 skipped, 289 warnings. The isolated-runtime evaluator tests skipped in this general environment passed separately against the actual pinned evaluator and in Linux Docker.

Scope and limitations

Five files only: wrapper, diagnostics, their tests, and existing CI documentation. No skill content, dependencies, lockfile, credentials, provider configuration, or workflow trigger changes. Separate from the anti-cheat work in #164.

Linux ARM64 Docker is not GitHub's AMD64 runner. No provider requests were made; provider latency, actual incident dimensions, and downstream LLM completion remain unverified. The next mainline live run is the end-to-end confirmation, and incomplete handling remains intact.

Signed-off-by: Andrew Suter-Morris <asutermorris@nvidia.com>

This branch has not been deployed

No deployments
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