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.
Files changed (178) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +151 -0
  3. package/contracts/codex-app-server-0.150.1/manifest.json +25 -0
  4. package/contracts/codex-app-server-0.150.1/schema/InitializeParams.json +84 -0
  5. package/contracts/codex-app-server-0.150.1/schema/JSONRPCMessage.json +137 -0
  6. package/contracts/codex-app-server-0.150.1/schema/v2/ThreadReadParams.json +17 -0
  7. package/contracts/codex-app-server-0.150.1/schema/v2/ThreadTokenUsageUpdatedNotification.json +82 -0
  8. package/contracts/codex-app-server-0.150.1/schema/v2/TurnInterruptParams.json +17 -0
  9. package/contracts/codex-app-server-0.150.1/types/AskForApproval.ts +5 -0
  10. package/contracts/codex-app-server-0.150.1/types/ClientNotification.ts +5 -0
  11. package/contracts/codex-app-server-0.150.1/types/SandboxMode.ts +5 -0
  12. package/contracts/codex-app-server-0.150.1/types/ThreadReadParams.ts +9 -0
  13. package/contracts/codex-app-server-0.150.1/types/TokenUsageBreakdown.ts +5 -0
  14. package/contracts/codex-app-server-0.150.1/types/TurnInterruptParams.ts +5 -0
  15. package/contracts/codex-app-server-0.153.4/manifest.json +27 -0
  16. package/contracts/codex-app-server-0.153.4/schema/JSONRPCMessage.json +137 -0
  17. package/contracts/codex-app-server-0.153.4/schema/v1/InitializeParams.json +84 -0
  18. package/contracts/codex-app-server-0.153.4/schema/v2/ThreadReadParams.json +17 -0
  19. package/contracts/codex-app-server-0.153.4/schema/v2/ThreadStartParams.json +515 -0
  20. package/contracts/codex-app-server-0.153.4/schema/v2/ThreadTokenUsageUpdatedNotification.json +82 -0
  21. package/contracts/codex-app-server-0.153.4/schema/v2/TurnInterruptParams.json +17 -0
  22. package/contracts/codex-app-server-0.153.4/schema/v2/TurnStartParams.json +921 -0
  23. package/contracts/codex-app-server-0.153.4/types/AskForApproval.ts +5 -0
  24. package/contracts/codex-app-server-0.153.4/types/ClientNotification.ts +5 -0
  25. package/contracts/codex-app-server-0.153.4/types/SandboxMode.ts +5 -0
  26. package/contracts/codex-app-server-0.153.4/types/ThreadReadParams.ts +12 -0
  27. package/contracts/codex-app-server-0.153.4/types/TokenUsageBreakdown.ts +5 -0
  28. package/contracts/codex-app-server-0.153.4/types/TurnInterruptParams.ts +5 -0
  29. package/contracts/openhands-agent-server-v1.44.1.json +65 -0
  30. package/contracts/openhands-agent-server-v1.46.0.json +46 -0
  31. package/dist/contracts/codex-app-server-0.153.4/types/AskForApproval.d.ts +9 -0
  32. package/dist/contracts/codex-app-server-0.153.4/types/AskForApproval.js +2 -0
  33. package/dist/contracts/codex-app-server-0.153.4/types/ClientNotification.d.ts +3 -0
  34. package/dist/contracts/codex-app-server-0.153.4/types/ClientNotification.js +2 -0
  35. package/dist/contracts/codex-app-server-0.153.4/types/SandboxMode.d.ts +1 -0
  36. package/dist/contracts/codex-app-server-0.153.4/types/SandboxMode.js +2 -0
  37. package/dist/contracts/codex-app-server-0.153.4/types/ThreadReadParams.d.ts +10 -0
  38. package/dist/contracts/codex-app-server-0.153.4/types/ThreadReadParams.js +2 -0
  39. package/dist/contracts/codex-app-server-0.153.4/types/TokenUsageBreakdown.d.ts +8 -0
  40. package/dist/contracts/codex-app-server-0.153.4/types/TokenUsageBreakdown.js +2 -0
  41. package/dist/contracts/codex-app-server-0.153.4/types/TurnInterruptParams.d.ts +4 -0
  42. package/dist/contracts/codex-app-server-0.153.4/types/TurnInterruptParams.js +2 -0
  43. package/dist/src/agent-sdk-normalizer.d.ts +22 -0
  44. package/dist/src/agent-sdk-normalizer.js +995 -0
  45. package/dist/src/agent-sdk-run.d.ts +31 -0
  46. package/dist/src/agent-sdk-run.js +242 -0
  47. package/dist/src/agent-sdk-runner.d.ts +96 -0
  48. package/dist/src/agent-sdk-runner.js +407 -0
  49. package/dist/src/agent-sdk.d.ts +294 -0
  50. package/dist/src/agent-sdk.js +644 -0
  51. package/dist/src/aggregation.d.ts +183 -0
  52. package/dist/src/aggregation.js +513 -0
  53. package/dist/src/artifacts.d.ts +36 -0
  54. package/dist/src/artifacts.js +1372 -0
  55. package/dist/src/atlas-grafana.d.ts +377 -0
  56. package/dist/src/atlas-grafana.js +47 -0
  57. package/dist/src/atlas-html.d.ts +2 -0
  58. package/dist/src/atlas-html.js +34 -0
  59. package/dist/src/atlas.d.ts +130 -0
  60. package/dist/src/atlas.js +235 -0
  61. package/dist/src/behavior-assertions.d.ts +95 -0
  62. package/dist/src/behavior-assertions.js +154 -0
  63. package/dist/src/cli.d.ts +5 -0
  64. package/dist/src/cli.js +957 -0
  65. package/dist/src/codex-judge.d.ts +44 -0
  66. package/dist/src/codex-judge.js +214 -0
  67. package/dist/src/codex-run.d.ts +114 -0
  68. package/dist/src/codex-run.js +519 -0
  69. package/dist/src/codex.d.ts +187 -0
  70. package/dist/src/codex.js +1028 -0
  71. package/dist/src/contracts.d.ts +155 -0
  72. package/dist/src/contracts.js +866 -0
  73. package/dist/src/corpus.d.ts +67 -0
  74. package/dist/src/corpus.js +540 -0
  75. package/dist/src/cursor-sdk-runner.d.ts +81 -0
  76. package/dist/src/cursor-sdk-runner.js +362 -0
  77. package/dist/src/cursor-sdk.d.ts +81 -0
  78. package/dist/src/cursor-sdk.js +1078 -0
  79. package/dist/src/deepseek-adapter.d.ts +152 -0
  80. package/dist/src/deepseek-adapter.js +777 -0
  81. package/dist/src/exports.d.ts +69 -0
  82. package/dist/src/exports.js +966 -0
  83. package/dist/src/human-calibration.d.ts +167 -0
  84. package/dist/src/human-calibration.js +618 -0
  85. package/dist/src/index.d.ts +71 -0
  86. package/dist/src/index.js +38 -0
  87. package/dist/src/lifecycle.d.ts +196 -0
  88. package/dist/src/lifecycle.js +1889 -0
  89. package/dist/src/normalization-integrity.d.ts +128 -0
  90. package/dist/src/normalization-integrity.js +429 -0
  91. package/dist/src/openhands-run.d.ts +36 -0
  92. package/dist/src/openhands-run.js +415 -0
  93. package/dist/src/openhands.d.ts +130 -0
  94. package/dist/src/openhands.js +859 -0
  95. package/dist/src/pi.d.ts +203 -0
  96. package/dist/src/pi.js +1345 -0
  97. package/dist/src/process-protocol.d.ts +245 -0
  98. package/dist/src/process-protocol.js +1261 -0
  99. package/dist/src/retained-evidence.d.ts +12 -0
  100. package/dist/src/retained-evidence.js +201 -0
  101. package/dist/src/run-bundles.d.ts +193 -0
  102. package/dist/src/run-bundles.js +993 -0
  103. package/dist/src/scheduler.d.ts +109 -0
  104. package/dist/src/scheduler.js +1080 -0
  105. package/dist/src/semantic-judge.d.ts +194 -0
  106. package/dist/src/semantic-judge.js +875 -0
  107. package/dist/src/structural-observations.d.ts +124 -0
  108. package/dist/src/structural-observations.js +671 -0
  109. package/dist/src/task-packets.d.ts +115 -0
  110. package/dist/src/task-packets.js +683 -0
  111. package/dist/src/uniform-events.d.ts +120 -0
  112. package/dist/src/uniform-events.js +158 -0
  113. package/dist/src/verifiers.d.ts +116 -0
  114. package/dist/src/verifiers.js +819 -0
  115. package/dist/src/workspaces.d.ts +56 -0
  116. package/dist/src/workspaces.js +1314 -0
  117. package/docs/README.md +60 -0
  118. package/docs/development/README.md +71 -0
  119. package/docs/development/documentation-sync.md +58 -0
  120. package/docs/development/extension-contracts.md +307 -0
  121. package/docs/evaluation/README.md +48 -0
  122. package/docs/evaluation/aggregation.md +112 -0
  123. package/docs/evaluation/behavior-assertions.md +45 -0
  124. package/docs/evaluation/human-calibration.md +170 -0
  125. package/docs/evaluation/normalization-integrity.md +80 -0
  126. package/docs/evaluation/semantic-judge.md +188 -0
  127. package/docs/evaluation/structural-observations.md +84 -0
  128. package/docs/evaluation/uniform-events.md +131 -0
  129. package/docs/guides/atlas.md +144 -0
  130. package/docs/guides/evidence-and-sharing.md +100 -0
  131. package/docs/guides/operator-guide.md +424 -0
  132. package/docs/guides/quickstart.md +152 -0
  133. package/docs/guides/telemetry.md +66 -0
  134. package/docs/harnesses/README.md +31 -0
  135. package/docs/harnesses/claude-agent-sdk.md +61 -0
  136. package/docs/harnesses/codex-harness.md +174 -0
  137. package/docs/harnesses/cursor-sdk.md +149 -0
  138. package/docs/harnesses/deepseek-harness.md +134 -0
  139. package/docs/harnesses/openhands-agent-server.md +153 -0
  140. package/docs/harnesses/pi-sdk.md +66 -0
  141. package/docs/reference/README.md +19 -0
  142. package/docs/reference/agent-sdk-operational-runner.md +118 -0
  143. package/docs/reference/cli.md +114 -0
  144. package/docs/reference/contracts.md +222 -0
  145. package/docs/reference/run-bundle-contract.md +354 -0
  146. package/docs/reference/run-lifecycle.md +54 -0
  147. package/examples/cursor-sdk/README.md +11 -0
  148. package/examples/cursor-sdk/capture-profile.json +1 -0
  149. package/examples/cursor-sdk/harness.json +1 -0
  150. package/examples/cursor-sdk/model.json +1 -0
  151. package/examples/cursor-sdk/native-limits.json +1 -0
  152. package/examples/cursor-sdk/native-tool-policy.json +1 -0
  153. package/ontology/behavior-categories.v1.json +46 -0
  154. package/package.json +66 -0
  155. package/release/0.1.0/KNOWN_LIMITATIONS.md +35 -0
  156. package/release/0.1.0/README.md +46 -0
  157. package/release/0.1.0/reproducibility.json +61 -0
  158. package/release/0.2.0/KNOWN_LIMITATIONS.md +40 -0
  159. package/release/0.2.0/README.md +42 -0
  160. package/release/0.2.0/reproducibility.json +73 -0
  161. package/release/0.2.1/KNOWN_LIMITATIONS.md +18 -0
  162. package/release/0.2.1/README.md +63 -0
  163. package/release/0.2.1/reproducibility.json +73 -0
  164. package/release/README.md +13 -0
  165. package/schemas/aggregation.v1.json +293 -0
  166. package/schemas/behavior-assertions.v1.json +220 -0
  167. package/schemas/deepseek-runtime-composition.v1.schema.json +122 -0
  168. package/schemas/experiment.v1.schema.json +188 -0
  169. package/schemas/human-calibration.v1.json +336 -0
  170. package/schemas/normalization-integrity.v1.json +302 -0
  171. package/schemas/run-bundles/v1.json +1040 -0
  172. package/schemas/run-queue.v1.schema.json +206 -0
  173. package/schemas/semantic-judge.v1.json +380 -0
  174. package/schemas/structural-observations.v1.json +131 -0
  175. package/schemas/task-packet-freeze.v1.schema.json +106 -0
  176. package/schemas/task-packet.v1.schema.json +234 -0
  177. package/schemas/uniform-events/v1.json +289 -0
  178. 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.