openmerit 0.1.6 → 0.1.7-preview.1

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.
Files changed (60) hide show
  1. package/CHANGELOG.md +4 -4
  2. package/README.md +61 -40
  3. package/dist/eval/src/adapters.mjs +73 -0
  4. package/dist/eval/src/cli.mjs +103 -0
  5. package/dist/eval/src/config.mjs +102 -0
  6. package/dist/eval/src/process.mjs +44 -0
  7. package/dist/eval/src/report.mjs +51 -0
  8. package/dist/eval/src/runner.mjs +106 -0
  9. package/dist/eval/src/scout.mjs +37 -0
  10. package/dist/terminal/public/app.js +36 -36
  11. package/dist/terminal/public/flow.css +1 -1
  12. package/dist/terminal/public/flow.js +26 -26
  13. package/dist/terminal/public/index.html +3 -2
  14. package/dist/terminal/public/styles.css +320 -91
  15. package/dist/terminal/src/cli.mjs +2 -0
  16. package/dist/terminal/src/demo-policy.mjs +205 -0
  17. package/dist/terminal/src/enterprise-sample.mjs +151 -0
  18. package/docs/adapter-guide.md +2 -2
  19. package/docs/agent-evaluations.md +101 -0
  20. package/docs/architecture.md +3 -3
  21. package/docs/automation.md +5 -5
  22. package/docs/budgets.md +2 -2
  23. package/docs/commands.md +7 -5
  24. package/docs/demo-backfill.md +3 -1
  25. package/docs/demo-fieldkit.md +3 -1
  26. package/docs/demo-placement.md +3 -1
  27. package/docs/demo-spam.md +3 -1
  28. package/docs/demo-support.md +3 -1
  29. package/docs/demo.md +22 -5
  30. package/docs/first-trial.md +2 -2
  31. package/docs/getting-started.md +23 -12
  32. package/docs/index.md +18 -29
  33. package/docs/inference-terminal.md +90 -54
  34. package/docs/interactive-demo.md +118 -0
  35. package/docs/lifecycle.md +4 -4
  36. package/docs/metrics-and-evidence.md +3 -3
  37. package/docs/operations.md +3 -5
  38. package/docs/pi-extension.md +6 -6
  39. package/docs/roadmap.md +17 -17
  40. package/docs/scout.md +206 -0
  41. package/docs/security.md +6 -4
  42. package/docs/site-demo.md +4 -0
  43. package/docs/site-design.md +7 -1
  44. package/docs/site-documentation.md +9 -3
  45. package/docs/site-domain-migration.md +57 -0
  46. package/docs/site-dynamic-og.md +2 -2
  47. package/docs/site-faq-maintenance.md +121 -6
  48. package/docs/site-hero-resolution.md +2 -0
  49. package/docs/site-illustration-sequences.md +3 -1
  50. package/docs/site-illustration-transparency.md +80 -0
  51. package/docs/site-memo.md +6 -0
  52. package/docs/site-og-image.md +1 -1
  53. package/docs/site-publication-2026-10-14.md +29 -0
  54. package/docs/site-scout-decisions-experiment.md +87 -0
  55. package/docs/site-scout.md +254 -0
  56. package/docs/site-terminal-preview.md +96 -3
  57. package/docs/site-themes.md +30 -0
  58. package/docs/testing.md +37 -78
  59. package/docs/troubleshooting.md +3 -3
  60. package/package.json +9 -3
