Reproduction steps:
- Create a valid signed Team manifest.
- Build an approval block with schema=1, matching team_id/action_hash, an empty approvals list, and quorum=-1 (or quorum="0").
- Call the offline verifier team_approval.verify_approval_block(action_hash, block, manifest).
Expected:
The verifier must reject every quorum below 1 and must never accept an approval block with zero valid approval signatures.
Actual:
The verifier returns (True, "ok") for quorum=-1 and quorum="0" with zero approvals. A valid quorum=1 or quorum=2 with zero approvals is rejected, confirming the harness and signature checks are active.
Station version (railcall version): station-v0.68
Module slug + version: Not module-specific; Teams receipt verification
Root cause:
workbench/primitives/team_approval.py::verify_approval_block() computes quorum as int(block.get("quorum") or 1) and checks len(seen) < quorum. Negative or zero values therefore satisfy the comparison without any approvals. The CLI verifier contains the same logic.
Impact:
The offline Teams verifier can return a false successful verification for an approval block containing no approval signatures. This is an attestation/integrity failure; no live action is executed by this reproduction.
Control:
Empty approvals with quorum=1 or quorum=2 correctly fail.