# V3 operations-gates audit remediation

## Disposition

- Audit scope addressed: 2 High, 5 Medium, 4 Low findings.
- Operations control package: structurally valid and fail-closed.
- Release state: `sourceComplete=false`, `evidenceComplete=false`, `deploymentAuthorized=false`, `deployed=false`, `activated=false`.
- Candidate commitment: `9045c0285475994bd46ada283c5915842fbf221209b9cd2f3e99e8d504c7097d`.
- No commit, push, deployment, signature, wallet, or RPC action was performed.
- No human role holder was named or fabricated.

## Finding-by-finding closure

| Finding | Source-level disposition | Evidence |
|---|---|---|
| H-01 governance selector/default-deny enforcement | **Controlled dependency; release remains blocked.** Current Base governance hooks default-deny target/selector pairs, enforce zero/bounded value, and revalidate at proposal and execution. The operations package adds an exact generated candidate commitment interface and verifies the observed hooks, but the active Base contract does not yet bind the exact candidate digest or enforce every rule's calldata/argument predicates. `GOVERNANCE-POLICY-INTEGRATION-001` therefore remains open and every release stage remains false. | `governance-enforcement.json`, `policy-commitment.json`, `contracts/IV3GovernancePolicyCommitment.sol`, `generate_policy_commitment.py`, `release-status.json` |
| H-02 checker accepted weakened controls | **Closed.** The checker now runs schema validation and enforces fixed governance/owner minima, complete separation, key lifecycle, recusal, responders, guardian bounds, drills, freshness, authority, unique IDs, deny semantics, evidence references, source authority, and candidate digests. | `check_v3_operations_gates.py`, three schemas, 20 focused tests |
| M-01 incomplete pilot scope | **Closed for the audited omission; separate Base scope blocker retained.** `ThresholdConsensusV3` and `SafeBondFactoryV3` are source-verified in the supported manifest and have exact administration/deployment rules. The concurrently remediated supported set intentionally excludes unsafe modules; the still-enabled `DisputeRegistryV3` pilot entry is represented by open source blocker `BASE-PILOT-SUPPORTED-SCOPE-001`. | `supported-v3-modules.json`, `governance-selector-policy.json`, `release-status.json` |
| M-02 nonexistent Mutual Aid signature | **Closed.** The actual source signature `skimSurplus(address,uint256)` and selector `0x68d90d56` are recognized. Because Mutual Aid is outside the remediated supported set, the exact call is now explicitly denied rather than falsely allowlisted. All allowlisted signatures are checked against fresh compiled ABI or exact source. | `governance-selector-policy.json`, `check_v3_operations_gates.py` |
| M-03 stale V2 ABI blocker | **Closed.** `V2-ABI-001-CLOSED` is satisfied by fresh candidate-bound evidence; strict ABI verification passes 36/36 and bytecode verification passes 134/134. No broader readiness is inferred. | `release-status.json`, `evidence/v2-abi-strict-20260825.json`, `evidence/v2-closure-final.log` |
| M-04 duplicate keys/canonical integrity | **Closed.** Strict duplicate-key rejection, deterministic canonical JSON hashing, raw hashing, manifest bindings, evidence bindings, and generated Solidity constants are enforced. | `generate_policy_commitment.py`, `policy-commitment.json`, `IV3GovernancePolicyCommitment.sol`, checker/tests |
| M-05 freshness/supersession | **Closed at control-definition level.** Canonical status age, class-specific evidence ages, reference existence, digest/candidate bindings, and expanded supersession inventory are enforced. Missing fresh drills remain an explicit blocker. | `operations-control.json`, `readiness-supersession.json`, `release-status.json`, checker/tests |
| L-01 role/recusal ambiguity | **Closed.** Owner is bound to the governance contract, required overlaps are exhaustively forbidden, and recusal quorum computation is explicit. | `role-control-policy.json`, role schema, checker/tests |
| L-02 calldata canonicality | **Closed for the off-chain committed-proposal gate; on-chain predicate integration remains under H-01.** Static calldata lengths are exact, dynamic `setSigners` permits 32 signers at 1,124 bytes, structural ABI canonicality rejects trailing and malformed values, and current factory signatures are source-verified. | selector policy, `validate_proposal_candidate`, focused proposal tests |
| L-03 transitive mission semantics | **Closed at static/control-package level.** Supported manifest semantics, prohibited classes, safe observed inputs, source imports/calls from protected modules, and target scope are checked. | supported manifest, checker/tests |
| L-04 build result snapshot binding | **Closed.** The build record contains tool versions, candidate ID, raw/canonical artifact hashes, evidence hashes, and command-output hashes for the intentionally uncommitted candidate. | `BUILD_RESULTS_20260825.json`, `policy-commitment.json` |

