openmerit 0.1.5 → 0.1.6-preview.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 (91) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +33 -9
  3. package/dist/core/src/index.d.ts +12 -1
  4. package/dist/core/src/index.js +552 -40
  5. package/dist/pi/src/index.d.ts +17 -0
  6. package/dist/pi/src/index.js +448 -77
  7. package/dist/pi/src/scheduler.d.ts +11 -0
  8. package/dist/pi/src/scheduler.js +137 -0
  9. package/dist/pi/src/wakeup.d.ts +2 -0
  10. package/dist/pi/src/wakeup.js +108 -0
  11. package/dist/protocol/src/index.d.ts +86 -4
  12. package/dist/protocol/src/index.js +1 -1
  13. package/dist/protocol/src/schemas.d.ts +128 -2
  14. package/dist/protocol/src/schemas.js +57 -1
  15. package/dist/terminal/public/app.js +297 -0
  16. package/dist/terminal/public/brands/anthropic.png +0 -0
  17. package/dist/terminal/public/brands/baai.png +0 -0
  18. package/dist/terminal/public/brands/baseten.png +0 -0
  19. package/dist/terminal/public/brands/cerebras.png +0 -0
  20. package/dist/terminal/public/brands/cohere.png +0 -0
  21. package/dist/terminal/public/brands/deepseek.ico +0 -0
  22. package/dist/terminal/public/brands/google.png +0 -0
  23. package/dist/terminal/public/brands/groq.ico +0 -0
  24. package/dist/terminal/public/brands/lm-studio.png +0 -0
  25. package/dist/terminal/public/brands/meta.ico +0 -0
  26. package/dist/terminal/public/brands/mistral.png +0 -0
  27. package/dist/terminal/public/brands/nomic.png +0 -0
  28. package/dist/terminal/public/brands/ollama.png +0 -0
  29. package/dist/terminal/public/brands/openai.png +0 -0
  30. package/dist/terminal/public/brands/openrouter.png +0 -0
  31. package/dist/terminal/public/brands/qwen.png +0 -0
  32. package/dist/terminal/public/brands/vllm.ico +0 -0
  33. package/dist/terminal/public/brands/vllm.png +0 -0
  34. package/dist/terminal/public/favicon.svg +1 -0
  35. package/dist/terminal/public/flow.css +1 -0
  36. package/dist/terminal/public/flow.js +770 -0
  37. package/dist/terminal/public/index.html +21 -0
  38. package/dist/terminal/public/styles.css +779 -0
  39. package/dist/terminal/src/activity-merge.mjs +64 -0
  40. package/dist/terminal/src/browser.mjs +29 -0
  41. package/dist/terminal/src/cli.mjs +60 -0
  42. package/dist/terminal/src/collect.mjs +311 -0
  43. package/dist/terminal/src/discovery.mjs +93 -0
  44. package/dist/terminal/src/hardware.mjs +57 -0
  45. package/dist/terminal/src/project-activity.mjs +156 -0
  46. package/dist/terminal/src/sample.mjs +171 -0
  47. package/dist/terminal/src/server.mjs +56 -0
  48. package/dist/terminal/src/services.mjs +62 -0
  49. package/dist/terminal/src/topology.mjs +30 -0
  50. package/docs/adapter-guide.md +24 -7
  51. package/docs/architecture.md +8 -4
  52. package/docs/automation.md +10 -2
  53. package/docs/budgets.md +37 -0
  54. package/docs/commands.md +85 -0
  55. package/docs/demo-backfill.md +29 -0
  56. package/docs/demo-fieldkit.md +47 -0
  57. package/docs/demo-placement.md +30 -0
  58. package/docs/demo-spam.md +15 -0
  59. package/docs/demo-support.md +42 -0
  60. package/docs/demo.md +57 -0
  61. package/docs/first-trial.md +60 -0
  62. package/docs/getting-started.md +18 -8
  63. package/docs/index.md +40 -0
  64. package/docs/inference-terminal.md +439 -0
  65. package/docs/lifecycle.md +9 -9
  66. package/docs/memo.md +126 -0
  67. package/docs/metrics-and-evidence.md +11 -3
  68. package/docs/operations.md +12 -3
  69. package/docs/pi-extension.md +17 -7
  70. package/docs/roadmap.md +4 -2
  71. package/docs/security.md +15 -1
  72. package/docs/site-artwork-linocut.md +23 -0
  73. package/docs/site-artwork-miniature-diverse.md +28 -0
  74. package/docs/site-artwork-miniature.md +26 -0
  75. package/docs/site-demo.md +177 -0
  76. package/docs/site-design.md +94 -0
  77. package/docs/site-documentation.md +83 -0
  78. package/docs/site-dynamic-og.md +35 -0
  79. package/docs/site-faq-maintenance.md +115 -0
  80. package/docs/site-hero-resolution.md +60 -0
  81. package/docs/site-illustration-sequences.md +227 -0
  82. package/docs/site-inference-terminal.md +203 -0
  83. package/docs/site-memo.md +39 -0
  84. package/docs/site-og-image.md +38 -0
  85. package/docs/site-og-workshop.md +21 -0
  86. package/docs/site-section-artwork.md +56 -0
  87. package/docs/site-skill-review.md +57 -0
  88. package/docs/site-terminal-preview.md +85 -0
  89. package/docs/testing.md +85 -3
  90. package/docs/troubleshooting.md +55 -0
  91. package/package.json +48 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## Unreleased
