# Base V3 Accountability typed enforcement v1

## Product boundary

- `PartnershipBondV3Safe` remains bilateral. Only both participants' exact
  EIP-712 settlement authorization can distribute its principal.
- `AccountabilityBondV3Safe` supports one narrowly typed enforcement path and
  exposes no bilateral settlement entry point. No other bond receives this
  path.
- No behavioral scoring, reputation, loyalty, flourishing, quality, belief,
  biometric, profiling, or surveillance-derived input may affect custody,
  eligibility, pricing, slashing, access, settlement, or a dispute.

## Closed rule and signed terms

Both participants sign `Terms`, including:

- `objectiveRuleClass = 1`;
- `objectiveRuleSchemaVersion = 1`; and
- `objectiveBreachRulesHash = hashEnforcementConfig(config)`.

The only accepted config is
`Vaultfire.AccountabilityRule.MissedCanonicalDeadline.v1`. It binds a canonical
source address and source identifier, one obligation identifier, `requiredBy`,
response/challenge/decision windows, an exact maximum slash, the fixed evidence
and privacy-exclusion schema hashes, sorted independent attester/adjudicator set
hashes, and thresholds of at least two. Each set has at most eight members.
Participants, owner, canonical source, legacy consensus/dispute addresses, and
pilot controller cannot be signers; the two sets cannot overlap.

The deterministic predicate is:

```text
breach = (recordedAt == 0) OR (recordedAt > requiredBy)
slash  = breach ? maximumSlash : 0
refund = fundedAmount - slash
```

No signer supplies a score, severity, payout, or alternate rule.

## Exact EIP-712 payloads

Attesters sign exactly:

```text
ObjectiveEvidence(
  address bond,
  uint256 chainId,
  uint256 bondId,
  bytes32 termsHash,
  bytes32 ruleHash,
  address canonicalSource,
  bytes32 canonicalSourceId,
  bytes32 obligationId,
  uint64 requiredBy,
  uint64 recordedAt,
  uint64 observedAt,
  uint96 nonce,
  uint64 signatureDeadline
)
```

Adjudicators sign exactly:

```text
TypedResolution(
  address bond,
  uint256 chainId,
  uint256 bondId,
  bytes32 termsHash,
  bytes32 ruleHash,
  bytes32 evidenceHash,
  bytes32 challengeHash,
  bool evidenceValid,
  uint96 nonce,
  uint64 deadline
)
```

Domain separation binds protocol version, chain, and verifying contract.
Evidence and resolution nonces are consumed per bond. Sorted signer input
prevents duplicate counting. Every payload binds the frozen terms/rule and
exact evidence/challenge.

## Deadlines and deterministic terminal paths

1. A threshold evidence request may be filed only after `requiredBy` and early
   enough for all signed windows to finish before `activePeriodEnd`.
2. The company may respond before `responseDeadline`.
3. A timely response may be challenged before `challengeDeadline`; the
   challenge hash is contract-computed and accepts no opaque reason/evidence.
4. Without response, the pre-agreed slash finalizes at `responseDeadline`.
5. With response but no challenge, it finalizes at `challengeDeadline`.
6. A challenge requires the exact adjudicator-threshold resolution before
   `decisionDeadline`. Valid evidence applies exactly `maximumSlash`; invalid
   evidence refunds all principal.
7. If no threshold decision arrives by `decisionDeadline`, anyone can trigger a
   full company refund, including while paused.

Credits use the existing pull-payment path. Native liability remains occupied
until withdrawal. No owner, controller, attester, adjudicator, or caller can
redirect the deterministic recipients.

## Release status

All deployment/write gates remain blocked. This specification does not
authorize signing, deployment, RPC use, broadcast, partner activation, or value
transfer. Unless a signed independent human audit names the exact source commit,
the only permitted review description is **exact-commit AI-assisted adversarial
review**. Do not call this package mainnet-ready.
