evalkit: run through Inspect, pydantic wire types, pattern discriminators #266
No reviewers
Labels
No labels
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/agent-compose!266
Loading…
Reference in a new issue
No description provided.
Delete branch "adjacency/262-role-adjacents"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The two commits that landed after the last merge. Follows #263 and its successors.
Without this,
mainstill carriesevalkit/run.py, the jsonl response sink, andsubstring_matcher, so a fresh eval session would get the pre-Inspect pipeline.Inspect takes the run leg
evalkit/run.pyis deleted.evalkit/task.pyis an Inspect task: the composed role bundle is the system message, the solver is a single generate, and--epochsreplaces the hand-rolled n=5 fan-out. Agent Proxy is reached through theopenai-apiprovider, which readsAGENTPROXY_BASE_URL.Deferred scoring is native rather than a workaround. Inspect documents
--no-scorefor unscored logs and score editing for "applying manual review adjustments", so a human scorer is a supported shape.inspect viewarrives as a browser log surface without hosting anything.Verified live: two samples at two epochs through ser8 in eleven seconds, then filtered straight out of the
.evallog.Pydantic models the wire types
Sample,Response,DatasetEntry, andAnnotationbecomeBaseModel.__post_init__becomes amodel_validatorandfrom_dictcollapses intomodel_validate.Sample.to_inspectandfrom_inspectcross to Inspect'sSample, whose only fields are input, target, id, and metadata, so the domain fields ride in metadata.Discriminators become machine-checkable patterns
A discriminator was prose matched by substring, which the code itself called a placeholder because prose cannot be matched that way. It is now a list of regexes: any match is a failure, matching is case-insensitive and multiline, and every pattern compiles at load so a bad regex fails before a 390-call run rather than during one.
That removes the last model from the loop. Item analysis is now fully deterministic, so the same log and the same samples always select the same dataset.
A pattern will miss failures a reader would catch. The cost is bounded, because the filter only decides whether a sample discriminates and the human annotation is the measurement, so a miss produces a slightly worse sample rather than a wrong label.
Consequences worth naming
httpxis gone as a direct dependency.openaiarrives, because Inspect's OpenAI-compatible provider needs it.evalkitbecomes an installed package with a hatchling build, because Inspect loads a task by file path andevalkitwas not importable that way.Test state
41 Python tests,
mypy --strict, ruff, ruff format, the full pre-commit suite, andgo build ./...all green.TestLatestScoredResultsMatchCurrentPacksstill fails for all eight packs, unchanged frommainand unrelated to this diff. Re-earning that baseline is tracked at #262.Refs #262