4
+
5
+ ## 0.1.6-preview.0 — 2026-10-09
6
+
7
+ A test prerelease of the existing `openmerit` npm package, installed with `npm install -g openmerit@preview`. Includes the compiled Inference Terminal, automatic browser opening, and a free loopback-port fallback. `latest` remains `0.1.5`.
8
+
9
+ - Add the Inference Terminal: `openmerit dash` serves a local, read-only view of models, request metadata, connections, capacity, and compute, sampled every 10–30 seconds. Agent and task identities come from supplied metadata; the terminal does not intercept inference or discover every call automatically.
10
+ - Bind task profiles, metrics, assessments, frontier artifacts, swaps, and
11
+ automation signals to a confirmed application LLM target; Pi's own model
12
+ telemetry cannot satisfy application evidence or become a swap target.
13
+ - Make Pi's automatic setup conditional on bounded source detection of an
14
+ application LLM call. Projects without a detected target remain idle until
15
+ `/openmerit setup` is requested.
16
+
3
17
  ## 0.1.5 — 2026-09-23
4
18
 
5
19
  OpenMerit now ships as one npm package with a Pi extension, a reusable
package/README.md CHANGED
@@ -23,17 +23,18 @@ It distinguishes:
23
23
  ## Current capabilities
24
24
 
25
25
  - Pi 0.87 extension with a single `/openmerit` command surface.
26
- - Confirmed task profiles, objectives, constraints, sample requirements, and evaluation budgets.
26
+ - Harness-inferred, user-confirmed task profiles with explicit metrics, sampling designs, constraints, and evaluation budgets.
27
27
  - The complete initial quality, reliability, cost, latency, efficiency, and human-intervention metric catalogue.
28
- - Baseline-first evidence collection followed by budgeted candidate discovery and controlled challenger trials.
28
+ - Setup-time preliminary model research in the source checkout, followed by baseline evidence collection, refreshed candidate discovery, and controlled challenger trials. The published `0.1.5` package still begins candidate discovery after the baseline.
29
29
  - A normative, uncertainty-aware Pareto definition owned by OpenMerit.
30
30
  - Harness-calculated frontier results independently checked by OpenMerit's conformance verifier.
31
31
  - Versioned result schemas for all ten intents, reusable across harness adapters and exposed dynamically by Pi.
32
- - Supervised graduation: early swaps require approval, every swap requires verification, and regressions can trigger rollback.
32
+ - Configurable swap approval, post-swap verification requests, and policy-based rollback requests. Automatic swaps can begin immediately if explicitly enabled with a zero verified-swap threshold.
33
33
  - Project-local snapshots, redacted append-only audit events, evidence manifests, and optional best-effort event exporters under `.openmerit/`.
34
34
  - Model-catalog change detection that can nudge the harness to reassess a mature baseline.
35
35
  - User-confirmed task-count, elapsed-time, regression, catalogue-change, and post-swap check policies.
36
36
  - Idempotent harness signals, durable pending work, native wakeup planning, and explicit scheduler capability gaps.
37
+ - In the unreleased source checkout, an opt-in macOS Pi LaunchAgent for time-based checks and a durable pause; published `0.1.5` still requires an external scheduler and has a partial, session-local pause.
37
38
 
38
39
  ## Responsibility boundary
39
40
 
@@ -43,7 +44,7 @@ It distinguishes:
43
44
  | Tracks lifecycle, policy, budget, and evidence references | Builds evals and observability |
