> ## Documentation Index
> Fetch the complete documentation index at: https://docs.filter.fun/llms.txt
> Use this file to discover all available pages before exploring further.

# Settlement security guarantees

> Eight mathematical invariants the settlement contracts hold under any sequence of operations

## settlement-security — structured facts

### Invariants

| ID | Name                  | Statement                                                                                                       |
| -- | --------------------- | --------------------------------------------------------------------------------------------------------------- |
| 1  | conservation          | `sum(rollover, bonus, mechanics, POL, treasury, champion_bounty) == total_collected_from_filtered_LP`           |
| 2  | settlement\_math\_bps | champion=250 BPS off-the-top; remaining splits 4500/2500/1000/1000/1000                                         |
| 3  | pol\_atomicity        | POL deployed exactly once per season; only at finalize; only into winner pool; LP tokens permanently locked     |
| 4  | merkle\_immutable     | `rolloverMerkleRoot[season]` settable exactly once; no republish path                                           |
| 5  | reentrancy            | all state-mutating functions in settlement pipeline are `nonReentrant`; malicious receiver tests revert cleanly |
| 6  | oracle\_auth          | only configured oracle address may submit settlement; no upgrade path replaces oracle without governance        |
| 7  | no\_mid\_season\_pol  | POL held as WETH in SeasonPOLReserve between filter events; deployed only at `finalizeSeason`                   |
| 8  | dust                  | integer-division rounding routed to treasury; never lost, never unaccounted                                     |

### Settlement split (losers pot)

| Allocation      |  BPS | Notes                                             |
| --------------- | ---: | ------------------------------------------------- |
| Champion bounty |  250 | Taken off-the-top before remaining split          |
| Rollover        | 4500 | Of remaining; filtered-token holders via Merkle   |
| Hold bonus      | 2500 | Of remaining; 14-day lock, 80% retention required |
| Mechanics       | 1000 | Of remaining; events/missions wallet              |
| POL             | 1000 | Of remaining; permanent winner LP, no withdraw    |
| Treasury        | 1000 | Of remaining; routed to TreasuryTimelock          |

Sum check: 4500 + 2500 + 1000 + 1000 + 1000 = 10000 BPS of `remaining`.

### Settlement contracts

| Contract           | Per-season?          |
| ------------------ | -------------------- |
| SeasonVault        | yes (one per season) |
| SeasonPOLReserve   | yes                  |
| POLManager         | no (singleton)       |
| POLVault           | no (singleton)       |
| BonusDistributor   | no (singleton)       |
| TournamentVault    | no (singleton)       |
| CreatorCommitments | no (singleton)       |
| TreasuryTimelock   | no (singleton)       |

### Deployed addresses

| Network              | Status                                                                 |
| -------------------- | ---------------------------------------------------------------------- |
| Base Sepolia (84532) | Active testnet deploy; addresses ship in the contracts repo's manifest |
| Base mainnet (8453)  | Not yet deployed; gated on the activation checklist                    |

### Voluntary disclosure

| Field                    | Value                                                           |
| ------------------------ | --------------------------------------------------------------- |
| paid\_bounty             | false                                                           |
| paid\_bounty\_status     | deferred\_until\_post\_mainnet                                  |
| disclosure\_policy       | responsible\_disclosure                                         |
| disclosure\_window\_days | 90                                                              |
| recognition              | hall\_of\_fame\_with\_permission                                |
| contact                  | [security@filter.fun](mailto:security@filter.fun) (placeholder) |
| pgp\_key                 | linked from contact (placeholder)                               |
| review\_window\_days     | 14                                                              |
| review\_window\_status   | open\_pending\_publish\_date                                    |

### In scope / out of scope

| Category                                | Status                       |
| --------------------------------------- | ---------------------------- |
| Settlement pipeline contracts           | in\_scope                    |
| Bag-lock contract                       | in\_scope                    |
| Any contract in the deployment manifest | in\_scope                    |
| Indexer                                 | out\_of\_scope               |
| Web app                                 | out\_of\_scope               |
| V4 PoolManager / WETH9                  | out\_of\_scope (third-party) |
| Social engineering                      | out\_of\_scope               |
| Denial-of-service against RPC           | out\_of\_scope               |

### References

| Resource              | URL                                                                                                |
| --------------------- | -------------------------------------------------------------------------------------------------- |
| Sepolia smoke runbook | [https://docs.filter.fun/operators/sepolia-smoke](https://docs.filter.fun/operators/sepolia-smoke) |
| Threat model          | [https://docs.filter.fun/security/threat-model](https://docs.filter.fun/security/threat-model)     |
| Audit status          | [https://docs.filter.fun/security/audit-status](https://docs.filter.fun/security/audit-status)     |
