{"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":"d25b652e-88d6-4174-8901-da3f8707f6d8","kind":"skill:build-contract-project","nodes":[{"acceptedSubmissionHash":"224d7d46e82ae68b08d35cfd4858ea9fe526b794757739a2c0db648c9e9f516b","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"d59561da3b378461b7c749f6bd5084477d44993aa94972ddea90f542535751df","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"d59561da3b378461b7c749f6bd5084477d44993aa94972ddea90f542535751df","skillId":"build-contract-project","state":"accepted"}],"objective":"Continue the equipment-rental project from job 5106c2bf-c11f-481a-a057-4910346e57ad and delivered commit 341506ea66d54952192e495cac1fd8dd03a8dd81 in https://github.com/identity-md-launches/launch-1988-kkk.\n\nThis is a code-only integration experiment: determine whether your assigned job can add a locally runnable, read-only event-indexing backend to this existing Foundry project, and implement and test it if it can. We do not need permanent hosting. Do not depend on or request the build-ponder-indexer skill; it has been reported non-working.\n\nFirst inspect the repository and your actual assignment permissions and tools. Do not bypass task restrictions, change IMD configuration, or open another paid job. If this assignment cannot write the required files or run the required tools, report the exact restriction and what you actually attempted, in the result and in docs/BACKEND-TRIAL.txt if permitted. Distinguish a limitation of this worker/job from a platform-wide limitation. Do not generate an untested skeleton and claim completion. Otherwise proceed to implementation in this same job without waiting for another discussion.\n\nSafety and scope\n- Use only this public rental repository and synthetic rental test data. Do not request or access private repositories, unrelated local files, user accounts, credentials, API keys, seed phrases, or funded wallets. No real customer data.\n- Deliver source through the project's normal GitHub delivery only. No public contract deployment, public server, tunnel, cloud account, paid service, or Railway deployment. Do not create a new token or change the existing rental contracts, Foundry tests, dependencies, configuration, or remappings. Local deployment of the existing mock token and rental contracts to a disposable Anvil instance is permitted.\n- The backend must only read the chain: no wallet keys, signing, transactions, automated expiry actions or payments. Only the local test harness may transact, using public Anvil development keys. Bind local services to loopback. Transaction scripts must refuse non-local RPC hosts and unexpected chain IDs; use 31337 by default. Stop only processes started by the test harness and keep generated data in its own directories.\n\nImplementation\n- Add a self-contained TypeScript/Ponder project under indexer/, with pinned dependencies and lockfile, documented runtime versions, a reproducible ABI check/generation step, tests and .env.example containing placeholders or local test values only. Root README/.gitignore and rental integration documentation may be extended. Do not change CI workflows or automatically run deployment steps.\n- Use a persistent local PGlite directory; no database account, Docker or API key should be necessary. Clearly label this local development. Production Ponder requires PostgreSQL and separate hosting; neither is validated by this trial.\n- Configure the local RPC URL, chain ID, contract address, deployment block, database directory and API port. Start an isolated Anvil instance, deploy/seed the existing contracts, run the indexer and perform cleanup through documented scripts. Follow the installed Ponder version's official documentation, including disabling inappropriate RPC caching for Anvil resets. Reject inconsistent chain/contract configuration rather than mixing different deployments in one database.\n\nRequired behavior\n1. Index items, immutable policy versions, reservations and their original accepted terms, checkout/return/cancellation/expiry, staff/admin changes, renter refund credits and payments, completed fee-withdrawal request IDs, and aggregate escrow/refund/fee obligations. Follow the current ABI and docs/INTEGRATION.md. FeesWithdrawn now includes a bytes32 request ID. ItemCheckedOut makes the item Rented while retaining its active reservation.\n2. Preserve an inspectable event history with chain/contract, block number/hash, transaction hash and log position. Process canonical event order. Do not double-count a settlement's domain event and its RefundCredited event. Subtract actual withdrawal event amounts; later policy changes must not rewrite old booking terms. Use exact integer amounts and lossless API serialization.\n3. Provide documented queries for available equipment, a reservation, a renter's history/refund credit and a fee request ID. Expose sync status including indexed block/hash, observed head, lag and connection errors. Explain provisional versus finalized results; stale data must not be presented as confirmed current data.\n4. Supply a reconciliation command comparing indexed state to contract reads at the SAME block. Check item/reservation state, refund credits and accounting totals. Liabilities may be less than token balance because donations are possible. A mismatch must fail visibly and exit nonzero, not overwrite data with latest-chain values.\n\nExecutable acceptance tests\nUse real local Anvil transactions and assertions against the running query API, with bounded timeouts. Mock-only tests or sample output are insufficient.\nA. Exercise reservation, checkout, return, cancellation, expiry, policy changes, staff revocation, refund withdrawal, and fee request-ID retries/conflicts/new IDs. Check original booking terms, correct item state, exactly-once accounting and reconciliation.\nB. Stop the indexer, create further chain activity, restart with the SAME database and verify catch-up and totals. Also abruptly terminate during catch-up and recover. Do not delete the database to pass; explain honestly whether the selected Ponder mode resumes or rebuilds its projections.\nC. Exercise duplicate/replayed or overlapping logs through the real ingestion path or a test RPC proxy. Assert no duplicated history, credits or fees. Identify framework-provided versus application-provided deduplication.\nD. Interrupt RPC access while Anvil continues running, create activity, restore access and verify catch-up. Status must not falsely appear current during the outage.\nE. Observe one branch, then simulate a SHORT reorganization using Anvil snapshot/revert and mine a different branch. Verify orphaned effects disappear and the canonical state reconciles. Document the tested finality window and limitations of deeper resets.\nF. Rebuild into a separate empty database and compare domain data/totals at a common block. This is additional to same-database recovery, not a substitute.\n\nDelivery and honest reporting\nProvide clean-checkout install, typecheck, test, demo, reconciliation and restart commands. Preserve and rerun the existing Foundry build, formatting and 85 individual checks; a passing Foundry result alone does not validate the backend. Record commands actually run, tool versions, results, measured local catch-up times, and failures or checks not run. Include example API responses and remaining limitations. Mark each requirement passed, failed or not run with evidence. If only part can be implemented or tested, clearly label the result partial. Do not weaken tests or change contrac","parentJobId":"5106c2bf-c11f-481a-a057-4910346e57ad","planHash":"d0c5cd3aa4448d2bb1e5e28005f3e820fedd175ddcc121a8a0ecb09b2cb369d5","previousHash":"e8945a10fe47a244589f01dbf6c2aed0c7900f2ed1838e05d0bc16e85d3b6f49","projectId":"0b32e9c2-5e73-434d-b219-5c39c759f59c","publication":{"commit":"14b7205477fc0b98d11f761f429c848a1b328316","deliveredAt":"2026-10-17T17:49:46.114Z","repoUrl":"https://github.com/identity-md-launches/launch-1988-kkk"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[],"site":null,"snapshotHash":"f8f471256f08d07e552c76915dca8a47a00cba6dd36ced5727f77611d566c880","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"840fa200aa4ee57e913ba295ecd4ade4d1a667ab09abb42791ec3c12be3f9d54","device":"8d210756eb9ac4d7","findings":[],"hash":"224d7d46e82ae68b08d35cfd4858ea9fe526b794757739a2c0db648c9e9f516b","nodeId":"a5f41ccb-6689-4921-96c0-0763c7279876","outcome":"completed","summary":"Repaired the size issue: the local source export is **7.70 MB**, below 8 MiB.\n\nFresh offline installation, acceptance tests A–F, demo/restart/reconciliation, and Foundry build/test/format checks pass. Protected contracts and dependency versions remain unchanged.\n\nThe compact runtime uses pinned Ponder internals and requires restarting after edits. Evidence and limitations are recorded in `docs/BACKEND-TRIAL.txt`.","treeHash":"c7f621142995a29f56c851639d3e2f3650fba519","usage":{"cachedInputTokens":9180800,"inputTokens":321751,"model":"gpt-6-astra","outputTokens":120642,"runtime":"codex","turns":21,"wallClockMs":3656624}}],"verification":[{"checks":[{"durationMs":3292,"exitCode":0,"name":"build","output":"Compiling 46 files with Solc 0.8.26\nSolc 0.8.26 finished in 3.20s\nCompiler run successful!\n","passed":true},{"durationMs":1189,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 1 test for test/invariant/RentalEscrowHandler.t.sol:RentalEscrowHandlerTest\n[PASS] test_cancel_maximumSeedDoesNotOverflowHandler() (gas: 5029700)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.09ms (875.43µs CPU time)\n\nRan 4 tests for test/MockPaymentToken.t.sol:MockPaymentTokenTest\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 111452, ~: 112119)\nLogs:\n  Bound result 77\n\n[PASS] test_fixedSupplyMintedToHolder() (gas: 40449)\n[PASS] test_metadata() (gas: 31712)\n[PASS] test_rejectsZeroHolder() (gas: 3695)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 35.39ms (35.36ms CPU time)\n\nRan 3 tests for test/Scripts.t.sol:ScriptsTest\n[PASS] test_deploy_rejectsZeroConfig() (gas: 3443102)\n[PASS] test_deploy_wiresTokenAndEscrow() (gas: 6022019)\n[PASS] test_seed_createsDemoStateAndFundsRenter() (gas: 8827469)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 49.32ms (1.09ms CPU time)\n\nRan 13 tests for test/WithdrawalRecovery.t.sol:WithdrawalRecoveryTest\n[PASS] testFuzz_feeRetry_arbitraryIdAmountAndConflictingPayload(bytes32,uint256,uint256,address) (runs: 256, μ: 1126270, ~: 1126889)\nLogs:\n  Bound result 1440\n\n[PASS] test_feeLookup_unusedRequest() (gas: 16169)\n[PASS] test_feeRetry_conflictingAmountRejected() (gas: 1008099)\n[PASS] test_feeRetry_conflictingRecipientRejected() (gas: 1022555)\n[PASS] test_feeRetry_oldIdProtectedAfterNewFeesAccrue() (gas: 1026360)\n[PASS] test_feeRetry_survivesAdminHandover() (gas: 1418870)\n[PASS] test_feeRetry_tenEarnedFiveRequestedPaysOnce_newIdPaysRemainder() (gas: 1297138)\n[PASS] test_feeWithdrawal_falseTransferRollsBackAndSameIdCanRetry() (gas: 1192235)\n[PASS] test_feeWithdrawal_insufficientFeesDoesNotConsumeId() (gas: 665563)\n[PASS] test_feeWithdrawal_legacySelectorCannotBypassRequestId() (gas: 489636)\n[PASS] test_feeWithdrawal_requiresNonzeroId() (gas: 513153)\n[PASS] test_feeWithdrawal_revertedTransferRollsBackAndSameIdCanRetry() (gas: 1191711)\n[PASS] test_refundRecovery_interveningSettlementPaysOnlyNewAggregateCredit() (gas: 1123254)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 109.39ms (111.34ms CPU time)\n\nRan 47 tests for test/RentalEscrow.t.sol:RentalEscrowTest\n[PASS] test_adminHandover_cancelPending() (gas: 110437)\n[PASS] test_adminHandover_twoStep() (gas: 210261)\n[PASS] test_cancel_afterCheckoutReverts() (gas: 399863)\n[PASS] test_cancel_boundary_lastSecondOkExactExpiryRejected() (gas: 629540)\n[PASS] test_cancel_creditsDepositMinusFee() (gas: 605010)\n[PASS] test_cancel_onlyRenter() (gas: 416150)\n[PASS] test_cancel_twiceReverts() (gas: 478652)\n[PASS] test_cancel_unknownReservation() (gas: 34754)\n[PASS] test_cancel_withFullFeePolicyCreditsNothing() (gas: 598961)\n[PASS] test_cancel_withZeroFeePolicyCreditsEverything() (gas: 538782)\n[PASS] test_checkOut_afterCancelReverts() (gas: 474306)\n[PASS] test_checkOut_boundary_rejectedAtExpiry() (gas: 447475)\n[PASS] test_checkOut_byStaff() (gas: 442551)\n[PASS] test_checkOut_twiceReverts() (gas: 397949)\n[PASS] test_checkOut_unauthorizedCallers() (gas: 409564)\n[PASS] test_confirmReturn_creditsFullDeposit() (gas: 585826)\n[PASS] test_confirmReturn_requiresRentedStatus() (gas: 358364)\n[PASS] test_confirmReturn_twiceReverts_singleCredit() (gas: 507354)\n[PASS] test_confirmReturn_unauthorized() (gas: 423890)\n[PASS] test_constructor_revertsOnZeroAddresses() (gas: 6107)\n[PASS] test_constructor_setsTokenAndAdmin() (gas: 33599)\n[PASS] test_createPolicy_validation() (gas: 333197)\n[PASS] test_delistingDuringReservation_doesNotBreakLifecycle() (gas: 549074)\n[PASS] test_expire_byAnyoneAtExpiry() (gas: 904182)\n[PASS] test_expire_cancelledOrUnknownReverts() (gas: 495012)\n[PASS] test_expire_longAfterExpiryStillWorksOnce() (gas: 475852)\n[PASS] test_expire_rentedItemsNeverExpire() (gas: 401421)\n[PASS] test_fullLifecycle_itemReusedAcrossManyRentals() (gas: 2312696)\n[PASS] test_items_adminManagement() (gas: 370704)\n[PASS] test_policyChange_doesNotAffectExistingReservation() (gas: 984625)\n[PASS] test_reserve_competing_secondRenterRejected() (gas: 402534)\n[PASS] test_reserve_feeOnTransferTokenIsRejected() (gas: 906194)\n[PASS] test_reserve_happyPath() (gas: 466137)\n[PASS] test_reserve_insufficientAllowanceOrBalanceTakesNothing() (gas: 736004)\n[PASS] test_reserve_rejectsStalePolicyQuote() (gas: 183775)\n[PASS] test_reserve_rejectsUnknownOrDelistedItem() (gas: 127542)\n[PASS] test_reserve_rejectsZeroRef() (gas: 41926)\n[PASS] test_reserve_retryWithSameRefRevertsAndNamesReservation() (gas: 822038)\n[PASS] test_reserve_sameRefDifferentRentersAreIndependent() (gas: 705866)\n[PASS] test_setStaff_onlyAdmin() (gas: 121884)\n[PASS] test_staffRevocation_isImmediate() (gas: 689368)\n[PASS] test_views_revertOnUnknownReservation() (gas: 25884)\n[PASS] test_withdrawFees_adminOnlyAndBounded() (gas: 1005974)\n[PASS] test_withdrawFees_cannotReachEscrowedDeposits() (gas: 383064)\n[PASS] test_withdrawRefund_accumulatesAcrossReservations() (gas: 899675)\n[PASS] test_withdrawRefund_isPerBeneficiary() (gas: 508823)\n[PASS] test_withdrawRefund_paysOnceOnly() (gas: 623888)\nSuite result: ok. 47 passed; 0 failed; 0 skipped; finished in 112.45ms (12.17ms CPU time)\n\nRan 9 tests for test/RentalEscrowFuzz.t.sol:RentalEscrowFuzzTest\n[PASS] testFuzz_competingReservations(address,address,bytes32,bytes32) (runs: 256, μ: 931512, ~: 931600)\n[PASS] testFuzz_duplicateActionsSettleOnce(uint8,uint64) (runs: 256, μ: 675782, ~: 671587)\nLogs:\n  Bound result 0\n  Bound result 1365\n\n[PASS] testFuzz_expiryBoundary_cancelVsExpire(uint256,uint256,uint64,uint64) (runs: 256, μ: 780156, ~: 799044)\nLogs:\n  Bound result 5706\n  Bound result 276\n  Bound result 2294\n  Bound result 849989\n\n[PASS] testFuzz_feeWithdrawalBounded(uint256,uint8,uint8) (runs: 256, μ: 2853174, ~: 2801873)\nLogs:\n  Bound result 7\n  Bound result 0\n  Bound result 299999998\n\n[PASS] testFuzz_policyChangeDoesNotLeak(uint256,uint256,uint64,uint256,uint256,uint64,bool) (runs: 256, μ: 1119320, ~: 1126521)\nLogs:\n  Bound result 1021\n  Bound result 17\n  Bound result 4388\n  Bound result 1749\n  Bound result 884\n  Bound result 7122\n\n[PASS] testFuzz_refundRetries(uint8,bool) (runs: 256, μ: 2891756, ~: 970895)\n[PASS] testFuzz_rentedNeverExpires(uint256,uint256,uint64,uint64) (runs: 256, μ: 681763, ~: 683724)\nLogs:\n  Bound result 5706\n  Bound result 276\n  Bound result 2294\n  Bound result 75154348\n\n[PASS] testFuzz_reserve_exactDepositAndSnapshot(uint256,uint256,uint64,bytes32) (runs: 256, μ: 573015, ~: 574817)\nLogs:\n  Bound result 277569131\n  Bound result 93001104\n  Bound result 8630\n\n[PASS] testFuzz_unauthorizedCallersRejected(address,uint8) (runs: 256, μ: 668167, ~: 648676)\nLogs:\n  Bound result 1\n\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 112.48ms (740.60ms CPU time)\n\nRan 1 test for test/invariant/RentalEscrowInvariant.t.sol:RentalEscrowInvariantTest\n[PASS]\nRentalEscrowInvariantTest invariants:\n[PASS] invariant_adminUnchanged\n[PASS] invariant_balanceCoversLiabilities\n[PASS] invariant_balanceEqualsLiabilities\n[PASS] invariant_conservationOfDeposits\n[PASS] invariant_oneActiveReservationPerItem\n[PASS] invariant_refundCreditsSum\n[PASS] invariant_reservationHistoryIsConsistent\n[PASS] invariant_settlementTotalsMatch\n RentalEscrowInvariantTest invariants (runs: 64, calls: 3072, reverts: 0)\n\n╭---------------------+-----------------------+-------+---------+----------╮\n| Contract            | Selector              | Calls | Reverts | Discards |\n+==========================================================================+\n| RentalEscrowHandler | cancel                | 243   | 0       | 0        |\n|---------------------+-----------------------+-------+---------+----------|\n| RentalEscrowHandler | checkOut              | 248   | 0       | 0        |\n|---------------------+-----------------------+-------+---------+----------|\n| RentalEscrowHandler | checkOutByStranger    | 238   | 0       | 0        |\n|---------------------+-----------------------+-------+---------+----------|\n| RentalEscrowHandler | confirmReturn         | 266   | 0       | 0        |\n|---------------------+-----------------------+-------+---------+----------|\n| RentalEscrowHandler | createPolicyAndAssign | 237   | 0       | 0        |\n|---------------------+-----------------------+-------+---------+----------|\n| RentalEscrowHandler | expire                | 244   | 0       | 0        |\n|---------------------+-----------------------+-------+---------+----------|\n| RentalEscrowHandler | reserve               | 215   | 0       | 0        |\n|---------------------+-----------------------+-------+---------+----------|\n| RentalEscrowHandler | reserveDuplicateRef   | 216   | 0       | 0        |\n|---------------------+-----------------------+-------+---------+----------|\n| RentalEscrowHandler | toggleListing         | 212   | 0       | 0        |\n|---------------------+-----------------------+-------+---------+----------|\n| RentalEscrowHandler | toggleStaff           | 234   | 0       | 0        |\n|---------------------+-----------------------+-------+---------+----------|\n| RentalEscrowHandler | warp                  | 250   | 0       | 0        |\n|---------------------+-----------------------+-------+---------+----------|\n| RentalEscrowHandler | withdrawFees          | 222   | 0       | 0        |\n|---------------------+-----------------------+-------+---------+----------|\n| RentalEscrowHandler | withdrawRefund        | 247   | 0       | 0        |\n╰---------------------+-----------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 3995\n  Bound result 6910\n  Bound result 1664\n  Bound result 10800\n  Bound result 0\n  Bound result 941511017\n  Bound result 607713534\n  Bound result 10358\n  Bound result 10\n  Bound result 7\n  Bound result 7678\n  Bound result 1461\n  Bound result 14319\n  Bound result 99\n  Bound result 10800\n  Bound result 1361\n  Bound result 722\n  Bound result 6800\n  Bound result 2592000\n  Bound result 2239468\n  Bound result 788\n  Bound result 12\n  Bound result 6\n  Bound result 2391\n  Bound result 8\n  Bound result 1\n  Bound result 7200\n  Bound result 2000000000\n  Bound result 7126\n  Bound result 5986\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.09s (1.09s CPU time)\n\nRan 7 test suites in 1.10s (1.51s CPU time): 78 tests passed, 0 failed, 0 skipped (78 total tests)\n","passed":true},{"durationMs":49,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"MockPaymentToken.approve(address,uint256)\",\"MockPaymentToken.transfer(address,uint256)\",\"MockPaymentToken.transferFrom(address,address,uint256)\",\"RentalEscrow.acceptAdmin()\",\"RentalEscrow.addItem(uint64,string)\",\"RentalEscrow.cancel(uint256)\",\"RentalEscrow.checkOut(uint256)\",\"RentalEscrow.confirmReturn(uint256)\",\"RentalEscrow.createPolicy(uint256,uint256,uint64)\",\"RentalEscrow.expire(uint256)\",\"RentalEscrow.reserve(uint256,uint64,bytes32)\",\"RentalEscrow.setItemListed(uint256,bool)\",\"RentalEscrow.setItemMetadata(uint256,string)\",\"RentalEscrow.setItemPolicy(uint256,uint64)\",\"RentalEscrow.setStaff(address,bool)\",\"RentalEscrow.transferAdmin(address)\",\"RentalEscrow.withdrawFees(bytes32,address,uint256)\",\"RentalEscrow.withdrawRefund()\"],\"files\":{\".gitignore\":20,\"README.md\":298,\"docs/BACKEND-TRIAL.txt\":255,\"docs/INTEGRATION.md\":329,\"docs/TEST-RESULTS.md\":259,\"foundry.toml\":42,\"indexer/.env.example\":3,\"indexer/README.md\":298,\"indexer/abis/MockPaymentToken.ts\":353,\"indexer/abis/RentalEscrow.ts\":1412,\"indexer/config.example.json\":9,\"indexer/evidence/acceptance.json\":1,\"indexer/evidence/bundle-repair.json\":25,\"indexer/evidence/checks.json\":127,\"indexer/evidence/demo-acceptance.json\":1,\"indexer/evidence/demo-restart.txt\":3,\"indexer/evidence/example-reservation.json\":1,\"indexer/evidence/example-snapshot.json\":1,\"indexer/evidence/framework-recovery.txt\":24,\"indexer/package-lock.json\":2906,\"indexer/package.json\":31,\"indexer/ponder-env.d.ts\":15,\"indexer/ponder.config.ts\":36,\"indexer/ponder.schema.ts\":17,\"indexer/scripts/abi.mjs\":34,\"indexer/scripts/install.mjs\":146,\"indexer/scripts/reconcile.ts\":19,\"indexer/scripts/runtime.mjs\":202,\"indexer/scripts/start.mjs\":120,\"indexer/scripts/trace-modules.mjs\":22,\"indexer/scripts/vendor-cache.mjs\":17,\"indexer/scripts/vendor-runtime.py\":139,\"indexer/shared/config.ts\":116,\"indexer/shared/domain.ts\":310,\"indexer/shared/reconcile.ts\":157,\"indexer/shared/status.ts\":77,\"indexer/shared/transport.ts\":59,\"indexer/src/api/index.ts\":152,\"indexer/src/index.ts\":62,\"indexer/tests/acceptance.ts\":632,\"indexer/tests/harness.ts\":333,\"indexer/tests/install.test.mjs\":132,\"indexer/tests/unit.test.ts\":211,\"indexer/tsconfig.json\":16,\"indexer/vendor/README.md\":85,\"indexer/vendor/manifest.json\":2285,\"indexer/vendor/runtime-selection.json\":2718,\"indexer/vendor/runtime.sha256\":1,\"remappings.txt\":2,\"script/Deploy.s.sol\":51,\"script/Seed.s.sol\":73,\"script/demo.sh\":178,\"src/MockPaymentToken.sol\":30,\"src/RentalEscrow.sol\":532,\"test/MockPaymentToken.t.sol\":40,\"test/RentalEscrow.t.sol\":906,\"test/RentalEscrowFuzz.t.sol\":331,\"test/Scripts.t.sol\":74,\"test/WithdrawalRecovery.t.sol\":307,\"test/invariant/RentalEscrowHandler.sol\":283,\"test/invariant/RentalEscrowHandler.t.sol\":25,\"test/invariant/RentalEscrowInvariant.t.sol\":141,\"test/utils/EscrowTestBase.sol\":60},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":true}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"224d7d46e82ae68b08d35cfd4858ea9fe526b794757739a2c0db648c9e9f516b","verifiedTreeHash":"c7f621142995a29f56c851639d3e2f3650fba519","verifierVersion":"0.1.0+c3fba9eb"}]}