{
  "baseHookObservation": {
    "defaultDenyTargetSelector": true,
    "exactCanonicalPolicyCommitmentBound": true,
    "perRuleCalldataAndArgumentEnforcement": true,
    "proposalLifetimeEnforced": true,
    "proposeAndExecuteRevalidation": true,
    "rollingOnchainCommitmentPresent": true,
    "valueBound": true
  },
  "canonicalBasePolicy": {
    "canonicalJsonSha256": "c94784bc91de3b01c7ea27f945fbd27a3fb9a25f345bf681fc91fe119aee8eaf",
    "exposedByGovernance": true,
    "path": "ci/manifests/base-v3-governance-policy.json"
  },
  "commitmentInterface": "v3-operations/contracts/IV3GovernancePolicyCommitment.sol",
  "commitmentRecord": "v3-operations/policy-commitment.json",
  "governanceSource": "v3-src/contracts/governance/MultisigGovernanceV3.sol",
  "integrationEvidence": [
    "v3-src/contracts/governance/MultisigGovernanceV3.sol",
    "v3-src/test/governance/MultisigGovernanceV3.t.sol",
    "v3-src/out/MultisigGovernanceV3.sol/MultisigGovernanceV3.json",
    "ci/manifests/base-v3-remediation-source.sha256",
    "ci/check_base_v3_source_snapshot.py",
    "v3-operations/evidence/governance-source-reconciliation-20260825.json"
  ],
  "integrationStatus": "integrated-evidenced",
  "mode": "cryptographic-commitment-required",
  "rawGovernancePolicyEnforced": true,
  "releaseRule": "sourceComplete, deploymentAuthorized, deployed, and activated must remain false until integrationStatus is integrated-evidenced and rawGovernancePolicyEnforced is true",
  "requiredIntegrationTests": [
    "unknown target rejected",
    "unknown selector rejected",
    "nonzero value rejected",
    "policy-oversized calldata rejected",
    "noncanonical or trailing calldata rejected",
    "prohibited input route rejected",
    "commitment mismatch rejected",
    "allowlisted canonical call succeeds after threshold and timelock"
  ],
  "requiredProductionBehavior": [
    "MultisigGovernanceV3 or its sole executor exposes the exact policy commitment",
    "propose rejects a target and selector pair absent from the committed allowlist",
    "propose rejects nonzero native value",
    "propose rejects noncanonical ABI calldata, trailing bytes, and violated argument predicates",
    "execute revalidates the proposal against the same commitment",
    "unknown targets and selectors remain default-denied",
    "raw propose cannot bypass the committed verifier"
  ],
  "schemaVersion": "1.0.0",
  "sourceAssessment": {
    "argumentPredicatesCheckedAtExecution": true,
    "argumentPredicatesCheckedAtProposal": true,
    "exactGeneratedPolicyDigestConsumed": true,
    "exactGeneratedPolicyDigestExposed": true,
    "globalCalldataLimitCheckedAtProposal": true,
    "governanceSourceSha256": "993a66ca97ce77b6b240d8ed607e26d9755f86ecdf0361dffd70951d83ac8cfe",
    "governanceTestSha256": "dbdb7100407367e52c75a4839b5dd558a920e52364dd3265cca0f57c075876d8",
    "perRuleCalldataLimitCheckedAtExecution": true,
    "perRuleCalldataLimitCheckedAtProposal": true,
    "policySnapshotCheckedAtConfirmationAndExecution": true,
    "proposalLifetimeCheckedAtExecution": true,
    "rollingRuntimePolicyCommitmentExposed": true,
    "targetSelectorCheckedAtExecution": true,
    "targetSelectorCheckedAtProposal": true,
    "valueCheckedAtExecution": true,
    "valueCheckedAtProposal": true
  }
}
