{"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":"0b8ab633-6dd6-43ea-bf84-5edf3731bb25","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":null,"dependsOn":["build_contract_project"],"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":["build_contract_project"],"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":["build_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","state":"waiting"},{"acceptedSubmissionHash":null,"dependsOn":["build_contract_project"],"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":["build_contract_project"],"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":"working"},{"acceptedSubmissionHash":"5997c12992c7cb7c01eeeba896bb37c84daeee5d1ee62343d876f5d3e71d86bd","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"816fe39c7efd64504a19175b0f4dd9186d61069f37a22684c90358a18c60bddc","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"816fe39c7efd64504a19175b0f4dd9186d61069f37a22684c90358a18c60bddc","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":null,"dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"failed"},{"acceptedSubmissionHash":null,"dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"ab3f8f2aa4e7f3b3ada558c0dcf522ba733ca3df3b1da92c707a0fe305816d5f","skillId":"write-foundry-tests","tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"ab3f8f2aa4e7f3b3ada558c0dcf522ba733ca3df3b1da92c707a0fe305816d5f","skillId":"write-foundry-tests","state":"working"}],"objective":"Build and deploy on Ethereum mainnet the payer contract of the IMD burn tracker, a static dashboard the swarm hosts: a Foundry project with BurnTracker and BurnTrackerTest, which inherits BurnTracker and adds nothing, because this first deployment is a test. Deploy BurnTrackerTest with these constructor arguments: intake 0xa43e6f75ee006411f79ac1c84120606c2330de82, asset 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7, openAction \"job.open@job-1\" and continueAction \"job.continue@job-1\" as bytes32 strings, bodyPrefix and bodySuffix = the UTF-8 bytes of the continuation template before and after its {{PARENT}} placeholder, cooldown 86400, staleAfter 172800; the owner role goes to this launch's payer (the body names no owner). No token, no pool, no other contracts.\n\nWHAT IT DOES. Its owner calls open(bytes body) once: the contract orders job.open@job-1 through IMD Intake v2 (0xa43e6f75ee006411f79ac1c84120606c2330de82) with that body, paying the Intake's live price in IMD (0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7) taken from the owner. That makes the contract the hosted site's payer; the plane accepts job.continue only from the address that paid the project, so only this contract can order later versions. After every completed version anyone may call updateBurntracker(bytes resultJson, uint256 maxPrice) with the result document (result.json) of the last completed job as its proof: the contract accepts the proof only if its keccak256 equals the result hash the Intake handed to onResult for that completion, reads the parent job id from it, and orders job.continue@job-1 with its stored body template around that id, paid by the caller at the live price, never above maxPrice (a higher price reverts before any token moves). Callers supply only this proof and cannot change what the swarm is asked to do.\n\nINTERFACE (exact; existing tools call it): open(bytes) returns (bytes32 requestId); updateBurntracker(bytes,uint256) returns (bytes32); recover(string parentJobId) returns (bytes32); setResultHash(bytes32); onResult(bytes32 requestId, bytes32 resultHash, string uri); onFailure(bytes32 requestId, uint8 status, bytes32 reason, uint16, uint16, bytes); parentJobIdOf(bytes) pure returns (bytes); views price() and nextUpdateAt(); status() returns (uint8 state, uint8 pendingKind, uint40 lastDone, uint40 orderedAt, uint40 staleAt, uint32 cooldown, uint32 staleAfter); public owner, intake, asset, openAction, continueAction, bodyPrefix, bodySuffix, resultHash, lastRequestId; owner-only setBody(bytes,bytes), setActions(bytes32,bytes32), setIntake(address,address), setTiming(uint32,uint32), withdraw(address token, address to, uint256 amount), two-step transferOwnership and acceptOwnership; events Ordered(bytes32 indexed requestId, uint8 kind, address indexed payer, uint256 amount, string parentJobId), Updated(bytes32 indexed requestId, bytes32 resultHash, string uri), Failed(bytes32 indexed requestId, uint8 status, bytes32 reason, uint8 newState). States UNOPENED 1, IDLE 2, PENDING 3, STUCK 4; kinds open 1, continue 2, recover 3.\n\nRULES. One order at a time. updateBurntracker needs IDLE and the cooldown passed since the last completion. Callbacks count only from the Intake, only for the order awaited, only once. onResult stores the hash, returns to IDLE and restarts the cooldown. onFailure status 1 (refused): a refused update returns to IDLE and restarts the cooldown, a refused open returns to UNOPENED, a refused recover goes to STUCK; status 2 (failed) goes to STUCK. open() is allowed again after the hosting job failed (STUCK) or stayed pending past its stale time. Blocked jobs never call back, so once an order has been pending past staleAfter (fixed when it is placed), or in IDLE or STUCK, the owner may recover(jobId), a continuation of the job it names paid by the owner, or setResultHash(hash) to adopt a completion whose callback was lost. A callback for an order no longer awaited is refused. cooldown 1 hour to 30 days, staleAfter 1 hour to 30 days.\n\nMEASURED FACTS (do not adapt them away): the Intake calls back with exactly 200,000 gas, and since Glamsterdam a storage slot written from zero costs about 111,000 of it, so every slot a callback writes must already be nonzero from the constructor on. result.json is canonical key-sorted JSON whose keccak256 is the hash onResult receives, 750 to 4,545 bytes, with the key \"jobId\" exactly once and a lowercase UUID as its value; the contract rejects a document without exactly one such key or with a malformed id. The launch's empty-chain check deploys only this contract, so the constructor must not require code at the Intake or the token.\n\nDECIDE, DO NOT ASK: a question blocks the job and costs the payer; where this text is silent, choose and report it.","parentJobId":null,"planHash":"efb9c209b2a473e5c053ff1fd591a937a5d6774a1a4ea1f3f37a128a2513e141","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"0b8ab633-6dd6-43ea-bf84-5edf3731bb25","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-2528-build-deploy-ethereum-mainnet"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51174","feedbackHash":"065005fdaf1a350c4dd0fe56100835cc185052c588afd24b73bd334d53266ec4","nodeKey":"build_contract_project","submissionHash":"5997c12992c7cb7c01eeeba896bb37c84daeee5d1ee62343d876f5d3e71d86bd","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"153344ee3af7709dddca7ded0151345e65e3d51294fe25711bd25b8ec3c84e0a","state":"blocked","submissions":[{"artifacts":[],"attempt":2,"bundleHash":null,"device":"4fa6ac0d62fd2e01","findings":[],"hash":"2de546cc1c4ab7d2f382f7e3b3c1f0af441e950ab66670ed5ddf925d17a51f9a","nodeId":"5029b9a9-f962-4b6f-a1b7-2425a420652f","outcome":"failed","summary":"needs input: The accepted source still has the previous attempt's incompatible constructor. The compiled BurnTrackerTest ABI requires dynamic bytes bodyPrefix_ and bodySuffix_; the required template parts are 16 and 721 bytes. The permitted evm_contracts manifest supports only static ABI words, so no launch.json can both match that ABI and supply the approved template. Empty parts also revert with InvalidBody, and initialization calls are forbidden. Only launch.json may be changed, so this assignment cannot repair the accepted constructor. Required resolution: accept a source revision whose constructor takes only static arguments and initializes the exact continuation template internally. forge build succeeded and all 53 tests passed with the specified fuzz seed. — Can this task be reissued with accepted source whose BurnTrackerTest constructor takes only static arguments and initializes the exact approved continuation template internally?","treeHash":null,"usage":{"cachedInputTokens":169728,"inputTokens":41890,"model":"gpt-6.1-sol","outputTokens":2402,"runtime":"codex","turns":3,"wallClockMs":58294}},{"artifacts":[],"attempt":1,"bundleHash":"0ffda0e92d32fb9f8e5503e7ae6da9e8505fbaf8f7288e042f3f920ead7a8cb2","device":"e89087c02a1681bf","findings":[],"hash":"5997c12992c7cb7c01eeeba896bb37c84daeee5d1ee62343d876f5d3e71d86bd","nodeId":"ec2f7d73-7fa8-4ca0-b61e-6edf72cf32fa","outcome":"completed","summary":"Implemented BurnTracker and BurnTrackerTest with tests, real result fixtures, and deployment documentation.\n\n- Build, formatting, and all 53 tests pass.\n- Mainnet fork tests pass.\n- The 4,545-byte update uses 266,914 execution gas.\n- Callback storage/gas checks and runtime equality pass.\n\n[README](README.md) documents launch parameters and operations. Mainnet deployment remains with IMD’s launch process; no transaction was broadcast.","treeHash":"dc20011b9383ca426d7f3941e4d725fd56a49b30","usage":{"cachedInputTokens":10876544,"inputTokens":251376,"model":"gpt-6-astra","outputTokens":107863,"runtime":"codex","turns":10,"wallClockMs":3043521}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"13603a08ada71730","findings":[],"hash":"d47fe08d2ac6c60a859cf065de4e8e39d1396c3b33332700a9879a5597fef984","nodeId":"5029b9a9-f962-4b6f-a1b7-2425a420652f","outcome":"failed","summary":"needs input: The accepted BurnTracker/BurnTrackerTest constructor takes bodyPrefix_ and bodySuffix_ as dynamic `bytes` arguments (the suffix is 721 bytes of the continuation template). An evm_contracts manifest accepts only one static ABI word (at most 96 characters) per constructor argument, so no valid launch.json can deploy the accepted source with the brief's body template; fixing this needs a source change (e.g. BurnTrackerTest compiling the template in as constants, or a static-only constructor followed by the owner calling setBody after launch), which a manifest-only task cannot make. — May the accepted source be reworked so the constructor takes only static arguments (recommended: BurnTrackerTest supplies the continuation-template prefix/suffix as compiled-in constants), or should the launch deploy with an empty body template that the owner sets via setBody(prefix, suffix) after deployment?","treeHash":null,"usage":{"cachedInputTokens":442490,"inputTokens":26,"model":"claude-opus-5-5","outputTokens":6535,"runtime":"claude","turns":14,"wallClockMs":142557}}],"verification":[{"checks":[{"durationMs":33215,"exitCode":0,"name":"build","output":"Compiling 40 files with Solc 0.8.26\nSolc 0.8.26 finished in 32.99s\nCompiler run successful!\n","passed":true},{"durationMs":383,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 1 test for test/MainnetReplay.t.sol:MainnetReplayTest\n[PASS] test_realIntakeAndTokenOfflineReplayAnd4545ByteUpdateGas() (gas: 772405)\nLogs:\n  4545-byte cold update CALL gas, real mainnet code: 266914\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 30.13ms (962.07µs CPU time)\n\nRan 13 tests for test/Administration.t.sol:AdministrationTest\n[PASS] testFuzz_timingValidation(uint32,uint32) (runs: 256, μ: 38033, ~: 37597)\n[PASS] test_constructorRejectsZeroOwner() (gas: 10247)\n[PASS] test_openAndRecoveryUseTheirActionsLivePrice() (gas: 590753)\n[PASS] test_ownerCanWithdrawDonationsWithoutSubsidizingCallers() (gas: 929950)\n[PASS] test_ownerMayChangeAllFutureOrderInputs() (gas: 2519860)\n[PASS] test_ownerOnlyOperationsAndTwoStepOwnership() (gas: 522235)\n[PASS] test_ownershipNominationCanBeReplaced() (gas: 223522)\n[PASS] test_recoverRejectsParentInjectionAndPaysOwnerWithoutCooldown() (gas: 565807)\n[PASS] test_templateFastPathRequiresBothExactPartsAndCanBeRestored() (gas: 2820828)\n[PASS] test_timingBoundsAndInvalidConfiguration() (gas: 642655)\n[PASS] test_tokenAndIntakeFailuresRollBackEntireOrder() (gas: 1354726)\n[PASS] test_tokenReentryAndSynchronousCallbackCannotCorruptPendingState() (gas: 2599844)\n[PASS] test_zeroPriceDoesNotMoveTokens() (gas: 751515)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 67.35ms (28.41ms CPU time)\n\nRan 10 tests for test/ResultJson.t.sol:ResultJsonTest\n[PASS] testFuzz_authenticatedProofRejectsSingleByteMutation(uint16,uint8) (runs: 256, μ: 544146, ~: 543961)\nLogs:\n  Bound result 0\n  Bound result 25\n\n[PASS] testFuzz_plainAndEscapedStringCannotForgeJobId(uint16,bool) (runs: 256, μ: 49466, ~: 37025)\nLogs:\n  Bound result 1\n\n[PASS] testFuzz_uuidBytes(uint128) (runs: 256, μ: 39932, ~: 39932)\n[PASS] test_authenticatedButMalformedDocumentCannotOrder() (gas: 378731)\n[PASS] test_calldataOutsideTheDocumentCannotForgeOrDuplicateAKey() (gas: 32556)\n[PASS] test_escapedQuotesCannotForgeKeysOrHideDuplicates() (gas: 101969)\n[PASS] test_missingDuplicateAndMalformedJobIds() (gas: 221564)\n[PASS] test_real750ByteProofAndOldProofRejection() (gas: 1240199)\n[PASS] test_threeRealCanonicalResultDocumentsAndOnchainHashes() (gas: 1300335)\n[PASS] test_whitespaceNestedValuesAndMalformedStrings() (gas: 106148)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 71.64ms (101.94ms CPU time)\n\nRan 21 tests for test/BurnTracker.t.sol:BurnTrackerBehaviorTest\n[PASS] test_callbacksAuthenticateSenderRequestAndSingleSettlement() (gas: 606981)\n[PASS] test_constructorOnEmptyChainUsesExplicitLaunchOwner() (gas: 4081680)\n[PASS] test_failedCallbackIsConsumedAndNeedsOwnerRecovery() (gas: 411849)\n[PASS] test_failedHostingJobCanBeOpenedAgain() (gas: 509411)\n[PASS] test_failedUpdateAndRecoverGoStuck() (gas: 1446268)\n[PASS] test_failureAlsoConsumesBothCallbackPaths() (gas: 368949)\n[PASS] test_initialConfigurationAndRuntimeEquality() (gas: 204363)\n[PASS] test_livePriceAndMaximumCheckedBeforeTokenInteraction() (gas: 987908)\n[PASS] test_oneOrderAtATimeAndOpenCannotReplaceIdleSite() (gas: 632471)\n[PASS] test_openPaysOwnerAndRegistersContractAsPayer() (gas: 359080)\n[PASS] test_pendingCallbackUsesOriginalIntakeAfterOwnerChangesConfiguration() (gas: 1120807)\n[PASS] test_recoverAfterStaleTimeUsesSnapshotDeadlineAndRefusesLateCallback() (gas: 711087)\n[PASS] test_refusedOpenReturnsUnopenedAndCanOpenAgain() (gas: 521578)\n[PASS] test_refusedRecoverStaysStuckAndOwnerCanRetry() (gas: 826463)\n[PASS] test_refusedUpdateRestartsCooldownPreservesProofAndAllowsRetry() (gas: 1419323)\n[PASS] test_setResultHashAdoptsStaleLostCallbackAndAllowsProof() (gas: 766498)\n[PASS] test_setResultHashAllowedIdleAndStuckButNotUnopened() (gas: 489538)\n[PASS] test_staleCallbackStillAcceptedUntilOwnerSupersedesIt() (gas: 317587)\n[PASS] test_stalePendingCanBeOpenedAgain() (gas: 486222)\n[PASS] test_updateExactTemplateProofPaymentAndEvents() (gas: 892671)\n[PASS] test_updateNeedsIdleCooldownAndExactHash() (gas: 1055871)\nSuite result: ok. 21 passed; 0 failed; 0 skipped; finished in 77.52ms (30.54ms CPU time)\n\nWarning: the following cheatcode(s) are deprecated and will be removed in future versions:\n  lastCallGas(): replaced by `lastFrameGas`\nRan 4 tests for test/GasAndStorage.t.sol:GasAndStorageTest\n[PASS] test_callbackAtTimestampZeroStillHasNoEmptyStorageSlot() (gas: 333616)\nLogs:\n  callback execution gas: 42241\n\n[PASS] test_everyFailureTransitionWithin200kCreatesNoSlot() (gas: 2078791)\nLogs:\n  callback execution gas: 35109\n  callback execution gas: 35070\n  callback execution gas: 35373\n  callback execution gas: 35058\n  callback execution gas: 35137\n  callback execution gas: 35070\n\n[PASS] test_firstResultWithin200kWritesOnlyConstructorSeededNonzeroSlots() (gas: 332858)\nLogs:\n  callback execution gas: 42241\n\n[PASS] test_resultAfterRefusalAndRecoveryNeverRecreatesHashSlot() (gas: 1575425)\nLogs:\n  callback execution gas: 42241\n  callback execution gas: 35373\n  callback execution gas: 39441\n  callback execution gas: 39429\n\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 93.92ms (26.01ms CPU time)\n\nRan 4 tests for test/ParserDifferential.t.sol:ParserDifferentialTest\n[PASS] testFuzz_matchesBytewiseParserWithEscapes(bytes,uint8) (runs: 256, μ: 277022, ~: 276411)\n[PASS] testFuzz_matchesBytewiseParserWithoutEscapes(bytes,uint8) (runs: 256, μ: 131740, ~: 124829)\n[PASS] test_allRealDocumentsAgainstBytewiseParser() (gas: 3512832)\n[PASS] test_keyAndUuidAtEveryWordBoundaryWithEscapedQuoteDecoys() (gas: 10111259)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 93.96ms (147.38ms CPU time)\n\nRan 6 test suites in 99.97ms (434.51ms CPU time): 53 tests passed, 0 failed, 0 skipped (53 total tests)\n","passed":true},{"durationMs":84,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"BurnTracker.acceptOwnership()\",\"BurnTracker.onFailure(bytes32,uint8,bytes32,uint16,uint16,bytes)\",\"BurnTracker.onResult(bytes32,bytes32,string)\",\"BurnTracker.open(bytes)\",\"BurnTracker.recover(string)\",\"BurnTracker.setActions(bytes32,bytes32)\",\"BurnTracker.setBody(bytes,bytes)\",\"BurnTracker.setIntake(address,address)\",\"BurnTracker.setResultHash(bytes32)\",\"BurnTracker.setTiming(uint32,uint32)\",\"BurnTracker.transferOwnership(address)\",\"BurnTracker.updateBurntracker(bytes,uint256)\",\"BurnTracker.withdraw(address,address,uint256)\",\"BurnTrackerTest.acceptOwnership()\",\"BurnTrackerTest.onFailure(bytes32,uint8,bytes32,uint16,uint16,bytes)\",\"BurnTrackerTest.onResult(bytes32,bytes32,string)\",\"BurnTrackerTest.open(bytes)\",\"BurnTrackerTest.recover(string)\",\"BurnTrackerTest.setActions(bytes32,bytes32)\",\"BurnTrackerTest.setBody(bytes,bytes)\",\"BurnTrackerTest.setIntake(address,address)\",\"BurnTrackerTest.setResultHash(bytes32)\",\"BurnTrackerTest.setTiming(uint32,uint32)\",\"BurnTrackerTest.transferOwnership(address)\",\"BurnTrackerTest.updateBurntracker(bytes,uint256)\",\"BurnTrackerTest.withdraw(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":103,\"docs/constructor-arguments.json\":51,\"docs/continuation-template.json\":1,\"docs/template-check.json\":1,\"docs/verification.md\":52,\"foundry.toml\":26,\"remappings.txt\":3,\"script/LaunchParameters.sol\":28,\"src/BurnTracker.sol\":358,\"src/BurnTrackerTest.sol\":23,\"src/interfaces/IIntake.sol\":21,\"src/libraries/ContinuationTemplate.sol\":31,\"src/libraries/ResultJson.sol\":348,\"test/Administration.t.sol\":270,\"test/BurnTracker.t.sol\":380,\"test/BurnTrackerBase.sol\":118,\"test/GasAndStorage.t.sol\":97,\"test/MainnetReplay.t.sol\":114,\"test/ParserDifferential.t.sol\":100,\"test/ResultJson.t.sol\":181,\"test/fixtures/0x08f07d6ff48974669d2d2fd3de5d26df9ecad4c1eaee7c71b69e8ebafeed13ad.json\":1,\"test/fixtures/0x1bcce3a77e07bf483b5ff819280ce7f6d57091b573c27e8c6d821ffd02f1f32a.json\":1,\"test/fixtures/0x86deaeac963014bc3c80f6eb02c9cc9ae38965617c46ffd5cc171f94d52868cb.json\":1,\"test/fixtures/0x99d8dd2d6dd91b32209df9414a73878865d8638cd34258ad9442c10fe549c8f5.json\":1,\"test/fixtures/0xb7d61120819d173efef95fd671010c3a2db6a1e46fbc3e80be9103c72303ea2f.json\":1,\"test/fixtures/continuation-template.json\":1,\"test/fixtures/mainnet-state.json\":91,\"test/fixtures/provenance.json\":62,\"test/fork/Mainnet.t.sol\":83,\"test/helpers/ReferenceJson.sol\":165,\"test/mocks/MockIntake.sol\":87,\"test/mocks/MockToken.sol\":60},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":6673,"exitCode":0,"name":"slither","output":"[high/medium] reentrancy-balance at src/BurnTracker.sol:248: Reentrancy in BurnTracker._order(uint8,bytes32,bytes,string,uint256) (src/BurnTracker.sol#248-286):\n[high/medium] reentrancy-balance at src/BurnTracker.sol:248: Reentrancy in BurnTracker._order(uint8,bytes32,bytes,string,uint256) (src/BurnTracker.sol#248-286):\n[high/medium] reentrancy-balance at src/BurnTracker.sol:248: Reentrancy in BurnTracker._order(uint8,bytes32,bytes,string,uint256) (src/BurnTracker.sol#248-286):\n[high/medium] reentrancy-balance at src/BurnTracker.sol:248: Reentrancy in BurnTracker._order(uint8,bytes32,bytes,string,uint256) (src/BurnTracker.sol#248-286):\n[medium/high] incorrect-equality at src/BurnTracker.sol:160: BurnTracker.onFailure(bytes32,uint8,bytes32,uint16,uint16,bytes) (src/BurnTracker.sol#160-178) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/BurnTracker.sol:307: BurnTracker._isStale() (src/BurnTracker.sol#307-309) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/BurnTracker.sol:160: BurnTracker.onFailure(bytes32,uint8,bytes32,uint16,uint16,bytes) (src/BurnTracker.sol#160-178) uses a dangerous strict equality:\n[low/medium] reentrancy-benign at src/BurnTracker.sol:248: Reentrancy in BurnTracker._order(uint8,bytes32,bytes,string,uint256) (src/BurnTracker.sol#248-286):\n[low/medium] timestamp at src/BurnTracker.sol:311: BurnTracker._now40() (src/BurnTracker.sol#311-314) uses timestamp for comparisons\n[low/medium] timestamp at src/BurnTracker.sol:160: BurnTracker.onFailure(bytes32,uint8,bytes32,uint16,uint16,bytes) (src/BurnTracker.sol#160-178) uses timestamp for comparisons\n[low/medium] timestamp at src/BurnTracker.sol:303: BurnTracker._requireRecoverable() (src/BurnTracker.sol#303-305) uses timestamp for comparisons\n[low/medium] timestamp at src/BurnTracker.sol:297: BurnTracker._requireCallback(bytes32) (src/BurnTracker.sol#297-301) uses timestamp for comparisons\n[low/medium] timestamp at src/BurnTracker.sol:124: BurnTracker.open(bytes) (src/BurnTracker.sol#124-128) uses timestamp for comparisons\n[low/medium] timestamp at src/BurnTracker.sol:248: BurnTracker._order(uint8,bytes32,bytes,string,uint256) (src/BurnTracker.sol#248-286) uses timestamp for comparisons\n[low/medium] timestamp at src/BurnTracker.sol:307: BurnTracker._isStale() (src/BurnTracker.sol#307-309) uses timestamp for comparisons\n[low/medium] timestamp at src/BurnTracker.sol:131: BurnTracker.updateBurntracker(bytes,uint256) (src/BurnTracker.sol#131-137) uses timestamp for comparisons","passed":true},{"durationMs":818,"exitCode":0,"name":"aderyn","output":"[high] eth-send-unchecked-address at src/BurnTracker.sol:131: ETH transferred without address checks\n[low] centralization-risk at src/BurnTracker.sol:124: Centralization Risk (9 places)\n[low] internal-function-used-once at src/libraries/ContinuationTemplate.sol:8: Internal Function Used Only Once (2 places)\n[low] literal-instead-of-constant at src/libraries/ResultJson.sol:153: Literal Instead of Constant (4 places)\n[low] non-reentrant-not-first at src/BurnTracker.sol:124: `nonReentrant` is Not the First Modifier (9 places)\n[low] require-revert-in-loop at src/libraries/ResultJson.sol:339: Loop Contains `require`/`revert`\n[low] uninitialized-local-variable at src/libraries/ResultJson.sol:339: Uninitialized Local Variable\n[low] unused-error at src/libraries/ResultJson.sol:9: Unused Error (3 places)","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"5997c12992c7cb7c01eeeba896bb37c84daeee5d1ee62343d876f5d3e71d86bd","verifiedTreeHash":"dc20011b9383ca426d7f3941e4d725fd56a49b30","verifierVersion":"0.1.0+ad64f8c4"}]}