You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Filed per the last sentence of the maintainer ruling on #7964: "Whether the live-e2e lane should stay informational is a separate question — file it as its own card with the evidence of what the lane proves once this lands, not as a rider here."
Blocked-by: #7964 (the derivation PR). Do not decide this before that lands — half the evidence below is about the shape it creates.
The question
Live E2E (informational) runs continue-on-error: true and is not a required context. That was decided in #2835, with an explicit precondition attached in the workflow header: "Do not add it to required checks (and do not remove continue-on-error) until the nightly record proves the lane stable." Two of the reasons it could not be trusted have since been removed. This card asks the maintainer to re-decide, on the evidence, rather than let informational persist by default.
It boots a realobjectstack dev backend from published@objectstack/* tarballs at OBJECTSTACK_VERSION (nothing built from source), serving the showcase app, and drives it with a real browser. That is the only lane in this repo that answers "does this console work against a released backend" — the class of defect saved-view-filter.spec.ts was written to pin (objectui#3431) is only answerable there.
The allowlist is four specs, named by test:e2e:live:ci in package.json: screen-flow.spec.ts, action-modal.spec.ts, master-detail.spec.ts, saved-view-filter.spec.ts.
Structurally, the lane depends on things outside this repo's diffs: the npm registry, github.com (the sparse checkout, and now the tag resolution), and the published artifacts' own transitive float. A required context that can go red for any of those turns every unrelated PR red. That is the concrete cost of promotion, and it is not hypothetical here — it happened this month.
Runtime: the job installs from npm, builds the console, installs Playwright browsers and polls a 300s readiness gate. Promotion puts that on the critical path of every merge.
The required contexts today, for reference
rules/branches/main requires: Lint, Type Check, Build & E2E, Test (shard 1-4/4), Build Docs, Changeset Declaration. Live E2E (informational) is not among them. Re-read the ruleset before acting on this list — it is a reading taken 2026-09-07, not a guarantee.
What a decision needs
The workflow header names the evidence itself: the nightly record (schedule: cron '30 6 * * *'). Someone should pull the last N nightly runs and separate three populations before this is decided:
reds caused by an objectui change (the signal promotion would buy),
reds caused by infrastructure (registry, network, cache, timeout).
If population 1 is non-empty and 2+3 are rare, promotion is defensible. If 2+3 dominate, the honest answer may be a third option neither #2835 nor this card has named: keep it non-required on PRs but make the nightly run a lane someone is accountable for, so its reds are read instead of accumulating.
Scope
Analysis and a maintainer decision — not a code change. Nothing in #7964's PR touches the workflow, deliberately.
Filed per the last sentence of the maintainer ruling on #7964: "Whether the live-e2e lane should stay
informationalis a separate question — file it as its own card with the evidence of what the lane proves once this lands, not as a rider here."Blocked-by: #7964 (the derivation PR). Do not decide this before that lands — half the evidence below is about the shape it creates.
The question
Live E2E (informational)runscontinue-on-error: trueand is not a required context. That was decided in #2835, with an explicit precondition attached in the workflow header: "Do not add it to required checks (and do not removecontinue-on-error) until the nightly record proves the lane stable." Two of the reasons it could not be trusted have since been removed. This card asks the maintainer to re-decide, on the evidence, rather than letinformationalpersist by default.What the lane proves once #7964 lands
objectstack devbackend from published@objectstack/*tarballs atOBJECTSTACK_VERSION(nothing built from source), serving the showcase app, and drives it with a real browser. That is the only lane in this repo that answers "does this console work against a released backend" — the class of defectsaved-view-filter.spec.tswas written to pin (objectui#3431) is only answerable there.test:e2e:live:ciinpackage.json:screen-flow.spec.ts,action-modal.spec.ts,master-detail.spec.ts,saved-view-filter.spec.ts.e2e/live/ci/backend.envpinsOBJECTSTACK_VERSION=17.0.0-rc.2while the lockfile resolves 17.2.0 — the live-e2e lane has been smoke-testing an unmatched pair for two minor versions #7689 heldOBJECTSTACK_VERSIONto the versionpnpm-lock.yamlresolves. finding(ci): the live-e2e lane's OTHER pin —OBJECTSTACK_REF— states a MUST that nothing can check, and it fails silently in the same way objectui#7689 did #7964 removed the second pin entirely:start-backend.shderives the showcase-app commit from the@objectstack/cli@$OBJECTSTACK_VERSIONrelease tag at boot and refuses to start when it does not resolve. So the app source and the installed packages come from one release by construction.e2e/live/ci/backend.envpinsOBJECTSTACK_VERSION=17.0.0-rc.2while the lockfile resolves 17.2.0 — the live-e2e lane has been smoke-testing an unmatched pair for two minor versions #7689 and finding(ci): the live-e2e lane's OTHER pin —OBJECTSTACK_REF— states a MUST that nothing can check, and it fails silently in the same way objectui#7689 did #7964, the lane's own contract said a mismatched pair "proves nothing" — so a green run genuinely carried no information, andinformationalwas the honest status for it. That defect is gone. The lane's greens now mean something they did not mean before, and the status has not been revisited since.Evidence on the other side — do not skip this
mainright now for a reason that is not an objectui diff: the publishedplugin-authfloating onto@better-auth/core@1.7.3(objectstack#16186). See ci(live-e2e):Live E2E (informational)is red on main and every branch since the backend pin moved to 17.2.0 — the publishedplugin-authfloat (objectstack#16186), not an objectui diff #7990. objectui#8084 pinned the family inbackend.envas a workaround, and that pin is itself declared temporary.github.com(the sparse checkout, and now the tag resolution), and the published artifacts' own transitive float. A required context that can go red for any of those turns every unrelated PR red. That is the concrete cost of promotion, and it is not hypothetical here — it happened this month.The required contexts today, for reference
rules/branches/mainrequires:Lint,Type Check,Build & E2E,Test (shard 1-4/4),Build Docs,Changeset Declaration.Live E2E (informational)is not among them. Re-read the ruleset before acting on this list — it is a reading taken 2026-09-07, not a guarantee.What a decision needs
The workflow header names the evidence itself: the nightly record (
schedule: cron '30 6 * * *'). Someone should pull the last N nightly runs and separate three populations before this is decided:Live E2E (informational)is red on main and every branch since the backend pin moved to 17.2.0 — the publishedplugin-authfloat (objectstack#16186), not an objectui diff #7990 is one),If population 1 is non-empty and 2+3 are rare, promotion is defensible. If 2+3 dominate, the honest answer may be a third option neither #2835 nor this card has named: keep it non-required on PRs but make the nightly run a lane someone is accountable for, so its reds are read instead of accumulating.
Scope
Analysis and a maintainer decision — not a code change. Nothing in #7964's PR touches the workflow, deliberately.
Generated by Claude Code