44
45
  | Determines which approved nudge is due | Collects and calculates metrics |
45
46
  | Verifies returned structure and frontier conformance | Discovers candidates and calculates the frontier |
46
- | Enforces confirmation and rollback policy | Applies and verifies an authorized model change |
47
+ | Selects intents according to confirmation and rollback policy | Applies and verifies an authorized model change |
47
48
 
48
49
  Jev System One, when configured, belongs to the coding harness. Pi may use it aggressively for bounded ranking, triage, and fast judgment. OpenMerit contains no Jev client and accepts no Jev credential.
49
50
 
@@ -59,7 +60,7 @@ pi install npm:openmerit
59
60
  pi list
60
61
  ```
61
62
 
62
- When Pi enters an unconfigured product with an interactive UI, OpenMerit automatically issues the setup nudge. Pi infers a task profile, asks the user to confirm requirements and an evaluation budget, establishes task-specific eval and observability artifacts, verifies them, and reports evidence to OpenMerit. `/openmerit setup` remains available as an explicit recovery or rerun command.
63
+ When Pi enters an unconfigured project with an interactive UI, the adapter first looks for an actual application LLM call pattern. If the project starts empty, the unreleased source checkout scans again after each settled build turn and automatically begins setup when Pi creates the application call. `/openmerit setup` remains a recovery command rather than a required demo step. Pi confirms the application target and exact incumbent application model, infers task-relevant metrics and their repeated-input or representative-case sampling designs, explains the proposed collection plan and estimated cost, and asks the user to confirm or edit it. It then establishes task-specific eval and observability artifacts, verifies them, and reports evidence to OpenMerit. Pi's own model is never the application target.
63
64
 
64
65
  Run `/openmerit doctor` inside Pi to check the installation. OpenMerit keeps
65
66
  project evidence under `.openmerit/` in the product repository. Version 0.1.5
@@ -70,16 +71,35 @@ harness-driven lifecycle; it does not migrate the earlier home-directory state.
70
71
 
71
72
  - `/openmerit` or `/openmerit status` — show evidence readiness and lifecycle stage.
72
73
  - `/openmerit setup` — explicitly rerun or recover automatic setup.
73
- - `/openmerit assess` — request an evidence-sufficiency assessment now.
74
+ - `/openmerit assess` — check stored application metric windows against the baseline thresholds now (in the unreleased source checkout); start candidate discovery only when ready. Published `0.1.5` still asks Pi to assess.
74
75
  - `/openmerit logs` — show the canonical audit, exporter-error, evidence, and state paths.
75
76
  - `/openmerit frontier` — ask the harness to calculate a frontier now; OpenMerit verifies it.
76
77
  - `/openmerit approve` — approve a verified proposal during supervised graduation.
77
- - `/openmerit pause` and `/openmerit resume` — control proactive nudges.
78
+ - `/openmerit pause` and `/openmerit resume` — control some proactive nudges in the current Pi session; task-triggered checks can still run in 0.1.5. See [pause limitations](docs/commands.md#pause-and-resume).
78
79
  - `/openmerit doctor` — show sanitized adapter diagnostics.
79
80
 
81
+ ## Inference Terminal (test preview)
82
+
83
+ A local, dark-only overview of application inference inventory, connections, activity, and compute. Coding-harness usage is outside its scope. It reads existing metadata passively and makes no model calls.
84
+
85
+ With Node.js 22.19+ installed, run this from your application's directory:
86
+
87
+ ```sh
88
+ npm install -g openmerit@preview
89
+ openmerit dash
90
+ ```
91
+
92
+ The preview uses the existing `openmerit` npm package, including its coordinator, protocol, Pi adapter, and compiled terminal assets. It opens its localhost URL in your default browser. The stable npm package `openmerit@0.1.5` does not include this command. See the [Inference Terminal guide](docs/inference-terminal.md) for supported sources, updating or removing the preview, source builds, and read-only agent access.
93
+
80
94
  ## Documentation
81
95
 
96
+ Read the searchable [OpenMerit documentation](https://openmerit.site/docs/). The Markdown sources below also ship with the package.
97
+
82
98
  - [Getting started](docs/getting-started.md)
99
+ - [Your first trial](docs/first-trial.md)
100
+ - [Command reference](docs/commands.md)
101
+ - [Budgets and permissions](docs/budgets.md)
102
+ - [Troubleshooting](docs/troubleshooting.md)
83
103
  - [Architecture and responsibility boundary](docs/architecture.md)
84
104
  - [Metrics and evidence](docs/metrics-and-evidence.md)
85
105
  - [Improvement lifecycle](docs/lifecycle.md)
@@ -92,6 +112,10 @@ harness-driven lifecycle; it does not migrate the earlier home-directory state.
92
112
  - [Testing](docs/testing.md)
93
113
  - [Current limitations and roadmap](docs/roadmap.md)
94
114
 
115
+ ### Maintaining documentation
116
+
117
+ Edit the Markdown in `docs/` alongside product changes. The public documentation is generated from these same files; there is no separate article copy to update in `site/`. Run `npm run check:docs` to rebuild and validate it. The normal Cloudflare deployment rebuilds and publishes the documentation. See [the documentation workflow](docs/site-documentation.md) for adding guides and previewing changes.
118
+
95
119
  ## Repository layout
96
120
 
97
121
  - `packages/protocol` — harness-neutral types for intents, results, metrics, policies, and frontier evidence.
@@ -107,7 +131,7 @@ package exposes `openmerit/core`, `openmerit/protocol`, and `openmerit/pi`.
107
131
  ```sh
