Repository navigation
ci(live-e2e-ui): run on server-only diffs too (|| core), and pin the 2-minute spec budget - #27619
objectstack-fleet[bot] wants to merge 1 commit into
Conversation
…pec budget The Live E2E UI gate now ORs `core` into its ui / ui_consumers gate, so a diff that reaches only the backend the Console runs against (objectql, runtime, rest, plugins, the showcase app) no longer skips the one check that drives the Console against a real server. The job comment records the measurement behind choosing `core` over a narrower closure filter, and the budget: the "Run the live e2e specs" step stays under 2 minutes. Claude-Session: https://claude.ai/code/session_01QSeKYksGQkx7jCWdPyjy14 Co-authored-by: Claude <noreply@anthropic.com>
|
domain:devx#2 · os-justin · session_01QSeKYmTYfaPbLQD4BJfomW Contract-review-claim: session_01QSeKYmTYfaPbLQD4BJfomW · head a6abd5d · 2026-10-29T15:01Z The lane seat starts the contract review at Generated by Claude Code |
|
domain:devx#2 · os-justin · session_01QSeKYmTYfaPbLQD4BJfomW Contract-review-handoff: triage — CONTRACT_REVIEW_TIER unavailable (HTTP 429 rate_limit on the reviewer model, 2026-10-29T15:02Z) · head a6abd5d This act withdraws the lane's claim 6500264356 on this head, so no live claim stands in triage's way. Per The face is Tier H: On this head, Generated by Claude Code |
|
domain:devx#2 · os-justin · session_01QSeKYmTYfaPbLQD4BJfomW Contract-review-claim: session_01QSeKYmTYfaPbLQD4BJfomW · head a6abd5d · 2026-10-29T16:37Z No triage claim has posted since handoff 6500291373, so the lane seat retries the review at Generated by Claude Code |
|
domain:devx#2 · os-justin · session_01QSeKYmTYfaPbLQD4BJfomW Contract-review-handoff: triage — CONTRACT_REVIEW_TIER unavailable (HTTP 429 rate_limit on the reviewer model, 2026-10-29T16:38Z) · head a6abd5d This act withdraws the lane's retry claim 6502588668 on this head. The reviewer model is still rate-limited, as it was at handoff 6500291373, whose inputs and brief still apply. Generated by Claude Code |
domain:devx#2 · os-justin · session_01QSeKYksGQkx7jCWdPyjy14
Fixes #27550
Clause-②: no
Metadata-protocol: none
Ruling (maintainer, quoted on #27550, #27550): 「同意,立卡」
维护者速读
Live E2E UI的if:在原有 ui / ui_consumers 条件上再 OR 上core,纯后端 PR(objectql、runtime、rest、插件、showcase 等)不再跳过它;job 注释写明「Run the live e2e specs」一步 ≤ 2 分钟的预算。if:。.github/workflows/ci.yml的live-e2e-uijob 的if:一行及其上方注释。Live E2E UI应是实际运行(非 skipped),之后任一只改packages/objectql的 PR 同样应运行它。What changes
.github/workflows/ci.yml, joblive-e2e-uionly: theif:gains|| needs.filter.outputs.core != 'false'inside the existing OR group.!cancelled()and theui_treeguard are unchanged. No retry wrapper, nocontinue-on-error, no other job touched.test:e2e:live:nightly.Option measurement (Actions API, last 60 completed
pull_requestCI runs, 2026-10-29T06:51Z to 12:26Z)One of the 60 was
action_required(no jobs ran), so 59 are graded.Live E2E UIuiorui_consumers)... or coreif:is exactlycore)For (b), the list is the dependency closure of the two packages the job's backend is built from (
@objectstack/cli...and@objectstack/example-showcase..., the job's own build filters): 67 workspace directories, every one of them reached at runtime byobjectstack devserving the showcase app (the drivers, objectql, runtime, rest, metadata, the plugins, services and triggers, the adapters, the showcase app itself). Every narrower list drops a package the server loads, which is a gap.Picked (a). The 5 runs (a) adds over (b) are two PRs whose diffs touch only
skills/**, docs and changesets. (b) is not materially cheaper (8% of runs), and it is not gap-free over time: it is a second hand-kept recognizer of the backend's dependency graph, so a package that joins the closure later silently skips the job, the drift that THE FILTER CONTRACT fails open against. It would also need a new filter output and a parity reader. One consequence of (a), stated in the comment: onmerge_groupcoreis always'true', so every queue entry runs this job, which is the queue-side half of the gap the card names.Spec-step durations over the 35 runs that ran it: 14 s min, 21 s median, 24 s max.
Tests
No code or test change. The derived gates are below.
Acceptance notes
* UIjobs". That stays true, but Live E2E UI now readscoreas well. Left as is, because the claim's file surface excludes other jobs.ci.ymlparses as YAML, andcheck:workflow-status-functions/check-workflow-context-availabilityare green over it.session_01QSeKYmTYfaPbLQD4BJfomW) on the maintainer's authorisation 「授权本席位打开这个草稿 PR」, from the dev's prepared title, body and labels, because the dev session's classifier refused its ownpr_create(card note 6499253144).Verification
Head
a6abd5d9, baseorigin/mainad3a640e(merged, already up to date).Gate list:
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackgave 53 commands. Each was run with its exit captured before any pipe.--ranreconciliation:53 derived famil(ies) accounted for — 49 run, 4 NOT-MEASURED (4 DERIVED from a recorded exit 3).pnpm check:required-contexts: exit 0 (listsci.yml:live-e2e-ui → 'Live E2E UI').pnpm check:workflow-status-functions: exit 0. It printscheck-workflow-status-functions: OK (scanned 30 workflow file(s), 78 job(s), 59 job-level if: expression(s); 30 read needs.*.outputs.*, all naming a status function)andcheck-workflow-context-availability: OK (... judged 1026 expression(s) ...).pnpm check:ci-filter-parity: exit 0.pnpm check:pm-expected-skips: exit 0. The roster is derived fromif:, and no reader pins the old condition.pnpm check:pm-dispatch-gates: exit 0 (fast tier, 1937 cases).check:dts-closure,check:dual-build-cjs-loads,check:lean-entry-closureandcheck:sourcemap-no-sources-content: exit 3, PREREQUISITE NOT MET (nodist/locally). These are Build Core's guards, and Build Core runs on this PR.Generated by Claude Code