Nightly Full regression: build the packaged enterprise desktop once and run the packaged journeys against it
Context
.github/workflows/daytona-e2e.yml (scheduled Full regression) selects the packaged enterprise journeys as local jobs but never builds a packaged binary or sets OPENWORK_EVAL_ELECTRON_BINARY, so they could only ever SkipError. Since #4849 the lane reports them as skipped: lane cannot satisfy prerequisites (N journeys skipped (prerequisites unmet) in the plan and verdict summaries) instead of scheduling red jobs — but it still does not exercise them. That is a coverage reclassification, not restored coverage; this issue owns restoring it.
Today the only automated coverage of these journeys against a real enterprise build is apps/desktop/scripts/packaged-smoke.mjs in ci-tests.yml (every full-lane PR and every push to dev), which runs five of the six spec files unfiltered against an electron-builder --linux --dir enterprise package:
- packaged-first-launch (cloud + enterprise)
- packaged-preactivation-updater
- packaged-preactivation-egress
- packaged-activated-launch
- desktop-quit-path
released-enterprise-activated needs a released binary, an older released baseline binary (OPENWORK_EVAL_RELEASED_BASELINE_BINARY, evals/specs/released-enterprise-activated.e2e.test.ts:18–20) and a real Den; it runs nowhere automatically.
Proposal (option A from the gate report)
Add a packaged-journey job to the Full regression lane that:
- builds the enterprise flavor once on Linux (
electron-build.mjs --server-built, thenelectron-builder --config electron-builder.enterprise.yml --linux --dir), reusing the cache keys fromci-tests.yml'sopenwork-tests-build; - runs each packaged journey in the catalog with
OPENWORK_EVAL_ELECTRON_BINARYset (matrix over the journeys whoseneeds.envincludes it), recording onejourney-result.jsonper journey so the verdict aggregates them like any other lane; - declares that env in the lane passed to
unmetLaneNeeds(ciLaneinevals/scripts/journey-catalog.mjs) so those journeys leave the skipped list. Note the catalog'sneedsare whole-file blockers only:released-enterprise-activateddeclares the main binary, and its update case skips itself without the baseline (that skip is counted not tested by the verdict), so this lane must provide both binaries for that journey to pass; - for
released-enterprise-activated: downloads the current released enterprise binary and the previous released baseline (or a release-verification lane does), setsOPENWORK_EVAL_ELECTRON_BINARYandOPENWORK_EVAL_RELEASED_BASELINE_BINARY, and runs it against a real Den.
Cost: one electron-builder run (~2 min warm in ci-tests) plus ~5 journeys of 2–5 min each, per nightly.
Acceptance criteria (measurable)
- A scheduled Full regression run's verdict summary lists all six packaged journeys —
packaged-first-launch,packaged-activated-launch,packaged-preactivation-updater,packaged-preactivation-egress,desktop-quit-path,released-enterprise-activated— with result passed (not "not tested", not skipped), executed against a built enterprise binary whoseOPENWORK_EVAL_ELECTRON_BINARYpath is visible in the job log. - The same summary reads
1 journeys skipped (prerequisites unmet)with onlycomputer-use-window-scope(run on darwin) remaining; the0 skippedstate for packaged journeys holds for 3 consecutive scheduled runs. -
released-enterprise-activatedruns its update case with a released baseline binary (OPENWORK_EVAL_RELEASED_BASELINE_BINARYset) and records passed; the run URL is linked here. -
journey-ci.test.mjs's lane test asserts the new lane's provided env and the parity guard still passes (catalog needs ⇔ spec/world guards). - No change to
packaged-smoke.mjscoverage on PRs (it stays the fast pre-merge gate; this lane is the scheduled one).
Out of scope: computer-use-window-scope (needs a local macOS host with AppKit; stays skipped in this lane). Native macOS crash-report assertions and updater download/install coverage are tracked separately in #4885.
Refs
- #4849 — reclassification PR (skipped: lane cannot satisfy prerequisites)
- Gate report:
reports/e2e-gate-baseline-2026-09-10.md(headline finding) - Journeys unverified by the nightly today: #4809 (egress gate), #4787 (quit path), #4805
Source: different-ai/openwork