fix(ci): clear main gating regressions
Some checks failed
CI / Platform (Go) (pull_request) Blocked by required conditions
CI / Canvas (Next.js) (pull_request) Blocked by required conditions
CI / Shellcheck (E2E scripts) (pull_request) Blocked by required conditions
CI / Canvas Deploy Reminder (pull_request) Blocked by required conditions
CI / Python Lint & Test (pull_request) Blocked by required conditions
CI / all-required (pull_request) Blocked by required conditions
E2E API Smoke Test / E2E API Smoke Test (pull_request) Blocked by required conditions
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Blocked by required conditions
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Blocked by required conditions
Harness Replays / Harness Replays (pull_request) Blocked by required conditions
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Blocked by required conditions
sop-checklist / na-declarations (pull_request) awaiting /sop-n/a declaration for: qa-review, security-review
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 12s
CI / Detect changes (pull_request) Successful in 32s
Harness Replays / detect-changes (pull_request) Successful in 11s
E2E API Smoke Test / detect-changes (pull_request) Successful in 27s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 28s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 36s
gate-check-v3 / gate-check (pull_request) Failing after 25s
qa-review / approved (pull_request) Failing after 17s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 1m13s
security-review / approved (pull_request) Failing after 20s
sop-checklist / all-items-acked (pull_request) Successful in 24s
sop-tier-check / tier-check (pull_request) Successful in 26s
Ops Scripts Tests / Ops scripts (unittest) (pull_request) Successful in 1m20s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Failing after 10m52s

This commit is contained in:
hongming-codex-laptop 2026-05-14 05:55:22 -07:00
parent cdb0b0401a
commit 2f7f9acf9e
2 changed files with 16 additions and 4 deletions

View File

@ -85,7 +85,10 @@ def test_pr_needs_update_when_base_sha_absent_from_commits():
def test_merge_decision_requires_main_green_pr_green_and_current_base():
required = ["CI / all-required (pull_request)"]
main_status = {"state": "success", "statuses": []}
main_status = {
"state": "success",
"statuses": [{"context": "CI / all-required (push)", "status": "success"}],
}
pr_status = {
"state": "success",
"statuses": [{"context": "CI / all-required (pull_request)", "status": "success"}],
@ -104,7 +107,10 @@ def test_merge_decision_requires_main_green_pr_green_and_current_base():
def test_merge_decision_updates_stale_pr_before_merge():
decision = mq.evaluate_merge_readiness(
main_status={"state": "success", "statuses": []},
main_status={
"state": "success",
"statuses": [{"context": "CI / all-required (push)", "status": "success"}],
},
pr_status={"state": "success", "statuses": [{"context": "CI / all-required (pull_request)", "status": "success"}]},
required_contexts=["CI / all-required (pull_request)"],
pr_has_current_base=False,

View File

@ -60,14 +60,20 @@ export function ThemeToggle({ className = "" }: { className?: string }) {
} else {
return;
}
if (!e.currentTarget.isConnected) return;
setTheme(OPTIONS[next].value);
// Move focus to the new button so arrow-key navigation is continuous.
// Use direct-child query to scope strictly to this radiogroup's buttons
// and avoid accidentally focusing unrelated [role=radio] elements
// elsewhere in the DOM (e.g. React Flow canvas nodes).
const radiogroup = e.currentTarget.closest("[role=radiogroup]") as HTMLElement | null;
const btns = radiogroup?.querySelectorAll<HTMLButtonElement>("> [role=radio]");
btns?.[next]?.focus();
const btns = radiogroup
? Array.from(radiogroup.children).filter(
(child): child is HTMLButtonElement =>
child instanceof HTMLButtonElement && child.getAttribute("role") === "radio"
)
: [];
if (next < btns.length) btns[next]?.focus();
},
[]
);