# Ground-truth known-bug mapping

- Target: `origin-dollar`
- Evidence-pinned commit: `299ec6b6bf5401b43efc3e9f7ee5cab3e76167c4`
- Resolution: matched run repository and commit
- Catalog: `benchmarks/known_bugs.json`

Known bugs are limited to handlers explicitly annotated with hasKnownIssue in the pinned target. Each handler remains a separate catalog entry because the target does not provide evidence that any pair is the same root cause.

Canaries are reported separately as harness-health checks and are never included in the known-bug hit-rate denominator.

## Per-fuzzer results

| Fuzzer | Replicates | Known-bug replicate hits | Catalog coverage | Canary replicate hits | Unmapped event findings |
| --- | ---: | ---: | ---: | ---: | ---: |
| echidna | 2 | 11/24 (45.8%) | 6/12 (50.0%) | 4/4 (100.0%) | 15 |
| foundry | 2 | 12/24 (50.0%) | 6/12 (50.0%) | 4/4 (100.0%) | 12 |
| medusa | 2 | 12/24 (50.0%) | 6/12 (50.0%) | 4/4 (100.0%) | 14 |
| recon-fuzzer | 2 | 12/24 (50.0%) | 6/12 (50.0%) | 4/4 (100.0%) | 12 |

## Known-bug catalog

