Skip to content

chore(eval): bring the mapping evaluation harness into the repo - #59

Merged
murdore merged 1 commit into
mainfrom
chore/eval-harnesses
Aug 17, 2026
Merged

chore(eval): bring the mapping evaluation harness into the repo#59
murdore merged 1 commit into
mainfrom
chore/eval-harnesses

Conversation

@murdore

@murdore murdore commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Five scripts that score the project mapper against the human labels in videos/labels.json instead of running it. They were the only measurement tooling this project had, and they lived in videos/ — which is gitignored, so a single git clean -x would have taken all of them.

Script Measures
npm run eval:judge End-to-end P/R/F1 with the real judge, held-out folds
npm run eval:facets Derives project facets from confirmed videos (k-means → one sentence per cluster)
npm run eval:portfolio Prefilter reach and threshold fit — the ceiling the judge works under
npm run eval:triage Whether the triage gate discards videos the mapper wanted
npm run eval:relabel The human’s self-agreement, by re-serving old videos blind

These are not tests, and are not wired into CI

The suite in src/__tests__ injects fake judge/embed functions and never touches the network, which is what keeps it fast and deterministic. These do the opposite on purpose — they call the real model, because the question they answer is how good the real judge is. A full eval:judge arm is roughly 165 paid Vertex calls and needs four gitignored private inputs (search.db, labels.json, triage.json, projects.json). A fresh clone cannot run them, and that is the intended state rather than a gap to close.

What changed in the port

Only the repo root. Each script hardcoded an absolute path to one developer’s checkout; that is now path.resolve(import.meta.dirname, ".."). Logic is otherwise untouched — including the parts biome dislikes — so the diff against the originals stays reviewable. (biome check . already fails on main, and lint-staged only runs biome format, so this introduces no new gate failure.)

Why it matters beyond durability

docs/eval-harness.md records the two measured cases where adding facets raised prefilter reach while lowering end-to-end F1 — most starkly, auto-derived Breeze facets took its false positives from 1 to 17, the worst of any project in that session. That caution previously existed only as a comment inside a gitignored file.

Verification: npm run build and the full suite (55 files, 476 tests) pass via the pre-commit hook. eval:relabel (the one harness making no paid calls) runs correctly post-port — 30 videos, 77 candidate decisions. Every ${R}-relative path resolves. markdownlint clean on the new doc; the README edit adds 0 new errors. Scanned for absolute paths and credentials — clean.

These five scripts score the project mapper against the human labels
instead of running it, and they were the only measurement tooling this
project had. They lived in videos/, which is gitignored, so a single
`git clean -x` would have taken all of them.

Ported unchanged apart from the repo root: each hardcoded an absolute
path to one developer's checkout, now resolved from import.meta.dirname.
Their logic is untouched, including the parts biome dislikes, so the
diff against the originals stays reviewable.

They are deliberately not tests. The suite in src/__tests__ injects fake
judge/embed functions and never hits the network; these call the real
model and read private, gitignored corpus data, so they cannot run in CI
and are not wired into it. docs/eval-harness.md records what each one
measures, what it needs, and the two measured cases where adding facets
raised prefilter reach while lowering end-to-end F1.
@github-actions

Copy link
Copy Markdown

Single Commit Policy — COMPLIANT

Status: 1 commit | Valid format | No merge commits | Ready for merge

Commit details
  • Hash: d0fee17f88771951668fdc9593b7626793bc0795
  • Message: chore(eval): bring the mapping evaluation harness into the repo
  • Author: Sachin Sharma

Automated validation — dopamine single-commit enforcement

@murdore
murdore merged commit 9972e53 into main Aug 17, 2026
12 checks passed
@murdore
murdore deleted the chore/eval-harnesses branch August 17, 2026 01:57
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