Repository navigation
fix(eve): investigate refusal and background-delivery eval flakes - #3196
chadhietala wants to merge 12 commits into
Conversation
Signed-off-by: Chad Hietala <chad.hietala@vercel.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Bundle + Package Summary:
|
| Area | Metric | Baseline | Current | Delta |
|---|---|---|---|---|
| Package | Packed tarball | 8.70 MB | 8.74 MB | +35.4 kB |
| Package | Unpacked publish size | 32.78 MB | 32.92 MB | +140.8 kB |
| Package | Installed footprint | 78.26 MB | 78.41 MB | +140.8 kB |
| Package | Published files | 3913 | 3923 | +10 |
| Package | Installed files | 7830 | 7840 | +10 |
| Package | Installed package instances | 33 | 33 | 0 |
| Package | Distinct installed package names | 32 | 32 | 0 |
| Package | Installed dependency edges | 51 | 51 | 0 |
| Package | Installed optional peer edges | 8 | 8 | 0 |
| Runtime | Unique function payloads | 2 | 2 | 0 |
| Runtime | Total function bytes | 20.79 MB | 21.02 MB | +234.0 kB |
| Runtime | Public routes | 18 | 18 | 0 |
Changed function payloads vs main (a24b68c) (2)
| Function | Status | Baseline | Current | Delta | Route changes |
|---|---|---|---|---|---|
functions/__server.func |
changed | 10.39 MB | 10.51 MB | +117.0 kB |
none |
functions/.well-known/workflow/v1/flow.func |
changed | 10.39 MB | 10.51 MB | +117.0 kB |
none |
eve init install
| Metric | Baseline | Current | Delta |
|---|---|---|---|
| Installed footprint | 116.38 MB | 116.52 MB | +140.8 kB |
| Installed packages | 113 | 113 | 0 |
| dependencies | 4 | 4 | 0 |
| devDependencies | 2 | 2 | 0 |
| Dependency package bytes | 48.97 MB | 49.11 MB | +140.8 kB |
| devDependency package bytes | 5.04 MB | 5.04 MB | 0 B ➖ |
eve init dependency changes vs main (a24b68c)
dependencies
- Changed:
ai@^7.0.82->ai@^7.0.93,eve@file:eve-0.52.4.tgz->eve@file:eve-0.53.0.tgz
Build Metadata
- Preset:
vercel - Nitro:
nitro@3.0.260903-beta - Output directory:
apps/fixtures/weather-agent/.vercel/output - Build metadata timestamp: 2026-09-10T19:45:39.524Z
- Route aliases: 18 public, 1 internal (19 total aliases)
- Vercel routes in config: 21
- Severity legend: 🔴 dominant/large, 🟠 notable, 🟡 watch, ⚪ small
Package Drill-Down
Package Details
- Package:
eve@0.53.0 - Package directory:
packages/eve - Tarball: 8.74 MB (
eve-0.53.0.tgz) - Unpacked payload: 32.92 MB across 3923 published files
- Installed footprint: 78.41 MB across 7840 installed files
- Installed root package: 31.49 MB
- Installed dependencies: 46.91 MB
- Installed package instances: 33
- Distinct installed package names: 32
- Installed dependency edges: 51
- Installed optional peer edges: 8
- Runtime dependencies: 2
- Peer dependencies: 6 (5 optional)
Installed footprint is measured from an isolated temporary npm install of the packed tarball.
Graph metrics read only package.json files in package directories directly beneath a node_modules boundary, including nested boundaries. Each directory is one package instance; distinct names come from those manifests. Dependency edges count each unique name in dependencies or optionalDependencies per instance; optional peer edges count peerDependencies marked optional.
Heavy installed dependencies
eve: 31.49 MB (40.2%)@rolldown/binding-linux-x64-gnu: 19.31 MB (24.6%)ai: 7.08 MB (9.0%)zod: 6.74 MB (8.6%)undici: 3.51 MB (4.5%)
Publish payload breakdown
Published file size
🔴 dist/src/compiled/shadcn-registry/index.js [#############...........] 9.76 MB 29.6%
🟠 dist/src/compiled/@photon-ai/chat-adapter-ime... [###.....................] 2.27 MB 6.9%
🟠 dist/src/compiled/@ai-sdk/code-mode/index.js [#.......................] 1.03 MB 3.1%
🟡 dist/src/compiled/@vercel/blob/index.js [#.......................] 901.4 kB 2.7%
🟡 dist/src/compiled/_chunks/workflow/signal-exi... [#.......................] 514.6 kB 1.6%
🔴 Other published files [########################] 18.45 MB 56.1%
Installed footprint breakdown
Installed package size
🔴 eve [########################] 31.49 MB 40.2%
🔴 @rolldown/binding-linux-x64-gnu [###############.........] 19.31 MB 24.6%
🔴 ai [#####...................] 7.08 MB 9.0%
🔴 zod [#####...................] 6.74 MB 8.6%
🟠 undici [###.....................] 3.51 MB 4.5%
🟠 nitro [#.......................] 1.89 MB 2.4%
🔴 Other installed packages [######..................] 8.37 MB 10.7%
Runtime dependencies (2)
| Package | Range | Notes |
|---|---|---|
nitro |
3.0.260903-beta |
|
undici |
8.9.0 |
Peer dependencies (6)
| Package | Range | Notes |
|---|---|---|
@opentelemetry/api |
^1.0.0 |
optional peer |
ai |
catalog: |
|
braintrust |
^3.0.0 |
optional peer |
dd-trace |
^6.13.0 |
optional peer |
just-bash |
^3.1.0 |
optional peer |
microsandbox |
^0.5.0 |
optional peer |
eve init install drill-down
eve init install details
- Command:
eve init my-agent - Package manager:
npm - Installed footprint: 116.52 MB across 9724 installed files
- Installed packages: 113 total (107 transitive-only)
- dependencies: 4 direct packages totaling 49.11 MB
- devDependencies: 2 direct packages totaling 5.04 MB
- Other transitive package files: 62.36 MB
Installed footprint is measured from an isolated temporary eve init my-agent using the current packed eve tarball.
Heavy installed dependencies
eve: 31.49 MB (27.0%)@typescript/typescript-linux-x64: 27.95 MB (24.0%)@rolldown/binding-linux-x64-gnu: 19.31 MB (16.6%)zod: 10.37 MB (8.9%)ai: 7.08 MB (6.1%)
Installed footprint breakdown
Installed package size
🔴 eve [########################] 31.49 MB 27.0%
🔴 @typescript/typescript-linux-x64 [#####################...] 27.95 MB 24.0%
🔴 @rolldown/binding-linux-x64-gnu [###############.........] 19.31 MB 16.6%
🔴 zod [########................] 10.37 MB 8.9%
🔴 ai [#####...................] 7.08 MB 6.1%
🟠 undici [###.....................] 3.51 MB 3.0%
🔴 Other installed packages [#############...........] 16.80 MB 14.4%
dependencies (4)
| Package | Range | Installed size | Share |
|---|---|---|---|
@vercel/connect |
1.0.0 |
167.9 kB | 0.1% |
ai |
^7.0.93 |
7.08 MB | 6.1% |
eve |
file:eve-0.53.0.tgz |
31.49 MB | 27.0% |
zod |
4.5.4 |
10.37 MB | 8.9% |
devDependencies (2)
| Package | Range | Installed size | Share |
|---|---|---|---|
@types/node |
24.x |
2.54 MB | 2.2% |
typescript |
7.0.2 |
2.50 MB | 2.1% |
Function Drill-Down
Payload Size Graph
Unique function payload size and share of total
🔴 functions/.well-known/workflow/v1/flow.func [########################] 10.51 MB 50.0%
🔴 functions/__server.func [########################] 10.51 MB 50.0%
Top Function Payloads
🟠 functions/.well-known/workflow/v1/flow.func • 1 public route • 10.51 MB
| Metric | Value |
|---|---|
| Public routes | /.well-known/workflow/v1/flow |
| Runtime | nodejs24.x |
| Handler | index.mjs |
| Payload | 10.51 MB |
| Function files | 10.51 MB across 114 files |
| Traced dependencies | 0 B |
| Signal | 🟠 Bundled file index.mjs is 2.36 MB (22.5%) |
🟠 🔎 Dependency Analysis
📦 Bundled files:
Bundled file size
🟠 index.mjs [###########.............] 2.36 MB 22.5%
🟡 _libs/undici.mjs [#####...................] 980.8 kB 9.3%
🟡 _chunks/esm-Fqlolk7e.mjs [###.....................] 723.3 kB 6.9%
🟡 _chunks/chatgpt-model.mjs [###.....................] 699.6 kB 6.7%
🟡 _chunks/signal-exit-Dsy-TT0V.mjs [###.....................] 616.2 kB 5.9%
🔴 Other bundled files [########################] 5.13 MB 48.8%
🧾 Vercel Config
{
"handler": "index.mjs",
"launcherType": "Nodejs",
"shouldAddHelpers": false,
"supportsResponseStreaming": true,
"runtime": "nodejs24.x",
"maxDuration": "max",
"experimentalTriggers": [
{
"type": "queue/v2beta",
"topic": "__eve776561746865722d6167656e74_wkf_workflow_*",
"consumer": "default",
"retryAfterSeconds": 5,
"initialDelaySeconds": 0
}
],
"environment": {
"WORKFLOW_PRECONDITION_GUARD": "1"
}
}🟠 functions/__server.func • 17 public routes, 1 internal alias • 10.51 MB
| Metric | Value |
|---|---|
| Public routes | //.well-known/workflow/v1/webhook/[token]/eve/v1/activity/[token]/eve/v1/callback/[token]/eve/v1/connections/[name]/callback/[attemptId]/[token]/eve/v1/connections/[name]/callback/[token]/eve/v1/health/eve/v1/info/eve/v1/session/eve/v1/session/[parentSessionId]/subagents/[callId]/[childSessionId]/stream/eve/v1/session/[sessionId]/eve/v1/session/[sessionId]/cancel/eve/v1/session/[sessionId]/clear/eve/v1/session/[sessionId]/compact/eve/v1/session/[sessionId]/reset/eve/v1/session/[sessionId]/stream/eve/v1/task-input/[token] |
| Internal aliases | /__server |
| Runtime | nodejs24.x |
| Handler | index.mjs |
| Payload | 10.51 MB |
| Function files | 10.51 MB across 114 files |
| Traced dependencies | 0 B |
| Signal | 🟠 Bundled file index.mjs is 2.36 MB (22.5%) |
🟠 🔎 Dependency Analysis
📦 Bundled files:
Bundled file size
🟠 index.mjs [###########.............] 2.36 MB 22.5%
🟡 _libs/undici.mjs [#####...................] 980.8 kB 9.3%
🟡 _chunks/esm-Fqlolk7e.mjs [###.....................] 723.3 kB 6.9%
🟡 _chunks/chatgpt-model.mjs [###.....................] 699.6 kB 6.7%
🟡 _chunks/signal-exit-Dsy-TT0V.mjs [###.....................] 616.2 kB 5.9%
🔴 Other bundled files [########################] 5.13 MB 48.8%
🧾 Vercel Config
{
"handler": "index.mjs",
"launcherType": "Nodejs",
"shouldAddHelpers": false,
"supportsResponseStreaming": true,
"runtime": "nodejs24.x"
}Build Timing: e2e/fixtures/agent-tools-sandbox
This is an informational timing measurement inside eve build, from preflight through publication. Output-size measurement and profile writing are excluded.
Build mode: deployable Vercel build with sandbox template prewarm included.
- Build pipeline: 5.07 s -> 4.84 s (-226.8 ms) vs
main (a24b68c). - Timing is informational: shared GitHub runners are too variable for a hard timing budget.
Detailed phase timings vs `main (a24b68c)`
| Phase | Baseline | Current | Delta |
|---|---|---|---|
extension.check |
0.7 ms | 18.6 ms | +17.9 ms |
project.resolve |
0.2 ms | 10.7 ms | +10.5 ms |
workspace.create |
0.5 ms | 0.5 ms | 0.0 ms |
host.prepare |
470.3 ms | 393.4 ms | -76.9 ms |
vercel.service-prefix.resolve |
1.4 ms | 1.3 ms | -0.1 ms |
nitro.create |
456.9 ms | 438.7 ms | -18.2 ms |
sandbox.prewarm |
351.0 ms | 340.7 ms | -10.3 ms |
nitro.cache.prepare |
0.2 ms | 0.2 ms | 0.0 ms |
nitro.prepare |
0.5 ms | 0.6 ms | +0.1 ms |
nitro.public-assets |
0.6 ms | 0.6 ms | 0.0 ms |
nitro.prerender |
0.4 ms | 0.4 ms | 0.0 ms |
nitro.bundle |
3.71 s | 3.57 s | -138.5 ms |
nitro.cache.write |
0.3 ms | 0.3 ms | 0.0 ms |
vercel.workflow-function.materialize |
60.5 ms | 54.9 ms | -5.6 ms |
agent-summary.emit |
0.6 ms | 0.5 ms | -0.1 ms |
nitro.close |
0.1 ms | 0.1 ms | 0.0 ms |
output.publish |
8.3 ms | 2.5 ms | -5.8 ms |
workspace.remove |
1.4 ms | 1.5 ms | +0.1 ms |
Signed-off-by: Chad Hietala <chad.hietala@vercel.com>
Signed-off-by: Chad Hietala <chad.hietala@vercel.com>
Signed-off-by: Chad Hietala <chad.hietala@vercel.com>
Signed-off-by: Chad Hietala <chad.hietala@vercel.com>
Signed-off-by: Chad Hietala <chad.hietala@vercel.com>
Signed-off-by: Chad Hietala <chad.hietala@vercel.com>
Fixed Diagnostic Sample: Prompt-Cache RefusalsRecorded before dispatching or observing this sample:
The final claim must name the exact eval/model cohorts and frozen source revision. A statistically significant reduction and an upper failure-rate bound are possible; a finite experiment cannot establish a literally zero failure rate across all future CI runs. |
Signed-off-by: Chad Hietala <chad.hietala@vercel.com>
Signed-off-by: Chad Hietala <chad.hietala@vercel.com>
Candidate Pilot And Confirmatory DesignThe completed diagnostic sample at Before observing the next pilot:
The background-tools fixture intentionally uses its existing deterministic model to test Workflow delivery. The other four components continue to use their real matrix providers. No real-provider test is replaced with a mock. Confirmatory AcceptanceAfter diagnostic work is complete, freeze a final source SHA and publish the run IDs before examining confirmatory outcomes:
This scopes the statistical claim to the observed compaction, reviewer-delegation/cache, and background-report failure surfaces. It does not establish that every possible future CI test is flake-free. Shared-provider correlations and time variation remain limitations and will be reported. |
Signed-off-by: Chad Hietala <chad.hietala@vercel.com>
Compaction Pilot Result And Next CandidateThe
Before dispatching the next pilot:
The purchasing-review pilots at |
Signed-off-by: Chad Hietala <chad.hietala@vercel.com>
Frozen Confirmatory HoldoutStarting the requested holdout on September 10, 2026, without another pilot or code change. This follows the previously published five-component confirmatory design. The candidate has known failing
Background-tools keeps its existing deterministic Workflow-delivery model. The other four components use their real matrix providers. This is 2,000 component trials, representing 100 baseline and 300 candidate suite trials, not 2,000 independent suite trials. Join all five components by the preassigned ordinal Acceptance remains zero candidate failures, one-sided suite-level Fisher exact p < 0.05, the exact one-sided 95% failure-rate upper bound below 1%, and green final-head full CI. Report all component counts and limitations from shared-provider correlation, temporal drift, and the tested surfaces. Workflow run IDs will be recorded after dispatch and before examining holdout outcomes. No claim of success is being made. |
Confirmatory Holdout DispatchedThese run IDs are recorded before examining holdout outcomes. All runs use the frozen
Expected evidence: 100 shards and 2,000 component trials, joined into 100 baseline and 300 candidate suite trials by the preassigned ordinal. Every failure and incomplete shard remains in the outcome. Frozen runner SHA-256: Frozen parser SHA-256: Frozen statistical collector SHA-256: The 20 repetition-parser self-tests and the SciPy 1.13.1 statistical self-test passed locally before dispatch. No code changes or reruns are planned during the holdout. |
Holdout Complete: Acceptance FailedThe preregistered holdout completed on September 10, 2026. The candidate improved the measured suite-failure rate significantly, but it did not eliminate failures.
Component Failure Counts
The primary result is the union by preregistered suite ordinal, not the sum of component failures: one suite trial can fail in multiple components. All terminal failures and strict reliability failures had matching trial counts. The candidate compaction failures contained 44 uncompleted compaction requests; the Anthropic prompt-cache cohort contained three filtered model steps. These are retained, not excused by eventual success. Evidence Audit
The significance calculation and binomial bound assume independent, stationary suite trials. Shared-provider correlation, time variation, and the explicitly tested surfaces limit the inference. This is a suite-level improvement result, not proof that each component improved significantly or that all future CI runs are flake-free. Conclusion: statistically significant improvement, but the holdout failed and the PR remains draft. Flakes remain. |
Signed-off-by: Chad Hietala <chad.hietala@vercel.com>
Task-Fixture Correction; PR Still IncompletePushed signed commit The failed repeated-cancellation eval already had a successful Validation before push in the frozen-dependency checkout:
The rejected formatting-only compaction diagnostic also remains recorded: five paired replays of a failed holdout input refused under both the current format and the alternative format, each reporting The holdout's remaining failures are unchanged: eleven compaction refusals, three reviewer refusals, seven cache-reuse failures, and one split reviewer launch, overlapping into 21 failed suite trials. This commit does not claim to solve them. New CI is running; the failed holdout remains the statistical result. |
Summary
Compaction refusals, task-eval synchronization races, and duplicate background reports are causing CI flakes. This PR is incomplete: the confirmatory holdout failed. The latest correction stops task evals from waiting for a notification already passed by their stream cursor when a successful tool result has established the terminal state. Compaction supplies bounded request context, and interrupted evals retain partial event evidence. The original compaction eviction algorithm and substantive E2E requirements remain unchanged. Related to #3165.
Changes And Boundaries
task_cancelresult before sending one terminal-view verification. Preserve the existing deadline and task identity/status/error assertions. Match the runtime's actualfailed.notification headline.t.eventsandt.transcript./private/tmpis not mistaken for leaked content. The whole-log secret assertion remains.Local Validation Before Push
Follow-up
0dfc9d4afbc6ea341c96f594843eb57f469eca17changes only the task fixture helper and its regression tests. The missing-terminal-evidence regressions failed before the fix. The real-client regression reproduces a correlated send skipping an earlier cancellation notification while retaining the terminal tool result. Before pushing this follow-up, the frozen-dependency checkout passed 8,491 unit tests with one existing skip, the cancellation notification integration test, package and fixture typechecks, formatting, lint, transition declarations, and the invariant guard. The shared checkout's invariant command could not resolve an installed dependency; the frozen checkout passed. The new CI run is pending.The current code was copied byte-for-byte into an isolated checkout with the committed frozen lockfile. This avoided altering an unrelated local lockfile edit and corrected the shared checkout's missing committed Workflow dependency patch.
CI=true pnpm --filter eve exec vitest run --config vitest.unit.config.ts --retry=0: 8,484 passed, one existing skip, across 790 files.invoke-step.integration.test.ts,cancel-notification.integration.test.ts, anddurable-session-store.integration.test.ts.recursive-session-result.scenario.test.ts: passed. The initial sandboxed run failed at startup withEMFILE; it passed outside the sandbox, including in the frozen-dependency checkout.Real-Provider Local Replays
These are isolated request/compactor experiments, not full E2E runs or the confirmatory holdout:
Historical CI Evidence
All earlier failures remain part of the investigation:
reasoning_extraction7701e671fixture wording pilot4fcd9d01fprompt-cache diagnosticcyberrefusalsf404c4521compaction pilotf404c4521prompt-cache pilotf404c4521background pilotdf1876272positive-only compaction wordingdf1876272normal CIConfirmatory Holdout
The registered holdout completed on September 10, 2026: 52/100 baseline suite trials failed, versus 21/300 candidate suite trials at
aa463d6d1dc57f7179fde8c4417a28ba38f81f71. The one-sided suite-level Fisher exact p is 5.533752737638454e-21. The candidate's exact one-sided 95% failure-rate upper bound is 9.923926099%.All 100 shards and 2,000 component trials completed and passed the source/model/coverage/run-attempt/harness-hash audit. Suite failures are the union by preregistered ordinal, not the sum of component failures. No failed trials were dropped or rerun, no pilots were pooled, and no code changed during the holdout. See the frozen registration and all ten workflow run IDs.
Statistically significant improvement, but acceptance failed: the published design required zero candidate failures, a below-1% upper bound, and green final-head CI. Candidate failures remain. At the frozen holdout SHA,
fixture-tasksfailed in local-world, Postgres, and Vercel CI; the task-only follow-up above is awaiting CI confirmation and does not address the remaining holdout failures.The calculations are conditional on independent, stationary trials and the explicitly tested surfaces; shared-provider correlations and time variation limit the inference. The PR remains draft. The flakes are not eliminated.
Checklist
CONTRIBUTING.mdevepackagegit commit --signoff)