# quorum-signer-uniqueness-review

> Adjacent signer inequalities omit non-adjacent pairs in a verified threshold claim vector.

Canonical: https://nightshade.dicksonwu.xyz/rules/quorum-signer-uniqueness-review.html
Release: Nightshade 0.1.1 (v0.1.1)

| Field | Value |
| --- | --- |
| Rule ID | `quorum-signer-uniqueness-review` |
| Severity | info |
| Confidence | high |
| Maturity | experimental |
| Selection | Opt-in |
| Policy intent | not required |
| Default enabled | no |
| Category | Other active opt-ins / Authorization, identity and membership |
| Engine facts used | all-successful-predicates, exact-entry-operands, canonical-ecdsa-operands, collection-operations, direct-hash-inputs |
| Release | v0.1.1 |

## Selection and scope

Not selected by default. Select it with `--detectors` or the `detectors` list in nightshade.json. Either one replaces profile selection, so list every rule you want.

```sh
./.nightshade/node_modules/.bin/nightshade ./contracts --detectors quorum-signer-uniqueness-review
./.nightshade/node_modules/.bin/nightshade detector show quorum-signer-uniqueness-review
```

The first command runs only this rule; `--detectors` takes a comma-separated list. The second prints the rule's metadata from your installed version.

Severity is review priority. It does not express exploitability or impact. Confidence is detector metadata, not a probability. All built-in rules are experimental.

Compiler scope: the engine supports the pinned profiles 0.28.0, 0.29.0, 0.30.0, 0.31.1, 0.33.0-rc.2, 0.34.0, 0.35.0-rc.1 and 0.35.0, with ZKIR2 by default. Support for this rule can be narrower; the rule documentation below states any narrower scope.

## Corpus checks

Synthetic corpus checks for this rule in the 0.1.1 proof run. A check counts only with compiler acceptance and complete analysis.

| Positive detected | Corrected quiet | Lookalike quiet | Other negative quiet | Incomplete |
| ---: | ---: | ---: | ---: | ---: |
| 2/2 | 2/2 | 2/2 | 0/0 | 0 |

No deviations were recorded for this rule.

These are behavior checks on synthetic fixtures, not a precision or recall estimate. See [evaluation](https://nightshade.dicksonwu.xyz/evaluation.md#synthetic-corpus).

## Rule documentation

From https://github.com/DicksonWu654/nightshade/blob/v0.1.1/docs/detectors/quorum-signer-uniqueness-review.md at v0.1.1.

Availability: opt-in. Severity: info. Confidence: high in the static source relationship.

The rule reviews directly presented entry-parameter vectors of 3..16 signer claims under the Compact 0.34.0 ZKIR3 profile. Each represented claim must contain one canonical ECDSA signature, one canonical Secp256k1 point and one Bytes<32> commitment. It requires the canonical ECDSA verifier outcome for every claim, a keccak256 message of that claim's commitment, a required equality binding the commitment to the persistent hash of its public key's exact native X/Y coordinates, and required membership of every commitment in the same preexisting Set revision. A required comparison checks the fixed presented count against a supplied Uint threshold.

Within that complete successful history, adjacent scalar commitment inequalities are enforced and one or more non-adjacent inequalities are absent from the required scalar equality/inequality closure. Adjacent inequality alone does not establish pairwise uniqueness. The observation identifies the missing pairs; it does not establish that duplicates can satisfy other protocol checks, that the threshold is the sole authorization gate, or that a transaction or bypass is feasible. Independently established uniqueness can make a match intentional. Review whether the threshold counts distinct signers, and enforce the protocol's complete uniqueness condition if needed.

Matching uses canonical call identities, represented entry operands, exact native digest inputs, registry revisions and required predicate snapshots. Application namesakes, ordinary sequences, two-claim vectors, unrequired verifier outcomes and complete pairwise inequality checks do not match. Aliases preserving supplied snapshots remain exact; shared wildcard storage regions and dependency unions cannot establish equality. A condition can be required in one successful branch history without being universal across the entry; findings make only that history's relationship claim.

## Suppress a match

If a match is intentional, suppress it on the line before with the exact rule ID and a reason of at least eight characters:

```compact
// nightshade-disable-next-line quorum-signer-uniqueness-review -- Reason this match is intentional
```

Diagnostics cannot be suppressed, and an unmatched directive for a selected rule makes analysis incomplete. See [configuration](https://nightshade.dicksonwu.xyz/configuration.md#suppress-an-intentional-match) for fingerprint suppressions and baselines.

## References

- [Rule source document at v0.1.1](https://github.com/DicksonWu654/nightshade/blob/v0.1.1/docs/detectors/quorum-signer-uniqueness-review.md)
- [Catalog entry in rules.json](https://nightshade.dicksonwu.xyz/rules.json)
- [All rules](https://nightshade.dicksonwu.xyz/rules.md#authorization-identity-and-membership)
- [Limitations](https://nightshade.dicksonwu.xyz/limitations.md)
