fix: unblock main CI — duplicate instanceId getter + pr-ci-sweeper lookback time-bomb#111362
fix: unblock main CI — duplicate instanceId getter + pr-ci-sweeper lookback time-bomb#111362steipete wants to merge 1 commit into
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed July 19, 2026, 6:17 AM ET / 10:17 UTC. Summary PR surface: Source -4. Total -4 across 1 file. Reproducibility: yes. source-reproducible: the current-main class has two accessors with the same Review metrics: none identified. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Next step before merge
Maintainer decision needed
Security Review detailsBest possible solution: Retain one typed Do we have a high-confidence way to reproduce the issue? Yes, source-reproducible: the current-main class has two accessors with the same Is this the best way to solve the issue? Yes: retaining the typed getter and deleting the behaviorally identical duplicate is the narrowest maintainable fix, with no new API or compatibility surface. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 8178b3cc140d. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source -4. Total -4 across 1 file. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
…le now runPrCiSweeper hardcoded `Date.now()`, but its tests build PR fixtures at NOW-2h with NOW pinned to 2026-07-18. Once real wall-clock crossed ~24h past that, the fixtures aged out of the 24h lookback and two tests flipped from refire to skip/outside-lookback, reddening main. Thread an injectable `now` (default Date.now()) like classifyPrForSweep already has, and pin the two runPrCiSweeper tests to NOW.
879f162 to
a9ddd3a
Compare
|
Superseded by direct commits already on
|
What Problem This Solves
mainCI is fully red.ui/src/api/gateway.tsdeclares theinstanceIdgetter twice (TS2300: Duplicate identifier), failingcheck-prod-types,check-test-types,check-lint,check-additional-boundaries-a,QA Smoke CI, and the compact shards — i.e. every downstream job that typechecks/builds the UI. This blocks all PR landings.Why This Change Was Made
Two independently-merged PRs each added an identical
get instanceId()toGatewayApi:Git merged them without a textual conflict (the getters sit in different spots), but the result declares the same class member twice. Both bodies are identical (
return this.opts.instanceId), so this is a pure duplicate — remove one. The earlier declaration carries the explicit: string | undefinedreturn type, so that one is kept.User Impact
None functional — restores green CI so PRs can land again. No behavior change; the getter returns the same value.
Evidence
ui/src/api/gateway.ts(364,7): error TS2300: Duplicate identifier 'instanceId'and oxlintIdentifier 'instanceId' has already been declaredat 364:7.cfe4096dband went red at5c9916950(feat(gateway): watched sessions in presence with viewer facepiles #111225), staying red through feat(clients): adopt model controls, session management, and keyboard history recall on iOS #110831 — the two PRs that added the getter.Second breakage (same red main): pr-ci-sweeper lookback time-bomb
After the duplicate-getter fix,
checks-node-compact-large-6still failed ontest/scripts/pr-ci-sweeper.test.ts— independent and also pre-existing.runPrCiSweeperhardcodedDate.now()for its 24h lookback, but the tests build PR fixtures atNOW - 2hwithNOWpinned to2026-07-18T12:00:00Z. Once real wall-clock crossed ~24h past that pin (today, 2026-07-19), the fixtures aged out of the lookback window and two assertions flipped fromrefiretoskip / outside-lookback.Fix: thread an injectable
now(defaultDate.now()) intorunPrCiSweeper— exactly the seamclassifyPrForSweepalready has — and pin the tworunPrCiSweepertests toNOW. Behavior in production is unchanged (defaults to real time).test/scripts/pr-ci-sweeper.test.tsnow 14/14 green (node scripts/run-vitest.mjs).