openmerit 0.1.12 → 0.3.0

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 (108) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +11 -27
  3. package/dist/pi/scout-extension.mjs +23 -10
  4. package/dist/terminal/scout-update.json +1 -1
  5. package/dist/terminal/src/browser.mjs +2 -4
  6. package/dist/terminal/src/cli.mjs +6 -56
  7. package/dist/terminal/src/install.mjs +3 -2
  8. package/dist/terminal/src/scout-instructions.js +23 -10
  9. package/dist/terminal/src/scout-pi.js +1 -1
  10. package/dist/terminal/src/scout.js +181 -0
  11. package/dist/terminal/src/telemetry.mjs +8 -60
  12. package/docs/agent-evaluations.md +8 -148
  13. package/docs/commands.md +4 -86
  14. package/docs/getting-started.md +2 -16
  15. package/docs/index.md +4 -27
  16. package/docs/inference-terminal.md +13 -655
  17. package/docs/pi-extension.md +1 -1
  18. package/docs/roadmap.md +4 -17
  19. package/docs/scout.md +34 -251
  20. package/docs/security.md +8 -33
  21. package/docs/testing.md +7 -47
  22. package/docs/troubleshooting.md +3 -3
  23. package/package.json +13 -46
  24. package/dist/core/src/index.d.ts +0 -101
  25. package/dist/core/src/index.js +0 -1649
  26. package/dist/core/src/store.d.ts +0 -35
  27. package/dist/core/src/store.js +0 -102
  28. package/dist/eval/src/adapters.mjs +0 -112
  29. package/dist/eval/src/cli.mjs +0 -151
  30. package/dist/eval/src/config.mjs +0 -108
  31. package/dist/eval/src/process.mjs +0 -44
  32. package/dist/eval/src/report.mjs +0 -59
  33. package/dist/eval/src/runner.mjs +0 -123
  34. package/dist/eval/src/scout.mjs +0 -48
  35. package/dist/protocol/src/index.d.ts +0 -484
  36. package/dist/protocol/src/index.js +0 -47
  37. package/dist/protocol/src/schemas.d.ts +0 -576
  38. package/dist/protocol/src/schemas.js +0 -280
  39. package/dist/terminal/public/app.js +0 -298
  40. package/dist/terminal/public/brands/anthropic.png +0 -0
  41. package/dist/terminal/public/brands/baai.png +0 -0
  42. package/dist/terminal/public/brands/baseten.png +0 -0
  43. package/dist/terminal/public/brands/cerebras.png +0 -0
  44. package/dist/terminal/public/brands/cohere.png +0 -0
  45. package/dist/terminal/public/brands/deepseek.ico +0 -0
  46. package/dist/terminal/public/brands/google.png +0 -0
  47. package/dist/terminal/public/brands/groq.ico +0 -0
  48. package/dist/terminal/public/brands/huggingface.svg +0 -8
  49. package/dist/terminal/public/brands/lm-studio.png +0 -0
  50. package/dist/terminal/public/brands/meta.ico +0 -0
  51. package/dist/terminal/public/brands/mistral.png +0 -0
  52. package/dist/terminal/public/brands/nomic.png +0 -0
  53. package/dist/terminal/public/brands/ollama.png +0 -0
  54. package/dist/terminal/public/brands/openai.png +0 -0
  55. package/dist/terminal/public/brands/openrouter.png +0 -0
  56. package/dist/terminal/public/brands/qwen.png +0 -0
  57. package/dist/terminal/public/brands/vllm.ico +0 -0
  58. package/dist/terminal/public/brands/vllm.png +0 -0
  59. package/dist/terminal/public/favicon.svg +0 -1
  60. package/dist/terminal/public/flow.css +0 -1
  61. package/dist/terminal/public/flow.js +0 -770
  62. package/dist/terminal/public/index.html +0 -22
  63. package/dist/terminal/public/styles.css +0 -1046
  64. package/dist/terminal/src/activity-merge.mjs +0 -66
  65. package/dist/terminal/src/collect.mjs +0 -370
  66. package/dist/terminal/src/coverage.mjs +0 -33
  67. package/dist/terminal/src/demo-policy.mjs +0 -205
  68. package/dist/terminal/src/discovery.mjs +0 -99
  69. package/dist/terminal/src/enterprise-sample.mjs +0 -151
  70. package/dist/terminal/src/hardware.mjs +0 -57
  71. package/dist/terminal/src/history.mjs +0 -32
  72. package/dist/terminal/src/log-continuity.mjs +0 -26
  73. package/dist/terminal/src/project-activity.mjs +0 -157
  74. package/dist/terminal/src/repository-background.mjs +0 -37
  75. package/dist/terminal/src/repository-index.mjs +0 -267
  76. package/dist/terminal/src/repository-policy.mjs +0 -3
  77. package/dist/terminal/src/repository-syntax.mjs +0 -236
  78. package/dist/terminal/src/repository-worker.mjs +0 -15
  79. package/dist/terminal/src/sample.mjs +0 -171
  80. package/dist/terminal/src/scout-credentials.d.ts +0 -12
  81. package/dist/terminal/src/scout-credentials.ts +0 -44
  82. package/dist/terminal/src/scout-instructions.d.ts +0 -5
  83. package/dist/terminal/src/scout-instructions.ts +0 -106
  84. package/dist/terminal/src/scout-pi.d.ts +0 -44
  85. package/dist/terminal/src/scout-pi.ts +0 -76
  86. package/dist/terminal/src/server.mjs +0 -95
  87. package/dist/terminal/src/service-registry.mjs +0 -78
  88. package/dist/terminal/src/services.mjs +0 -44
  89. package/dist/terminal/src/topology.mjs +0 -30
  90. package/dist/terminal/src/updates.d.ts +0 -62
  91. package/dist/terminal/src/updates.ts +0 -313
  92. package/docs/adapter-guide.md +0 -191
  93. package/docs/architecture.md +0 -61
  94. package/docs/automation.md +0 -76
  95. package/docs/budgets.md +0 -39
  96. package/docs/demo-backfill.md +0 -31
  97. package/docs/demo-fieldkit.md +0 -49
  98. package/docs/demo-placement.md +0 -32
  99. package/docs/demo-spam.md +0 -17
  100. package/docs/demo-support.md +0 -44
  101. package/docs/demo.md +0 -74
  102. package/docs/first-trial.md +0 -62
  103. package/docs/interactive-demo.md +0 -118
  104. package/docs/lifecycle.md +0 -32
  105. package/docs/metrics-and-evidence.md +0 -48
  106. package/docs/operations.md +0 -40
  107. package/docs/pareto-spec.md +0 -76
  108. package/docs/ux-reference.md +0 -32
