Skip to content

Commit e2c18c0

Browse files
committed
Merge origin/main into step-dispatch-run-context
2 parents 7454fbc + 2eb2fe6 commit e2c18c0

152 files changed

Lines changed: 4769 additions & 2011 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@workflow/world-postgres': patch
3+
---
4+
5+
Fix run creation and slot allocation not happening transactionally

‎.changeset/batch-pair-chunk.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@workflow/core": patch
3+
---
4+
5+
Commit the batched fan-out's pre-claimed inline `[step_created, step_started]` pairs in their own leading chunk, ahead of the plain step/wait creates, so the write that gates the inline bodies stays small and commits faster. The pairs now fold only with two or more inline steps (a lone inline step keeps the lazy start), and a lone plain create beside them takes the single write.

‎.changeset/breezy-days-run.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
---
3+
4+
Persist a bounded 30-run history of E2E retry rates with exact lane dimensions and execution denominators.

‎.changeset/chubby-bears-check.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
---
3+
4+
Give Windows cancellation E2E tests the standard CLI timeout budget.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@workflow/rollup": patch
3+
---
4+
5+
Disable implicit input source map loading during workflow transforms to avoid false missing-map build errors for dependencies.

‎.changeset/fluffy-apes-worry.md‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
"workflow": patch
3+
"@workflow/core": patch
4+
"@workflow/ai": patch
5+
---
6+
7+
Route Workflow AI examples through AI Gateway and recommend WorkflowAgent for Workflow 5.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@workflow/swc-plugin': patch
3+
---
4+
5+
Fix a crash ("Cannot redefine property: classId") when a bundler pipeline re-runs the transform over its own output for a dependency that ships custom serialization methods, such as `@ai-sdk/gateway`.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@workflow/world-postgres': patch
3+
---
4+
5+
Fix stream cursors not being advanced for skipped chunks, so repeated notifications cannot consume the requested start offset twice
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@workflow/core': patch
3+
---
4+
5+
The QuickJS engine now reports its log position on writes and feeds its VM from the events a World returns on the response, matching the node:vm engine.

‎.github/scripts/aggregate-e2e-results.js‎

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
const fs = require('node:fs');
44
const path = require('node:path');
5+
const { dimensionFor } = require('./generate-e2e-flake-history.js');
56

67
// Parse command line arguments
78
const args = process.argv.slice(2);
@@ -62,7 +63,7 @@ function findResultFiles(dir) {
6263
// trailing dot matters — the Python lane's report is
6364
// `e2e-conformance-python.json` and must keep matching.
6465
'e2e-conformance.',
65-
]);
66+
]).filter((file) => !file.endsWith('.flaky.json'));
6667
}
6768

6869
// Find all e2e metadata JSON files
@@ -159,19 +160,34 @@ function loadFailures(dir) {
159160
// several jobs for one app is collapsed into a single entry with an
160161
// occurrence count so the section stays scannable.
161162
function loadFlaky(dir) {
162-
// Map of `${app}\u0000${testName}` -> { app, testName, retryCount, occurrences }
163+
// New sidecars pair 1:1 with exact result files; keep reading legacy names
164+
// while artifacts from older branches can still reach the aggregator.
163165
const flaky = new Map();
164-
const files = findJsonFiles(dir, 'e2e-flaky-');
165-
166-
for (const file of files) {
167-
const basename = path.basename(file, '.json');
168-
const match = basename.match(/^e2e-flaky-(.+)-(?:vercel|local)$/);
169-
const app = match ? match[1] : 'unknown';
166+
const paired = findJsonFiles(dir, 'e2e-').filter((file) =>
167+
file.endsWith('.flaky.json')
168+
);
169+
const legacy = findJsonFiles(dir, 'e2e-flaky-');
170+
171+
for (const file of [...paired, ...legacy]) {
172+
const basename = path.basename(file);
173+
const pairedReport = basename.replace(/\.flaky\.json$/, '.json');
174+
const dimension = basename.endsWith('.flaky.json')
175+
? dimensionFor(pairedReport)
176+
: null;
177+
const legacyMatch = path
178+
.basename(file, '.json')
179+
.match(/^e2e-flaky-(.+)-(?:vercel|local)$/);
180+
const app = dimension?.app || legacyMatch?.[1] || 'unknown';
181+
const lane = dimension
182+
? [dimension.lane, dimension.world, dimension.vm, dimension.variant]
183+
.filter(Boolean)
184+
.join(' / ')
185+
: null;
170186
try {
171187
const entries = JSON.parse(fs.readFileSync(file, 'utf-8'));
172188
for (const entry of entries) {
173189
if (!entry.testName) continue;
174-
const key = `${app}\u0000${entry.testName}`;
190+
const key = `${lane || app}\u0000${entry.fullName || entry.testName}`;
175191
const existing = flaky.get(key);
176192
if (existing) {
177193
existing.occurrences++;
@@ -182,6 +198,7 @@ function loadFlaky(dir) {
182198
} else {
183199
flaky.set(key, {
184200
app,
201+
lane,
185202
testName: entry.testName,
186203
retryCount: entry.retryCount || 1,
187204
occurrences: 1,
@@ -286,7 +303,8 @@ function renderFlakySection(flakyTests) {
286303
for (const test of sorted) {
287304
const jobs =
288305
test.occurrences > 1 ? ` — flaked in ${test.occurrences} jobs` : '';
289-
console.log(`- \`${test.testName}\` (${test.app})${jobs}`);
306+
const location = test.lane ? `${test.app} · ${test.lane}` : test.app;
307+
console.log(`- \`${test.testName}\` (${location})${jobs}`);
290308
}
291309
console.log('');
292310
if (collapse) {

0 commit comments

Comments
 (0)