engineering-behavior-observatory 0.2.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.
- package/LICENSE +202 -0
- package/README.md +151 -0
- package/contracts/codex-app-server-0.150.1/manifest.json +25 -0
- package/contracts/codex-app-server-0.150.1/schema/InitializeParams.json +84 -0
- package/contracts/codex-app-server-0.150.1/schema/JSONRPCMessage.json +137 -0
- package/contracts/codex-app-server-0.150.1/schema/v2/ThreadReadParams.json +17 -0
- package/contracts/codex-app-server-0.150.1/schema/v2/ThreadTokenUsageUpdatedNotification.json +82 -0
- package/contracts/codex-app-server-0.150.1/schema/v2/TurnInterruptParams.json +17 -0
- package/contracts/codex-app-server-0.150.1/types/AskForApproval.ts +5 -0
- package/contracts/codex-app-server-0.150.1/types/ClientNotification.ts +5 -0
- package/contracts/codex-app-server-0.150.1/types/SandboxMode.ts +5 -0
- package/contracts/codex-app-server-0.150.1/types/ThreadReadParams.ts +9 -0
- package/contracts/codex-app-server-0.150.1/types/TokenUsageBreakdown.ts +5 -0
- package/contracts/codex-app-server-0.150.1/types/TurnInterruptParams.ts +5 -0
- package/contracts/codex-app-server-0.153.4/manifest.json +27 -0
- package/contracts/codex-app-server-0.153.4/schema/JSONRPCMessage.json +137 -0
- package/contracts/codex-app-server-0.153.4/schema/v1/InitializeParams.json +84 -0
- package/contracts/codex-app-server-0.153.4/schema/v2/ThreadReadParams.json +17 -0
- package/contracts/codex-app-server-0.153.4/schema/v2/ThreadStartParams.json +515 -0
- package/contracts/codex-app-server-0.153.4/schema/v2/ThreadTokenUsageUpdatedNotification.json +82 -0
- package/contracts/codex-app-server-0.153.4/schema/v2/TurnInterruptParams.json +17 -0
- package/contracts/codex-app-server-0.153.4/schema/v2/TurnStartParams.json +921 -0
- package/contracts/codex-app-server-0.153.4/types/AskForApproval.ts +5 -0
- package/contracts/codex-app-server-0.153.4/types/ClientNotification.ts +5 -0
- package/contracts/codex-app-server-0.153.4/types/SandboxMode.ts +5 -0
- package/contracts/codex-app-server-0.153.4/types/ThreadReadParams.ts +12 -0
- package/contracts/codex-app-server-0.153.4/types/TokenUsageBreakdown.ts +5 -0
- package/contracts/codex-app-server-0.153.4/types/TurnInterruptParams.ts +5 -0
- package/contracts/openhands-agent-server-v1.44.1.json +65 -0
- package/contracts/openhands-agent-server-v1.46.0.json +46 -0
- package/dist/contracts/codex-app-server-0.153.4/types/AskForApproval.d.ts +9 -0
- package/dist/contracts/codex-app-server-0.153.4/types/AskForApproval.js +2 -0
- package/dist/contracts/codex-app-server-0.153.4/types/ClientNotification.d.ts +3 -0
- package/dist/contracts/codex-app-server-0.153.4/types/ClientNotification.js +2 -0
- package/dist/contracts/codex-app-server-0.153.4/types/SandboxMode.d.ts +1 -0
- package/dist/contracts/codex-app-server-0.153.4/types/SandboxMode.js +2 -0
- package/dist/contracts/codex-app-server-0.153.4/types/ThreadReadParams.d.ts +10 -0
- package/dist/contracts/codex-app-server-0.153.4/types/ThreadReadParams.js +2 -0
- package/dist/contracts/codex-app-server-0.153.4/types/TokenUsageBreakdown.d.ts +8 -0
- package/dist/contracts/codex-app-server-0.153.4/types/TokenUsageBreakdown.js +2 -0
- package/dist/contracts/codex-app-server-0.153.4/types/TurnInterruptParams.d.ts +4 -0
- package/dist/contracts/codex-app-server-0.153.4/types/TurnInterruptParams.js +2 -0
- package/dist/src/agent-sdk-normalizer.d.ts +22 -0
- package/dist/src/agent-sdk-normalizer.js +995 -0
- package/dist/src/agent-sdk-run.d.ts +31 -0
- package/dist/src/agent-sdk-run.js +242 -0
- package/dist/src/agent-sdk-runner.d.ts +96 -0
- package/dist/src/agent-sdk-runner.js +407 -0
- package/dist/src/agent-sdk.d.ts +294 -0
- package/dist/src/agent-sdk.js +644 -0
- package/dist/src/aggregation.d.ts +183 -0
- package/dist/src/aggregation.js +513 -0
- package/dist/src/artifacts.d.ts +36 -0
- package/dist/src/artifacts.js +1372 -0
- package/dist/src/atlas-grafana.d.ts +377 -0
- package/dist/src/atlas-grafana.js +47 -0
- package/dist/src/atlas-html.d.ts +2 -0
- package/dist/src/atlas-html.js +34 -0
- package/dist/src/atlas.d.ts +130 -0
- package/dist/src/atlas.js +235 -0
- package/dist/src/behavior-assertions.d.ts +95 -0
- package/dist/src/behavior-assertions.js +154 -0
- package/dist/src/cli.d.ts +5 -0
- package/dist/src/cli.js +957 -0
- package/dist/src/codex-judge.d.ts +44 -0
- package/dist/src/codex-judge.js +214 -0
- package/dist/src/codex-run.d.ts +114 -0
- package/dist/src/codex-run.js +519 -0
- package/dist/src/codex.d.ts +187 -0
- package/dist/src/codex.js +1028 -0
- package/dist/src/contracts.d.ts +155 -0
- package/dist/src/contracts.js +866 -0
- package/dist/src/corpus.d.ts +67 -0
- package/dist/src/corpus.js +540 -0
- package/dist/src/cursor-sdk-runner.d.ts +81 -0
- package/dist/src/cursor-sdk-runner.js +362 -0
- package/dist/src/cursor-sdk.d.ts +81 -0
- package/dist/src/cursor-sdk.js +1078 -0
- package/dist/src/deepseek-adapter.d.ts +152 -0
- package/dist/src/deepseek-adapter.js +777 -0
- package/dist/src/exports.d.ts +69 -0
- package/dist/src/exports.js +966 -0
- package/dist/src/human-calibration.d.ts +167 -0
- package/dist/src/human-calibration.js +618 -0
- package/dist/src/index.d.ts +71 -0
- package/dist/src/index.js +38 -0
- package/dist/src/lifecycle.d.ts +196 -0
- package/dist/src/lifecycle.js +1889 -0
- package/dist/src/normalization-integrity.d.ts +128 -0
- package/dist/src/normalization-integrity.js +429 -0
- package/dist/src/openhands-run.d.ts +36 -0
- package/dist/src/openhands-run.js +415 -0
- package/dist/src/openhands.d.ts +130 -0
- package/dist/src/openhands.js +859 -0
- package/dist/src/pi.d.ts +203 -0
- package/dist/src/pi.js +1345 -0
- package/dist/src/process-protocol.d.ts +245 -0
- package/dist/src/process-protocol.js +1261 -0
- package/dist/src/retained-evidence.d.ts +12 -0
- package/dist/src/retained-evidence.js +201 -0
- package/dist/src/run-bundles.d.ts +193 -0
- package/dist/src/run-bundles.js +993 -0
- package/dist/src/scheduler.d.ts +109 -0
- package/dist/src/scheduler.js +1080 -0
- package/dist/src/semantic-judge.d.ts +194 -0
- package/dist/src/semantic-judge.js +875 -0
- package/dist/src/structural-observations.d.ts +124 -0
- package/dist/src/structural-observations.js +671 -0
- package/dist/src/task-packets.d.ts +115 -0
- package/dist/src/task-packets.js +683 -0
- package/dist/src/uniform-events.d.ts +120 -0
- package/dist/src/uniform-events.js +158 -0
- package/dist/src/verifiers.d.ts +116 -0
- package/dist/src/verifiers.js +819 -0
- package/dist/src/workspaces.d.ts +56 -0
- package/dist/src/workspaces.js +1314 -0
- package/docs/README.md +60 -0
- package/docs/development/README.md +71 -0
- package/docs/development/documentation-sync.md +58 -0
- package/docs/development/extension-contracts.md +307 -0
- package/docs/evaluation/README.md +48 -0
- package/docs/evaluation/aggregation.md +112 -0
- package/docs/evaluation/behavior-assertions.md +45 -0
- package/docs/evaluation/human-calibration.md +170 -0
- package/docs/evaluation/normalization-integrity.md +80 -0
- package/docs/evaluation/semantic-judge.md +188 -0
- package/docs/evaluation/structural-observations.md +84 -0
- package/docs/evaluation/uniform-events.md +131 -0
- package/docs/guides/atlas.md +144 -0
- package/docs/guides/evidence-and-sharing.md +100 -0
- package/docs/guides/operator-guide.md +424 -0
- package/docs/guides/quickstart.md +152 -0
- package/docs/guides/telemetry.md +66 -0
- package/docs/harnesses/README.md +31 -0
- package/docs/harnesses/claude-agent-sdk.md +61 -0
- package/docs/harnesses/codex-harness.md +174 -0
- package/docs/harnesses/cursor-sdk.md +149 -0
- package/docs/harnesses/deepseek-harness.md +134 -0
- package/docs/harnesses/openhands-agent-server.md +153 -0
- package/docs/harnesses/pi-sdk.md +66 -0
- package/docs/reference/README.md +19 -0
- package/docs/reference/agent-sdk-operational-runner.md +118 -0
- package/docs/reference/cli.md +114 -0
- package/docs/reference/contracts.md +222 -0
- package/docs/reference/run-bundle-contract.md +354 -0
- package/docs/reference/run-lifecycle.md +54 -0
- package/examples/cursor-sdk/README.md +11 -0
- package/examples/cursor-sdk/capture-profile.json +1 -0
- package/examples/cursor-sdk/harness.json +1 -0
- package/examples/cursor-sdk/model.json +1 -0
- package/examples/cursor-sdk/native-limits.json +1 -0
- package/examples/cursor-sdk/native-tool-policy.json +1 -0
- package/ontology/behavior-categories.v1.json +46 -0
- package/package.json +66 -0
- package/release/0.1.0/KNOWN_LIMITATIONS.md +35 -0
- package/release/0.1.0/README.md +46 -0
- package/release/0.1.0/reproducibility.json +61 -0
- package/release/0.2.0/KNOWN_LIMITATIONS.md +40 -0
- package/release/0.2.0/README.md +42 -0
- package/release/0.2.0/reproducibility.json +73 -0
- package/release/0.2.1/KNOWN_LIMITATIONS.md +18 -0
- package/release/0.2.1/README.md +63 -0
- package/release/0.2.1/reproducibility.json +73 -0
- package/release/README.md +13 -0
- package/schemas/aggregation.v1.json +293 -0
- package/schemas/behavior-assertions.v1.json +220 -0
- package/schemas/deepseek-runtime-composition.v1.schema.json +122 -0
- package/schemas/experiment.v1.schema.json +188 -0
- package/schemas/human-calibration.v1.json +336 -0
- package/schemas/normalization-integrity.v1.json +302 -0
- package/schemas/run-bundles/v1.json +1040 -0
- package/schemas/run-queue.v1.schema.json +206 -0
- package/schemas/semantic-judge.v1.json +380 -0
- package/schemas/structural-observations.v1.json +131 -0
- package/schemas/task-packet-freeze.v1.schema.json +106 -0
- package/schemas/task-packet.v1.schema.json +234 -0
- package/schemas/uniform-events/v1.json +289 -0
- package/scripts/atlas-grafana.sh +18 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "ebo.behavior-vocabulary/v1",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"categories": [
|
|
5
|
+
{
|
|
6
|
+
"id": "objective-constraint-management",
|
|
7
|
+
"name": "Objective and constraint management",
|
|
8
|
+
"dimensions": [{ "id": "objective-constraint-management", "name": "Objective and constraint management" }]
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"id": "evidence-use",
|
|
12
|
+
"name": "Evidence use",
|
|
13
|
+
"dimensions": [{ "id": "evidence-use", "name": "Evidence use" }]
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"id": "tool-selection-execution",
|
|
17
|
+
"name": "Tool selection and execution",
|
|
18
|
+
"dimensions": [{ "id": "tool-selection-execution", "name": "Tool selection and execution" }]
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "error-recognition-recovery",
|
|
22
|
+
"name": "Error recognition and recovery",
|
|
23
|
+
"dimensions": [{ "id": "error-recognition-recovery", "name": "Error recognition and recovery" }]
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "context-state-continuity",
|
|
27
|
+
"name": "Context and state continuity",
|
|
28
|
+
"dimensions": [{ "id": "context-state-continuity", "name": "Context and state continuity" }]
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": "verification-completion",
|
|
32
|
+
"name": "Verification and completion",
|
|
33
|
+
"dimensions": [{ "id": "verification-completion", "name": "Verification and completion" }]
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"id": "permission-escalation",
|
|
37
|
+
"name": "Permission and escalation behavior",
|
|
38
|
+
"dimensions": [{ "id": "permission-escalation", "name": "Permission and escalation behavior" }]
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"id": "unnecessary-work",
|
|
42
|
+
"name": "Unnecessary work",
|
|
43
|
+
"dimensions": [{ "id": "unnecessary-work", "name": "Unnecessary work" }]
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "engineering-behavior-observatory",
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"description": "Capture engineering-agent trajectories, evaluate behavior, and inspect cited evidence across harnesses.",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/trilogy-group/engineering-behavior-observatory.git"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/trilogy-group/engineering-behavior-observatory#readme",
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/trilogy-group/engineering-behavior-observatory/issues"
|
|
13
|
+
},
|
|
14
|
+
"keywords": ["agents", "observability", "evaluation", "opentelemetry", "trajectories"],
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"access": "public",
|
|
17
|
+
"registry": "https://registry.npmjs.org/"
|
|
18
|
+
},
|
|
19
|
+
"type": "module",
|
|
20
|
+
"main": "./dist/src/index.js",
|
|
21
|
+
"types": "./dist/src/index.d.ts",
|
|
22
|
+
"bin": {
|
|
23
|
+
"ebo": "./dist/src/cli.js"
|
|
24
|
+
},
|
|
25
|
+
"engines": {
|
|
26
|
+
"node": "24.19.0"
|
|
27
|
+
},
|
|
28
|
+
"scripts": {
|
|
29
|
+
"acceptance": "node scripts/release-acceptance.mjs",
|
|
30
|
+
"clean": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"",
|
|
31
|
+
"build": "npm run clean && tsc -p tsconfig.json",
|
|
32
|
+
"prepack": "npm run build",
|
|
33
|
+
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
34
|
+
"test": "npm run build && node --test dist/test/*.test.js",
|
|
35
|
+
"ebo": "node dist/src/cli.js"
|
|
36
|
+
},
|
|
37
|
+
"files": [
|
|
38
|
+
"contracts/",
|
|
39
|
+
"dist/contracts/",
|
|
40
|
+
"dist/src/",
|
|
41
|
+
"docs/",
|
|
42
|
+
"examples/",
|
|
43
|
+
"ontology/",
|
|
44
|
+
"release/README.md",
|
|
45
|
+
"release/0.1.0/",
|
|
46
|
+
"release/0.2.0/",
|
|
47
|
+
"release/0.2.1/",
|
|
48
|
+
"schemas/",
|
|
49
|
+
"scripts/atlas-grafana.sh"
|
|
50
|
+
],
|
|
51
|
+
"dependencies": {
|
|
52
|
+
"@anthropic-ai/claude-agent-sdk": "0.3.258",
|
|
53
|
+
"@cursor/sdk": "1.0.31",
|
|
54
|
+
"@deepseek-ai/dsh-sdk-client": "0.1.1-rc.2",
|
|
55
|
+
"@deepseek-ai/dsh-sdk-protocol": "0.1.1-rc.2",
|
|
56
|
+
"@earendil-works/pi-coding-agent": "0.85.1",
|
|
57
|
+
"ajv": "^8.20.0",
|
|
58
|
+
"ajv-formats": "^3.0.1",
|
|
59
|
+
"proper-lockfile": "4.1.2"
|
|
60
|
+
},
|
|
61
|
+
"devDependencies": {
|
|
62
|
+
"@types/node": "^24.10.0",
|
|
63
|
+
"@types/proper-lockfile": "4.1.4",
|
|
64
|
+
"typescript": "^5.9.3"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# EBO 0.1.0 known limitations
|
|
2
|
+
|
|
3
|
+
## Verification status
|
|
4
|
+
|
|
5
|
+
| Boundary | Deterministic acceptance | Live audit on 2026-09-09 |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| Claude Agent SDK `0.3.258` | Direct SDK capture, frozen-entry runner, hooks, OTLP receipt, export, normalization, evaluation, review, aggregation, and Atlas pass with controlled fixtures. | Operational smoke completed in 13 seconds using explicitly supplied existing OAuth: 6 native messages, 6 hooks, all three OTLP signals, qualified observational capture, workspace retention, portable export, and corpus validation. An earlier authentication failure did not recur. |
|
|
8
|
+
| OpenHands Agent Server `1.46.0` | Conversation endpoints and consumed event schemas match 1.44.1; contract tests cover current execution and historical retained evidence. The in-process EventLog completeness gap remains explicit. | Native macOS ARM64 binary and identity verified. Z.ai coding-plan `openai/glm-5.3-flash` completed a 40-second file-edit smoke with verified workspace, retained native evidence, and normalization. Capture is qualified-with-gaps. The default local tmux pool failed before model execution; the successful run used the supported subprocess terminal. |
|
|
9
|
+
| DeepSeek Harness client/protocol/runtime `0.1.1-rc.2` | Official-client controlled-runtime tests pass for protocol-only stdout, redacted stderr, receipt-to-idle completion, unsupported capabilities, partial interruption, clean shutdown, and configuration-only composition swaps. | A custom official-plugin SDK profile ran Z.ai `glm-5.3-flash` in 12 seconds: correct file output, 206 captured records, 196 native events, qualified capture, 202 validated projected events, and clean teardown. All 35 persisted sequenced session events matched captured events. Native telemetry was explicitly disabled. The runtime reports server version `0.0.1`; package versions and artifact digests identify the installation. |
|
|
10
|
+
| Codex app-server `0.153.4` | Owned-child contract, lifecycle/history, OTLP, failure, export, and retained-evaluation fixtures pass; legacy `0.150.1` readback remains covered. | `gpt-5.6-sol` completed a file-write capture in 17 seconds: 59 protocol records, correct workspace output, complete history and validated normalization with no capture gaps. OTLP logs and traces arrived; metrics did not. `thread/start` took 1.44 seconds; an earlier 30-second startup timeout did not recur, and its cause remains unknown. |
|
|
11
|
+
|
|
12
|
+
Configurable judging is deterministic-fixture verified for both backends.
|
|
13
|
+
The live Codex judge completed a no-evidence smoke in 9.5 seconds, returning a
|
|
14
|
+
structured abstention, null assessment/confidence, and zero citations.
|
|
15
|
+
Live evidence-backed citation judgments and the Claude judge backend were not
|
|
16
|
+
revalidated in this audit. These smokes are wiring evidence, not calibration.
|
|
17
|
+
|
|
18
|
+
## Product boundaries
|
|
19
|
+
|
|
20
|
+
- OpenHands exposes REST/WebSocket events, conversation state, server-reported
|
|
21
|
+
workspace identity, final workspace capture, and EBO verifier outcome. It does
|
|
22
|
+
not prove completeness of the server's in-process EventLog.
|
|
23
|
+
- DeepSeek prompt completion is receipt plus the matching root-session idle
|
|
24
|
+
observation; the official client does not expose a per-prompt result or
|
|
25
|
+
protocol-version negotiation.
|
|
26
|
+
- Codex native history completeness depends on full legacy `thread/read` output;
|
|
27
|
+
other history modes remain explicit gaps.
|
|
28
|
+
- The Atlas is a local read-only workbench/report. Grafana and Tempo are external
|
|
29
|
+
operator prerequisites; there is no hosted Atlas or trace replay service.
|
|
30
|
+
- Runtime timestamps, temporary paths, and provider timing/usage are evidence,
|
|
31
|
+
not reproducibility keys. Stable identities, fixture digests, normalized
|
|
32
|
+
projections, queue order, archives, and the npm package are deterministic.
|
|
33
|
+
- The release distributes reusable software and synthetic contract fixtures.
|
|
34
|
+
Restricted study trajectories and credentials are excluded from release assets.
|
|
35
|
+
The package remains private; npm registry publication is not part of this release.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# EBO 0.1.0 release acceptance
|
|
2
|
+
|
|
3
|
+
This is the first reusable-software release. It packages the EBO
|
|
4
|
+
runtime, schemas, pinned harness contracts, operator documentation, and Atlas
|
|
5
|
+
support. It does not contain a study campaign, candidate/baseline results,
|
|
6
|
+
restricted run evidence, credentials, workspaces, or embedded harnesses.
|
|
7
|
+
|
|
8
|
+
From a clean checkout with Node 24.19.0:
|
|
9
|
+
|
|
10
|
+
```sh
|
|
11
|
+
npm ci
|
|
12
|
+
npm run acceptance
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
The command builds and type-checks TypeScript, runs every contract/unit/
|
|
16
|
+
integration/security test, checks local Markdown links and pinned fixture
|
|
17
|
+
digests, then performs two independent `npm pack` operations. The byte-identical
|
|
18
|
+
package, `SHA256SUMS`, and machine-readable current result are written under
|
|
19
|
+
`.ebo/releases/0.1.0/`. No Git tag, GitHub release, registry publish, or remote
|
|
20
|
+
upload occurs.
|
|
21
|
+
|
|
22
|
+
The Agent SDK release test begins with one frozen queue entry and proceeds
|
|
23
|
+
through capture qualification, approved portable export, native-linked
|
|
24
|
+
normalization and structural observations, both configurable judge backends,
|
|
25
|
+
synthetic review ingestion, aggregation, and the current evidence-linked Atlas.
|
|
26
|
+
The complete suite applies the same retained-evidence path to OpenHands,
|
|
27
|
+
DeepSeek, and Codex fixtures.
|
|
28
|
+
|
|
29
|
+
Fixture hashes and declared non-deterministic fields are recorded in
|
|
30
|
+
[reproducibility.json](reproducibility.json). Fixture-versus-live support and
|
|
31
|
+
external prerequisites are explicit in [KNOWN_LIMITATIONS.md](KNOWN_LIMITATIONS.md).
|
|
32
|
+
|
|
33
|
+
## Release assets
|
|
34
|
+
|
|
35
|
+
The GitHub `v0.1.0` release provides the npm-format package, `SHA256SUMS`, and
|
|
36
|
+
`acceptance-result.json`. The result identifies the exact tested source commit.
|
|
37
|
+
Verify the downloaded package before using it:
|
|
38
|
+
|
|
39
|
+
```sh
|
|
40
|
+
shasum -a 256 -c SHA256SUMS
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Use a source checkout at the tag to reproduce acceptance; the runtime package
|
|
44
|
+
excludes tests and private orchestration files. See the
|
|
45
|
+
[operator guide](../../docs/guides/operator-guide.md) for packet-to-Atlas commands and
|
|
46
|
+
the [extension guide](../../docs/development/extension-contracts.md) for contract tests.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "ebo.release-reproducibility/v1",
|
|
3
|
+
"release": {
|
|
4
|
+
"name": "engineering-behavior-observatory",
|
|
5
|
+
"version": "0.1.0"
|
|
6
|
+
},
|
|
7
|
+
"runtime": {
|
|
8
|
+
"node": "24.19.0",
|
|
9
|
+
"claudeAgentSdk": "0.3.258",
|
|
10
|
+
"openhandsAgentServer": "1.46.0",
|
|
11
|
+
"deepseekClient": "0.1.1-rc.2",
|
|
12
|
+
"deepseekProtocol": "0.1.1-rc.2",
|
|
13
|
+
"deepseekRuntime": "0.1.1-rc.2",
|
|
14
|
+
"codexAppServer": "0.153.4",
|
|
15
|
+
"grafana": "13.2.0",
|
|
16
|
+
"grafanaInfinity": "4.0.0"
|
|
17
|
+
},
|
|
18
|
+
"commands": [
|
|
19
|
+
"npm ci",
|
|
20
|
+
"npm run acceptance"
|
|
21
|
+
],
|
|
22
|
+
"fixtureCoverage": {
|
|
23
|
+
"agent-sdk": "frozen queue entry through qualified capture, approved export, normalization, configurable judging, review, aggregation, and Atlas",
|
|
24
|
+
"openhands-agent-server": "pinned REST/WebSocket stream-final reconciliation, workspace/outcome evidence, partial capture, and retained evaluation",
|
|
25
|
+
"deepseek-harness": "official-client JSON-RPC composition, receipt-to-idle completion, stderr, interruption, shutdown, swaps, and retained evaluation",
|
|
26
|
+
"codex-app-server": "owned stdio lifecycle, full history, OTLP, interruption/failure, export, and retained evaluation",
|
|
27
|
+
"acceptance-cases": "seeded ordering, secret scanning, partial attempts, native references, abstention, disputes, denominators, and unsupported comparisons"
|
|
28
|
+
},
|
|
29
|
+
"determinism": {
|
|
30
|
+
"stable": [
|
|
31
|
+
"task, run, attempt, event, assertion, aggregate, and Atlas case identities",
|
|
32
|
+
"fixture, native-reference, normalized-dataset, source/cohort, archive, and package digests",
|
|
33
|
+
"seeded queue and review-sample ordering"
|
|
34
|
+
],
|
|
35
|
+
"excluded": [
|
|
36
|
+
"native and EBO observation timestamps",
|
|
37
|
+
"lifecycle start/finish timestamps",
|
|
38
|
+
"provider timing and usage",
|
|
39
|
+
"temporary workspace and output paths"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"fixtures": {
|
|
43
|
+
"tests/fixtures/task-packet.valid.v1.json": "ac2ef1043c0cc16bf4c21d05c1dc880ca1b4b8cc2f9ea7653328e91f0b0e2681",
|
|
44
|
+
"test/fixtures/agent-sdk-normalizer/complete.input.json": "7285dee088517e5de38ceda84fc7c58d9303949c7448ab3b5e10a5a2d2ebdfe3",
|
|
45
|
+
"test/fixtures/agent-sdk-normalizer/complete.expected.jsonl": "d32fa3a013bc179f1673f7e1a89b8a721bb8ddaf63eba5bc8a3f14f1cc148ed8",
|
|
46
|
+
"contracts/openhands-agent-server-v1.44.1.json": "e7a07977688a0703b15751a8a1ab17f29be45f9fdf438017e0dbcbc49cca37b0",
|
|
47
|
+
"contracts/openhands-agent-server-v1.46.0.json": "455cdddd2c206cb2f20245c2189b92e773657ec14d651236baa532b2dbadeb28",
|
|
48
|
+
"test/fixtures/openhands/v1.44.1/streamed-events.json": "d751083ba2ef94c9865117db481cc2f4933772bbbbb6b9fcf60571563715c1ea",
|
|
49
|
+
"test/fixtures/openhands/v1.44.1/final-events.json": "551db9904e860004d604c923692b5c5d3aaee966220492214c60003d2df415b6",
|
|
50
|
+
"test/fixtures/deepseek/golden-success.json": "f3867d38169bf0e28f64aba1dd60553f21cf07f41f81b4bad48261e49fa3ca88",
|
|
51
|
+
"test/fixtures/deepseek/golden-interrupted.json": "79e1f8404df1ee3b562d0bdbc0b2ee712ffc6d5774992b92970814ea815677b7",
|
|
52
|
+
"test/fixtures/deepseek/compositions/minimal/composition.json": "72fe4368e105f1bad82b7fdf8380e92c9fa689d8985f6ab91f534f0baf3eda02",
|
|
53
|
+
"contracts/codex-app-server-0.153.4/manifest.json": "e62281ff5e5d1cc71d07763b85e997ccc9ddbad9aa82a469da4181ee4b1890a8",
|
|
54
|
+
"test/fixtures/codex/legacy-0.150.1.dataset.json": "f71906b009e546afbf3b4e79396f223181382f3b3d8795e9cfcd032398a9d6bf",
|
|
55
|
+
"test/fixtures/behavior-assertions/abstained.json": "7f1962864f664c794925a67d93074e7b150af0f57c58041a81e062990d641197",
|
|
56
|
+
"test/fixtures/behavior-assertions/disputed.review.json": "450d3d9efe7feefaf7500b3ad20ab2803b412c7e53b91763125e15a83be87981",
|
|
57
|
+
"test/fixtures/comparison/exact.json": "cafa68e94b8d50dc308ddcfc2e73aa139c828b4ecd1e1c762bbc51bf1b44501e",
|
|
58
|
+
"test/fixtures/structural-observations/golden.json": "bad71a3a93524b76c0a2fdbb58e98e1e65be46cae14acf18ac89d9ba76e03e8a",
|
|
59
|
+
"test/atlas-fixture.ts": "9f03ce9cbcd0e5d3e3a5916866554ceb1c21f1c8712e58529499c1ea499f048d"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# EBO 0.2.0 known limitations
|
|
2
|
+
|
|
3
|
+
## Evidence for this release
|
|
4
|
+
|
|
5
|
+
The combined offline suite covers all six adapters and the existing export,
|
|
6
|
+
evaluation, calibration, comparison, and Atlas paths. The release acceptance
|
|
7
|
+
result records the tested commit; a completed smoke is wiring evidence, not
|
|
8
|
+
model-quality calibration.
|
|
9
|
+
|
|
10
|
+
| New Boundary | Live Evidence Retained During PR Qualification | Limits |
|
|
11
|
+
|---|---|---|
|
|
12
|
+
| Pi SDK `0.85.1` | Z.ai `glm-5.3-flash` completed an isolated file-edit smoke with qualified native session, tool events, workspace evidence, sanitized export/readback, and observations. | One owned session per attempt; no verified native OTLP receipt surface or OS sandbox. |
|
|
13
|
+
| Cursor SDK `1.0.31` | `gpt-5.4-nano` completed an isolated file-edit smoke with all four official store files, qualified native evidence, workspace patch, sanitized export/readback, and observations. | Local SDK execution only; explicit tool policy is not OS containment. Opaque checkpoints are excluded from portable exports. |
|
|
14
|
+
|
|
15
|
+
The four earlier harnesses retain their
|
|
16
|
+
[0.1.0 live-verification record](../0.1.0/KNOWN_LIMITATIONS.md); those live checks
|
|
17
|
+
were not repeated solely for this release. See the adapter guides for detailed
|
|
18
|
+
version-specific evidence capabilities.
|
|
19
|
+
|
|
20
|
+
## Cursor telemetry
|
|
21
|
+
|
|
22
|
+
The local SDK exposes no per-run OTLP configuration or receipt API. Cursor's
|
|
23
|
+
separate Enterprise team-admin exporter supports server-side OTLP/HTTP protobuf
|
|
24
|
+
metrics and logs. It has not been configured or correlation-qualified here.
|
|
25
|
+
It supplies no traces, prompt content, or historical backfill. Aggregate metrics
|
|
26
|
+
lack conversation identifiers; matching exported logs to EBO attempts still needs
|
|
27
|
+
verification. SDK-native capture remains useful independently of that channel.
|
|
28
|
+
|
|
29
|
+
## Dependency audit
|
|
30
|
+
|
|
31
|
+
The release dependency tree reports three npm audit entries: two moderate and
|
|
32
|
+
one high, through `@cursor/sdk` → `@connectrpc/connect-node` → `undici@5.29.0`.
|
|
33
|
+
These include upstream HTTP and WebSocket advisories; exploitability in the
|
|
34
|
+
specific SDK transport paths has not been established. npm offers no compatible
|
|
35
|
+
fix for this pinned SDK tree. No unverified major-version override was applied.
|
|
36
|
+
Review this dependency risk before deployment and qualify an upstream SDK fix
|
|
37
|
+
when available. A passing release test suite is not a clean security audit.
|
|
38
|
+
|
|
39
|
+
The local-only Atlas, evidence-sharing requirements, provider-dependent timing,
|
|
40
|
+
and other [existing product boundaries](../0.1.0/KNOWN_LIMITATIONS.md) still apply.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# EBO 0.2.0
|
|
2
|
+
|
|
3
|
+
This release adds Pi and Cursor TypeScript SDK harnesses to the existing Claude
|
|
4
|
+
Agent SDK, Codex, OpenHands, and DeepSeek integrations.
|
|
5
|
+
|
|
6
|
+
- **Pi:** pinned public session and extension APIs, durable session history,
|
|
7
|
+
tool/lifecycle events, passive context observation, and bounded cleanup.
|
|
8
|
+
- **Cursor:** pinned local SDK, official JSONL store, stream/callback/history
|
|
9
|
+
capture, usage readback, and bounded cancellation.
|
|
10
|
+
- Both run frozen observational queue entries through workspace capture,
|
|
11
|
+
qualification, sanitized export, normalization, and the existing behavioral
|
|
12
|
+
evaluation and Atlas workflows. No ground-truth verifier is required.
|
|
13
|
+
- Export retains both adapters' protections for hidden reasoning, credential
|
|
14
|
+
fields, and opaque Cursor checkpoint content.
|
|
15
|
+
|
|
16
|
+
See the [Pi operator guide](../../docs/harnesses/pi-sdk.md) and
|
|
17
|
+
[Cursor operator guide](../../docs/harnesses/cursor-sdk.md) for configuration and commands.
|
|
18
|
+
The [limitations](KNOWN_LIMITATIONS.md) distinguish live smoke evidence from
|
|
19
|
+
contract coverage and document the Cursor dependency audit findings.
|
|
20
|
+
|
|
21
|
+
## Reproduce acceptance
|
|
22
|
+
|
|
23
|
+
Use a clean source checkout at `v0.2.0` with Node `24.19.0`:
|
|
24
|
+
|
|
25
|
+
```sh
|
|
26
|
+
npm ci
|
|
27
|
+
npm run acceptance
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Acceptance builds and type-checks the project, runs the complete offline test
|
|
31
|
+
suite, validates documentation links and fixture digests, scans package contents,
|
|
32
|
+
and verifies that two npm packs are byte-identical. Opt-in live tests require
|
|
33
|
+
separate credentials and are not run by this command.
|
|
34
|
+
|
|
35
|
+
The package, `SHA256SUMS`, and `acceptance-result.json` are written to
|
|
36
|
+
`.ebo/releases/0.2.0/`. The result records the exact tested source commit.
|
|
37
|
+
Verify a downloaded release package with `shasum -a 256 -c SHA256SUMS`.
|
|
38
|
+
|
|
39
|
+
[reproducibility.json](reproducibility.json) records runtime pins and fixture
|
|
40
|
+
digests. Release assets exclude credentials, private memory, captured study
|
|
41
|
+
trajectories, and workspaces. The package remains private; there is no npm
|
|
42
|
+
registry publication. Existing `v0.1.0` artifacts and tag remain unchanged.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "ebo.release-reproducibility/v1",
|
|
3
|
+
"release": {
|
|
4
|
+
"name": "engineering-behavior-observatory",
|
|
5
|
+
"version": "0.2.0"
|
|
6
|
+
},
|
|
7
|
+
"runtime": {
|
|
8
|
+
"node": "24.19.0",
|
|
9
|
+
"claudeAgentSdk": "0.3.258",
|
|
10
|
+
"openhandsAgentServer": "1.46.0",
|
|
11
|
+
"deepseekClient": "0.1.1-rc.2",
|
|
12
|
+
"deepseekProtocol": "0.1.1-rc.2",
|
|
13
|
+
"deepseekRuntime": "0.1.1-rc.2",
|
|
14
|
+
"codexAppServer": "0.153.4",
|
|
15
|
+
"grafana": "13.2.0",
|
|
16
|
+
"grafanaInfinity": "4.0.0",
|
|
17
|
+
"piSdk": "0.85.1",
|
|
18
|
+
"cursorSdk": "1.0.31"
|
|
19
|
+
},
|
|
20
|
+
"commands": [
|
|
21
|
+
"npm ci",
|
|
22
|
+
"npm run acceptance"
|
|
23
|
+
],
|
|
24
|
+
"fixtureCoverage": {
|
|
25
|
+
"agent-sdk": "frozen queue entry through qualified capture, approved export, normalization, configurable judging, review, aggregation, and Atlas",
|
|
26
|
+
"openhands-agent-server": "pinned REST/WebSocket stream-final reconciliation, workspace/outcome evidence, partial capture, and retained evaluation",
|
|
27
|
+
"deepseek-harness": "official-client JSON-RPC composition, receipt-to-idle completion, stderr, interruption, shutdown, swaps, and retained evaluation",
|
|
28
|
+
"codex-app-server": "owned stdio lifecycle, full history, OTLP, interruption/failure, export, and retained evaluation",
|
|
29
|
+
"acceptance-cases": "seeded ordering, secret scanning, partial attempts, native references, abstention, disputes, denominators, and unsupported comparisons",
|
|
30
|
+
"pi-sdk": "frozen queue, passive hooks, durable session, partial cleanup, export, retained normalization and evaluation",
|
|
31
|
+
"cursor-sdk": "frozen queue, official store, callbacks/history, bounded cancellation, export, retained normalization and evaluation"
|
|
32
|
+
},
|
|
33
|
+
"determinism": {
|
|
34
|
+
"stable": [
|
|
35
|
+
"task, run, attempt, event, assertion, aggregate, and Atlas case identities",
|
|
36
|
+
"fixture, native-reference, normalized-dataset, source/cohort, archive, and package digests",
|
|
37
|
+
"seeded queue and review-sample ordering"
|
|
38
|
+
],
|
|
39
|
+
"excluded": [
|
|
40
|
+
"native and EBO observation timestamps",
|
|
41
|
+
"lifecycle start/finish timestamps",
|
|
42
|
+
"provider timing and usage",
|
|
43
|
+
"temporary workspace and output paths"
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
"fixtures": {
|
|
47
|
+
"tests/fixtures/task-packet.valid.v1.json": "ac2ef1043c0cc16bf4c21d05c1dc880ca1b4b8cc2f9ea7653328e91f0b0e2681",
|
|
48
|
+
"test/fixtures/agent-sdk-normalizer/complete.input.json": "7285dee088517e5de38ceda84fc7c58d9303949c7448ab3b5e10a5a2d2ebdfe3",
|
|
49
|
+
"test/fixtures/agent-sdk-normalizer/complete.expected.jsonl": "d32fa3a013bc179f1673f7e1a89b8a721bb8ddaf63eba5bc8a3f14f1cc148ed8",
|
|
50
|
+
"contracts/openhands-agent-server-v1.44.1.json": "e7a07977688a0703b15751a8a1ab17f29be45f9fdf438017e0dbcbc49cca37b0",
|
|
51
|
+
"contracts/openhands-agent-server-v1.46.0.json": "455cdddd2c206cb2f20245c2189b92e773657ec14d651236baa532b2dbadeb28",
|
|
52
|
+
"test/fixtures/openhands/v1.44.1/streamed-events.json": "d751083ba2ef94c9865117db481cc2f4933772bbbbb6b9fcf60571563715c1ea",
|
|
53
|
+
"test/fixtures/openhands/v1.44.1/final-events.json": "551db9904e860004d604c923692b5c5d3aaee966220492214c60003d2df415b6",
|
|
54
|
+
"test/fixtures/deepseek/golden-success.json": "f3867d38169bf0e28f64aba1dd60553f21cf07f41f81b4bad48261e49fa3ca88",
|
|
55
|
+
"test/fixtures/deepseek/golden-interrupted.json": "79e1f8404df1ee3b562d0bdbc0b2ee712ffc6d5774992b92970814ea815677b7",
|
|
56
|
+
"test/fixtures/deepseek/compositions/minimal/composition.json": "72fe4368e105f1bad82b7fdf8380e92c9fa689d8985f6ab91f534f0baf3eda02",
|
|
57
|
+
"contracts/codex-app-server-0.153.4/manifest.json": "e62281ff5e5d1cc71d07763b85e997ccc9ddbad9aa82a469da4181ee4b1890a8",
|
|
58
|
+
"test/fixtures/codex/legacy-0.150.1.dataset.json": "f71906b009e546afbf3b4e79396f223181382f3b3d8795e9cfcd032398a9d6bf",
|
|
59
|
+
"test/fixtures/behavior-assertions/abstained.json": "7f1962864f664c794925a67d93074e7b150af0f57c58041a81e062990d641197",
|
|
60
|
+
"test/fixtures/behavior-assertions/disputed.review.json": "450d3d9efe7feefaf7500b3ad20ab2803b412c7e53b91763125e15a83be87981",
|
|
61
|
+
"test/fixtures/comparison/exact.json": "cafa68e94b8d50dc308ddcfc2e73aa139c828b4ecd1e1c762bbc51bf1b44501e",
|
|
62
|
+
"test/fixtures/structural-observations/golden.json": "bad71a3a93524b76c0a2fdbb58e98e1e65be46cae14acf18ac89d9ba76e03e8a",
|
|
63
|
+
"test/atlas-fixture.ts": "9f03ce9cbcd0e5d3e3a5916866554ceb1c21f1c8712e58529499c1ea499f048d",
|
|
64
|
+
"test/pi.test.ts": "a00997c5617ca178e19b25b0d483cbdce8ce7c306d4c871557945b31a2e657cf",
|
|
65
|
+
"test/cursor-sdk.test.ts": "753094f127b11dc392ec2244c9edddabec27aa94347bb6159a292129ed2a2822",
|
|
66
|
+
"examples/cursor-sdk/README.md": "a2cf481123e7f3deb1c5a682ba208a775c3f91c35e1a6c1a428c517c79692618",
|
|
67
|
+
"examples/cursor-sdk/capture-profile.json": "d1a5787875daf5523b3783f259b891c256a904cbb10279d5be214af846305a2d",
|
|
68
|
+
"examples/cursor-sdk/harness.json": "2f1da6f2b17258d0ee59431f687696901ce3692589175d182f3a4bbe8dd4d689",
|
|
69
|
+
"examples/cursor-sdk/model.json": "ad8f31ff5d2387c02d79226679022358afafc61ba5dda73040e3f754530a230a",
|
|
70
|
+
"examples/cursor-sdk/native-limits.json": "40fe451f56b0863e79b42f5c85defbce678e1dc90dd248d15c430db176d71511",
|
|
71
|
+
"examples/cursor-sdk/native-tool-policy.json": "0fef98b36cd39de82914c5b068022c1335dadda24b7d6e7df398b2430e6a16e0"
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# EBO 0.2.1 known limitations
|
|
2
|
+
|
|
3
|
+
Runtime pins and behavior are unchanged from 0.2.0. The
|
|
4
|
+
[0.2.0 support record](../0.2.0/KNOWN_LIMITATIONS.md) describes live-tested
|
|
5
|
+
routes, Cursor's separate Enterprise telemetry boundary, and the limits of
|
|
6
|
+
local SDK isolation.
|
|
7
|
+
|
|
8
|
+
The dependency audit still reports three entries (two moderate, one high)
|
|
9
|
+
through Cursor SDK, ConnectRPC, and Undici. No dependency upgrade or override
|
|
10
|
+
is included in this documentation release. Review those advisories before
|
|
11
|
+
deployment.
|
|
12
|
+
|
|
13
|
+
Apache-2.0 covers EBO's original code and documentation. Third-party SDKs,
|
|
14
|
+
dependencies, and upstream contract material retain their own licenses and
|
|
15
|
+
terms. Installing EBO does not grant model access or replace provider terms.
|
|
16
|
+
|
|
17
|
+
npm distribution includes the compiled CLI and documentation. The synthetic
|
|
18
|
+
Atlas demo generator and test fixtures require a source checkout.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# EBO 0.2.1
|
|
2
|
+
|
|
3
|
+
This release reorganizes the documentation, adds the Apache-2.0 license, and
|
|
4
|
+
prepares `engineering-behavior-observatory` for public npm distribution.
|
|
5
|
+
The executable remains `ebo`.
|
|
6
|
+
|
|
7
|
+
## Changes
|
|
8
|
+
|
|
9
|
+
- README with installation, a synthetic quickstart, and a harness overview.
|
|
10
|
+
- Documentation grouped into guides, harnesses, evaluation, reference, and
|
|
11
|
+
development, with an index for each reading path.
|
|
12
|
+
- Grouped command reference using `ebo`.
|
|
13
|
+
- Generated OpenSymphony topic notes moved to private memory; public guides
|
|
14
|
+
contain authored operational and contract documentation.
|
|
15
|
+
- npm metadata, public access configuration, and Apache-2.0 licensing.
|
|
16
|
+
|
|
17
|
+
No runtime behavior, schemas, provider pins, or dependency versions changed
|
|
18
|
+
from 0.2.0.
|
|
19
|
+
|
|
20
|
+
## Install
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
npm install -g engineering-behavior-observatory
|
|
24
|
+
ebo --help
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
For a one-off command:
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
npm exec --package=engineering-behavior-observatory -- ebo --help
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Avoid `npx ebo`, which resolves a different package. See the
|
|
34
|
+
[quickstart](../../docs/guides/quickstart.md) for Node requirements, source
|
|
35
|
+
installation, and checksum-verified release archives.
|
|
36
|
+
|
|
37
|
+
## Verification
|
|
38
|
+
|
|
39
|
+
`npm run acceptance` records the tested commit, pinned runtime, fixture
|
|
40
|
+
digests, complete offline test result, documentation links, package scan, and
|
|
41
|
+
byte-identical repeated packs. Its output directory is
|
|
42
|
+
`.ebo/releases/0.2.1/`. The package, checksum, and acceptance result are
|
|
43
|
+
release artifacts. A Git tag and an npm publication are separate operations.
|
|
44
|
+
|
|
45
|
+
Live provider tests are not repeated for documentation and metadata changes.
|
|
46
|
+
[Known limitations](KNOWN_LIMITATIONS.md) carries forward the existing
|
|
47
|
+
live-evidence boundaries and dependency audit risk.
|
|
48
|
+
|
|
49
|
+
## Publication
|
|
50
|
+
|
|
51
|
+
The package name is `engineering-behavior-observatory`; `bin.ebo` points
|
|
52
|
+
to the compiled CLI. The package includes runtime code, schemas, contracts,
|
|
53
|
+
documentation, examples, ontology, release records, and the Grafana launcher.
|
|
54
|
+
Tests, credentials, native study evidence, and private memory are excluded.
|
|
55
|
+
|
|
56
|
+
The npm publishing account must be checked with `npm whoami` before release.
|
|
57
|
+
An `NPM_TOKEN` must be exported to the publishing process and supplied through
|
|
58
|
+
an environment-referencing npm configuration, never committed.
|
|
59
|
+
|
|
60
|
+
Stage an existing package with `npm stage publish <tarball>`, then inspect
|
|
61
|
+
and approve it with npm's 2FA flow. npm currently requires a first publication
|
|
62
|
+
before staging is available; a new package uses `npm publish <tarball> --access public`.
|
|
63
|
+
See [npm staged publishing](https://docs.npmjs.com/staged-publishing/).
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "ebo.release-reproducibility/v1",
|
|
3
|
+
"release": {
|
|
4
|
+
"name": "engineering-behavior-observatory",
|
|
5
|
+
"version": "0.2.1"
|
|
6
|
+
},
|
|
7
|
+
"runtime": {
|
|
8
|
+
"node": "24.19.0",
|
|
9
|
+
"claudeAgentSdk": "0.3.258",
|
|
10
|
+
"openhandsAgentServer": "1.46.0",
|
|
11
|
+
"deepseekClient": "0.1.1-rc.2",
|
|
12
|
+
"deepseekProtocol": "0.1.1-rc.2",
|
|
13
|
+
"deepseekRuntime": "0.1.1-rc.2",
|
|
14
|
+
"codexAppServer": "0.153.4",
|
|
15
|
+
"grafana": "13.2.0",
|
|
16
|
+
"grafanaInfinity": "4.0.0",
|
|
17
|
+
"piSdk": "0.85.1",
|
|
18
|
+
"cursorSdk": "1.0.31"
|
|
19
|
+
},
|
|
20
|
+
"commands": [
|
|
21
|
+
"npm ci",
|
|
22
|
+
"npm run acceptance"
|
|
23
|
+
],
|
|
24
|
+
"fixtureCoverage": {
|
|
25
|
+
"agent-sdk": "frozen queue entry through qualified capture, approved export, normalization, configurable judging, review, aggregation, and Atlas",
|
|
26
|
+
"openhands-agent-server": "pinned REST/WebSocket stream-final reconciliation, workspace/outcome evidence, partial capture, and retained evaluation",
|
|
27
|
+
"deepseek-harness": "official-client JSON-RPC composition, receipt-to-idle completion, stderr, interruption, shutdown, swaps, and retained evaluation",
|
|
28
|
+
"codex-app-server": "owned stdio lifecycle, full history, OTLP, interruption/failure, export, and retained evaluation",
|
|
29
|
+
"acceptance-cases": "seeded ordering, secret scanning, partial attempts, native references, abstention, disputes, denominators, and unsupported comparisons",
|
|
30
|
+
"pi-sdk": "frozen queue, passive hooks, durable session, partial cleanup, export, retained normalization and evaluation",
|
|
31
|
+
"cursor-sdk": "frozen queue, official store, callbacks/history, bounded cancellation, export, retained normalization and evaluation"
|
|
32
|
+
},
|
|
33
|
+
"determinism": {
|
|
34
|
+
"stable": [
|
|
35
|
+
"task, run, attempt, event, assertion, aggregate, and Atlas case identities",
|
|
36
|
+
"fixture, native-reference, normalized-dataset, source/cohort, archive, and package digests",
|
|
37
|
+
"seeded queue and review-sample ordering"
|
|
38
|
+
],
|
|
39
|
+
"excluded": [
|
|
40
|
+
"native and EBO observation timestamps",
|
|
41
|
+
"lifecycle start/finish timestamps",
|
|
42
|
+
"provider timing and usage",
|
|
43
|
+
"temporary workspace and output paths"
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
"fixtures": {
|
|
47
|
+
"tests/fixtures/task-packet.valid.v1.json": "ac2ef1043c0cc16bf4c21d05c1dc880ca1b4b8cc2f9ea7653328e91f0b0e2681",
|
|
48
|
+
"test/fixtures/agent-sdk-normalizer/complete.input.json": "7285dee088517e5de38ceda84fc7c58d9303949c7448ab3b5e10a5a2d2ebdfe3",
|
|
49
|
+
"test/fixtures/agent-sdk-normalizer/complete.expected.jsonl": "d32fa3a013bc179f1673f7e1a89b8a721bb8ddaf63eba5bc8a3f14f1cc148ed8",
|
|
50
|
+
"contracts/openhands-agent-server-v1.44.1.json": "e7a07977688a0703b15751a8a1ab17f29be45f9fdf438017e0dbcbc49cca37b0",
|
|
51
|
+
"contracts/openhands-agent-server-v1.46.0.json": "455cdddd2c206cb2f20245c2189b92e773657ec14d651236baa532b2dbadeb28",
|
|
52
|
+
"test/fixtures/openhands/v1.44.1/streamed-events.json": "d751083ba2ef94c9865117db481cc2f4933772bbbbb6b9fcf60571563715c1ea",
|
|
53
|
+
"test/fixtures/openhands/v1.44.1/final-events.json": "551db9904e860004d604c923692b5c5d3aaee966220492214c60003d2df415b6",
|
|
54
|
+
"test/fixtures/deepseek/golden-success.json": "f3867d38169bf0e28f64aba1dd60553f21cf07f41f81b4bad48261e49fa3ca88",
|
|
55
|
+
"test/fixtures/deepseek/golden-interrupted.json": "79e1f8404df1ee3b562d0bdbc0b2ee712ffc6d5774992b92970814ea815677b7",
|
|
56
|
+
"test/fixtures/deepseek/compositions/minimal/composition.json": "72fe4368e105f1bad82b7fdf8380e92c9fa689d8985f6ab91f534f0baf3eda02",
|
|
57
|
+
"contracts/codex-app-server-0.153.4/manifest.json": "e62281ff5e5d1cc71d07763b85e997ccc9ddbad9aa82a469da4181ee4b1890a8",
|
|
58
|
+
"test/fixtures/codex/legacy-0.150.1.dataset.json": "f71906b009e546afbf3b4e79396f223181382f3b3d8795e9cfcd032398a9d6bf",
|
|
59
|
+
"test/fixtures/behavior-assertions/abstained.json": "7f1962864f664c794925a67d93074e7b150af0f57c58041a81e062990d641197",
|
|
60
|
+
"test/fixtures/behavior-assertions/disputed.review.json": "450d3d9efe7feefaf7500b3ad20ab2803b412c7e53b91763125e15a83be87981",
|
|
61
|
+
"test/fixtures/comparison/exact.json": "cafa68e94b8d50dc308ddcfc2e73aa139c828b4ecd1e1c762bbc51bf1b44501e",
|
|
62
|
+
"test/fixtures/structural-observations/golden.json": "bad71a3a93524b76c0a2fdbb58e98e1e65be46cae14acf18ac89d9ba76e03e8a",
|
|
63
|
+
"test/atlas-fixture.ts": "9f03ce9cbcd0e5d3e3a5916866554ceb1c21f1c8712e58529499c1ea499f048d",
|
|
64
|
+
"test/pi.test.ts": "a00997c5617ca178e19b25b0d483cbdce8ce7c306d4c871557945b31a2e657cf",
|
|
65
|
+
"test/cursor-sdk.test.ts": "753094f127b11dc392ec2244c9edddabec27aa94347bb6159a292129ed2a2822",
|
|
66
|
+
"examples/cursor-sdk/README.md": "a2cf481123e7f3deb1c5a682ba208a775c3f91c35e1a6c1a428c517c79692618",
|
|
67
|
+
"examples/cursor-sdk/capture-profile.json": "d1a5787875daf5523b3783f259b891c256a904cbb10279d5be214af846305a2d",
|
|
68
|
+
"examples/cursor-sdk/harness.json": "2f1da6f2b17258d0ee59431f687696901ce3692589175d182f3a4bbe8dd4d689",
|
|
69
|
+
"examples/cursor-sdk/model.json": "ad8f31ff5d2387c02d79226679022358afafc61ba5dda73040e3f754530a230a",
|
|
70
|
+
"examples/cursor-sdk/native-limits.json": "40fe451f56b0863e79b42f5c85defbce678e1dc90dd248d15c430db176d71511",
|
|
71
|
+
"examples/cursor-sdk/native-tool-policy.json": "0fef98b36cd39de82914c5b068022c1335dadda24b7d6e7df398b2430e6a16e0"
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Release records
|
|
2
|
+
|
|
3
|
+
For downloads and published artifacts, see
|
|
4
|
+
[GitHub Releases](https://github.com/trilogy-group/engineering-behavior-observatory/releases).
|
|
5
|
+
|
|
6
|
+
| Version | Changes and verification | Support boundary |
|
|
7
|
+
| :--- | :--- | :--- |
|
|
8
|
+
| [0.2.1](0.2.1/README.md) | Documentation redesign, Apache-2.0, and npm distribution setup | [Known limitations](0.2.1/KNOWN_LIMITATIONS.md) |
|
|
9
|
+
| [0.2.0](0.2.0/README.md) | Pi and Cursor SDK integrations; reproducible package | [Known limitations](0.2.0/KNOWN_LIMITATIONS.md) |
|
|
10
|
+
| [0.1.0](0.1.0/README.md) | Initial capture, behavioral evaluation, Atlas, and release gate | [Known limitations](0.1.0/KNOWN_LIMITATIONS.md) |
|
|
11
|
+
|
|
12
|
+
These are versioned records, not current installation instructions. Start with
|
|
13
|
+
the [quickstart](../docs/guides/quickstart.md) for the current checkout.
|