@@ -1,48 +0,0 @@
1
- # Metrics and evidence
2
-
3
- ## Task-specific profiles
4
-
5
- The full catalogue is available to every product, but the harness infers a task-specific proposal from the application's outputs, tools, and likely failure modes. Before collection, the user sees and confirms the required metrics, direction, sampling design, minimum sample count, aggregation, tolerance, optional hard constraints, and estimated cost.
6
-
7
- ## Initial metric catalogue
8
-
9
- Quality and behavior: task quality, task success, consistency, instruction following, tool-use performance, structured-output reliability, hallucination rate, reasoning efficiency, recovery ability, context handling, retrieval-use quality, long-horizon performance, and preference fit.
10
-
11
- Cost and resources: input tokens, output tokens, total task cost, cost per successful task, and agent steps.
12
-
13
- Latency and operations: time to first useful output, end-to-end latency, throughput, retry rate, and human-intervention rate.
14
-
15
- ## Metric states
16
-
17
- - `measured` — numeric value and evidence exist.
18
- - `not_applicable` — the metric does not apply.
19
- - `not_configured` — collection or evaluation is missing.
20
- - `insufficient_evidence` — relevant, but without enough representative samples.
21
-
22
- Missing measurements are never converted to zero.
23
-
24
- ## Single and repeated runs
25
-
26
- A single execution can report its cost, latency, token use, steps, success, and evaluator score. Distribution and reliability claims require repeated runs: rates, consistency, variance, averages, percentiles, throughput, prompt sensitivity, and regression stability.
27
-
28
- Two forms of repetition may be needed: repeat the same input to measure stochastic variance, and run representative task instances to measure general task performance.
29
-
30
- Each objective records one sampling strategy: `single_run`, `repeated_same_input`, `representative_task_set`, `repeated_representative_task_set`, or `load_test`. It also records representative-case count, repetitions per case, aggregation, and rationale. Every measured metric record repeats that aggregation explicitly (`single_value`, `sum`, `mean`, `rate`, `distribution`, or `percentile`). Rate, mean, distribution, percentile, and catalogue-defined reliability metrics are rejected when their plan contains fewer than two runs or uses `single_run`; `total_task_cost` sample windows must use `sum` because that value is used for budget accounting.
31
-
32
- The task profile sets the minimum sample count for each required metric; there is no universal number of runs. `minimumSamples` is evidence quantity. An optional `constraint` is a real performance threshold in the metric's unit; OpenMerit never interprets a three-sample requirement as a metric value of at least three. Ratio thresholds must remain between zero and one. A completed-task signal can advance an assessment cadence, but it does not by itself supply a quality score. Quality requires a task-specific evaluator, known outcome, or other justified measurement. Cost, token use, and latency must come from the application call or its observability layer. The baseline and controlled challenger runs supply the measured evidence used for comparison. Catalogue price and model reputation help the harness choose candidates to test; they are not substitutes for these measurements. Setup records the exact incumbent, preliminary leads are stored separately from metric records, and discovery freezes the accepted candidate set. Challenger trials preserve one experiment manifest containing the application revision, recorded shuffle seed, comparable cases, exact model identities, and per-run evidence. Accepted assessments are carried into frontier calculation rather than reconstructed from chat history.
33
-
34
- Each `metric_window_available` signal replaces the stored aggregate window for that metric. Send a cumulative, application-run window with its sample count, explicit aggregation, and evidence reference; OpenMerit does not add separate or overlapping window counts. Challenger metric windows must also fall inside their assessment execution window. Core marks the baseline ready only when instrumentation is ready and every required metric has a finite measured value, the confirmed minimum sample count, and an evidence reference. The harness remains responsible for measuring the real application call and authenticating those references; a reported window is not independently re-run or verified by core.
35
-
36
- ## Evidence references
37
-
38
- Results point to durable evidence rather than embedding arbitrary traces. Sources include harness traces, evaluation artifacts, observability records, external sources, and user feedback. References may contain a URI, media type, and digest. Successful intents require evidence; frontier certification also requires calculation evidence and exact assessment IDs.
39
-
40
- ## Readiness contract
41
-
42
- Setup must return an explicit observability coverage report containing every required metric, which metrics are covered, which remain missing, and when the check occurred. OpenMerit derives readiness from those sets; a harness cannot label coverage `ready` while a required metric is absent.
43
-
44
- If setup reports a required gap, OpenMerit issues `instrument_observability`. A successful instrumentation result is accepted only when every required metric is reported as covered. OpenMerit explicitly asks Pi to exercise each collector and grader through the application path, inspect output values, and retain artifacts. OpenMerit validates the coverage report but does not independently run the collector or grader, so `ready` is still a harness claim rather than independently verified end-to-end proof. Request a reported production metric window before relying on it for model decisions.
45
-
46
- Product instrumentation and OpenMerit auditing are separate. The confirmed application LLM target emits measurements such as quality, success, tokens, cost, latency, retries, tool calls, and intervention. Every metric record carries that target ID. OpenMerit records the signals, policy decision, intent lifecycle, evidence identifiers, and readiness or frontier decision that followed.
47
-
48
- Pi's own assistant messages are orchestration data, not application evidence. Application provider cost, input and output tokens, and end-to-end task latency must come from the confirmed application call or its observability layer. Tool-use performance requires harness-trace evidence; code coverage alone is not evidence of tool-use quality. Quality and task-specific behavior can still come from verified project evaluators.
@@ -1,40 +0,0 @@
1
- # Project state and operations
2
-
3
- **Scope — unreleased Pi replacement:** the evaluation lifecycle files and `/openmerit` commands below describe the core coordinator and historical Pi 0.87 adapter. The Pi 1.5.0 Scout adapter does not create or advance that lifecycle, manage scheduling, or expose those commands. See [current Pi paths and targeted shell commands](pi-extension.md). Terminal files remain current; standalone evaluation files are documented in [agent evaluations](agent-evaluations.md). Preserve older state and separately remove any legacy background job when migrating.
4
-
5
- ## State location
6
-
7
- Operational data lives under `.openmerit/` in the target product repository. It should be ignored by version control because it can contain local lifecycle state and evidence locations.
8
-
9
- - `config.json` — task profiles and policy.
10
- - `state.json` — current cycle, active or pending intent, last result, explicit observability coverage, processed signal IDs, task counters, latest aggregate baseline metric windows with evidence references, catalogue fingerprint, and assessment/swap checkpoints.
11
- - `events.jsonl` — append-only audit events.
12
- - `audit-export-errors.jsonl` — failures from optional external event exporters; these failures never replace or erase the canonical local event.
13
- - `evidence/*.json` — evidence-reference manifests.
14
- - `scheduler-status.json` — last headless wakeup time and exit code from the macOS background runner, when a wakeup actually ran.
15
- - `terminal.json` — optional source configuration and declared inventory for the Inference Terminal.
16
- - `inference.jsonl` — optional request-metadata export supplied by your existing tools for the terminal. The terminal reads this file; it does not instrument your application or create the feed.
17
-
18
- Snapshot writes are atomic. Files use owner-only permissions where POSIX modes are supported.
19
-
20
- The [Inference Terminal](inference-terminal.md) runs independently of the orchestration lifecycle. Its collector caches are memory-only and stop when the command exits. Permissions and retention for imported source files remain the responsibility of the tool that writes them.
21
-
22
- ## Diagnostics
23
-
24
- Start with `/openmerit status`, which reports profile, metric and evaluation readiness, active work, next assessment, lifecycle, and pause state. `/openmerit doctor` confirms adapter loading without printing secrets.
25
-
26
- Pause is stored in `.openmerit/state.json`, blocks automatic due decisions, and unloads an OpenMerit-managed macOS LaunchAgent for that project. Resume restores scheduling only if the confirmed policy still permits persistent execution and infrastructure changes. Incoming signals can still be recorded while paused, and an already-active intent is not cancelled. `/openmerit doctor` shows the LaunchAgent and status-file paths. A LaunchAgent runs only while the Mac user is logged in; a headless run requires Pi credentials available without a shell-only environment variable.
27
-
28
- Inspect `scheduler-status.json` after a headless wakeup. A successful baseline-only check records a decision without starting Pi. A nonzero `exitCode` or `activeIntentId` means model-driven work did not complete; open the project in interactive Pi, inspect `/openmerit status` and `.openmerit/events.jsonl`, then use `/openmerit cancel` only if you intend to abandon that work. Model-driven runs have a 15-minute limit. The runner does not silently mark incomplete work successful.
29
-
30
- `/openmerit logs` prints the exact local paths to the audit log, exporter failures, evidence manifests, and current state. During an end-to-end run, `tail -f .openmerit/events.jsonl | jq .` shows signals and decisions as they occur.
31
-
32
- ## Audit and recovery
33
-
34
- OpenMerit records initialization, intent requests and completions, automation signals and duplicates, due checks, task checkpoints, catalogue changes, frontier validation, confirmation boundaries, and lifecycle advancement.
35
-
36
- Automation-signal records include safe application measurement summaries: application model ID and application-reported token/cost/latency fields for completed tasks; or metric ID, state, scope, direction, method, value, unit, sample count, interval/window, and evidence IDs for metric windows. Pi's own model usage is not recorded as product-task evidence. Intent completions record their kind, status, next stage, harness, summary, and evidence IDs/sources. Secret-shaped keys and common API-key patterns are redacted before local persistence or export.
37
-
38
- The local JSONL file is the canonical source of truth. `ProjectStore` can also receive optional event exporters for OpenTelemetry or vendor-specific adapters. Export is best effort: a failed exporter is written to `audit-export-errors.jsonl` and does not interrupt lifecycle state or canonical logging.
39
-
40
- If Pi stops during an intent, durable state retains it. Inspect `state.json` and `events.jsonl` before manual changes. Deleting `.openmerit/` discards the audit trail, budget, profile, and evidence references.
@@ -1,76 +0,0 @@
1
- # OpenMerit Pareto conformance specification
2
-
3
- Status: initial normative specification
4
-
5
- OpenMerit owns this definition. A connected harness performs the calculation, returns a `FrontierSnapshot`, and supplies calculation evidence. OpenMerit verifies the returned result against these rules.
6
-
7
- ## Comparable assessment set
8
-
9
- Every assessment in one frontier calculation must share:
10
-
11
- - task-profile ID and revision;
12
- - product revision;
13
- - harness identity and materially equivalent tool configuration;
14
- - objective definitions, units, and directions;
15
- - a representative evaluation workload and compatible evidence window.
16
-
17
- The harness must not silently compare measurements from incompatible conditions.
18
-
19
- ## Metric readiness
20
-
21
- A required objective is ready only when:
22
-
23
- - a metric record exists;
24
- - its state is `measured`;
25
- - it has a numeric value;
26
- - its sample count meets the objective's minimum;
27
- - its unit and direction are compatible across candidates.
28
-
29
- Missing or immature evidence is `unresolved`. It is never converted to zero and never treated as success.
30
-
31
- ## Feasibility
32
-
33
- Hard constraints are evaluated conservatively against uncertainty intervals. If an interval is absent, the point value is both bounds.
34
-
35
- - `at_least`: eligible only when the lower bound meets the threshold; ineligible when the upper bound is below it; otherwise unresolved.
36
- - `at_most`: eligible only when the upper bound meets the threshold; ineligible when the lower bound exceeds it; otherwise unresolved.
37
-
38
- Only eligible candidates may be certified as members of the frontier.
39
-
40
- ## Dominance
41
-
42
- For candidate A to dominate candidate B, A must be proven no worse than B on every objective and proven materially better on at least one objective.
43
-
44
- For a maximize objective with tolerance `t`:
45
-
46
- - A is proven no worse when `A.lower + t >= B.upper`.
47
- - A is proven materially better when `A.lower > B.upper + t`.
48
-
49
- For a minimize objective with tolerance `t`:
50
-
51
- - A is proven no worse when `A.upper <= B.lower + t`.
52
- - A is proven materially better when `A.upper + t < B.lower`.
53
-
54
- If complete evidence proves A worse on any objective, A does not dominate B. If the evidence cannot establish no-worse or worse because intervals overlap, the comparison is unresolved.
55
-
56
- ## Frontier
57
-
58
- An eligible candidate is on the certified frontier when:
59
-
60
- - no eligible candidate is proven to dominate it; and
61
- - none of its required pairwise comparisons is unresolved.
62
-
63
- Candidates with incomplete evidence, unresolved constraints, or unresolved comparisons are reported separately. A dominated, ineligible, or unresolved candidate must not appear on the certified frontier.
64
-
65
- ## Required result evidence
66
-
67
- Every frontier result must include:
68
-
69
- - the assessment IDs used;
70
- - all directed pairwise comparisons between eligible candidates;
71
- - reasons for every comparison;
72
- - separate frontier, dominated, ineligible, and unresolved sets;
73
- - at least one durable calculation-evidence reference.
74
-
75
- The calculation evidence should identify the harness execution or artifact that produced the result.
76
-
@@ -1,32 +0,0 @@
1
- # Pi UX behavioral reference
2
-
3
- This document is a **historical evaluation-adapter reference**, not the current Pi interface specification. The unreleased Pi 1.5.0 native Scout replacement does not carry forward the `/openmerit` commands, lifecycle, pause controls, or scheduling described here. See [the current Pi guide](pi-extension.md). The list below preserves earlier UX ideas for custom evaluation harnesses only.
4
-
5
- ## Behaviors worth preserving
6
-
7
- - A single `/openmerit` command is the primary in-harness entry point.
8
- - Running the command without arguments gives a concise operational summary.
9
- - Long-running work produces short progress notifications instead of appearing silent.
10
- - Users can pause and resume proactive work without uninstalling the extension.
11
- - Users can request work explicitly even when proactive behavior is paused.
12
- - Diagnostics are available from the same command surface.
13
- - Skipped work explains why it was skipped and how the user can proceed.
14
- - Failures are visible, actionable, and do not masquerade as successful evidence.
15
- - The extension behaves sensibly in TUI, RPC, JSON, and print modes; prompts are not attempted when no interactive UI exists.
16
-
17
- ## Staged behavior
18
-
19
- The command shell can carry a proposal through an authorized model change, but only after baseline evidence, budgeted challenger trials, a harness-calculated and OpenMerit-verified frontier, policy approval, and post-swap verification.
20
-
21
- ## Current direction
22
-
23
- The command surface centers on evidence readiness. Its status view should answer:
24
-
25
- 1. What task profile is active?
26
- 2. Which required metrics are observable?
27
- 3. Which evaluations exist and have been verified?
28
- 4. What intelligent work is Pi currently performing for OpenMerit?
29
- 5. What evidence is still missing or insufficient?
30
- 6. When is the next assessment due?
31
-
32
- The approved command surface is documented in [Pi extension](pi-extension.md).