feat(evals): add multi-provider and native-agent runners - #64
Merged
Merged
Conversation
Admit OpenRouter and Claude native targets without conflating requested and displayed models. Reject manifest identity drift, invalid repetition counts, and mismatched attempt provenance on direct replay as well as file loading.
Run an AI SDK model tool loop through a read-only MCP catalogue and parse native Claude plugin evidence under an isolated environment. Preserve unavailable usage, canonical tool names, bounded output and deadlines, and fail closed on unexpected native tools or initialization. The pinned Claude 2.1.263 loopback probe exercised Skill loading, canonical MCP dispatch, main retry-budget control and streaming-failure behavior. This is offline execution proof, not measured live plugin activation.
Add OpenRouter and Claude commands beside Responses and Codex. Require only each runner's credentials, validate runner-specific options and plugin prerequisites, and keep exact-report-bound attempt capture and publication approval unchanged.
Document provider-specific credentials, isolated native execution, Claude retry exceptions and step-versus-tool-call limits. Distinguish offline verification from measured activation and keep saved-login support and publication approval explicit.
Keep CI from reintroducing the Claude 2.1.263 flag that the native loopback probe showed suppresses Skill despite an explicit tool allowlist. This only strengthens the existing argv regression; runtime behavior is unchanged.
Keep slash-separated model identities through sanitized reports, public exports, and browser publication and index decoding without relaxing other identifiers.
Add the pinned API-key ACP profile in local Docker with guarded skill reads and canonical MCP tools. Preserve native pre-dispatch failures, wait boundedly for MCP registration, and remove owned containers independently of stalled child helpers.
Resolve Hono through the existing compatible range. Override Dockerode's uuid dependency to the patched CommonJS release for this workspace; the override is not a downstream package resolution guarantee.
Use a static private provider and credential environment to keep native discovery from sending keys before tool admission. Preserve backend model identity and explicit reasoning through the selected transport. Verified with 24 real-OMP synthetic scenarios, including zero provider HTTP requests across nine rejected startups.
Keep the exact compiled-file inventory and require the shared omp-harness declaration emitted by the CI build.
Preserve HTTPS URL rejection coverage without embedding userinfo-shaped credentials in public test fixtures.
Classify native ACP tools by wire name and disable intent tracing. Disable TurnRecovery retries and configured fallback while documenting the independent provider-client retries in OMP 18.1.14. Clarify that input validation applies after native argument coercion.
This was referenced Sep 9, 2026
This was referenced Sep 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add multi-provider and native-agent execution adapters behind the existing evaluator. This branch contains 12 commits and changes 28 files relative to
mainatff235a40e9063a3cc6d9846ad7e7c1f3f01a76a6.Related: multi-provider evaluation map and implementation tracker. Deferred authentication and comparison-identity decisions remain open; this PR does not close the map.
Known unresolved failure
Track intermittent OMP MCP-error observation loss contains the public-safe retained evidence summary and receipt fingerprints.
One synthetic MCP-error run failed with
generation-faileddespite native terminal completion and one host MCP call. It failed closed, but did not retain the expected canonical failed tool observation. The bounded investigation already included exception instrumentation, four diagnostic passes and one final unchanged-source pass. The cause remains unknown; later passes are not a fix. No investigation or native scenario was rerun to open this PR.Retry and isolation limits
OMP
retry.enabled: falseandretry.modelFallback: falsedisable agent-level TurnRecovery and configured fallback. OMP 18.1.14 provider clients still have hard-coded HTTP retries: the retained HTTP500 probes observed 11 Anthropic requests and 12 OpenAI/OpenRouter requests. The original one-request assertions remain failed. There is no universal one-request guarantee and no runtime fork in this PR.The Docker provider is network-configurable; its default owned network is not an internal-only network. The contained synthetic proof explicitly supplied an
Internal:truenetwork from container creation and used offline bootstrap caches prepared separately. Do not confuse that proof configuration with the default production network policy. The Gina bearer stays on the host; the provider credential is forwarded into the isolated native runtime, not brokered outside it.Existing verification
Head:
4fa4c6f2578268c60b60c454a3fc1a495dc0b64a, GitHub signature verified.runner.test.ts20 andlive-cli.test.ts9.These are source, CI and synthetic protocol results. They are not measured model quality, production Gina connectivity, or evidence that a model independently discovered the plugin. Private raw captures and host paths are not published here.
Separately approved next milestone
Paid evaluations are not authorized or executed by this PR. Before the planned four cases × three repetitions per selected runner, separately approve the runner/model selection, reasoning and cost limits, and provide the required provider credentials and Gina MCP read authorization privately. Retain failures, aggregate reports and exact-report-bound attempts. Public results still require explicit review of their exact content; neither this PR nor a successful run grants publication approval.
No merge, deployment or release is part of this PR-opening step.