openmerit 0.3.10 → 0.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -2
- package/dist/terminal/scout-update.json +1 -1
- package/docs/scout-close-loop.md +12 -0
- package/docs/scout.md +47 -0
- package/docs/troubleshooting.md +1 -1
- package/package.json +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.3.
|
|
3
|
+
## 0.3.11 — 2026-11-09
|
|
4
|
+
|
|
5
|
+
- The repository moved to `github.com/openmerit-ai/openmerit-core`. Package metadata (repository, homepage and issues) and the troubleshooting guide's issue link point there. No CLI, installer or MCP behavior changes.
|
|
6
|
+
- Bring the bundled Scout guides up to date with hosted Scout. They describe the shortlist rules deployed on 9 November (unmeasured candidates beaten on both quality estimate and cost are left out; under the quality priority, unmeasured estimates within three points rank by cost) and the agent's requested benchmark evidence. OpenRouter decision models listed beside Vercel AI Gateway's, host route matching across version and lab spellings, and grouped Langfuse metric queries with `Retry-After` cooldowns are described as deployed on 6 November.
|
|
7
|
+
|
|
8
|
+
## 0.3.10 — 2026-11-06
|
|
4
9
|
|
|
5
10
|
- Refocus the Scout guide on supported setup, model selection, customer-owned evals and data handling. Preserve historical operator receipts in an internal archive excluded from npm, retain existing section links, remove repository-development instructions from the package README, and distinguish released Langfuse guidance from old preparation notes. This does not change model selection, credentials or permissions.
|
|
6
11
|
- Align the data policy's opening aggregate-results description with its existing per-user, cross-conversation connection contract. Hosted policy publication requires the separate Scout-serving deployment; npm publication alone does not update it.
|
|
7
12
|
|
|
8
|
-
## 0.3.9 — 2026-11-06
|
|
13
|
+
## 0.3.9 — 2026-11-06
|
|
9
14
|
|
|
10
15
|
- Fix Claude Code project setup, status and conflict detection in linked git worktrees. Claude Code 2.1.63 and newer share private project MCP configuration under the main checkout; older versions use the linked worktree root. The installer follows the Claude CLI on PATH, leaves the project's skill and rule in place, and does not migrate or delete existing MCP entries.
|
|
11
16
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"format":1,"contract":"scout-recommend-v2","version":"0.3.10","skill":"---\nname: openmerit-scout\ndescription: Consults OpenMerit Scout before choosing, adding, downloading, replacing or configuring any application inference model, including implicit choices while building features, pretrained browser/local models, SDK defaults, embeddings, OCR, speech, classification, detection, segmentation, LLMs and agents. Not for unrelated edits, ordinary inference calls or this coding agent's own model.\n---\n\n# OpenMerit · Scout\n\nBefore introducing, recommending, replacing or configuring an application\ninference model, call the `scout_models` tool on the `openmerit` MCP server.\nThis applies even when the user never mentions models or Scout. Downloading local\nweights, using a pretrained browser model or accepting an SDK default is a model\ndecision: consult Scout before model-specific code, installs or downloads.\nPreserve the user's explicit model choice; assess it rather than silently replacing\nit. Leave unchanged, approved application selections in place.\n\n## Project policy\n\nRead `.openmerit/scout.json` before searching. If it is absent, ask once whether this\nproject uses **existing-only** (only endpoints it can already reach) or\n**existing-first** (prefer them, ask before searching the whole catalogue), and\nwhich public catalogue endpoint IDs it can access. Save the answer:\n\n```sh\nnpx -y openmerit@latest project --policy existing-only --endpoint-id <id> ...\n```\n\nNever infer access from a model name, SDK or environment-variable name. Never\nrecord credentials, private URLs, prompts or customer data. An empty inventory\nis not permission to search all models.\n\n## Searching\n\nCall `scout_models` with a non-confidential task description as `prompt` and\n`endpointIds` set to the saved inventory, including `[]` when empty. Send\nonly task requirements, never source files, secrets or real customer records.\nIf the MCP tool is unavailable, run\n`npx -y openmerit@latest scout \"<task>\" --json`; it applies the saved inventory.\n\nScout is a conversation with the agent behind openmerit.ai/scout. When\n`status` is `needs_answers`, fill in what the user or project already states,\nshow the user Scout's brief and remaining questions, and wait for their answers.\nThen call again with the returned `conversationId` and `brief` set to the\nrewritten components, or `skip: true` if the user wants Scout to assume. Never\nanswer Scout's questions with guesses. Send later refinements to the same\n`conversationId`. A call with only a `conversationId` reads an interrupted turn.\n\nWhen `status` is `recommended`, Scout has split the work into `tasks`, one\nper model, each with up to five ranked `models`; cover every task. Each\nmodel's `cost` names the `endpointId` and `providerModelId` to call.\nExisting-only never broadens. For existing-first, if no existing candidate fits a\ntask, explain the gap and ask before a new conversation without `endpointIds`.\nCompare quality evidence, reference cost/time and watch-outs. Prefer the cheapest\nusable option the evidence supports, without claiming benchmarks prove\napplication accuracy. Use the project's actual SDK and protocol.\n\n## Measuring candidates\n\nEach task also has an `evaluation`: the checks (per model call, agent run or\nend-to-end outcome), labelled examples per candidate and when to stop a losing\ncandidate. Offer to run it before the user commits to a model. First assess the\nproject's readiness for this task:\n\n- **No eval setup:** propose a customer-owned setup. Langfuse is the default\n suggestion for its supported aggregate connector, not a requirement: existing\n local/custom eval scripts can report aggregates without a hosted platform.\n Phoenix/Arize and Braintrust are alternatives, not supported Scout connectors.\n Ask which system the user wants before creating accounts or resources.\n- **Setup exists but evidence is insufficient:** keep that system. Write a\n task-specific eval plan in the project's local Markdown decision record for\n the user or their coding agent to implement. Name exact candidates/endpoints,\n quality floor and task/agent/outcome checks, labelled boundary cases and\n controls, sample size, early-stop rule, spend cap, aggregate mappings and\n temporary run retention. Explain what the current evidence cannot decide.\n- **Suitable evals exist:** reuse their fixtures and definitions; add only the\n approved candidate runs. Do not build a second eval or copy their datasets.\n\nOpenMerit does not host or run these evals. The customer or their coding agent\nimplements and maintains them with the customer's tools; Scout keeps Viewer-only\naccess. Ask before model spend or any platform write. Without measured evidence,\nScout may suggest candidates, but do not claim validated model quality.\n\nReport what you measured with `scout_models`: the same `conversationId` and\n`results`, one aggregate per model and metric (`level`, `task` title, `scope`,\n`model` endpoint or model ID, `metric`, `value`, `higherIsBetter`,\n`samples`, `source`). Set `kind` to `usd` or `seconds` for measured cost\nor time (per call at the task level, per run at the agent level), so Scout uses\nyour cost instead of its estimate. Report each agent's own checks at the agent\nlevel: an end-to-end result also measures the agents you did not swap. Send\naggregates only, never inputs, outputs or records.\nScout ranks them above public benchmarks for this user only; models whose\n`quality.measured` is true rest on them.\n\nSwap one agent at a time, holding the other agents, prompts, fixtures and controls\nfixed. Use each agent's own checks to attribute failures. If all candidates score\n100%, the eval cannot separate their quality: add harder labelled cases before\nclaiming equivalent quality. Cost may break the observed tie, not prove equality.\n\n## Preserve evidence before cleanup\n\nBefore removing temporary comparison runs, save a local Markdown decision record\nwith the package/service versions, date, task and policy, exact candidates,\nunchanged controls, metric definitions/directions, sample counts, aggregate\nquality/cost/time, failures and exclusions, chosen model, limitations and next\nreview. Record regret against the cheapest measured candidate meeting the same\nquality floor; write \"not measurable\" when comparable evidence is missing.\nExclude secrets, private record IDs, prompts, outputs and trace bodies.\n\nTemporary comparison traces/records are not permanent: after the record is saved\nand checked, propose the exact newly created comparison runs to remove. Obtain\nexplicit scoped approval, including any cascading deletion, before the customer\nor their coding agent deletes them with customer-controlled write access. Scout's\nViewer key cannot do this. Never delete pre-existing customer records, reusable\nfixtures, dataset definitions or eval definitions. Verify the approved cleanup\nand retained controls, then record the outcome locally. If not approved, leave\nrecords unchanged and state cleanup is pending; do not imply it happened.\n\nIf the user has Langfuse, use `openmerit connect langfuse --help`: the web UI is\noptional. Headless setup requires a separate connection-manager approval with\n`openmerit connect langfuse --authorize --no-open`. Relay its approval link and\nexpiry; after approval, rerun that command. Existing recommendation keys cannot\nmanage connections. The user creates a separate Viewer key; receive it through\nprotected stdin or a secret-manager-injected environment, never chat, tool\narguments, shell literals, traced commands or tracked files. The CLI accepts\nnon-secret settings via `--config mappings.json` and reads LANGFUSE_PUBLIC_KEY\nand LANGFUSE_SECRET_KEY from its environment, or reads full settings via --stdin.\nA separate trusted MCP connection with the management key exposes\n`scout_connection` (status/configure/sync/disconnect/clear). For configure, keys\nmust come from client-controlled HTTP headers outside model context; if the\nclient cannot do this securely, use protected CLI input or the web UI instead.\nOnce the user has confirmed the connection and score/model mappings (including\na connection already recorded in the project), call `scout_models` with\n`sync: \"langfuse\"` on the first consultation and before a final model decision.\nThe CLI equivalent is `openmerit scout --conversation <id> --sync langfuse`.\nRefreshing that approved connection reads aggregates and updates Scout's cache;\nit does not run candidates or create/change records in Langfuse. Do not ask for\nnew spend or platform-write approval just to refresh it. Do not reconstruct and\nre-report old measurements from project notes instead of using the connection.\nIf connection status is unknown, check `openmerit connect langfuse --status`\nbefore proposing setup; application tracing keys alone do not prove a Scout\nconnection. If sync fails, disclose the failure and any use of cached evidence;\ndo not describe it as fresh. Never read trace bodies to work around missing\nmappings or untagged runs; use the aggregate report path for those gaps instead.\nResults are stored per user, used in new conversations and\nexpire after 90 days. Disconnect deletes the Viewer key and imported aggregates;\nDelete all evaluation data also deletes manually reported aggregates. Obtain\nconsent before deleting: headless CLI requires --yes, MCP requires confirm: true.\nDeleting the connection does not revoke the separate management device key.\nPast conversation text is not erased. Never put record IDs, emails or secrets in\n`scope` or `source`; use labels such as \"coding agent\" and \"held-out eval\".\n\n## Boundaries\n\nAsk before adding providers or credentials, spending, deploying or external\nwrites. Report recommendation, endpoint connectivity and application checks as\nseparate results, each only after it succeeds. Do not switch this coding agent's\nown model.\n\nIf Scout fails or has no suitable candidate/evidence for the required deployment,\nsay so and pause the model decision; do not substitute a remembered recommendation\nor SDK default. Continue only model-independent work. Local/browser models are not\nexempt when the catalogue lacks coverage. When an install or login waits for approval (exit code\n10), show the user the approval link and its UTC expiry in your reply, not only in\ncommand output, then rerun the same command once they approve. If it reports that the device key is missing,\nexpired or revoked, run `npx -y openmerit@latest login` and then\n`npx -y openmerit@latest install` again. Never ask the user to paste a key.\n","rule":"# Application model decisions · OpenMerit Scout\n\nBefore choosing, recommending, adding, downloading, replacing or configuring\nANY application inference model, load the `openmerit-scout` skill and consult\n`scout_models` on the `openmerit` MCP server before committing to a model.\nThis applies even when the user only asks you to build a feature, never mentions\nmodels or Scout, or names a model themselves (assess it; do not silently replace it).\n\nA pretrained model, local weights, browser inference, an SDK's default model,\nembeddings, OCR, speech, image classification, detection and segmentation all\ncount as model choices, not implementation details. Identify this decision before\nwriting model-specific code, installing a model package or downloading weights.\n\nFollow the skill's project access policy. If it is missing, ask and save it first.\nScout may answer with clarifying questions: relay them to the user and continue\nthe same Scout conversation with their answers before choosing.\nIf Scout is unavailable, fails or has no suitable evidence/candidate, disclose the\ngap and pause the model decision; do not fall back to a remembered or SDK-default\nmodel. You may continue work that does not commit to a model.\n\nDo not consult Scout for unrelated edits, normal inference calls using an unchanged\napproved model, or this coding agent's own model. Do not reselect approved models\nunless the task introduces or changes a model decision.\n\nWhen the user says \"update openmerit\", run\n`npx -y openmerit@latest update --scope user` (use `--scope project` if this\nrule is in the project's .claude/rules directory). Report the result, including\nany conflict or manual-upgrade requirement. Do not delete edited files, bypass\npermissions or rerun login automatically. A new session loads updated instructions.\n"}
|
|
1
|
+
{"format":1,"contract":"scout-recommend-v2","version":"0.3.11","skill":"---\nname: openmerit-scout\ndescription: Consults OpenMerit Scout before choosing, adding, downloading, replacing or configuring any application inference model, including implicit choices while building features, pretrained browser/local models, SDK defaults, embeddings, OCR, speech, classification, detection, segmentation, LLMs and agents. Not for unrelated edits, ordinary inference calls or this coding agent's own model.\n---\n\n# OpenMerit · Scout\n\nBefore introducing, recommending, replacing or configuring an application\ninference model, call the `scout_models` tool on the `openmerit` MCP server.\nThis applies even when the user never mentions models or Scout. Downloading local\nweights, using a pretrained browser model or accepting an SDK default is a model\ndecision: consult Scout before model-specific code, installs or downloads.\nPreserve the user's explicit model choice; assess it rather than silently replacing\nit. Leave unchanged, approved application selections in place.\n\n## Project policy\n\nRead `.openmerit/scout.json` before searching. If it is absent, ask once whether this\nproject uses **existing-only** (only endpoints it can already reach) or\n**existing-first** (prefer them, ask before searching the whole catalogue), and\nwhich public catalogue endpoint IDs it can access. Save the answer:\n\n```sh\nnpx -y openmerit@latest project --policy existing-only --endpoint-id <id> ...\n```\n\nNever infer access from a model name, SDK or environment-variable name. Never\nrecord credentials, private URLs, prompts or customer data. An empty inventory\nis not permission to search all models.\n\n## Searching\n\nCall `scout_models` with a non-confidential task description as `prompt` and\n`endpointIds` set to the saved inventory, including `[]` when empty. Send\nonly task requirements, never source files, secrets or real customer records.\nIf the MCP tool is unavailable, run\n`npx -y openmerit@latest scout \"<task>\" --json`; it applies the saved inventory.\n\nScout is a conversation with the agent behind openmerit.ai/scout. When\n`status` is `needs_answers`, fill in what the user or project already states,\nshow the user Scout's brief and remaining questions, and wait for their answers.\nThen call again with the returned `conversationId` and `brief` set to the\nrewritten components, or `skip: true` if the user wants Scout to assume. Never\nanswer Scout's questions with guesses. Send later refinements to the same\n`conversationId`. A call with only a `conversationId` reads an interrupted turn.\n\nWhen `status` is `recommended`, Scout has split the work into `tasks`, one\nper model, each with up to five ranked `models`; cover every task. Each\nmodel's `cost` names the `endpointId` and `providerModelId` to call.\nExisting-only never broadens. For existing-first, if no existing candidate fits a\ntask, explain the gap and ask before a new conversation without `endpointIds`.\nCompare quality evidence, reference cost/time and watch-outs. Prefer the cheapest\nusable option the evidence supports, without claiming benchmarks prove\napplication accuracy. Use the project's actual SDK and protocol.\n\n## Measuring candidates\n\nEach task also has an `evaluation`: the checks (per model call, agent run or\nend-to-end outcome), labelled examples per candidate and when to stop a losing\ncandidate. Offer to run it before the user commits to a model. First assess the\nproject's readiness for this task:\n\n- **No eval setup:** propose a customer-owned setup. Langfuse is the default\n suggestion for its supported aggregate connector, not a requirement: existing\n local/custom eval scripts can report aggregates without a hosted platform.\n Phoenix/Arize and Braintrust are alternatives, not supported Scout connectors.\n Ask which system the user wants before creating accounts or resources.\n- **Setup exists but evidence is insufficient:** keep that system. Write a\n task-specific eval plan in the project's local Markdown decision record for\n the user or their coding agent to implement. Name exact candidates/endpoints,\n quality floor and task/agent/outcome checks, labelled boundary cases and\n controls, sample size, early-stop rule, spend cap, aggregate mappings and\n temporary run retention. Explain what the current evidence cannot decide.\n- **Suitable evals exist:** reuse their fixtures and definitions; add only the\n approved candidate runs. Do not build a second eval or copy their datasets.\n\nOpenMerit does not host or run these evals. The customer or their coding agent\nimplements and maintains them with the customer's tools; Scout keeps Viewer-only\naccess. Ask before model spend or any platform write. Without measured evidence,\nScout may suggest candidates, but do not claim validated model quality.\n\nReport what you measured with `scout_models`: the same `conversationId` and\n`results`, one aggregate per model and metric (`level`, `task` title, `scope`,\n`model` endpoint or model ID, `metric`, `value`, `higherIsBetter`,\n`samples`, `source`). Set `kind` to `usd` or `seconds` for measured cost\nor time (per call at the task level, per run at the agent level), so Scout uses\nyour cost instead of its estimate. Report each agent's own checks at the agent\nlevel: an end-to-end result also measures the agents you did not swap. Send\naggregates only, never inputs, outputs or records.\nScout ranks them above public benchmarks for this user only; models whose\n`quality.measured` is true rest on them.\n\nSwap one agent at a time, holding the other agents, prompts, fixtures and controls\nfixed. Use each agent's own checks to attribute failures. If all candidates score\n100%, the eval cannot separate their quality: add harder labelled cases before\nclaiming equivalent quality. Cost may break the observed tie, not prove equality.\n\n## Preserve evidence before cleanup\n\nBefore removing temporary comparison runs, save a local Markdown decision record\nwith the package/service versions, date, task and policy, exact candidates,\nunchanged controls, metric definitions/directions, sample counts, aggregate\nquality/cost/time, failures and exclusions, chosen model, limitations and next\nreview. Record regret against the cheapest measured candidate meeting the same\nquality floor; write \"not measurable\" when comparable evidence is missing.\nExclude secrets, private record IDs, prompts, outputs and trace bodies.\n\nTemporary comparison traces/records are not permanent: after the record is saved\nand checked, propose the exact newly created comparison runs to remove. Obtain\nexplicit scoped approval, including any cascading deletion, before the customer\nor their coding agent deletes them with customer-controlled write access. Scout's\nViewer key cannot do this. Never delete pre-existing customer records, reusable\nfixtures, dataset definitions or eval definitions. Verify the approved cleanup\nand retained controls, then record the outcome locally. If not approved, leave\nrecords unchanged and state cleanup is pending; do not imply it happened.\n\nIf the user has Langfuse, use `openmerit connect langfuse --help`: the web UI is\noptional. Headless setup requires a separate connection-manager approval with\n`openmerit connect langfuse --authorize --no-open`. Relay its approval link and\nexpiry; after approval, rerun that command. Existing recommendation keys cannot\nmanage connections. The user creates a separate Viewer key; receive it through\nprotected stdin or a secret-manager-injected environment, never chat, tool\narguments, shell literals, traced commands or tracked files. The CLI accepts\nnon-secret settings via `--config mappings.json` and reads LANGFUSE_PUBLIC_KEY\nand LANGFUSE_SECRET_KEY from its environment, or reads full settings via --stdin.\nA separate trusted MCP connection with the management key exposes\n`scout_connection` (status/configure/sync/disconnect/clear). For configure, keys\nmust come from client-controlled HTTP headers outside model context; if the\nclient cannot do this securely, use protected CLI input or the web UI instead.\nOnce the user has confirmed the connection and score/model mappings (including\na connection already recorded in the project), call `scout_models` with\n`sync: \"langfuse\"` on the first consultation and before a final model decision.\nThe CLI equivalent is `openmerit scout --conversation <id> --sync langfuse`.\nRefreshing that approved connection reads aggregates and updates Scout's cache;\nit does not run candidates or create/change records in Langfuse. Do not ask for\nnew spend or platform-write approval just to refresh it. Do not reconstruct and\nre-report old measurements from project notes instead of using the connection.\nIf connection status is unknown, check `openmerit connect langfuse --status`\nbefore proposing setup; application tracing keys alone do not prove a Scout\nconnection. If sync fails, disclose the failure and any use of cached evidence;\ndo not describe it as fresh. Never read trace bodies to work around missing\nmappings or untagged runs; use the aggregate report path for those gaps instead.\nResults are stored per user, used in new conversations and\nexpire after 90 days. Disconnect deletes the Viewer key and imported aggregates;\nDelete all evaluation data also deletes manually reported aggregates. Obtain\nconsent before deleting: headless CLI requires --yes, MCP requires confirm: true.\nDeleting the connection does not revoke the separate management device key.\nPast conversation text is not erased. Never put record IDs, emails or secrets in\n`scope` or `source`; use labels such as \"coding agent\" and \"held-out eval\".\n\n## Boundaries\n\nAsk before adding providers or credentials, spending, deploying or external\nwrites. Report recommendation, endpoint connectivity and application checks as\nseparate results, each only after it succeeds. Do not switch this coding agent's\nown model.\n\nIf Scout fails or has no suitable candidate/evidence for the required deployment,\nsay so and pause the model decision; do not substitute a remembered recommendation\nor SDK default. Continue only model-independent work. Local/browser models are not\nexempt when the catalogue lacks coverage. When an install or login waits for approval (exit code\n10), show the user the approval link and its UTC expiry in your reply, not only in\ncommand output, then rerun the same command once they approve. If it reports that the device key is missing,\nexpired or revoked, run `npx -y openmerit@latest login` and then\n`npx -y openmerit@latest install` again. Never ask the user to paste a key.\n","rule":"# Application model decisions · OpenMerit Scout\n\nBefore choosing, recommending, adding, downloading, replacing or configuring\nANY application inference model, load the `openmerit-scout` skill and consult\n`scout_models` on the `openmerit` MCP server before committing to a model.\nThis applies even when the user only asks you to build a feature, never mentions\nmodels or Scout, or names a model themselves (assess it; do not silently replace it).\n\nA pretrained model, local weights, browser inference, an SDK's default model,\nembeddings, OCR, speech, image classification, detection and segmentation all\ncount as model choices, not implementation details. Identify this decision before\nwriting model-specific code, installing a model package or downloading weights.\n\nFollow the skill's project access policy. If it is missing, ask and save it first.\nScout may answer with clarifying questions: relay them to the user and continue\nthe same Scout conversation with their answers before choosing.\nIf Scout is unavailable, fails or has no suitable evidence/candidate, disclose the\ngap and pause the model decision; do not fall back to a remembered or SDK-default\nmodel. You may continue work that does not commit to a model.\n\nDo not consult Scout for unrelated edits, normal inference calls using an unchanged\napproved model, or this coding agent's own model. Do not reselect approved models\nunless the task introduces or changes a model decision.\n\nWhen the user says \"update openmerit\", run\n`npx -y openmerit@latest update --scope user` (use `--scope project` if this\nrule is in the project's .claude/rules directory). Report the result, including\nany conflict or manual-upgrade requirement. Do not delete edited files, bypass\npermissions or rerun login automatically. A new session loads updated instructions.\n"}
|
package/docs/scout-close-loop.md
CHANGED
|
@@ -314,6 +314,18 @@ failed read cannot be retried for one minute. A failed import leaves the previou
|
|
|
314
314
|
complete set intact. `conversationId` alone reads a saved answer, not a rerank;
|
|
315
315
|
send a follow-up or `sync` to recompute with the current results.
|
|
316
316
|
|
|
317
|
+
**Deployed 6 November 2026:** aggregate queries group mapped score names
|
|
318
|
+
within each experiment and trace role, rather than requesting every metric
|
|
319
|
+
separately. Experiment tags and explicit model aliases still isolate attribution.
|
|
320
|
+
A rate-limited sync honors Langfuse's `Retry-After`
|
|
321
|
+
duration, persists the cooldown and continues to report failure during it; a
|
|
322
|
+
failed refresh is not a successful cache hit. Without a valid duration the
|
|
323
|
+
fallback is one minute. Langfuse's Metrics quota can be hourly or daily and is
|
|
324
|
+
shared across the organization's projects and keys, so repeatedly retrying or
|
|
325
|
+
changing keys does not solve exhaustion. See [Langfuse API limits](https://langfuse.com/faq/all/api-limits).
|
|
326
|
+
This server update does not grant access to trace or observation bodies and
|
|
327
|
+
does not execute models or change Langfuse records.
|
|
328
|
+
|
|
317
329
|
### When a sync imports zero aggregates
|
|
318
330
|
|
|
319
331
|
A connected Viewer key and a successful experiment read do not establish that
|
package/docs/scout.md
CHANGED
|
@@ -63,6 +63,13 @@ explicitly use `--skip` to continue with stated assumptions. A recommendation
|
|
|
63
63
|
names exact model/endpoint IDs, quality evidence, estimated workload cost and gaps.
|
|
64
64
|
Cheapest meeting the quality bar is the default; an explicit quality or recency
|
|
65
65
|
priority changes the order. The bar is an estimate, not a measured accuracy floor.
|
|
66
|
+
Under the quality priority, unmeasured quality estimates within three points of
|
|
67
|
+
the best one not yet placed count as tied, and the cheaper model ranks first.
|
|
68
|
+
Measured models keep their measured order.
|
|
69
|
+
An unmeasured candidate that another unmeasured candidate beats on both quality
|
|
70
|
+
estimate and estimated cost is left out, so a shortlist can have fewer than five
|
|
71
|
+
models. Candidates at the same price stay, and measured candidates are never left
|
|
72
|
+
out this way.
|
|
66
73
|
Unknown processing location is not evidence of residency compliance.
|
|
67
74
|
|
|
68
75
|
## Close the loop
|
|
@@ -167,11 +174,51 @@ asynchronous and broader deletion may require contacting the policy's address.
|
|
|
167
174
|
|
|
168
175
|
## Refresh and data handling
|
|
169
176
|
|
|
177
|
+
### Task-relevant catalogue evidence — deployed, 9 November 2026
|
|
178
|
+
|
|
179
|
+
The agent's internal `get_model_details` tool accepts optional `benchmarkIds`:
|
|
180
|
+
up to 40 benchmark or leaderboard IDs from task research, shared across up to
|
|
181
|
+
eight requested models. When supplied, only those results are returned, even
|
|
182
|
+
when their standings are weaker than unrelated evidence. Split larger selections
|
|
183
|
+
across calls; an empty list selects no evidence. Without this option, the tool
|
|
184
|
+
keeps its strongest-40 benchmark and strongest-30 leaderboard defaults.
|
|
185
|
+
|
|
186
|
+
Each model's `evidenceCoverage` reports distinct result `total` and `omitted`
|
|
187
|
+
counts separately for `benchmarks` and `leaderboards`. Omitted counts include
|
|
188
|
+
results outside an explicit selection as well as results beyond default caps.
|
|
189
|
+
`missingRequested` lists requested IDs with no result for that model, including
|
|
190
|
+
unknown IDs; absence is not a zero score. Hard constraints and endpoint inventory
|
|
191
|
+
still apply: details retain `constraintViolation` rather than hiding an
|
|
192
|
+
ineligible model's record or making it eligible.
|
|
193
|
+
|
|
194
|
+
Equal chat benchmark scores share competition ranks (1, 1, 3), including ranks
|
|
195
|
+
shown in citations. Those ranks remain among all measured catalogue models, not
|
|
196
|
+
just those meeting a filter. Leaderboards keep their own ranks and direction.
|
|
197
|
+
Hosted Scout has served this since 9 November 2026; it does not by itself
|
|
198
|
+
establish better shortlist quality. The homepage has no FAQ block; no homepage
|
|
199
|
+
claim changes.
|
|
200
|
+
|
|
170
201
|
Public benchmarks, catalogue prices and vendor metadata may be incomplete or
|
|
171
202
|
outdated; citations do not certify model quality, access, residency or zero
|
|
172
203
|
retention. Verify the exact endpoint in your application. No claim is made that
|
|
173
204
|
all catalogue models can be run in your environment.
|
|
174
205
|
|
|
206
|
+
**Deployed 6 November 2026:** decision models that OpenRouter routes (supplied
|
|
207
|
+
choices, ordered rubric scores and boolean probabilities through its alpha
|
|
208
|
+
Decisions API) are listed alongside Vercel AI Gateway's. An OpenRouter route
|
|
209
|
+
whose expiration date has passed is no longer listed; a route with a removal
|
|
210
|
+
date still ahead shows it as `retiresAt`, and Scout mentions it when it
|
|
211
|
+
recommends a model through that route. Other hosts' deprecation dates do not
|
|
212
|
+
remove a route. Moving aliases such as OpenRouter's `~lab/…-latest` IDs are
|
|
213
|
+
never treated as one model.
|
|
214
|
+
|
|
215
|
+
**Deployed 6 November 2026:** more host routes are matched to the model they
|
|
216
|
+
serve when a host spells the version or names the lab differently, for example
|
|
217
|
+
Amazon Bedrock's `eu.cohere.embed-v4:0`, Azure's `embed-v-4-0` or Fireworks'
|
|
218
|
+
`glm-5p2`. A model that OpenRouter or Vercel AI Gateway listed under its own
|
|
219
|
+
spelling, such as `cohere/embed-5-fast` beside `cohere/embed-v5.0-fast`, is
|
|
220
|
+
merged into the existing model, so it no longer appears twice.
|
|
221
|
+
|
|
175
222
|
On enabled deployments, reported and imported aggregates belong to your account
|
|
176
223
|
and apply across conversations. They are not shared with other customers. The
|
|
177
224
|
connector reads experiment headers/metadata and aggregate metrics, never trace
|
package/docs/troubleshooting.md
CHANGED
|
@@ -47,4 +47,4 @@ Both are retired in npm 0.3.0; see the [Inference Terminal](inference-terminal.m
|
|
|
47
47
|
|
|
48
48
|
Include OpenMerit, Pi and Node.js versions, the client/scope, the triggering command, and a sanitized error. Remove credentials, private paths, prompts and proprietary data before sharing. Do not attach credential or connection files containing private configuration.
|
|
49
49
|
|
|
50
|
-
[Open an issue on GitHub](https://github.com/
|
|
50
|
+
[Open an issue on GitHub](https://github.com/openmerit-ai/openmerit-core/issues)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openmerit",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.11",
|
|
4
4
|
"description": "Evidence-driven model decisions for coding harnesses.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -36,11 +36,11 @@
|
|
|
36
36
|
},
|
|
37
37
|
"repository": {
|
|
38
38
|
"type": "git",
|
|
39
|
-
"url": "git+https://github.com/
|
|
39
|
+
"url": "git+https://github.com/openmerit-ai/openmerit-core.git"
|
|
40
40
|
},
|
|
41
|
-
"homepage": "https://github.com/
|
|
41
|
+
"homepage": "https://github.com/openmerit-ai/openmerit-core#readme",
|
|
42
42
|
"bugs": {
|
|
43
|
-
"url": "https://github.com/
|
|
43
|
+
"url": "https://github.com/openmerit-ai/openmerit-core/issues"
|
|
44
44
|
},
|
|
45
45
|
"publishConfig": {
|
|
46
46
|
"access": "public"
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"check": "npm run check --workspaces --if-present",
|
|
57
57
|
"test": "npm run test --workspaces --if-present",
|
|
58
58
|
"pretypecheck": "npm run build:site",
|
|
59
|
-
"typecheck": "tsc -p tsconfig.json && tsc -p tsconfig.scout.json && tsc -p scout/agent/tsconfig.json",
|
|
59
|
+
"typecheck": "tsc -p tsconfig.json && tsc -p tsconfig.scout.json && tsc -p scout/agent/tsconfig.json && tsc -p email/tsconfig.json",
|
|
60
60
|
"check:typescript": "node scripts/check-typescript.ts",
|
|
61
61
|
"types:workers": "node scripts/worker-types.ts",
|
|
62
62
|
"check:worker-types": "node scripts/worker-types.ts --check",
|
|
@@ -68,9 +68,10 @@
|
|
|
68
68
|
"memo": "node demo/memo/preview.ts",
|
|
69
69
|
"check:demo": "npm ci --ignore-scripts --prefix demo && npm run build:site && tsc -p tsconfig.memo.json && node --test demo/test/*.test.mjs demo/test/*.test.ts",
|
|
70
70
|
"prepare": "npm run build",
|
|
71
|
-
"verify": "npm test && npm run check && npm run typecheck && npm run check:typescript && npm run build && npm run check:demo && npm run check:scout && npm run check:docs && npm run build:scout && git diff --check",
|
|
71
|
+
"verify": "npm test && npm run check && npm run typecheck && npm run check:typescript && npm run build && npm run check:demo && npm run check:scout && npm run check:email && npm run check:docs && npm run build:scout && git diff --check",
|
|
72
72
|
"prepublishOnly": "npm run verify",
|
|
73
73
|
"scout:refresh": "node scout/refresh.mjs",
|
|
74
|
+
"check:email": "node --test email/*.test.ts",
|
|
74
75
|
"check:scout": "node --test scout/test/*.test.mjs scout/test/*.test.ts && node --check scout/worker.mjs",
|
|
75
76
|
"build:scout": "node scripts/build-scout.mjs"
|
|
76
77
|
},
|
|
@@ -97,7 +98,6 @@
|
|
|
97
98
|
"typebox": "1.3.27",
|
|
98
99
|
"typescript": "^5.9.3",
|
|
99
100
|
"web-vitals": "6.2.3",
|
|
100
|
-
"wrangler": "4.136.3"
|
|
101
|
-
"yaml": "2.9.1"
|
|
101
|
+
"wrangler": "4.136.3"
|
|
102
102
|
}
|
|
103
103
|
}
|