Repository navigation
finding(ci): with both live-e2e pins now machine-held, re-decide whether the lane stays informational — and on what evidence #8275
Description
Activity
- addeddomain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repoobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repoand removed
on Sep 7, 2026 Triage: lands in
domain:devx(.github/workflows+ the live-e2e lane's required-context posture);pm:blockedon #7964. GradeTask/priority:p3.Admission basis, stated openly because it is not the usual one. Measured against the three-class threshold (#16351 /
SKILL.md:354-355) this card is outside all three: it names no reproducible defect, cites no violated contract, and describes no metadata trap. UnderSKILL.md:378the default for that is 关not planned.⛔ This seat is not applying that default here, for one reason: the card exists because a maintainer ruling on #7964 ordered it, quoted verbatim in the body — "file it as its own card with the evidence of what the lane proves once this lands, not as a rider here." Closing it would use a rule about what devs may file to overturn a maintainer's instruction about what they want filed. That is not this seat's authority. Recorded here so the precedent is visible and checkable rather than silently applied: a card filed on an explicit maintainer instruction is admitted on that basis, and the basis is named on the card.
pm:blocked, notpm:queue: #7964 ispm:dispatchedwith PR objectui#8276 still open. The card's own first instruction is not to decide this before that lands, and it is right — half the evidence is about the shape #8276 creates.priority:p3: nothing degrades while this sits. The lane isinformationaltoday and staysinformationalby inaction, so the cost of waiting is that a status persists by default rather than by decision — real, but not urgent, and the card's whole point is that "by default" is the thing to stop.⛔ This seat does not answer the question and is not routing it to a dev. Promotion of a required context is a maintainer decision (
rules/branches/mainis a repo setting, not a diff), and the card correctly frames it as analysis, not a code change. Two things this seat will add as grading notes, not as answers:- The evidence the card asks for is collectable now and does not need 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 — pulling the nightly record (cron '30 6 * * *') and splitting reds into the three populations (objectui change / upstream-artifact drift / infrastructure) is work someone can do while fix(live-e2e): derive the showcase-app commit from the release tag at boot instead of pinning it #8276 is in flight. If it is left until after, this card waits twice. - The card names a third option neither The live e2e suite never runs in CI — 20+ specs are effectively manual, and that is how framework#3528 shipped #2835 nor its own question covers — keep it non-required on PRs but make the nightly a lane someone is accountable for.
⚠️ Whoever decides should be handed all three, not the binary. Aninformationallane whose reds nobody reads is the same "cannot fail, therefore uninformative" shape the tree keeps re-finding, and it is not fixed by either promoting or not promoting.
One correction to a reading in the body, so it is not inherited as fact: the required-context list is stamped "a reading taken 2026-09-07, not a guarantee" — ⛔ keep it that way. Re-read the ruleset at decision time; ⛔ do not cite the list above as current.
⛔ Not claimed, not dispatched, no code.
Generated by Claude Code
- The evidence the card asks for is collectable now and does not need finding(ci): the live-e2e lane's OTHER pin —
objectstack-fleet commented
on Sep 24, 2026 ContributorMore actions关闭
completed—— 维护者裁定:Live E2E维持"仅参考、不挡合并";nightly 的红由巡检送到人手里分诊席(
session_01Tw7jnJinGHvoGSi8aFkhPJ,objectstack 座位贴 #6015),2026-09-24T03:36Z。objectui 清理第三批:本席逐张读完卡面与评论,把建议报给维护者,维护者答「第③批 同意」。本卡显示 3 条评论,本席读得到 1 条(分诊5567967158),在此如实说明。本卡问的问题
本卡是按维护者在 #7964 上的指示立的:两个版本钉都改成机器持有之后,
Live E2E (informational)要不要改成必过检查。裁定(维护者同意本席的建议)
维持现状:非必过、不进合并队列。 本卡的问题就此回答。
依据
- 反对升级的代价是实测过的(卡面自己的证据):这条 lane 依赖 npm、GitHub 和上游已发布包的传递依赖漂移。本月就因为上游
@better-auth/core漂移在main上红过(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、live-e2e's RUN conclusion assertssuccesswhile its JOB reportsfailure— the outage detector reports the opposite of what it detects (defect ② of the original card; ① landed in PR #8239) #8084)。升级为必过后,任何一次上游或网络问题都会让所有无关 PR 变红。 - 卡面提出的第三条路已经基本具备:"不挡 PR,但 nightly 红了要有人负责看"。
live-e2e.yml已经去掉了continue-on-error(live-e2e's RUN conclusion assertssuccesswhile its JOB reportsfailure— the outage detector reports the opposite of what it detects (defect ② of the original card; ① landed in PR #8239) #8084),nightly 失败就是一次红的运行。本地main的文件头写明了这一点。- PM 巡检的 H57(objectstack#17132 / PR objectstack#17543)会读取每个"定时、不阻塞"工作流最近一次
event=schedule的运行,红了或过期就进收件箱。objectui#10010 就是这样被发现的。
- ⛔ 文件头那句「do not add this job to required checks until the nightly record proves the lane stable」保持不变,本裁定不改工作流。
什么时候重新考虑
nightly 连续一段时间稳定绿,而且出现过一次"只有这条 lane 能抓到、却因为非必过而漏进
main"的真实缺陷,就带着那次事件重开。重开时先按卡面的三类(objectui 改动 / 上游漂移 / 基础设施)拆分 nightly 的红。标签:摘
pm:queue;以completed关闭。
Generated by Claude Code
- 反对升级的代价是实测过的(卡面自己的证据):这条 lane 依赖 npm、GitHub 和上游已发布包的传递依赖漂移。本月就因为上游
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