108
132
  npm ci
109
133
  npm run verify
110
- ./node_modules/.bin/pi -e ./packages/pi/src/index.ts
134
+ ./node_modules/.bin/pi --no-extensions -e ./packages/pi/src/index.ts
111
135
  ```
112
136
 
113
- Credentials must never be committed. The repository intentionally contains no provider or Jev API key.
137
+ `--no-extensions` prevents an installed npm copy of OpenMerit from registering the same tools as the source extension. Credentials must never be committed. The repository intentionally contains no provider or Jev API key.
@@ -12,6 +12,9 @@ export interface IntentFactoryOptions {
12
12
  readonly policy?: SupervisedGraduationPolicy;
13
13
  readonly id?: string;
14
14
  readonly requestedAt?: string;
15
+ readonly evaluationSpend?: number;
16
+ readonly targetId?: string;
17
+ readonly additionalConstraints?: Readonly<Record<string, JsonValue>>;
15
18
  }
16
19
  export declare function createOpenMeritIntent(kind: IntentKind, options?: IntentFactoryOptions): OpenMeritIntent;
17
20
  export declare function missingHarnessCapabilities(descriptor: HarnessDescriptor, kind: IntentKind): readonly HarnessCapability[];
@@ -48,6 +51,9 @@ export interface IssuedIntent {
48
51
  readonly state: OpenMeritProjectState;
49
52
  readonly receipt: HarnessDispatchReceipt;
50
53
  }
54
+ export interface CoordinatorIssueOptions {
55
+ readonly additionalConstraints?: Readonly<Record<string, JsonValue>>;
56
+ }
51
57
  export interface AcceptedIntentResult {
52
58
  readonly intentKind: IntentKind;
53
59
  readonly state: OpenMeritProjectState;
@@ -77,7 +83,7 @@ export declare class OpenMeritCoordinator {
77
83
  private readonly store;
78
84
  private readonly adapter;
79
85
  constructor(store: OpenMeritStore, adapter: HarnessAdapter);
80
- issue(kind: IntentKind): Promise<IssuedIntent>;
86
+ issue(kind: IntentKind, options?: CoordinatorIssueOptions): Promise<IssuedIntent>;
81
87
  reconcileAutomation(now?: string): Promise<{
82
88
  readonly plan: AutomationPlan;
83
89
  readonly receipt?: HarnessDispatchReceipt;
@@ -85,6 +91,11 @@ export declare class OpenMeritCoordinator {
85
91
  acceptResult(result: AnyIntentResult): Promise<AcceptedIntentResult>;
86
92
  recordLifecycle(update: IntentLifecycleUpdate): Promise<void>;
87
93
  recordTaskObservation(details?: Readonly<Record<string, JsonValue>>): Promise<ObservationResult>;
94
+ assessBaseline(now?: string): Promise<{
95
+ readonly state: OpenMeritProjectState;
96
+ readonly errors: readonly string[];
97
+ readonly decision: OrchestrationDecision;
98
+ }>;
88
99
  recordAutomationSignal(signal: AutomationSignal): Promise<AutomationSignalResult>;
89
100
  recordModelCatalogFingerprint(fingerprint: string): Promise<CatalogChangeResult>;
90
101
  }