Skip to content

fix(gate): dedupe the duplicate-only hold's warnings and repair #9206's engine fixture fallout - #9219

Merged
JSONbored merged 1 commit into
mainfrom
fix/duplicate-hold-warning-dedup
Jul 27, 2026
Merged

fix(gate): dedupe the duplicate-only hold's warnings and repair #9206's engine fixture fallout#9219
JSONbored merged 1 commit into
mainfrom
fix/duplicate-hold-warning-dedup

Conversation

@JSONbored

Copy link
Copy Markdown
Owner

Summary

Two related fixes to #9206/#9129's duplicate-only hold path.

1. The held finding was listed twice. The hold branch moves escalated blockers into warnings so the panel still shows them — but gateWarnings is every warning-severity finding, and duplicate_pr_risk is authored severity: "warning", so it was already there. Appending the blocker unfiltered rendered the identical finding twice. Verified against the built engine before the fix:

warnings codes: [ 'repo_unregistered', 'duplicate_pr_risk', 'duplicate_pr_risk' ]

The failure path directly below has always applied !blockers.includes(finding); the hold path now applies the same exclusion. Fixed in both twins (src/rules/advisory.ts + packages/loopover-engine/src/advisory/gate-advisory.ts) to keep the live-gate-parity contract green.

2. The engine workspace's suite has been red on main since #9206 — 7 failures, which #9206's own golden-fixture update did not cover:

Closes #9218

Validation

  • npm run test --workspace @loopover/engine737/737 pass (was 730/737 on main)
  • npm run test:live-gate-parity — 14/14
  • npm run test:engine-parity — 14/14
  • npx vitest run test/unit/{gate-check-policy,rule-gate-eval,gate-golden-corpus,content-lane-wire,agent-actions}.test.ts — 548/548
  • New regression test asserts both arms of the added filter: the held finding appears exactly once, and an unrelated warning alongside it is still carried exactly once.

Safety

  • No secrets, wallets, hotkeys, trust scores, or reward values.
  • No public-surface text change beyond removing a duplicated line from the held panel.
  • Behavior change is confined to the hold branch's warning list; blockers, conclusions, and the failure path are untouched.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 27, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
loopover-ui 2c666db Commit Preview URL

Branch Preview URL
Jul 27 2026, 07:23 AM

@superagent-security

Copy link
Copy Markdown
Contributor

Superagent didn't find any vulnerabilities or security issues in this PR.

@JSONbored JSONbored self-assigned this Jul 27, 2026
@JSONbored
JSONbored merged commit 0f3990b into main Jul 27, 2026
4 of 5 checks passed
@JSONbored
JSONbored deleted the fix/duplicate-hold-warning-dedup branch July 27, 2026 07:21
@github-actions

Copy link
Copy Markdown
Contributor

Logic backtest

Replayed 0 historical case(s) for linked_issue_scope_mismatch through the base (05ae04e) and head (2c666db) versions of its detection logic (corpus checksum 4f53cda18c2b).

Backtest comparison: linked_issue_scope_mismatch

Verdict: unchanged — no comparable axis moved.

Advisory only — this check never blocks merge (#8105).

@codecov

codecov Bot commented Jul 27, 2026

Copy link
Copy Markdown

❌ 4 Tests Failed:

Tests completed Failed Passed Skipped
22591 4 22587 21
View the top 3 failed test(s) by shortest run time
test/integration/orb-relay.test.ts > POST /v1/orb/relay/pull > REGRESSION (#4995): a DB error inside validateOrbRelayEnrollment's own lookup ALSO returns a clean 503 broker_error, not a framework 500 (the earlier of the two DB-touching calls in this handler)
Stack Traces | 0.0116s run time
AssertionError: expected 500 to be 503 // Object.is equality

- Expected
+ Received

- 503
+ 500

 ❯ test/integration/orb-relay.test.ts:1160:24
test/integration/orb-onboarding.test.ts > Central Orb installation registry routes (/v1/internal/orb/installations) > tolerates a list query that omits results (rows.results ?? [])
Stack Traces | 0.0217s run time
SyntaxError: Unexpected token 'I', "Internal S"... is not valid JSON
 ❯ test/integration/orb-onboarding.test.ts:57:14
test/integration/orb-ingest.test.ts > Orb instance registry routes (/v1/internal/orb/instances) > tolerates a list query that omits results (rows.results ?? [])
Stack Traces | 0.0278s run time
SyntaxError: Unexpected token 'I', "Internal S"... is not valid JSON
 ❯ test/integration/orb-ingest.test.ts:427:14
test/integration/orb-relay.test.ts > POST /v1/orb/relay/register > REGRESSION (#4995): a DB error inside validateOrbRelayEnrollment's own lookup ALSO returns a clean 503 broker_error, not a framework 500 (the earlier of the two DB-touching calls in this handler)
Stack Traces | 0.0793s run time
AssertionError: expected 500 to be 503 // Object.is equality

- Expected
+ Received

- 503
+ 500

 ❯ test/integration/orb-relay.test.ts:155:24

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

orb(gate): a duplicate-only HOLD lists the held finding twice, and #9206's fixture fallout left the engine suite red on main

1 participant