@@ -0,0 +1,254 @@
1
+ # Scout publication — 14 October 2026
2
+
3
+ Scout's beta is published at `https://openmerit.ai/scout/`. It accepts real prompts through the page, `POST /scout/api/recommend`, and the remote Streamable HTTP MCP endpoint `/scout/mcp`. The MCP tool is `scout_models`. This is separate from the npm package and Inference Terminal; no npm release was made.
4
+
5
+ ## Launch services
6
+
7
+ - Scout Worker: `openmerit-scout`, version `b2e1028c-76e3-4dbe-84e3-99e3bc4030d7`.
8
+ - Domain router: `openmerit-domains`, version `ed1d3c26-5c81-4c7c-aabf-f1b35b0149f5`. Only `/scout` and `/scout/*` use the new service.
9
+ - Main website: `openmerit-site`, version `338e4337-7d37-48d8-b64b-ec980ab9fe71`, publishes the homepage navigation link and generated documentation. Its application modules, bindings, storage, containers, and asset-routing settings were preserved from the deployed version.
10
+ - Dashboard service is unchanged.
11
+
12
+ The Scout Worker has one SQLite Durable Object, a bundled real-data snapshot, static assets, and a cron at `7 * * * *` UTC. Its production bootstrap refreshed all five sources successfully at `2026-10-14T15:42:58.432Z`. The resulting snapshot survived the following Worker deployment. A local scheduled-event invocation also refreshed and persisted the index. The cron was registered during deployment; the first production cron tick was not awaited for this publication record.
13
+
14
+ At that successful collection, the index contained 137 benchmark series, 101 with results matched to available models, 211 evidence-backed models, and 3,838 aggregated measurements. These counts are live metadata, not a permanent coverage promise. Data is real, but old/undated evidence remains labelled. The beta does not establish SOTA task-selection quality; see the maintained [Scout guide](scout.md) for ranking, scope and data limits.
15
+
16
+ ## Verification
17
+
18
+ The repository verification passed before publication. Focused checks additionally cover source outage recovery, new document results, catalogue removals, English task phrases, text-only extraction, frozen-clock handling, MCP validation, and routing isolation. A real MCP SDK client (version 1.32.1, installed only in a temporary verification directory) initialized, discovered the tool, and called it against both the Worker URL and the public domain.
19
+
20
+ Live API checks returned five distinct candidates for invoice extraction, coding, research, support writing, long-document summaries and text extraction. Observed Worker-URL round trips were approximately 170–460 ms across six requests; one browser request through the public domain took 173 ms. These are samples from this environment, not latency guarantees. Cloudflare's clock does not advance during synchronous computation, so unavailable server ranking time is `null`, never reported as a measured zero.
21
+
22
+ Browser checks exercised typed prompts, Enter submission, examples, evidence expansion, the capability index, agent connection details, unsupported tasks, and copy feedback. Desktop and a 433 CSS-pixel viewport rendered without horizontal overflow; physical mobile hardware was not tested. Main-site navigation, documentation search assets, legacy redirects, memo gating and the demo/dashboard routes were checked after publication. No OTP email or paid inference session was started.
23
+
24
+ ## Publication boundaries and rollback
25
+
26
+ Do not deploy the older root `wrangler.jsonc` as a shortcut. The main application source still diverges from production; see [the earlier publication record](site-publication-2026-10-14.md). This launch downloaded the active main-site modules and changed only public assets. Existing interactive-demo scripts/styles, memo access script and shared styles were checked against live assets before activation.
27
+
28
+ The prior main-site version was `62ac686b-2895-4263-8e55-053119d2eb27`; the prior domain-router version was `7e5cbee3-1c26-4cb8-afd6-07b6a092ee31`. They remain rollback references. Reverting the domain router removes the Scout public route; the separate Worker can remain deployed during investigation.
29
+
30
+ Private operational snapshots, metadata, publication scripts and deployment responses are under `/private/tmp/openmerit-scout-publication-20261014/`. Do not commit credential-bearing operational metadata. Scout source and configuration live on `codex/scout`. The guide is labelled Hosted beta and links to its published Markdown; GitHub main-branch source/edit links are omitted for Scout until that guide is merged to main. Future Scout-only application deployments use `wrangler.scout.jsonc`; documentation changes must also publish the generated main-site docs through the preserved-application workflow.
31
+
32
+ ## Comparison table — published 14 October 2026
33
+
34
+ The results now use a native HTML table with reusable table styles, following the [shadcn Table composition](https://ui.shadcn.com/docs/components/base/table) within the site's existing HTML/CSS/JavaScript stack. This adds no browser framework or table library. Ranking and API/MCP contracts are unchanged.
35
+
36
+ | Before | After | Why |
37
+ | --- | --- | --- |
38
+ | Separate grid headers and expandable cards | Semantic column headers, row headers and aligned numeric cells | Keep comparisons aligned and expose table structure to assistive technology |
39
+ | Repeated labels beneath each metric | Units in the column headings | Reduce visual noise while preserving price and speed context |
40
+ | Provider names alone | 27 locally bundled provider favicons with text fallback | Recognize labs without third-party image lookups |
41
+ | Mobile cards | Horizontal table scrolling with a sticky model column | Preserve comparable columns on narrow screens |
42
+ | Entire row as disclosure | Named Evidence buttons with expanded state and associated detail rows | Make the evidence action explicit and keyboard accessible |
43
+
44
+ The favicon registry matches explicit catalogue namespaces, not arbitrary provider strings. Origins and hashes are recorded in `scout/provider-assets.json`; several publisher SVG favicons were rasterized to PNG. Unknown namespaces or failed images retain a text initial. Model labels remain visible beside decorative icons. Loading states retain the previous table height, and scroll guidance appears only when the table actually overflows.
45
+
46
+ Published Scout Worker version `bb0fc221-b9dd-4e42-8d27-3b5fec7b5d02` and main-site documentation version `9c557935-f896-4ad1-95f6-473794b36433`. The domain router is unchanged. The main-site update changed documentation assets only and preserved application modules, bindings, storage, containers and routing. Operational snapshots are in `/private/tmp/openmerit-scout-table-publication-20261014/`. Previous Scout and main versions in the launch section remain rollback references.
47
+
48
+ `npm run verify` passed all 330 tests; focused Scout checks passed again after the final presentation adjustments. Browser checks covered real coding/invoice searches, an unsupported task, Enter/Space evidence toggles, copying a model ID, loaded provider images, and narrow layouts down to 320 CSS pixels without page overflow. Expanded evidence remains readable at the viewport width even when the table is scrolled. Live desktop and 433 CSS-pixel checks passed with no browser errors; physical mobile hardware was not tested. All 34 updated page, style, script, guide and icon assets matched the live domain byte-for-byte. The production index remained healthy at its successful `2026-10-14T16:07:59.287Z` hourly refresh.
49
+
50
+ ## Decisions, tool calling and memory — published 14 October 2026
51
+
52
+ Scout Worker `e80dca5a-64e7-443d-8216-5d5e781596a5` now uses one server-side OpenAI Decisions request for prompt interpretation across the page, JSON API and MCP tool. The existing environment key was installed as the Scout Worker's `OPENAI_API_KEY` secret; no key is shipped to browsers. Main-site documentation version `d637a04e-3d5c-4990-a296-6429ec1efb62` publishes the guide and data-handling changes. The domain router is unchanged. The main application modules were captured and verified byte-for-byte unchanged; bindings, storage, containers and routing were preserved.
53
+
54
+ The production interpreter fixes the tested incidental-tool/fictional-agent and unrequested-JSON false positives, distinguishes session and persistent memory, exposes consequential uncertainty, and validates typed answers before ranking. Provider failures return an unavailable error instead of keyword results. Shared in-memory admission is bounded to eight concurrent calls and 120 starts per minute, with a four-second provider timeout and no automatic retries. These are service load limits, not durable account spending caps.
55
+
56
+ BFCL v4 adds six correlated series: three native function-calling evaluations and three external-memory backends. Model matching is conservative, original configurations and unknown measurement dates are retained, and all six series share one benchmark-family identity. Required memory and tool use now enforce declared tools support and direct evidence; compact MCP responses keep qualifying evidence visible. The fixed 80/13/7 ranking formula remains unchanged.
57
+
58
+ At verification the healthy six-source snapshot was `2026-10-14T17:05:42.081Z`: 213 indexed models, 143 benchmark series, 107 series with matched results, and 4,003 measurements. BFCL contributed 132 measurements across 22 matched models; 20 also declared tools support and were eligible for persistent-memory tasks. The hourly trigger remains minute 7 UTC. Counts and rankings can change as feeds update.
59
+
60
+ Validation:
61
+
62
+ - `npm run verify`: all 340 tests passed. New tests cover observed false positives, invalid/refused answers, provider timeout/failure, request admission, memory/tool filters, BFCL parsing and recovery, and shared API/MCP behavior.
63
+ - Thirty real Decisions diagnostic calls passed all 83 selected checks; median interpretation was 447 ms, sample p95 897 ms. These development cases do not establish general classification accuracy or downstream task success; see [the experiment record](site-scout-decisions-experiment.md).
64
+ - Eight live API cases passed, including invoice wording variants, fictional agents, supplied comparisons, executed functions, persistent memory, session memory and unsupported image generation. The invoice pair returned identical model IDs. Seven of eight measured requests took 310–540 ms end to end; the first took 1,427 ms. This small sample is not a latency guarantee.
65
+ - Live MCP initialization, discovery and tool calls passed. Compact results included actual memory and tool evidence. Browser submission, copying results, expanded BFCL evidence, local provider images and the pre-submit disclosure were checked. Desktop and 390 CSS-pixel layouts had no page overflow or browser errors; physical mobile hardware was not tested.
66
+ - All 32 changed public assets matched the deployed domain byte-for-byte. Main Worker modules were re-downloaded after publication and matched the captured originals.
67
+
68
+ Operational files are outside the repository at `/private/tmp/openmerit-scout-decisions-publication-20261014/`; synthetic diagnostic responses, live API/MCP evidence and the page screenshot are in this task's artifact directory. Prior Worker versions above remain rollback references. The guide documents that task descriptions now reach OpenAI and that memory scores evaluate external stores, not built-in model retention.
69
+
70
+ ## Task comparisons and the ordered five — published 14 October 2026
71
+
72
+ Scout Worker `75a2f812-37a7-4cf8-8272-7e28455a452b` publishes ranking version 2 and interpreter version 4. Main-site documentation version `0b3105c0-a682-49b3-8d46-9c3f4487f518` publishes the maintained guide. The domain router is unchanged. Previous Scout `e80dca5a-64e7-443d-8216-5d5e781596a5` and main-site `d637a04e-3d5c-4990-a296-6429ec1efb62` are rollback references.
73
+
74
+ The ranker now compares shared benchmark scores between candidates, groups correlated evidence, and orders the whole eligible pool by the strongest supported pairwise preferences without cycles before selecting five. It replaces the earlier within-cohort percentiles and fixed 80/13/7 blend. One Decisions call now supplies 17 typed choices, including workload size and a quality/cost/latency priority. Reference cost uses separate input/output rates; completion time includes the first answer token delay and throughput from each matching configuration. Older snapshots without first-answer measurements cannot silently supply reasoning-token latency. A data-format revision selects a compatible bundled snapshot during deployment. No database, extra inference call, model-specific ranking override, or production dependency was added.
75
+
76
+ The table shows cost per 1,000 reference tasks, reference completion seconds, and the disclosed token assumptions. The first-place badge was removed. These values are estimates from public evidence, not actual executions of the user's task. The guide documents policy weights, comparison gaps, unknown timing, reasoning/image cost exclusions, and the difference between rank and the aggregate supporting score.
77
+
78
+ Validation included `npm run verify` (352 tests), four separate invoice-scorer tests, a 120-call paid comparison, and live API/MCP checks. The paid comparison froze one snapshot and the ranking policy before calls. It reused eight public real invoices as a regression set and added four synthetic text-extraction cases and four synthetic tool-call cases. The pool was the union of the old/new top fives, with two invoice boundary controls. No production ranking code imports these answers or model identities. Three requests ran concurrently, each once, with a 90-second timeout and no retry or provider fallback. A harness pause after the first unknown charge resumed only unattempted cases against the identical manifest.
79
+
80
+ | Task | Correct fields/cases across the five, before → after | Top-five overlap, before → after | Pair order agreement, before → after |
81
+ | --- | --- | --- | --- |
82
+ | Visual invoice extraction | 231/240 → 233/240 | 4/5 → 4/5 | 8/10 → 9/10 |
83
+ | Text extraction | 56/60 → 59/60 | 3/5 → 4/5 | 6/10 → 4/10 |
84
+ | Tool calling | 16/20 → 20/20 | 4/5 → 4/5 | 6/10 → 8/10 |
85
+
86
+ Overlap and ordering use a measured-policy reference within the tested pool: the already-declared balanced 60/20/20 preference rule applied to observed accuracy, reported cost and elapsed time. It is not an objective universal ranking or a comparison against every catalogue model. All ten pairs within each recommended five are evaluated. Both invoice shortlists produced valid JSON on all 40 calls. HTTP failures count against accuracy; three Kimi timeouts, one Nemotron rate limit and four DeepSeek rate limits remain in the record. All six models with successful tool responses passed the simple tool cases; no external tool action was executed. Reported inference cost was $0.427400, with timeout charges unknown. This small test shows improved aggregate selection and mixed ordering, not reliable exact top-five accuracy. In particular, text ordering regressed and expensive candidates remain overrated on some tasks.
87
+
88
+ The live invoice page returned the evaluated five in 383 ms in one browser observation. API samples for invoice, text and tool tasks took 556, 792 and 1,714 ms; these are samples, not guarantees. API and MCP returned the same ordered invoice IDs and ranking metadata. All six sources were healthy on the compatible `2026-10-14T17:55:04.185Z` snapshot: 213 indexed models, 143 series, 107 with matched results and 4,013 measurements. The hourly trigger remains `7 * * * *`; a subsequent production cron tick was not awaited.
89
+
90
+ Browser checks covered the table, source evidence, keyboard disclosure, reference assumptions and loaded provider icons, with no browser errors. The measured narrow viewport was 433 CSS pixels with no page overflow; physical mobile hardware was not tested. Deployment metadata and verification scripts remain outside the repository in `/private/tmp/openmerit-scout-ranking-publication-final-20261014/`. The frozen manifest, raw calls, metrics, report and live screenshot are retained in this task's `scout-ranking-eval` artifact directory.
91
+
92
+ Post-publication verification matched all 32 changed public assets, excluding only the existing Cloudflare-injected analytics beacon from HTML comparisons. Re-downloaded main Worker modules matched the captured originals, and the expected main version was active. Main application bindings, storage, containers and asset routing were preserved.
93
+
94
+
95
+ ## Ranking version 3 — published 14 October 2026
96
+
97
+ Added typed operation scoping, required-versus-useful capability weighting, a conservative benchmark margin, and a 35,613-byte file of calibration aggregates. Measured ranking uses quality, observed charges and full request time, with repeated request failures shared across calibration tasks. There are no model/provider conditionals, additional runtime inference calls, or new databases. Two parser boundary repairs keep retry loops out of single-dispatch evidence and visual inputs out of the short-text workload bucket.
98
+
99
+ Calibration comprises 438 observations (410 task observations plus 28 additional route-health observations). No held-out outcome is used to choose or score a model in production. The first 358-call test improved membership 25/35→32/35 and order 39/70→59/70 but exposed failures being forgotten across task slices. A second, frozen validation used 159 fresh calls across six text types; the unchanged visual shortlist retained its original 40-call test. Final membership 24/35→28/35 and order 38/70→55/70. None of the seven exact five-model orders was established. Text 43/45→42/45, retrieval 45/45→43/45, and photos 135/150→134/150 remain regressions, explicitly disclosed in the public guide and report. Do not describe the text regression as solved or the complete five as validated.
100
+
101
+ There were 835 new OpenRouter requests across both iterations, with known charges $1.9646678058; failed/timed-out requests can have unknown billing and Decisions usage is separate. Old rows were reused without repeating calls. Evaluation code runs only in opt-in local scripts; hourly production refresh still fetches six public feeds. The 2-point benchmark indifference band and 20-point full-preference gap are policy choices, not confidence intervals.
102
+
103
+ UI review: the table identifies calibration accuracy, reported cost, median timing and sample count; benchmark rows retain their separate reference labels. Native evidence disclosure works, favicons remain bundled, and a 390px browser check contained the 670px table in its horizontal scroll region with no page overflow. Physical hardware was not tested. Main-site publication must preserve the current application modules and bindings through the captured production workflow; never deploy the root Wrangler configuration.
104
+
105
+ Published Scout Worker `5dcffb9e-5055-464d-b8f9-d9f1deefbf9d` and main documentation Worker `664523ed-0aae-456c-bdad-b4be779e4678`. The main application modules, bindings, storage and routing are preserved. Full `npm run verify` passed 362 tests; the independent extraction/SQL/tool scorers passed another seven tests. Deployment repeated Scout and documentation checks. Seven live API requests matched the frozen final lists, MCP returned the same measured text shortlist, client task overrides were rejected, and the public calibration file matched exactly. Live API round trips were 525–1,612 ms; the browser text request took 623 ms. Live measured-table verification at 390px found no page overflow, and no browser runtime errors were observed.
106
+
107
+ Final report: `/Users/lazim/.codex/visualizations/2026/10/14/01a13ab1-5051-79f2-b483-5392dab0f97e/scout-ranking-v4/report.html`. The first iteration remains in the sibling `scout-ranking-v3` folder. Raw protocols, scores, frozen policy hashes and calibration aggregates are retained with the reports.
108
+
109
+
110
+ ## Terminal-style interface — 14 October 2026
111
+
112
+ | Before | After | Why |
113
+ | --- | --- | --- |
114
+ | Large marketing headline, illustration, slogans, and repeated overlines | One task heading and a compact input | Put the search first and describe the action directly |
115
+ | Green accents, score bars, bordered rows and boxed favicons | Neutral terminal surfaces, plain measurements, open rows and 13px provider marks | Make model names and comparisons the main visual content |
116
+ | Shared marketing stylesheet and downloaded font | Scoped Scout stylesheet using the terminal’s system typeface | Keep Scout lean and prevent marketing styles from affecting the workspace |
117
+ | Large agent promotion and separate supporting sections | Compact native API/MCP, capability and source disclosures | Keep setup and provenance available without competing with results |
118
+
119
+ The same live API, ranking, calibration disclosures and reference estimates remain in use. Unknown or failed provider images now leave a text-only identity. Search status gives total round-trip time; the API still exposes ranking time separately. No motion was added to search or result updates. Published as Scout Worker `325e6da9-1451-44a7-a3ed-274de638092b` and documentation Worker `30edf3a6-33a4-4ad3-92aa-f3ab922e68c1`. The existing main application modules, bindings, containers and routing were preserved. All 34 changed public assets matched the built files, excluding only the existing edge-injected analytics script in HTML. The retired 152 KiB illustration is omitted from the Scout asset bundle.
120
+
121
+ `npm run verify` passed all 362 tests plus type, build and syntax checks. Browser review covered real measured and benchmark searches, a typed task submitted with Enter, model evidence, copy feedback, agent setup deep links, 320px and 390px layouts, and a light-palette preview. Table overflow stays inside its region and the model column remains pinned. The live desktop search returned five rows in 0.48 seconds with no failed provider images, page overflow or console errors. Light appearance was reviewed using a local stylesheet preview; physical mobile hardware was not tested. The live screenshot is saved in the task’s `scout-ui-redesign` artifact directory.
122
+
123
+
124
+ ## Capability index refinement — 14 October 2026
125
+
126
+ | Before | After | Why |
127
+ | --- | --- | --- |
128
+ | Mixed-size word cloud, loose wrapping, underlined matches and hover-only counts | Equal-size capability names in an aligned responsive list, with visible benchmark/model counts and checked task matches first | Make coverage scannable and distinguish task matches without implying links |
129
+
130
+ The list uses existing API data and native list semantics. Coverage counts are not eligibility counts. The disclosure remains keyboard-operable and updates in place after a search; ranking and data handling are unchanged. Homepage FAQ evidence and readiness claims remain accurate without edits.
131
+
132
+ Published as Scout Worker `1ebbbd44-95ed-4bab-8e7a-4e41e99063eb` and documentation Worker `ae4af99b-e515-4333-a9b1-fe956053223d`, preserving the main application modules and bindings. Full verification passed 362 tests. Browser checks covered the initial list, Enter-key disclosure, a real invoice search, three matched capabilities placed first, 12 equal-size labels, and a 390px layout without page overflow. Live rendering showed three aligned columns and no console errors. The 34 published changed assets matched the local build (HTML normalization removes only the existing Cloudflare analytics beacon).
133
+
134
+
135
+ ## Task input refinement — 14 October 2026
136
+
137
+ | Before | After | Why |
138
+ | --- | --- | --- |
139
+ | Fixed textarea with a manual resize handle | Content-driven height on input, examples, restored pages and viewport changes; bounded scrolling for long prompts | Keep the text visible without dragging the field or pushing the action indefinitely down the page |
140
+ | Transparent editable area inside the form | Distinct neutral field fill, inset padding, direct placeholder and field-level focus ring | Make the input boundary and keyboard focus clear |
141
+
142
+ Search semantics, prompt limits and data handling are unchanged. Relevant homepage FAQ claims remain accurate. The public Scout guide describes the input and keyboard behavior.
143
+
144
+ Published as Scout Worker `f7fe8215-d11e-408c-8df4-d4bab173ff73` and documentation Worker `312b0848-1413-4bfb-9d50-8c66ce067bad`. All 34 changed public assets matched the checked build, excluding only the existing edge-injected analytics script; main modules and bindings were preserved. The first adapter-guide request returned different bytes immediately after deployment; a fresh request and a complete verification pass matched the expected active version. `npm run verify` passed 362 tests. Browser checks covered expansion from 88px to 192px, shrinking back after deletion, bounded scrolling for a long paste, Shift + Enter, refitting on a 390px viewport, example replacement, and the light palette. The live multiline input fit all text at 120px and Enter returned five results with no console errors. Physical mobile hardware was not tested.
145
+
146
+ ## Official provider links — published 14 October 2026
147
+
148
+ | Before | After | Why |
149
+ | --- | --- | --- |
150
+ | Model and pricing links led to OpenRouter model pages | A shared official-provider destination in page, JSON and MCP results | Take readers directly to the model's provider |
151
+ | A generic model/pricing label beside catalogue prices | Provider page link with explicit quoted-price attribution | Keep direct provider navigation distinct from OpenRouter-sourced rates |
152
+
153
+ The curated registry covers all 213 models in the checked seed index. New, unreviewed providers return a null URL instead of a router or inferred destination. Gemma and GPT-OSS use model documentation. Official destinations were read on 14 October; redirects stay with the provider. Ranking, numeric rates, inference routes and benchmark evidence are unchanged. The public guide documents the nullable URL contract. Homepage FAQ claims still describe the terminal/Pi workflow and require no copy changes.
154
+
155
+ Published as Scout Worker `bcbb8c81-18d3-4b44-a31d-1ee07fcb6f21` and documentation Worker `250dcd56-6ea6-4ba3-ad1a-efd4348b87d7`. `npm run verify` passed 366 tests, including provider-domain coverage, unknown-provider handling, model-family destinations and API/MCP provenance checks. All 34 deployed assets matched the checked build after removing only the existing edge-injected analytics script; main modules and bindings were preserved. The live page, JSON API and MCP returned the same five invoice models with Google, OpenAI and Alibaba provider URLs. The browser showed the new provider link and quote attribution with no console errors. Direct API/MCP verification used the deployment-check User-Agent; Python's default User-Agent received an edge 403. No provider inference evaluations were rerun for this navigation-only change.
156
+
157
+ ## Compact controls and expandable rows — published 15 October 2026
158
+
159
+ | Before | After | Why |
160
+ | --- | --- | --- |
161
+ | Generic sentence under the heading | Live model, provider, benchmark-series and source-feed counts | Show the scope of the current index |
162
+ | Active textarea outline | Subtle fill change with no stroke | Keep focus calm and the editable area distinct |
163
+ | Text and arrow submit button | Arrow-only button with an accessible name | Reduce repeated copy |
164
+ | Copy JSON beside the results | Full responses remain available through the API | Keep the comparison focused |
165
+ | Prompt-processing sentence beside examples | Data handling remains in the public guide | Remove secondary copy from the form |
166
+ | Evidence column and per-row control | Clickable rows with native model-name disclosure buttons | Expand anywhere in the row while preserving table and keyboard semantics |
167
+ | Measurement caption below the rows | Measurement scope inside Assumptions & limitations | Keep the default results compact without dropping the evidence context |
168
+
169
+ The shared status payload now counts distinct model-provider namespaces, consolidating Meta's two aliases and ignoring display-label variations. This counts model creators, not hosting endpoints. Ranking and prompt handling are unchanged. The public guide documents the controls, count definitions and disclosure placement.
170
+
171
+ Published as Scout Worker `66b9a20d-8bf5-4c69-affd-aff728cbaca0` and documentation Worker `5519ceef-bd9f-4537-b5df-0c81d2ab7149`. Full verification passed 367 tests; deployment repeated the Scout and documentation checks after the final count-wrapping adjustment. All 34 published assets matched the build after removing only the existing edge analytics script, with main modules and bindings preserved. Live metadata and the header agreed on 213 models, 26 providers, 146 benchmark series and six source feeds. Checks covered active input without an outline, icon-button and Enter submission, empty results, four-column layout, row clicks, Enter/Space disclosure, provider links, measurement context inside the limitations disclosure, and no console errors. The local light preview at 390px kept whole count labels together, used a 44px submit button and bounded table/detail scrolling without page overflow. Desktop and dark appearance were checked live at 1644px. Physical mobile hardware was not tested.
172
+
173
+
174
+ ## Borderless task form and placeholder examples — 15 October 2026
175
+
176
+ | Before | After | Why |
177
+ | --- | --- | --- |
178
+ | Outlined form and rectangular submit button | Borderless form with the existing field fill and a circular arrow button | Keep the task area distinct with less chrome |
179
+ | Separate example task buttons | Short placeholder examples that rotate only when empty and unfocused | Keep examples in the field without inserting or submitting text |
180
+ | Widely spaced index counts | Tighter counts separated by interpuncts | Read the index scope as one line |
181
+ | Standalone index status strip | Collection times and failures remain inside Sources | Remove an extra line from the default view |
182
+ | Undivided logo and Scout label | Subtle vertical divider | Clarify the product relationship |
183
+
184
+ The keyboard hint no longer starts with an Enter glyph. Placeholder updates pause on hidden pages and for reduced-motion preferences; they do not make API calls or affect user text. The examples row is removed rather than restyled, following the requested placeholder direction. Ranking, provider links, data handling and table interactions are unchanged. The public guide describes the revised input behavior. Homepage FAQ claims were reviewed against `docs/site-faq-maintenance.md`; no terminal or Pi claim changes are needed.
185
+
186
+ Published as Scout Worker `0b7dcf1e-3920-4720-a24c-f010538c303b` and documentation Worker `0e27a9e9-8708-4ae2-83cc-8bf4000953b8`. Full verification passed 367 tests. All 34 changed published assets matched the build after removing only the existing edge analytics script; current main application modules and bindings were preserved. Browser checks covered placeholder rotation with empty input, pausing on focus and on filled input after blur, no automatic search, real invoice submission, native row disclosure by mouse and keyboard, a 390px dark layout with a 44px round button and no page overflow, and the desktop light palette. The live search returned the same five invoice models with no console errors. Source collection dates remain available in Sources. Reduced-motion and hidden-page guards were reviewed in code; physical mobile hardware was not tested. Live empty and populated screenshots are saved in the task's `scout-ui-redesign` artifact directory.
187
+
188
+ ## Execution-profile ranking — 15 October 2026
189
+
190
+ Ranking version 4 extends the existing calibration path to specified code functions, dependent tool actions and external-memory episodes. Decisions still makes one request with 18 choices; three new operation values preserve required code/tool/memory capabilities when another answer disagrees. Matching now includes retention and action-loop requirements, and prefers the newest eligible matching profile. No model-specific score, prompt-example match, production dependency, paid hourly job, or runtime reranker was added.
191
+
192
+ A neutral-prior quality estimate was evaluated but not published; it changed older profiles without fresh validation and did not improve the accepted memory ordering. The existing pairwise policy is unchanged, and the UI retains raw observed accuracy. Full-episode charges and elapsed time include all calls and memory sessions. Non-strict tool tasks grade observable actions and prerequisites separately from JSON transport; final prose precision is not graded. Memory grading accepts presentation wrappers around the returned facts. Strict-format tasks cannot match these non-strict profiles.
193
+
194
+ Development evidence combines the previous broad audit (now explicitly development data) with three additional cases and one mechanically chosen benchmark challenger per category. Each pool has six models. Independent validation uses three disjoint fresh cases per category, including cursor pagination, LRU behavior, path normalization, corrected payment/event/inventory records, policy boundaries, and fresh-session preference changes. Tool effects are local fixtures and memory uses a real local key/value store; these are authored application tasks, not private customer logs.
195
+
196
+ Protocol note: the action grader and neutral quality prior were corrected from calibration outputs after test dispatch began but before any held-out results were inspected. Final predictions, policy, evidence, and scorer hashes were then frozen. No held-out observations enter the runtime evidence. This timing is disclosed rather than described as a fully preregistered experiment. Small samples and the six-model pools limit conclusions about exact order or global membership.
197
+
198
+ UI copy changes are limited to “task-check accuracy” and “full task time” in metric explanations. Existing page controls, provider links, and styling remain unchanged. Homepage FAQ claims were checked; terminal/Pi behavior is unaffected. The full proposal scored 24/40 → 25/40 pair agreement and 17/20 → 18/20 membership, with no exact lists. A generic release gate required non-regression in pair agreement, membership and mean selected quality. Only memory passed (5/10 → 7/10 pairs, 4/5 → 5/5 membership, 75.8% → 82.5% quality); the other three new profiles were withheld. The typed tool fix changes benchmark eligibility and receives a separate fresh release check. Publication is recorded below after verification.
199
+
200
+ The initially corrected benchmark tool shortlist passed only 3/10 pair comparisons on two additional cases; its first pick attempted an unauthorized refund after an instruction embedded in tool data (blocked by the local harness). That release was withheld. The three unmeasured candidates were then evaluated on all six existing calibration cases, producing a nine-model action pool. No test outcomes were copied into calibration. A further two-case tool holdout was authored and dispatched after freezing the resulting five. Memory retained its accepted profile; its two-case follow-up matched 10/10 pairs, with an ambiguous literal “table only” value noted separately from ordering.
201
+
202
+ The final expanded tool shortlist matched 10/10 pairs on two new cases, with all ten episodes taking permitted actions. Two episodes paused at the local evaluation spend guard and resumed from their exact successful responses without repeating provider calls; analysis uses summed provider-call time uniformly to exclude that harness pause. The tool shortlist is GLM 5.3 Flash, Gemini 3.8 Flash, Gemini 4 Argon, Claude Sonnet 5.5, Claude Opus 5.5. The memory shortlist is GPT-5 Mini, DeepSeek V3.2 Exp, GPT-5.2, o3, Claude Sonnet 4.5. Each final check covers order within its selected five only. Coding and medium-input extraction proposals remain withheld.
203
+
204
+ The turn used 204 completed task episodes and 651 provider calls, costing $1.7865065584 in reported charges (excluding Decisions). Historical audit observations reused for calibration are separate from those new calls. Full verification passed 371 tests; independent scorer checks passed three tests. No inference was added to the hourly refresh or recommendation ranking stage.
205
+
206
+ Published as Scout Worker `7409528b-85ac-42b4-8cce-0ba6e1c861c2` and documentation Worker `09da2864-04cf-4c1c-b938-89864f10d184`, preserving the existing main application modules and bindings. The live JSON API matched the frozen four-category candidate lists and the MCP memory result matched the same order. Live browser verification covered a real tool-task submission, the five measured recommendations, expandable row evidence, official provider pricing links, and the limitations disclosure. No new inference call is added to ranking; the live tool recommendation returned in 0.56 seconds during this check. This one observation is not a latency guarantee. Deployment repeated the Scout and docs checks after correcting the multi-call evidence label from “calls” to “tasks.”
207
+
208
+ ## Coding and extraction follow-up — evaluated, not released, 15 October 2026
209
+
210
+ Two model-agnostic paired-evidence proposals were evaluated after ranking version 4. The first compared cost and time on matching cases and used an unamplified quality gap; the second retained the existing quality preference scale after subtracting one paired standard error from the observed quality difference. These were experimental policy choices, not confidence guarantees. Each test froze predictions, graders and policy before dispatch and used four new cases per category across six candidates (48 requests per test). The first test became explicitly retired development data for the second proposal; none of the second test entered that proposal. Code ran in a bounded QuickJS sandbox. Extraction required strict JSON and exact fields. The original v4 measured policy remained the independent ordering reference.
211
+
212
+ Neither proposal met the exact-five release gate. First test: coding pair agreement 6/10 → 7/10, membership 4/5 → 4/5; extraction pairs 9/10 → 9/10, membership 5/5 → 4/5, with selected quality regression. Second test: coding pairs 6/10 → 5/10 and membership 4/5 → 4/5; extraction pairs 7/10 → 8/10 and membership 5/5 → 5/5. A prose-prefixed code answer violated the code-only contract; truncated code, missed corrections, four timeouts and one rate limit remain in the results. No retry or provider fallback was used. Raw JSON and executable code checks were kept distinct.
213
+
214
+ The 96 requests cost $0.499428995 in reported charges, excluding Decisions; the four timeout charges remain unknown. The last candidate passed 378 local tests, which does not validate its recommendation quality. Both candidate implementations and evidence files were withheld; production source was restored to the released implementation. No Worker was deployed. The existing public guide's statement that exact-five ordering remains unproven still applies, and no public behavior or homepage FAQ claim changed. Frozen inputs, outputs, scores, candidate source and both reports are archived in the task's `scout-ranking-v5-20261015` artifact directory.
215
+
216
+ ## Detailed placeholders and fixed footer — published 15 October 2026
217
+
218
+ | Before | After | Why |
219
+ | --- | --- | --- |
220
+ | Short examples swapped abruptly every five seconds | Paragraph examples hold for ten seconds, fade out in 180ms and in over 240ms | Give readers useful task context and a quieter transition |
221
+ | Form had its own filled outer box | Transparent, unpadded form around the distinct input surface | Align the field with the page and remove the extra box |
222
+ | Footer followed the short page content | Fixed bottom footer with reserved content and scroll space | Keep the evaluation link at the bottom without hiding the last source details |
223
+
224
+ Focus, text input, page visibility and reduced-motion changes cancel any pending placeholder swap. Reduced motion keeps a static example. Native placeholder text never becomes submitted input. The public Scout guide documents the revised behavior; homepage FAQ claims were reviewed and need no change. Ranking and data handling are unchanged.
225
+
226
+ Full verification passed 371 tests. Browser checks confirmed intermediate fade opacity, stable field height through rotation, pausing on focus and filled input, Shift+Enter, a 390px layout without horizontal overflow or clipped example text, and clear space between the final source details and fixed footer at the end of scrolling. The reduced-motion and hidden-page cancellation paths were reviewed in code; physical mobile hardware was not tested.
227
+
228
+ Published as Scout Worker `ac207166-0abc-4773-951e-f1721528a49a` and documentation Worker `50027870-52e4-4014-9f2e-92b6f3655d55`. All 34 changed published assets matched the build, excluding only the existing injected edge analytics beacon. Main application modules, bindings, containers and asset routing were preserved. The live invoice prompt returned five recommendations in 0.55s with no browser errors. This is a UI smoke check, not a new ranking evaluation or latency guarantee. Screenshots and sanitized verification logs are in the task's `scout-placeholder-polish-20261015` artifact directory.
229
+
230
+ ## Richer sources and specialist discovery — published 15 October 2026
231
+
232
+ The hourly index now adds a bounded Hugging Face metadata sample across eight pipelines. The initial snapshot has 175 distinct repositories, including 49 with structured reported results. Legacy model-card and new eval-results records retain original datasets, metrics, units, configurations, splits, dates, setup notes and source links. Repository revisions, declared licenses, languages, parameter counts and listed live hosting routes remain metadata, not performance guarantees. No weights or repository code are downloaded or executed. Individual Hub queries are capped at 2 MB; all eight must succeed, and a major coverage drop preserves prior data and timestamps.
233
+
234
+ A separate collapsed **Specialist models** section and API/MCP `specialists` object expose up to three metadata matches outside the ranked five. Domain/language checks and document-specific tags avoid incompatible matches; “object” in “JSON object” does not match object detectors. Component diversity and metadata completeness determine discovery order, with unknown quality/cost/time kept null. Ranking tests assert that adding Hub discovery cannot change the five. MCP limits evaluation records to four per specialist and reports the total. Source disclosures now show purpose, coverage, collection/source dates, archived observations and limits; task calibration is separate. Missing dates remain unknown and publication dates are not described as measurement dates. The public Scout guide was updated; homepage terminal/Pi FAQ claims are unaffected.
235
+
236
+ A new ranking experiment made 132 requests: six fresh calibration cases and six fresh holdout cases per category, across six coding and five extraction candidates. The same v4 measured policy was applied without provider/model coefficients. Calibration-only evidence and predictions were frozen before holdout dispatch. Coding improved from 7/10 to 8/10 ordered pairs and 4/5 to 5/5 membership; extraction fell from 8/10 to 7/10 pairs with 5/5 membership unchanged. Neither exact-five gate passed. Both profiles remain outside runtime evidence; the deployed ranking policy and calibration file are unchanged. No result claims that these errors are fixed.
237
+
238
+ The proposed coding five passed all fresh checks, but their first three positions shifted on cost/time. Extraction had 30/30 valid JSON responses, with two models missing fields. The case/scorer normalization amendment was made from calibration before holdout and preserved original grades. Charges total $0.581873295 reported, excluding Decisions; two filtered calibration responses have unknown charges, with $0.30 reserved inside the $2 guard. Test outputs, protocol hashes, raw responses and the cost/speed/order report are archived in the task's `scout-ranking-v6-20261015` artifact directory. These are authored realistic tasks and a bounded tested pool, not private records or catalogue-wide proof.
239
+
240
+ Published as Scout Worker `0407849d-209c-4380-a848-2f2dbcf4442c` and documentation Worker `f1852730-6266-4581-9365-582e328ab31b`. Full verification passed 375 tests; the final source-size/retention changes passed all 62 Scout checks, and all 13 documentation checks passed again. Thirty-four public assets matched the deployed bytes after removing only the existing edge analytics beacon. Main modules, bindings, containers and asset routing were preserved.
241
+
242
+ Live status exposes seven healthy sources, 213 benchmark-backed models, 146 benchmark series and 175 specialist repositories. JSON API and MCP checks confirmed separate specialist evidence and unchanged ranking version 4 with neither withheld profile present. The normal refreshed Epoch feed adds benchmark observations and changes the live coding fallback order; the experiment's “before” remains the frozen pretest list. No ranking-policy or calibration-file change was published. The extraction baseline stayed in the same order. Live invoice browser search returned in 0.71s, with the five existing measured recommendations plus three separate specialist matches; this is a smoke check, not a latency guarantee. Source disclosures, reported metrics and their caveats, no browser errors, and a 390px source layout without horizontal overflow were verified. Physical mobile hardware was not tested. The live screenshot is saved with the evaluation artifacts.
243
+
244
+
245
+ ## Agent-evaluation eligibility API — 15 October 2026
246
+
247
+ Deployed Scout Worker version `7ddeacd3-1310-48bd-b546-60fcab4fa4ef` with optional validated `modelIds` in HTTP/MCP. Model eligibility is applied before ranking. Production HTTP checks returned the single requested eligible model, returned no models for an empty inventory, and rejected duplicate IDs with HTTP 400. A live MCP call returned the same scoped model and selection acknowledgement. This does not change ranking weights or publish the separate npm evaluation preview. The main website Worker was not deployed.
248
+
249
+
250
+ ## Model detail cleanup — published 15 October 2026
251
+
252
+ Removed the shared prose summary of calibration accuracy, request success, comparison coverage and confidence from every expanded model row. Details now begin with the model ID, followed by source-linked evidence and pricing. Ranking, API/MCP metadata and the existing limitations disclosure are unchanged. Updated the public Scout guide and reviewed homepage FAQ claims.
253
+
254
+ Published as Scout Worker `a9c5cca6-8ca6-4866-8628-b936d723a685`. All 65 Scout checks and 13 documentation checks passed. The deployed JavaScript and table stylesheet match the local source bytes. Live invoice search returned five results; all five detail containers begin with the ID and omit the summary. The expanded GPT-5 Mini row was visually checked with no browser errors. Screenshot: `/Users/lazim/.codex/visualizations/2026/10/15/scout-detail-cleanup/live.jpg`. The main website Worker was not deployed.
@@ -1,6 +1,8 @@
1
1
  # Hosted Inference Terminal sample
2
2
 
3
- This separate preview is configured for `https://dash.openmerit.site/`. It uses the isolated terminal branch and its own Cloudflare Worker, `openmerit-terminal-preview`. It does not deploy `wrangler.jsonc`, the main website, or the interactive inference demo.
3
+ Domain operations: see the [primary domain migration](site-domain-migration.md) for current routing, email, auth, and deployment constraints. Historical publication records below retain their original domains.
4
+
5
+ This separate preview is configured for `https://dash.openmerit.ai/`. It uses the isolated terminal branch and its own Cloudflare Worker, `openmerit-terminal-preview`. It does not deploy `wrangler.jsonc`, the main website, or the main website’s interactive inference demo. The terminal-specific comparison lives at `/demo` on this Worker.
4
6
 
5
7
  ## Build and deploy
6
8
 
@@ -10,11 +12,11 @@ npm run verify
10
12
  npm run deploy:dash-preview
11
13
  ```
12
14
 
13
- The deploy command pins Wrangler 4.136.3 and uses `wrangler.terminal.jsonc`. Its build hook rebuilds the terminal preview, runs documentation checks, and checks/tests the terminal workspace before upload. The exact `dash.openmerit.site` custom domain uses the existing Cloudflare account. No storage, container, AI, secret, or external service binding is configured. The only binding serves bundled public assets from `dist/terminal-preview/`.
15
+ The deploy command pins Wrangler 4.136.3 and uses `wrangler.terminal.jsonc`. Its build hook rebuilds the terminal preview, runs documentation checks, and checks/tests the terminal workspace before upload. The `openmerit-domains` router owns the `dash.openmerit.ai` custom domain and forwards requests to this Worker through its `TERMINAL` service binding. Both Workers use the existing Cloudflare account. No storage, container, AI, secret, or external service binding is configured. The only binding serves bundled public assets from `dist/terminal-preview/`.
14
16
 
15
17
  `scripts/build-terminal-preview.mjs` creates this asset directory from the same browser bundle and icons as the local terminal. It adds preview metadata, noindex, and a sample-only bootstrap marker; it never copies a project snapshot. `packages/terminal/hosted/worker.mjs` imports only the fictional sample generator, never the collector or local CLI. The Worker reuses each generated sample for its 15-second time bucket. Browser polling and reduced-motion behavior remain the same as the local interface.
16
18
 
17
- `/api/info` selects sample mode and identifies the hosted preview. `/api/sample` exposes the fictional environment; other API paths return 404, and mutations return 405. The visible sample disclosure remains present, and the workspace picker offers no real environment. Static assets and API responses carry a same-origin content policy and indexing restrictions. HTML responses use `no-transform` so the zone’s automatic analytics script injection cannot alter the preview HTML. Script and stylesheet responses allow Cloudflare compression to reduce transfer time; main-site analytics settings are unchanged. `/robots.txt` also requests exclusion. This is public link sharing, not password protection.
19
+ `/api/info` selects sample mode and identifies the hosted preview. `/api/sample` exposes the fictional enterprise environment, `/api/demo` exposes the comparison, and `/api/sample-seed` supplies the small deterministic browser seed. Remaining API paths return 404, and mutations return 405. The visible sample disclosure remains present, and the workspace picker offers no real environment. Static assets and API responses carry a same-origin content policy and indexing restrictions. HTML responses use `no-transform` so the zone’s automatic analytics script injection cannot alter the preview HTML. Script and stylesheet responses allow Cloudflare compression to reduce transfer time; main-site analytics settings are unchanged. `/robots.txt` also requests exclusion. This is public link sharing, not password protection.
18
20
 
19
21
  ## Package delivery
20
22
 
@@ -147,3 +149,94 @@ After publication, the VM updated from the registry using `npm install -g openme
147
149
  Friends can update with `npm install -g openmerit@preview`, stop the running terminal, and launch `openmerit dash` again in the application directory. This verifies the saved VM workload and supported source patterns; it does not establish complete discovery of arbitrary applications or reconstruct missing usage. The hosted sample and main website were not deployed.
148
150
 
149
151
  Evidence: `/private/tmp/terminal-preview4-release/verify.log`, `pack.json`, `build.json`, `registry.json`, `tags.json`, `tarball-vm.json`, `registry-vm.json`, and `persistent-vm.json`. Publication screenshot: `/private/tmp/terminal-preview4-release/npm-published.png`.
152
+
153
+
154
+ ### Sample synchronized with preview.5 — 10 October 2026
155
+
156
+ Published source commit `0648af7` to `dash.openmerit.site` as Worker version `1cff2493-3b72-4609-ad6c-7bf02d47d669`. The sample now uses the browser assets from npm `0.1.6-preview.5`, including the historical activity ranges, revised evidence displays, service identities, and current map bundles. Repository discovery and phased indexing remain local collector behavior; the hosted Worker still imports only the fictional sample generator. No actual repository, VM history, or local environment was uploaded. The obsolete interim installer assets are no longer included; npm is the documented delivery channel.
157
+
158
+ The deployment hook passed 171 terminal tests, 11 documentation checks, and syntax checks. All 26 public assets matched the local build over HTTPS. The sample matched the current generator (allowing only negligible cross-runtime floating-point differences), with 9,600 requests, 40 agents, 140 tasks, and 21 models. `/api/info` identifies a hosted sample, `/api/snapshot` returns 404, and POST to `/api/sample` returns 405. All six views passed browser checks at desktop and 390-pixel widths with no page overflow or console errors. The 7d/All time controls, agent inspector, and sample-only environment picker worked; the optional map also represented all requests without mobile page overflow. Physical phones were not tested.
159
+
160
+ Only the terminal sample was deployed; the npm package, private VM service, and main website were unchanged. Evidence is retained at `/private/tmp/terminal-sample-preview5/deploy.log`, `live.json`, and `live-overview.png`.
161
+
162
+ ### Enterprise comparison — implementation, 10 October 2026
163
+
164
+ The hosted root now uses the enterprise grouped sample described in `inference-terminal.md`. `/demo` and `/demo/` serve the terminal with an explicit before/after switch; all request and token volumes remain identical across the switch. Standard published model rates and provider links are bundled with the deterministic scenario. This is an illustrative cost calculation, not a measured optimization result. Browser loads use a small seed instead of transferring the full 9,600-row snapshot; full sample APIs remain available. The local collector and npm release are unchanged. Deployment verification is recorded below after publication.
165
+
166
+ Published commit `9412b38` as Worker version `4ceaa337-fc28-47fb-af4e-c61b3386fad5`. The root contains 9.6 million represented requests, 200 agent IDs, 699 task IDs, 21 models, 93.5 billion tokens and approximately $118,991 in modeled token cost with partial price coverage. The comparison uses nine model assignments across six providers, with 94.8 billion identical tokens in each state: $248,117.60 before and $89,371.07 after, a computed 64.0% difference. These are scenario totals, not measured OpenMerit results.
167
+
168
+ Full verification passed 288 tests and the applicable syntax, build and documentation checks. The final deployment repeated 178 terminal tests and documentation checks. Local browser checks covered all six tabs at desktop and 390 px, keyboard stage selection, seven-day ranges, model names after switching, and the price inspector's 18 official-source links. The live root's larger totals and unknown-cost explanations were verified, and the published comparison switched all nine model assignments while retaining the request total. No page or inspector overflow or browser errors were observed. Root, `/demo`, `/demo/`, application JavaScript, styles and the optional map bundle matched the local build over HTTPS. The seed response contains only a recipe version and timestamp; `/api/snapshot` remains 404 and sample mutations return 405.
169
+
170
+ The first deployment revealed Cloudflare's canonical-HTML redirect behavior: fetching `/demo/index.html` through the asset binding redirects to `/demo/`. The final Worker fetches that canonical directory directly so both comparison URL forms return 200 without a redirect loop. Evidence: `/private/tmp/enterprise-verify.log`, `/private/tmp/enterprise-deploy-final.log`, `/private/tmp/terminal-enterprise-demo/live.json`, `/private/tmp/terminal-enterprise-demo/live-overview.png` and `/private/tmp/terminal-enterprise-demo/live-models.png`.
171
+
172
+
173
+ ### Insurance comparison and evidence policy — implementation, 10 October 2026
174
+
175
+ The comparison scenario is now `insurance-tech-demo`: 200 fictional application workers, 700 task IDs, ten insurance workflow families, six model services, and the same 9.6 million represented requests and 94.8 billion tokens before and after. A small reviewed catalog replaces the earlier unconditional cheap-model assignments. A replacement must retain its configured service and output contract, match or improve the selected comparable public tool-use, capability and reasoning scores, and reduce token cost or have a matched latency improvement. Decision workflows additionally require accuracy and calibration evidence. Jev is recognized as a typed-decision model; it is not used without those checks.
176
+
177
+ Three workflows qualify in the reviewed catalog, with seven baselines retained. The scenario computes $277,301.98 before and $228,960.34 after, a 17.4% modeled token-cost reduction. The evidence drawer includes source links, score/configuration details, rejected candidates and the limitations of selected publisher point estimates. This does not establish application-level quality, latency, or universal benchmark superiority. The previous 64.0% comparison in the historical record above is superseded.
178
+
179
+ The After preference menu offers default, ZDR, open weights, no open weights, US-developer and Chinese-developer choices. Biases rank eligible replacements without weakening the checks. The current catalog yields the same three swaps in every preference; no additional ZDR, open-weight or Chinese replacement qualifies. The hard no-open-weights setting flags three incompatible retained baselines as unresolved. ZDR describes the documented endpoint policy and does not establish privacy across routers or application logs; developer origin does not establish residency.
180
+
181
+ Full local verification passed 295 tests, including 185 terminal tests, plus syntax, types, build, demo and documentation checks. Browser checks covered all six views, six preferences, keyboard selection and focus, URL persistence across navigation, seven-day and thirty-day comparisons, and a 390-pixel layout with no page or drawer overflow. No console warnings or errors were observed. These changes affect the hosted fictional demo, not production model routing. Publication verification is recorded below after deployment.
182
+
183
+ Published implementation commit `0c7e9ed` as Worker version `add11fe1-bf20-4fff-808a-2d9a4535a3fe`. Deployment repeated 185 terminal tests and the documentation checks. Live root HTML, both `/demo` URL forms, application JavaScript, styles, and the optional map bundle matched the built assets over HTTPS. The comparison API confirmed 9.6 million requests, 200 workers, 700 task IDs, the three qualified swaps, and three unresolved workloads for the no-open-weights setting; invalid preferences fall back to default. The browser seed is 33 bytes, `/api/snapshot` remains 404, and POST to `/api/demo` returns 405. The root enterprise snapshot remains deeply equal to the prior implementation at a fixed timestamp.
184
+
185
+ All six published views passed desktop and 390-pixel browser checks. Preference persistence, the evidence drawer, keyboard interaction and restored focus passed, with no horizontal page overflow or console warnings/errors. Physical phones were not tested. Only the hosted sample Worker was deployed; npm, the private VM service, and the main website were unchanged. Evidence: `/private/tmp/insurance-verify.log`, `/private/tmp/insurance-deploy.log`, `/private/tmp/terminal-insurance-demo/live.json`, `/private/tmp/terminal-insurance-demo/live-preferences.png`, and `/private/tmp/terminal-insurance-demo/live-evidence.png`.
186
+
187
+
188
+ ### Expanded insurance comparison — implementation, 10 October 2026
189
+
190
+ The reviewed search now includes 25 model/service offers across all six configured services, plus Jev as an explicitly out-of-stack candidate. Workloads no longer have hand-selected candidate lists or an original-provider-only restriction. Model identity is separate from the serving offer, so a move from Groq to Baseten for the same gpt-oss checkpoint is reported as a service change. Every matched metric on each required benchmark axis must pass; a second passing metric cannot mask a regression. Public model-card evidence does not establish endpoint quality parity or insurance-task performance.
191
+
192
+ At fixed 30-day usage, four model changes and one service change produce $215,363.17 in modeled token cost versus $277,301.98 before, a 22.3% reduction. Five workflows retain their baseline. The soft preferences still converge on these choices under the reviewed evidence: the UI now explicitly reports this and shows match counts, qualifying alternatives, and before/after models and services per workload. The hard no-open-weights option has three unresolved workloads and blocks the entire After plan; no baseline open models or partial savings are presented as a compliant After result. These outcomes supersede the three-change comparison above.
193
+
194
+ Full verification passed 299 tests, including 189 terminal tests, plus syntax, types, build, demo and documentation checks. A new test renders the actual comparison and evidence views for all six preferences, including the blocked plan. Desktop browser checks verified preference selection, keyboard navigation with restored focus, URL state, the model inventory, evidence drawer and disclosure state. The published comparison subsequently passed 390-pixel checks for the expanded decisions table, evidence drawer and blocked plan with no horizontal page overflow. Physical phones were not tested. Changes affect the fictional hosted comparison; no production routing or local collector behavior changed. Publication verification follows after deployment.
195
+
196
+ Published implementation commit `9390c9d` as Worker version `5fa69c0e-3443-4af5-9d0a-d21c16411b15`. The deployment hook repeated 189 terminal tests and documentation checks. Root HTML, both comparison URL forms, application JavaScript, styles and optional map assets match the build over HTTPS. All six API preferences match the local model policy: five feasible options keep 9.6 million requests and the same modeled total; the closed-only option has no After records or models and a null total. It reports three blocking workflows. Invalid preferences fall back to Default. The seed remains 33 bytes, root enterprise inventory remains 21 models, and collector/mutation routes remain unavailable.
197
+
198
+ Live browser verification covered the new model/service decisions, the hard-preference blocked view and return to baseline, restored focus, and the mobile evidence drawer. No console errors or warnings were observed on the live tabs. Only the hosted sample Worker was deployed; npm, the VM service and main website were unchanged. Evidence: `/private/tmp/demo-expand-verify-final.log`, `/private/tmp/demo-expand-deploy.log`, `/private/tmp/terminal-insurance-demo/expanded-live.json` and `/private/tmp/terminal-insurance-demo/expanded-live-choices.png`.
199
+
200
+
201
+ ### Incomplete comparison plans — implementation, 10 October 2026
202
+
203
+ The closed-only comparison now keeps seven qualifying workload assignments visible and lists three unresolved workloads with their Before model. An incomplete After snapshot contains only qualifying records, models and deployments; it does not silently restore an open-weight baseline. The comparison total and savings stay unavailable, while per-workload costs and the explicitly labeled qualifying-workload summary remain usable. Each comparison window carries baseline requests and qualified requests. Before still shows the complete baseline. This supersedes the whole-plan blocking behavior recorded above. Validation and publication are recorded below after completion.
204
+
205
+
206
+ Published implementation commit `85029e6` as Worker version `bd3a939b-6bde-4cf4-a796-8e4147d6b19b`. Full verification passed 299 tests, including 189 terminal tests, plus syntax, types, build, demo and documentation checks. The deployment repeated terminal and documentation checks. All six preference API responses and public asset hashes match the build. Closed-only now exposes 6.72 million represented requests across seven qualifying assignments and six models; all corresponding After assignments are closed-weight. The complete baseline remains 9.6 million requests and the full-plan After total is null. Other preferences retain their prior results.
207
+
208
+ Browser checks covered all six views, range changes, the complete Before baseline, evidence drawer, desktop and 390-pixel layout. No page overflow or console errors/warnings were observed; physical phones were not tested. The live Models view shows both unresolved workflow names and qualifying inventory. Only the hosted sample was deployed; npm, the private VM and main website were unchanged. Evidence: `/private/tmp/partial-demo-verify.log`, `/private/tmp/partial-demo-deploy.log`, `/private/tmp/terminal-insurance-demo/partial-live.json`, and `/private/tmp/terminal-insurance-demo/partial-live-plan.png`.
209
+
210
+
211
+ ### Preference-sensitive workload expansion — implementation, 10 October 2026
212
+
213
+ The insurance comparison now has fourteen workflows, 280 worker IDs and 980 task IDs, still representing 9.6 million requests. Four new application workers generate reporting/actuarial SQL and reconciliation/reserve-analysis scripts. Fixed declared input/output profiles distinguish those tasks and do not depend on the selected preference. Claude Sonnet 4.5, GLM-4.7 and Gemini 3 Flash are compared using publisher tool-use, code-generation and reasoning scores; LiveCodeBench v6 percent and LiveCodeBench Pro Elo stay in separate cohorts. The catalog contains 26 in-stack model/service offers plus Jev. The new scenarios supplement the existing evidence; they do not relax any benchmark, cost or output-contract gate.
214
+
215
+ Before computes $344,689.33. Default computes $177,125.39; ZDR, open weights and Chinese origin compute $178,440.70 with the same model mix; USA computes $178,782.96. Each soft preference now changes two actual choices relative to Default. The UI discloses equivalent preferences and shows per-workload token costs. Closed-only has eleven qualifying workloads and three unresolved, with 7.542 million qualifying requests and no complete-plan projection. These values supersede the earlier scenario totals. The root enterprise sample, npm, private VM and local collector behavior are unchanged. These are fictional usage projections, not application-quality or latency measurements.
216
+
217
+ Publication and verification results are recorded below after deployment.
218
+
219
+ Published implementation commit `cdfd5e4` as Worker version `5fbafe69-ec30-4ab2-bc6e-ba0b621ca6dc`. Full verification passed 300 tests (190 terminal tests), syntax checks, typecheck, builds, demo checks and documentation checks. The final table-order refinements passed the 19 comparison/renderer tests; deployment repeated all 190 terminal tests, syntax checks and 11 documentation checks. HTTPS verification matched the root, both comparison documents, application JavaScript, styles and optional-map bundle to the local build. All six preference APIs matched the policy, including actual assignment/cost differences from Default and the disclosed ZDR/open/Chinese equivalence. Root inventory remains 21 models; collector access is unavailable and mutation requests are rejected.
220
+
221
+ Desktop browser checks exercised every preference, per-workload prices, reordered decisions, evidence and URL state. A 390-pixel check covered the scrollable decision table, keyboard selection with restored focus, the incomplete plan and seven-day totals, without horizontal page overflow. Published browser checks confirmed Default → USA → ZDR changed both costs and the leading workload assignment, with no console warnings or errors. Physical phones were not tested. Only the hosted sample Worker was deployed. Evidence: `/private/tmp/preferences-proper-verify.log`, `/private/tmp/preferences-proper-deploy.log`, `/private/tmp/terminal-insurance-demo/proper-live.json`, and `/private/tmp/terminal-insurance-demo/proper-live-preferences.png`.
222
+
223
+
224
+ ### Explicit preference overrides — source, 10 October 2026
225
+
226
+ A non-default preference now selects a qualified matching replacement first, retains an already matching baseline if necessary, then permits an explicitly labeled benchmark/efficiency override. Configured services, output contracts, known prices and the closed-weight exclusion remain required. Ranking favors fewer axes with known regressions, then fewer missing axes, verified efficiency improvement and cost. Evidence keeps original check outcomes, reasons, publisher links and before/after rates. Overrides appear first in the evidence and workload decisions and are included in modeled usage and costs. Default remains strict.
227
+
228
+ All six current plans cover fourteen workloads and 9.6 million requests. Closed weights has three overrides and costs $171,146.32. ZDR costs $38,281.42 with eight overrides; open weights $50,147.49 with seven; USA $162,436.44 with two; Chinese $40,953.91 with nine. Default remains $177,125.39. These replace the earlier preference outcomes; lower costs do not establish task quality. Full verification passed 303 tests, syntax, typecheck, builds, demo checks and documentation checks. The final copy refinement passed all 22 comparison/renderer tests. Browser checks covered all six preferences, override-first evidence, closed-only inventory and keyboard selection at 390 px without page overflow or console errors. Hosted deployment is pending. No npm release or VM change is included.
229
+
230
+ ### Preference overrides — published, 10 October 2026
231
+
232
+ Published implementation `5e10c9e` as Worker version `24193c1e-3c75-45ca-9ee8-26eef2681939`, superseding the pending publication note above. The deployment repeated 193 terminal tests, syntax checks and 11 documentation checks. All six live preference APIs match the tested assignments, override reasons, complete request counts and modeled totals. Root, `/demo`, `/demo/`, app, styles and optional map asset hashes match the build. The root enterprise sample remains 21 models, `/api/snapshot` returns 404 and mutations return 405.
233
+
234
+ The published browser confirms fourteen closed-weight assignments, three visible exceptions, and missing benchmark/efficiency evidence for claim tagging. No console warnings or errors were reported. Evidence: `/private/tmp/terminal-overrides-verify.log`, `/private/tmp/terminal-overrides-deploy.log`, `/private/tmp/terminal-insurance-demo/overrides-live.json`, and `/private/tmp/terminal-insurance-demo/overrides-live.png`. The npm package, VM and live application collector are unchanged.
235
+
236
+ ### Prominent comparison panel — published, 10 October 2026
237
+
238
+ Published implementation `b602c9f` as Worker version `111171c5-34bb-4a25-91bc-60f8e96f371e`. The comparison now occupies a distinct neutral dark panel with a 28 px heading, larger fluid token-cost figures, a high-contrast selected stage, and the evidence action alongside the modeled difference. Preference disclosures, exception counts and expandable workload decisions remain visible within the panel. Responsive layouts stack the controls and result while preserving access to evidence. No model-selection, pricing or inference behavior changes.
239
+
240
+ Full verification passed 303 tests plus syntax, typecheck, builds and documentation checks. Deployment repeated 193 terminal tests and 11 documentation checks. Local desktop checks exercised Before/After and the evidence action. The published page was checked at 1,336 px and narrow widths down to 389 CSS pixels, with no horizontal page overflow or console errors; the evidence drawer opened and closed successfully. Browser zoom affects the viewport tool's physical-to-CSS width, so these are the observed CSS widths. Physical phones were not tested. Live HTML, app and stylesheet hashes match the build; the closed preference retains 9.6 million requests, three overrides and $171,146.32 modeled cost.
241
+
242
+ Evidence: `/private/tmp/terminal-prominence-verify.log`, `/private/tmp/terminal-prominence-deploy.log`, `/private/tmp/terminal-insurance-demo/prominence-live.json`, and `/private/tmp/terminal-insurance-demo/prominence-live.png`. Only the hosted terminal preview changed; npm and the VM were not updated.
@@ -0,0 +1,30 @@
1
+ # Device-driven appearance
2
+
3
+ Published to the website and hosted dashboard on 14 October 2026. The npm package is unchanged; npm 0.1.6 retains its previous appearance. See the [publication record](site-publication-2026-10-14.md).
4
+
5
+ The website and Inference Terminal follow `prefers-color-scheme` automatically. There is no theme control, cookie, local-storage preference, or URL override. CSS resolves the initial appearance before application JavaScript runs and updates when the device preference changes. Light is the browser default when no dark preference is supplied. Theme-aware `color-scheme` and media-qualified `theme-color` metadata cover native controls and browser chrome.
6
+
7
+ ## Presentation sources
8
+
9
+ - `site/styles.css` owns the warm website palette shared by the homepage, generated docs, memo, and engineering article. Reading surfaces, code, search, tables, navigation, forms, and SVG diagram tokens use it. Print output remains light. The homepage illustrations use [transparent frames and posters](site-illustration-transparency.md), retaining their natural colors directly against either theme without paper panels or blend filters. Animation and reduced-motion behavior are preserved.
10
+ - `site/docs.css`, `site/memo.css`, and `site/memo-access.css` style their components using those tokens. The article's local stylesheet entry points import the shared foundations. Its article-specific code and table colors are also theme-aware.
11
+ - `site/demo/demo.css` covers this checkout's recorded demo. `site/demo/interactive.css` covers the newer deployed interactive demo, including its subdued inspector, syntax colors, status states, and scenario switches.
12
+ - `packages/terminal/public/styles.css` owns the dashboard palette. `client/routes.mjs` uses semantic route colors for both SVG diagrams and HTML legends. `client/theme.js` subscribes React canvas charts to device changes and reads resolved CSS colors; the optional React Flow view uses its system color mode. Inspectors, custom selects, comparison preferences, search, and loading/error states use the same palette.
13
+
14
+ The terminal dark palette retains neutral surfaces. Light surfaces use restrained warm neutrals, with darker route and status colors to retain contrast. Text and controls do not use inversion filters.
15
+
16
+ ## Production source mismatch
17
+
18
+ The source divergence documented in [domain migration](site-domain-migration.md) still applies. The running main application includes newer memo authentication, protected content, interactive demo handlers, and article generation that this checkout's root Worker does not contain. Do not publish the root Wrangler configuration to deploy these colors.
19
+
20
+ Presentation-only sources were recovered from `codex/main-before-terminal-2026-10-12` (`d89ebc4`): the memo component stylesheet, memo access stylesheet and view renderer, and interactive demo stylesheet. Auth logic, D1 data, secrets, runtime API handlers, content, package metadata, and domain routing were not replaced. The recovered view renderer carries the two theme-color metadata values for the preserved app's integration. The published interactive demo's HTML received the same metadata (light `#f7f7f5`, dark `#141712`) when integrating its stylesheet. Its existing script and API behavior must be retained.
21
+
22
+ The protected memo was checked using the existing local generated production snapshot, without modifying that snapshot or authenticating a real reader. The newer interactive demo was checked with its public HTML and local CSS; visible state fixtures exercise status and code styling without inference calls. These are presentation checks, not authentication or inference end-to-end tests. The subsequent publication used the preserved production application and live verification recorded in the publication notes. The dashboard can use the existing terminal-preview build/deployment workflow independently.
23
+
24
+ ## Verification
25
+
26
+ The full `npm run verify` passes with loopback permissions required by the existing server tests. Documentation is generated from Markdown; no generated files in `site/docs/` are maintained manually.
27
+
28
+ Browser verification covers light and dark at 1440px and 390px across the homepage, documentation, memo, protected memo (including ten SVG diagrams), email gate, reader table, engineering article, recorded demo, interactive demo presentation, all six dashboard tabs, and the hosted comparison. No page-level horizontal overflow or browser runtime errors were observed. A computed-style text contrast audit caught and corrected subdued inspector labels. This audit is limited to visible text on opaque backgrounds, not an exhaustive accessibility certification. Screenshots were inspected for the dashboard, modal, website artwork, memo diagram, and demo.
29
+
30
+ Open dropdowns and inspectors update when the device preference changes. Additional checks cover documentation search, static/no-JavaScript reading, narrow mobile navigation, print, and live canvas/flow behavior. Browser emulation is not a physical-device check.