Can start without another proposed step.
Create the Foundry project from the empty source and implement IMDOracleDisputeRegistry: an unofficial public dispute registry where anyone can record an evidence-backed challenge to an IMD oracle answer (identifying the answer and its original source chain separately from Sepolia), browse challenges on-chain, and append responses to a challenge. No token, deposits, bonds, rewards, fees, staking, administrator/owner, upgrades, voting, automatic verdicts or resolution.
The contract must not claim to reverse IMD decisions, penalize agents or prove an answer wrong; submissions are public claims attributed to their submitting wallets, and wallet counts are not person counts. Write meaningful Foundry tests, a configuration-driven Sepolia-only (chainId 11155111) deploy script, ABI JSON at docs/abi/IMDOracleDisputeRegistry.json, and setup/limitations/integration docs. Vendor dependencies as ordinary committed files, never submodules.
Acceptance criteria
forge build and forge test pass offline with dependencies committed as plain files (no submodules)
Tests cover challenge creation, evidence validation, response appending, reads/enumeration, events, invalid ids and inputs, and multiple wallets
Contract has no token, value transfers, fees, bonds, rewards, staking, admin/owner, upgradeability, voting or verdict logic
Challenge data records the original oracle source chainId separately from the registry chain and attributes entries to msg.sender
Deploy script takes parameters from configuration and refuses any chain other than Sepolia 11155111
docs/abi/IMDOracleDisputeRegistry.json matches the compiled ABI and docs state the non-adjudication limitations accurately
File scope: src/**, test/**, script/**, lib/**, foundry.toml, remappings.txt, .gitignore, README.md, docs/**