| Ground-truth ID | Kind | Title | Evidence |
| --- | --- | --- | --- |
| `origin-dollar/change-supply-mismatch` | documented-known-issue | changeSupply does not exactly reach the requested total supply | [source](https://github.com/scfuzzbench/origin-dollar-scfuzzbench/blob/299ec6b6bf5401b43efc3e9f7ee5cab3e76167c4/contracts/contracts/echidna/EchidnaTestSupply.sol#L18-L38) |
| `origin-dollar/total-supply-below-balances` | documented-known-issue | Total supply can fall below the sum of account balances | [source](https://github.com/scfuzzbench/origin-dollar-scfuzzbench/blob/299ec6b6bf5401b43efc3e9f7ee5cab3e76167c4/contracts/contracts/echidna/EchidnaTestSupply.sol#L40-L66) |
| `origin-dollar/non-rebasing-supply-above-total` | documented-known-issue | Non-rebasing supply can exceed total supply | [source](https://github.com/scfuzzbench/origin-dollar-scfuzzbench/blob/299ec6b6bf5401b43efc3e9f7ee5cab3e76167c4/contracts/contracts/echidna/EchidnaTestSupply.sol#L68-L83) |
| `origin-dollar/rebasing-credits-per-token-increase` | documented-known-issue | Rebasing credits per token can increase | [source](https://github.com/scfuzzbench/origin-dollar-scfuzzbench/blob/299ec6b6bf5401b43efc3e9f7ee5cab3e76167c4/contracts/contracts/echidna/EchidnaTestSupply.sol#L85-L108) |
| `origin-dollar/non-rebasing-supply-below-balances` | documented-known-issue | Non-rebasing supply can fall below non-rebasing balances | [source](https://github.com/scfuzzbench/origin-dollar-scfuzzbench/blob/299ec6b6bf5401b43efc3e9f7ee5cab3e76167c4/contracts/contracts/echidna/EchidnaTestSupply.sol#L115-L143) |
| `origin-dollar/mint-balance-shortfall` | documented-known-issue | Minting can increase an account balance by less than the minted amount | [source](https://github.com/scfuzzbench/origin-dollar-scfuzzbench/blob/299ec6b6bf5401b43efc3e9f7ee5cab3e76167c4/contracts/contracts/echidna/EchidnaTestMintBurn.sol#L40-L68) |
| `origin-dollar/burn-balance-shortfall` | documented-known-issue | Burning can decrease an account balance by less than the burned amount | [source](https://github.com/scfuzzbench/origin-dollar-scfuzzbench/blob/299ec6b6bf5401b43efc3e9f7ee5cab3e76167c4/contracts/contracts/echidna/EchidnaTestMintBurn.sol#L70-L98) |
| `origin-dollar/burn-all-leaves-balance` | documented-known-issue | Burning an account's full balance can leave a nonzero balance | [source](https://github.com/scfuzzbench/origin-dollar-scfuzzbench/blob/299ec6b6bf5401b43efc3e9f7ee5cab3e76167c4/contracts/contracts/echidna/EchidnaTestMintBurn.sol#L123-L132) |
| `origin-dollar/burn-all-reverts` | documented-known-issue | Burning an account's full balance can revert | [source](https://github.com/scfuzzbench/origin-dollar-scfuzzbench/blob/299ec6b6bf5401b43efc3e9f7ee5cab3e76167c4/contracts/contracts/echidna/EchidnaTestMintBurn.sol#L134-L151) |
| `origin-dollar/transfer-recipient-shortfall` | documented-known-issue | A transfer recipient can receive less than the transferred amount | [source](https://github.com/scfuzzbench/origin-dollar-scfuzzbench/blob/299ec6b6bf5401b43efc3e9f7ee5cab3e76167c4/contracts/contracts/echidna/EchidnaTestTransfer.sol#L12-L49) |
| `origin-dollar/transfer-sender-shortfall` | documented-known-issue | A transfer sender's balance can decrease by less than the transferred amount | [source](https://github.com/scfuzzbench/origin-dollar-scfuzzbench/blob/299ec6b6bf5401b43efc3e9f7ee5cab3e76167c4/contracts/contracts/echidna/EchidnaTestTransfer.sol#L77-L114) |
| `origin-dollar/transfer-within-balance-reverts` | documented-known-issue | A transfer within the sender's balance can revert | [source](https://github.com/scfuzzbench/origin-dollar-scfuzzbench/blob/299ec6b6bf5401b43efc3e9f7ee5cab3e76167c4/contracts/contracts/echidna/EchidnaTestTransfer.sol#L218-L252) |

## Unmapped event identities

| Fuzzer | Event identity | Replicates observed |
| --- | --- | ---: |
| echidna | `AssertionFailed` | 2 |
| echidna | `testMintBalanceRounding` | 2 |
| echidna | `testOptInBalance` | 2 |
| echidna | `testOptInBalanceRounding` | 2 |
| echidna | `testTransferBalanceReceivedLessRounding` | 2 |
| echidna | `testTransferBalanceReceivedMore` | 2 |
| echidna | `testTransferFromShouldNotRevert` | 1 |
| echidna | `testTransferSelf` | 2 |
| foundry | `testMintBalanceRounding` | 2 |
| foundry | `testOptInBalance` | 2 |
| foundry | `testOptInBalanceRounding` | 2 |
| foundry | `testTransferBalanceReceivedLessRounding` | 2 |
| foundry | `testTransferBalanceReceivedMore` | 2 |
| foundry | `testTransferSelf` | 2 |
| medusa | `testMintBalanceRounding` | 2 |
| medusa | `testOptInBalance` | 2 |
| medusa | `testOptInBalanceRounding` | 2 |
| medusa | `testTransferBalanceReceivedLessRounding` | 2 |
| medusa | `testTransferBalanceReceivedMore` | 2 |
| medusa | `testTransferFromShouldNotRevert` | 2 |
| medusa | `testTransferSelf` | 2 |
| recon-fuzzer | `testMintBalanceRounding` | 2 |
| recon-fuzzer | `testOptInBalance` | 2 |
| recon-fuzzer | `testOptInBalanceRounding` | 2 |
| recon-fuzzer | `testTransferBalanceReceivedLessRounding` | 2 |
| recon-fuzzer | `testTransferBalanceReceivedMore` | 2 |
| recon-fuzzer | `testTransferSelf` | 2 |

## Counting semantics

- A canonical known-bug ID counts at most once per replicate, even when several event aliases or counterexamples reach it.
- A replicate is identified by `(run_id, instance_id, fuzzer)`.
- Known-bug hit rate is `canonical bug/replicate hits ÷ (cataloged bugs × replicates)`.
- Unmapped rows are distinct normalized event identities per replicate. They are triage candidates, not claimed bugs.
- Crash inputs and corpus files are not used as bug identities.