## Focused validation

| Command | Result |
|---|---|
| `python v3-operations/check_v3_operations_gates.py` | PASS: control package valid; release fail-closed |
| `python -m unittest discover -s v3-operations/tests -p 'test_v3_operations_gates.py' -v` | PASS: 20/20 |
| `python baseline/check_v2_abi_package.py --strict` | PASS: 36/36 |
| `python ci/check_v2_bytecode_manifest.py` | PASS: 134/134 |
| `git diff --check` | PASS |
| `python v3-migration/completeness/check_ledger.py` | FAIL: 179 errors from shared concurrent completeness, Base, Solana, pr7/site, generated-route, and checksum drift; retained as source blocker rather than regenerating across active workstreams |

## Negative-test coverage

- selector scope escalation and unsupported target;
- nonzero value, unknown selector, trailing calldata, malformed boolean;
- 1-of-1 governance and weakened role thresholds;
- forbidden role overlap and removed separation;
- removed key rotation, revocation, recusal, or conflict controls;
- missing or weakened responders;
- weakened guardian restrictions or recovery/drill definitions;
- stale status/evidence and weakened freshness;
- changed source authority or manifest binding;
- duplicate JSON keys, duplicate IDs, and empty default-deny semantics;
- nonexistent evidence references and candidate commitment drift;
- prohibited inputs and readiness overclaim;
- deployment/activation progression before policy integration;
- mainnet activation without separate human authorization.

## Open blockers

### Base/source dependencies

1. `GOVERNANCE-POLICY-INTEGRATION-001`: Base governance must consume and expose the exact candidate commitment and enforce each committed calldata/argument predicate at proposal and execution.
2. `BASE-PILOT-SUPPORTED-SCOPE-001`: active Base remediation must reconcile the pilot's enabled `DisputeRegistryV3` entry with the intentionally reduced supported set.
3. `CANONICAL-LEDGER-RECONCILIATION-001`: the completeness owner must regenerate/reconcile the canonical ledger after concurrent Base, Solana, pr7/site, route-registry, and manifest work is stable.
4. `SRC-WORKTREE-NOT-FROZEN`: freeze and independently review the final candidate.

### Operations and human/external dependencies

1. Assign/evidence separated role rosters, key lifecycle, recusals, and responder coverage without placing human identities in source.
2. Produce fresh candidate-bound deployment and rollback drill evidence.
3. Obtain partner acceptance, privacy, counsel, and independent-audit signoffs.
4. Obtain explicit human deployment authorization and a separate activation authorization.
5. Resolve x402 owner/live settlement evidence and Solana mainnet readiness evidence.

## Exact changed package files

- `v3-operations/governance-selector-policy.json`
- `v3-operations/role-control-policy.json`
- `v3-operations/operations-control.json`
- `v3-operations/release-status.json`
- `v3-operations/readiness-supersession.json`
- `v3-operations/governance-enforcement.json`
- `v3-operations/policy-commitment.json`
- `v3-operations/generate_policy_commitment.py`
- `v3-operations/check_v3_operations_gates.py`
- `v3-operations/contracts/IV3GovernancePolicyCommitment.sol`
- `v3-operations/schemas/selector-policy.schema.json`
- `v3-operations/schemas/role-control.schema.json`
- `v3-operations/schemas/release-status.schema.json`
- `v3-operations/tests/test_v3_operations_gates.py`
- `v3-operations/evidence/v2-abi-strict-20260825.json`
- `v3-operations/evidence/operations-check-final.log`
- `v3-operations/evidence/operations-tests-final.log`
- `v3-operations/evidence/v2-closure-final.log`
- `v3-operations/evidence/completeness-ledger-final.log`
- `v3-operations/BUILD_RESULTS_20260825.json`
- `v3-operations/README.md`
- `v3-migration/completeness/supported-v3-modules.json`
- `v3-migration/completeness/v2-contract-dispositions.json`
