{"assessments":[],"deployments":[],"fuzz":[],"identity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"interpretation":"Records acceptance and evidence. Neither completion nor an AI assessment establishes correctness, safety, or independent review.","jobId":"10a1f886-93ff-4ee6-bbe9-24faba0aad75","kind":"audit","nodes":[{"acceptedSubmissionHash":null,"dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_economics","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"working"},{"acceptedSubmissionHash":null,"dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_flow","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"working"},{"acceptedSubmissionHash":null,"dependsOn":["audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"3014f1ea5961918ca059453a484bf4c8bcbbfc2248dbe31d94ac7c5cdf8f50bd","skillId":"audit-judge","tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"3014f1ea5961918ca059453a484bf4c8bcbbfc2248dbe31d94ac7c5cdf8f50bd","skillId":"audit-judge","state":"waiting"},{"acceptedSubmissionHash":null,"dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_math","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"working"},{"acceptedSubmissionHash":null,"dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_permissions","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"failed"}],"objective":"Audit governance and the Treasury: src/Parameters.sol, src/Governed.sol, src/Treasury.sol and src/TreasuryFactory.sol, plus the vault functions that call them, at the pinned commit, for a mainnet launch. Read whatever else in src/ these contracts depend on, but report on this scope.\n\nimdUSD is a dollar-denominated CDP stablecoin borrowed against sIMD (IdentityMD's staked IMD, an ERC-4626 share with 24 decimals, about 7.95 IMD each). Prices come from swarm-attested oracle feeds bound to pinned questions, times Chainlink ETH/USD. Everything about the deployment is in src/DeploymentConfig.sol and docs/MAINNET-RUNBOOK.md: ParameterizedVault is the deployed vault; it creates ImdUSD, Parameters, its Treasury (through TreasuryFactory), UsdPriceFeed and SharePriceFeed in its constructor. One cold governor key (APPROVED_OPERATOR) proposes parameter changes behind a 48-hour timelock. Collateral pricing is per 1e18 raw units throughout. IMD's only market is a full-range Uniswap v4 pool, about $2.3M a side with a 1% fee; docs/PARAMETERS-2026-10-05.md has the numbers every economic parameter was chosen from.\n\nAnswer each numbered question, including the ones where nothing is wrong:\n1. Timelock: can any change (economics, reserve listing, wage, gap, earnMat, oracleBudget, redemptionDivisor, and the stream's payee and daily cap) apply sooner than 48 hours, outside its bounds, or be applied by anyone other than the documented route? Can a pending proposal be held hostage or applied at a chosen later moment to harm borrowers?\n2. Treasury exits: withdraw (refuses the collateral and every listed reserve asset, and keeps imdUSD at or above totalBadDebt), withdrawNative, payStream (governed payee, capped per UTC day, never below totalBadDebt), fundOracle, redeemIMD, and cover burning Treasury imdUSD. Enumerate every way value leaves the Treasury and show each is bounded as documented. Can the stream exceed its cap through rounding, day boundaries or a rate change?\n3. Accounting: sync, lastSynced and totalReceived across ERC-20 and native ETH, including tokens that arrive between calls and the share-unwrapping path in fundOracle. Can revenue be double-counted or lost from the record?\n4. Reserve valuation: reserveValueUsd and reserveValueOf across listed assets with different decimals and feeds, including the vault's own 24-decimal collateral valued per 1e18 raw units. Can a listed feed or token make the sum revert, inflate, or misvalue?\n5. TreasuryFactory: can anyone obtain a Treasury that a vault trusts, or a vault whose Treasury another caller controls?\n6. Launch fee hand-off: can it redirect anything other than future fees, or be called by anyone but the operator?\n7. Bad debt first: can the operator or the stream ever take imdUSD that outstanding bad debt needs, for example by ordering withdraw, payStream and cover within one transaction or across a day boundary?\n\nNot findings: addresses in DeploymentConfig that are placeholders until deployment (INTAKE, ORACLE_ASKER, TREASURY_FACTORY, WORK_ORACLE_FACTORY); the mocks (MockIMD, MockWorkOracle, LaunchToken); script/checks/ (a separate, partly stale tree); web/ and points/; anything docs/COMPUTE-BACKING-DESIGN.md describes as future work; and findings of the earlier audits in docs/AUDIT-*.md and docs/INTERNAL-AUDIT-2026-10-04.md, unless the fix regressed. A constant set to a deliberate economic value is not a finding; an arithmetic or ordering error in how it is used is.\n\nFor every finding: severity; file and function; the call sequence from an external caller; a concrete failing input or state with expected against actual; whether it is reachable with the constants as committed; and the smallest fix. Also report every place a comment or NatSpec claims a property the code does not have, and say which contracts you read in full and which you could not reach.","parentJobId":null,"planHash":"f8502ebe0bd84872f098c3ca41225a5b99a5cbe00fb9e423dcd8b69b5547ac13","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"10a1f886-93ff-4ee6-bbe9-24faba0aad75","publication":{"commit":null,"deliveredAt":null,"repoUrl":null},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[],"site":null,"snapshotHash":"a1a878a55d93860d17ed7b93770d5af28c3494a1dc5846609ccf80f926d100bd","state":"blocked","submissions":[{"artifacts":[],"attempt":2,"bundleHash":null,"device":"aa417d85641c229d","findings":[],"hash":"2e99ee81c1b8dc562ba5b2a90a78733a56e25eb532c870ed1b92dda1b35987dc","nodeId":"1ff27b28-0233-4855-a40a-85909423db8f","outcome":"failed","summary":"This content was flagged for possible cybersecurity risk. If this seems wrong, try rephrasing your request. If you’re doing authorized security work that requires more cyber permissive safeguards, apply for Daybreak access via https://platform.openai.com/settings/organization/status-and-access before retrying.","treeHash":null,"usage":{"cachedInputTokens":0,"inputTokens":0,"model":"gpt-6-astra","outputTokens":0,"runtime":"codex","turns":5,"wallClockMs":493441}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"9c6767b941fcfedc","findings":[],"hash":"be9bc257f158eb3a89dadd035d3696c5afb5af038de8d2af2f3cf40b5a23b8d2","nodeId":"1ff27b28-0233-4855-a40a-85909423db8f","outcome":"failed","summary":"runtime reported <synthetic>, not the required premium model claude-fable-5-1","treeHash":null,"usage":{"cachedInputTokens":0,"inputTokens":0,"model":"<synthetic>","outputTokens":0,"runtime":"claude","turns":1,"wallClockMs":2802}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"99b216f8773f1f55","findings":[],"hash":"e67b9f06fc0d60d5b2ae567e25c3051f8a18f67b7a2b8607b0d9372e83536e93","nodeId":"9df83535-cecc-4405-b80f-7c39fd47db33","outcome":"failed","summary":"{\"type\":\"error\",\"status\":400,\"error\":{\"type\":\"invalid_request_error\",\"message\":\"The 'gpt-6-astra' model is not supported when using Codex with a ChatGPT account.\"}}","treeHash":null,"usage":{"cachedInputTokens":0,"inputTokens":0,"model":null,"outputTokens":0,"runtime":"codex","turns":0,"wallClockMs":5709}},{"artifacts":[],"attempt":3,"bundleHash":null,"device":"fd5402086dce252e","findings":[],"hash":"fd7a6990e269488fc258b66ae7bcbf0650407bd3f427540d5f93b4d744d92d13","nodeId":"1ff27b28-0233-4855-a40a-85909423db8f","outcome":"failed","summary":"runtime reported <synthetic>, not the required premium model claude-fable-5-1","treeHash":null,"usage":{"cachedInputTokens":0,"inputTokens":0,"model":"<synthetic>","outputTokens":0,"runtime":"claude","turns":1,"wallClockMs":2991}}],"verification":[]}