engineering-behavior-observatory 0.2.2 → 0.2.3
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/dist/src/run-bundles.js
CHANGED
|
@@ -168,6 +168,18 @@ export class RunBundleAssembler {
|
|
|
168
168
|
const outcome = { descriptor, fingerprint, treeDigest, format };
|
|
169
169
|
await whileProjected?.(capturedPath, outcome);
|
|
170
170
|
return outcome;
|
|
171
|
+
}).then((outcome) => {
|
|
172
|
+
this.captureMissing = this.captureMissing.filter(({ kind }) => kind !== "workspace-capture-error");
|
|
173
|
+
return outcome;
|
|
174
|
+
}, (error) => {
|
|
175
|
+
// Keep the cause when a harness retains a partial bundle after packaging fails.
|
|
176
|
+
// Otherwise its terminal classification alone loses the actionable exception.
|
|
177
|
+
this.captureMissing = this.captureMissing.filter(({ kind }) => kind !== "workspace-capture-error");
|
|
178
|
+
this.captureMissing.push({
|
|
179
|
+
kind: "workspace-capture-error", reason: "not-collected", affects: ["outcome"],
|
|
180
|
+
detail: errorMessage(error),
|
|
181
|
+
});
|
|
182
|
+
throw error;
|
|
171
183
|
});
|
|
172
184
|
}
|
|
173
185
|
async finalize(input) {
|
|
@@ -41,6 +41,11 @@ events can still explain a stop. Keep terminal state, infrastructure failure,
|
|
|
41
41
|
and capture quality separate. Preserve `retainedWorkspacePath` when outcome
|
|
42
42
|
packaging failed; that path is a recovery location, not qualified evidence.
|
|
43
43
|
|
|
44
|
+
Capture reports retain packaging exceptions as `workspace-capture-error`
|
|
45
|
+
missing-evidence entries. Inspect the detail before retrying capture against a
|
|
46
|
+
retained workspace. A later successful capture is recovery evidence; it does
|
|
47
|
+
not change the original attempt's recorded failure.
|
|
48
|
+
|
|
44
49
|
Use a new output destination for derived records and reruns. Do not edit a
|
|
45
50
|
native bundle to make a validator accept it.
|
|
46
51
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "engineering-behavior-observatory",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"description": "Capture engineering-agent trajectories, evaluate behavior, and inspect cited evidence across harnesses.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"release/0.2.0/",
|
|
47
47
|
"release/0.2.1/",
|
|
48
48
|
"release/0.2.2/",
|
|
49
|
+
"release/0.2.3/",
|
|
49
50
|
"schemas/",
|
|
50
51
|
"scripts/atlas-grafana.sh"
|
|
51
52
|
],
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# v0.2.3 known limitations
|
|
2
|
+
|
|
3
|
+
The [v0.2.2 limitations](../0.2.2/KNOWN_LIMITATIONS.md) continue to apply.
|
|
4
|
+
|
|
5
|
+
- Error details are retained for future captures. Exceptions discarded by older
|
|
6
|
+
versions cannot be reconstructed from a generic missing-workspace report.
|
|
7
|
+
- A later successful workspace capture is recovery evidence, not proof that the
|
|
8
|
+
original capture succeeded or that its transient failure cannot recur.
|
|
9
|
+
- The existing OTLP size bounds, missing-signal reporting, and bounded native
|
|
10
|
+
normalization projection are unchanged.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# v0.2.3: Workspace capture error diagnostics
|
|
2
|
+
|
|
3
|
+
The shared run-bundle assembler now preserves workspace packaging exceptions
|
|
4
|
+
in capture reports as `workspace-capture-error` missing-evidence entries.
|
|
5
|
+
Previously, a harness could finalize a partial bundle with only a generic
|
|
6
|
+
missing-workspace report, losing the exception needed to diagnose the failure.
|
|
7
|
+
|
|
8
|
+
Capture still rejects failures and preserves the source workspace through the
|
|
9
|
+
existing harness retention paths. A successful explicit capture retry clears
|
|
10
|
+
the prior diagnostic. No automatic retry, weaker validation, dependency update,
|
|
11
|
+
runtime-pin change, or artifact-schema change is introduced.
|
|
12
|
+
|
|
13
|
+
This release fixes diagnostic loss. It does not claim to eliminate every
|
|
14
|
+
workspace packaging failure. Existing immutable bundles are not rewritten.
|
|
15
|
+
|
|
16
|
+
## Verification
|
|
17
|
+
|
|
18
|
+
Run `npm ci` and `npm run acceptance` on Node 24.19.0. Regression coverage checks
|
|
19
|
+
retention of the original capture error, successful retry clearing, and valid
|
|
20
|
+
partial manifests. Acceptance also runs the full suite, checks documentation
|
|
21
|
+
and package contents, and compares two independently built package archives.
|
|
22
|
+
|
|
23
|
+
See [known limitations](KNOWN_LIMITATIONS.md), the
|
|
24
|
+
[reproducibility manifest](reproducibility.json), and
|
|
25
|
+
[recovery guidance](../../docs/guides/evidence-and-sharing.md).
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "ebo.release-reproducibility/v1",
|
|
3
|
+
"release": {
|
|
4
|
+
"name": "engineering-behavior-observatory",
|
|
5
|
+
"version": "0.2.3"
|
|
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; configurable workspace-write networking with explicit offline queue propagation",
|
|
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
|
+
"workspace-capture": "shared packaging error retained in partial reports; explicit successful retry clears prior error"
|
|
33
|
+
},
|
|
34
|
+
"determinism": {
|
|
35
|
+
"stable": [
|
|
36
|
+
"task, run, attempt, event, assertion, aggregate, and Atlas case identities",
|
|
37
|
+
"fixture, native-reference, normalized-dataset, source/cohort, archive, and package digests",
|
|
38
|
+
"seeded queue and review-sample ordering"
|
|
39
|
+
],
|
|
40
|
+
"excluded": [
|
|
41
|
+
"native and EBO observation timestamps",
|
|
42
|
+
"lifecycle start/finish timestamps",
|
|
43
|
+
"provider timing and usage",
|
|
44
|
+
"temporary workspace and output paths"
|
|
45
|
+
]
|
|
46
|
+
},
|
|
47
|
+
"fixtures": {
|
|
48
|
+
"tests/fixtures/task-packet.valid.v1.json": "ac2ef1043c0cc16bf4c21d05c1dc880ca1b4b8cc2f9ea7653328e91f0b0e2681",
|
|
49
|
+
"test/fixtures/agent-sdk-normalizer/complete.input.json": "7285dee088517e5de38ceda84fc7c58d9303949c7448ab3b5e10a5a2d2ebdfe3",
|
|
50
|
+
"test/fixtures/agent-sdk-normalizer/complete.expected.jsonl": "d32fa3a013bc179f1673f7e1a89b8a721bb8ddaf63eba5bc8a3f14f1cc148ed8",
|
|
51
|
+
"contracts/openhands-agent-server-v1.44.1.json": "e7a07977688a0703b15751a8a1ab17f29be45f9fdf438017e0dbcbc49cca37b0",
|
|
52
|
+
"contracts/openhands-agent-server-v1.46.0.json": "455cdddd2c206cb2f20245c2189b92e773657ec14d651236baa532b2dbadeb28",
|
|
53
|
+
"test/fixtures/openhands/v1.44.1/streamed-events.json": "d751083ba2ef94c9865117db481cc2f4933772bbbbb6b9fcf60571563715c1ea",
|
|
54
|
+
"test/fixtures/openhands/v1.44.1/final-events.json": "551db9904e860004d604c923692b5c5d3aaee966220492214c60003d2df415b6",
|
|
55
|
+
"test/fixtures/deepseek/golden-success.json": "f3867d38169bf0e28f64aba1dd60553f21cf07f41f81b4bad48261e49fa3ca88",
|
|
56
|
+
"test/fixtures/deepseek/golden-interrupted.json": "79e1f8404df1ee3b562d0bdbc0b2ee712ffc6d5774992b92970814ea815677b7",
|
|
57
|
+
"test/fixtures/deepseek/compositions/minimal/composition.json": "72fe4368e105f1bad82b7fdf8380e92c9fa689d8985f6ab91f534f0baf3eda02",
|
|
58
|
+
"contracts/codex-app-server-0.153.4/manifest.json": "e62281ff5e5d1cc71d07763b85e997ccc9ddbad9aa82a469da4181ee4b1890a8",
|
|
59
|
+
"test/fixtures/codex/legacy-0.150.1.dataset.json": "f71906b009e546afbf3b4e79396f223181382f3b3d8795e9cfcd032398a9d6bf",
|
|
60
|
+
"test/fixtures/behavior-assertions/abstained.json": "7f1962864f664c794925a67d93074e7b150af0f57c58041a81e062990d641197",
|
|
61
|
+
"test/fixtures/behavior-assertions/disputed.review.json": "450d3d9efe7feefaf7500b3ad20ab2803b412c7e53b91763125e15a83be87981",
|
|
62
|
+
"test/fixtures/comparison/exact.json": "cafa68e94b8d50dc308ddcfc2e73aa139c828b4ecd1e1c762bbc51bf1b44501e",
|
|
63
|
+
"test/fixtures/structural-observations/golden.json": "bad71a3a93524b76c0a2fdbb58e98e1e65be46cae14acf18ac89d9ba76e03e8a",
|
|
64
|
+
"test/atlas-fixture.ts": "9f03ce9cbcd0e5d3e3a5916866554ceb1c21f1c8712e58529499c1ea499f048d",
|
|
65
|
+
"test/pi.test.ts": "a00997c5617ca178e19b25b0d483cbdce8ce7c306d4c871557945b31a2e657cf",
|
|
66
|
+
"test/cursor-sdk.test.ts": "753094f127b11dc392ec2244c9edddabec27aa94347bb6159a292129ed2a2822",
|
|
67
|
+
"examples/cursor-sdk/README.md": "a2cf481123e7f3deb1c5a682ba208a775c3f91c35e1a6c1a428c517c79692618",
|
|
68
|
+
"examples/cursor-sdk/capture-profile.json": "d1a5787875daf5523b3783f259b891c256a904cbb10279d5be214af846305a2d",
|
|
69
|
+
"examples/cursor-sdk/harness.json": "2f1da6f2b17258d0ee59431f687696901ce3692589175d182f3a4bbe8dd4d689",
|
|
70
|
+
"examples/cursor-sdk/model.json": "ad8f31ff5d2387c02d79226679022358afafc61ba5dda73040e3f754530a230a",
|
|
71
|
+
"examples/cursor-sdk/native-limits.json": "40fe451f56b0863e79b42f5c85defbce678e1dc90dd248d15c430db176d71511",
|
|
72
|
+
"examples/cursor-sdk/native-tool-policy.json": "0fef98b36cd39de82914c5b068022c1335dadda24b7d6e7df398b2430e6a16e0"
|
|
73
|
+
}
|
|
74
|
+
}
|
package/release/README.md
CHANGED
|
@@ -5,6 +5,7 @@ For downloads and published artifacts, see
|
|
|
5
5
|
|
|
6
6
|
| Version | Changes and verification | Support boundary |
|
|
7
7
|
| :--- | :--- | :--- |
|
|
8
|
+
| [0.2.3](0.2.3/README.md) | Retain workspace capture errors in partial-bundle reports | [Known limitations](0.2.3/KNOWN_LIMITATIONS.md) |
|
|
8
9
|
| [0.2.2](0.2.2/README.md) | Configurable Codex tool networking, enabled by default for workspace-write | [Known limitations](0.2.2/KNOWN_LIMITATIONS.md) |
|
|
9
10
|
| [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) |
|
|
10
11
|
| [0.2.0](0.2.0/README.md) | Pi and Cursor SDK integrations; reproducible package | [Known limitations](0.2.0/KNOWN_LIMITATIONS.md) |
|