fix(evals): app readiness as interactive UI, shared predicate, den bootstrap, self-diagnosing failures - #3344
Merged
Merged
Conversation
…icate, resolve workspace id from product state
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Follow-up to #3322, fixing the infrastructure-level reasons the app-driving eval specs could not pass, and making every remaining failure self-diagnosing.
/welcomeor/workspace/<id>/session, so it rejected a genuinely-ready app: a fresh profile with no workspace legitimately sits on/sessionoffering "Create or connect a workspace". Readiness is now: control API registered · no transitional copy on screen (Preparing workspace,Connecting signed-in services,Loading available resources,Loading tasks,Pulling in the latest messages— taken fromapps/app/src/i18n/locales/en.ts, not invented) · one interactive surface observable (welcome | workspace | no-workspace).@openwork/cdp(app-state.ts) because both the lifecycle layer (@openwork/hosts) and the behaviours specs call (@openwork/behaviors) already depend on it, so there is no cycle and the two cannot drift.waitUntilInteractive()is exported for use after any action that navigates or creates a workspace/session.openwork.react.activeWorkspace, verified against a live app) with the route only as a fallback — a selected workspace does not always appear in the hash.bootstrap: { baseUrl, apiBaseUrl }= the den web origin, because the app derives its/api/denproxy base from those and den-api does not serve that prefix (documented in the legacy flow).send/evaluateaccepttimeoutMs; default stays 20s) and the polling helpers derive a budget from the wait's own deadline, so a busy renderer no longer kills a poll withCDP call Runtime.evaluate timed out after 20000ms.SuppressedError: An error was suppressed during disposal.Tests run
pnpm evals:typecheckclean ·pnpm --dir evals run test91/91 ·pnpm --dir evals run spec4/4 (the gatingprlane) ·pnpm --dir evals run spec:nightlyapp specs skip with their opt-in reason.Real Daytona sandbox (den stack + isolated per-spec Electron), several runs: 5 of 9 spec files pass — both egress specs in both projects, plus
app-smokeend-to-end (isolated spawn → readiness gate → assertions → vision-validated photo roll).Remaining failures, now precisely known
Four files still fail, and the errors name themselves:
Timed out after 120000ms waiting for created workspace selected(models-available,org-connection-lifecycle) andWorkspace creation did not produce a workspace ID(skills-local) —workspace.create(real, registered bysession-route.tsx:2308, requires an absolutepath) reports success but the app does not settle on a workspace in a fresh profile. Needs live observation next, the way the onboarding sequence was pinned down.first-run-local: vision refused an expectation and was right — "The selected model reads 'big-pickle,' but the 'Run task' control is gray and visibly disabled." The spec asserts a usable model; the honest state without cloud or an in-app key is selected but not runnable. The expectation needs to state that truth.models-available: the duplicate-pixel guard fires on the Models-picker frame — the picker action runs but the frame is captured before it visibly renders, so the capture must wait for the picker.None of this gates CI: the
prlane is green and gating; app specs are nightly-only, opt-in viaOPENWORK_EVAL_APP_SPECS=1, and that step iscontinue-on-errorwhile they stabilise.