Skip to content

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

Description

@JSONbored

Context

#9129 (shipped in #9206) made a duplicate-only gate failure hold instead of close. The hold path moves the escalated blockers into warnings so the panel still shows them:

warnings: [...gateWarnings, ...blockers],

But gateWarnings is every warning-severity finding, and duplicate_pr_risk is authored severity: "warning" — so it is already in that set. Appending the blocker unfiltered lists the identical finding twice. The failure path immediately below has always excluded them (!blockers.includes(finding)); the hold path does not.

Verified against the built engine (one rival PR, duplicatePrGateMode: block):

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

Present in both twins: src/rules/advisory.ts (the hold branch under DUPLICATE_ONLY_BLOCKER_CODES) and packages/loopover-engine/src/advisory/gate-advisory.ts.

Second, separate fallout from the same change: the engine workspace's own suite has been red on main since #9206 — 7 failures across iterate-loop.test.ts (5) and self-review-adapter.test.ts (2). #9206 updated the host's golden fixtures but not these:

Requirements

  1. Exclude already-present blockers from the hold path's warning spread, in both twins, keeping them in lock-step for the live-gate-parity contract.
  2. A regression test asserting a duplicate-only hold lists the held finding exactly once, and that an unrelated warning alongside it is still carried exactly once (both arms of the new filter).
  3. Repair the stale engine fixtures/assertions so they exercise orb(gate): any contributor can force-close a rival's PR by citing the same issue number — breaker-exempt, default-on, and it has already closed 2 PRs #9129's intended semantics rather than being weakened: the rival PR must carry corroborating changedFiles, and the held verdict asserts neutral + the finding present once in warnings.

Expected outcome

npm run test --workspace @loopover/engine is green on main again, and a held duplicate renders one finding instead of two.

Metadata

Metadata

Assignees

Labels

maintainer-onlyOwner-only work — yields no Gittensor points.orbGittensory Orb related - maintainer self-hosting analytics.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions