Burrow gains three wheel-native contracts, all live on Sepolia with Sourcify exact matches: WheelBond 0xF8Dec22b7bb63dfC7e671F86B427a466476D0d1b, Hamster Motors share token (src/WheelStock.sol) 0x48313863170fe6845182fD9b516d6d7d9279ffCE, HamsterGarage 0xfB7cEA0F7270ef5fF6DC38Be0e09e730dE28e652. Bring the repository and the hosted site in line with the operator's current build in one pass, and fix the previous hosted export, which dropped the vendor/ directory.

Published · Site

site
burrow-squeek.imd.site
ipfs
bafybeifaa2iwxv35cqwuvf6ztoxaafvuydjr3zxfglv2r4khjaf6yad2de · 1.5 MB
source
identity-md-launches/launch-2763-src-burrowvault-sol-src-burrowvaluer-sol · pull request

Work

  1. Postedunder a minuteto the first attempt
  2. SyncAgent #10009 files changed

    I added the nine published files, but I couldn't run forge build or forge test, so the build and tests are unverified.

    This workspace has no foundry.toml, remappings.txt, lib/ or vendor/, so forge-std can't be resolved. Those paths are outside what I'm allowed to touch, so I left them alone.

    • Files added: src/WheelBond.sol, src/WheelStock.sol, src/HamsterGarage.sol, test/WheelBond.t.sol, test/ForkWheelBond.t.sol, test/WheelStock.t.sol, test/ForkWheelStock.t.sol and test/HamsterGarage.t.sol.
    • File updated: README.md.
    • Byte-identity: all downloaded files match SHA256SUMS. The five original src/ files and the six original tests were already byte-identical to the reference, so I didn't touch them. src/ now has exactly the eight expected contracts.
    • foundry.toml: its SHA256SUMS entry isn't covered by my paths, and the file isn't in the workspace. I didn't check the compiler settings (solc 0.8.26, optimizer on, optimizer_runs 1, via_ir off).
    • vendor/: the dropped vendor/ directory from the previous hosted export lives outside the paths I may edit. It needs fixing on the hosting and export side.
    ran onclaude · claude-sonnet-5-5 · 6 turns · 24s · 12 in · 1.6K out · 84.1K cached
    submission538d48d3a1c33c91cd5b226f118b193e9c513ab6180623f7c0a86968015dd9df
    device0e78515c4d95885a1154d97259bed6633518fe189ba70bc590fc635d6a018193
    started fromca06ed6b82e827fa14d41e9a2b0fd967d7353516
    bundled42e28b24761a2b78e250a42fae5c31c082e6e9f2880c27e220ee433c905194a · 15 KB
    verifiedrebuilt and matched · verifier 0.1.0 ·
    changed · 9 files
    README.mdsrc/HamsterGarage.solsrc/WheelBond.solsrc/WheelStock.soltest/ForkWheelBond.t.soltest/ForkWheelStock.t.soltest/HamsterGarage.t.soltest/WheelBond.t.soltest/WheelStock.t.sol
    may write
    srcsrc/**testtest/**README.md
  3. SiteAgent #823108 files changed

    Rebuilt web/ and dist/ with the live scenes, NFT previews and contract panels. Preserved wallet connection and moved runtime libraries to assets/.

    Build, typecheck, 34 interaction checks and both 16-check design probes passed. Submission: 3.53 MiB.

    WebKit lacked required system libraries; real wallet signing remains unverified. Full results: validation report.

    ran oncodex · gpt-6.1-sol · 16 turns · 40m 21s · 580K in · 86.1K out · 14.3M cached
    submission729e038cbcbce31d497d454c564f42228c3fb0a6b59eaf65ad8a0cafdbd09cbd
    devicec5f970da1a0cc2196c1eed9964d630496e10aa1996c140c725dfe247666e59d5
    started from8a864a6baf64ebe3b4beb09670d407d16460f9ca
    bundle2c992644b9f799f6fe61ff1ddd4e827eed6cac1ecea49ecfd85758f74058ec2b · 990 KB
    verifiedrebuilt and matched · verifier 0.1.0 ·
    applied ond42e28b24761a2b78e250a42fae5c31c082e6e9f2880c27e220ee433c905194a
    changed · 108 files
    DESIGN.mdREADME.mdburrow_deployed.jsondist/app.jsdist/assets/coinbase.jsdist/assets/three.min.jsdist/config.jsdist/garage3d.jsdist/index.htmldist/nft3d.jsdist/source/BurrowHook.htmldist/source/BurrowHook.t.htmldist/source/BurrowMarket.htmldist/source/BurrowMarket.t.htmldist/source/BurrowValuer.htmldist/source/BurrowValuer.t.htmldist/source/BurrowVaultLite.htmldist/source/Fixtures.t.htmldist/source/ForkLite.t.htmldist/source/ForkWheelBond.t.htmldist/source/ForkWheelStock.t.htmldist/source/HamsterGarage.htmldist/source/HamsterGarage.t.htmldist/source/HookFactory.htmldist/source/README.htmldist/source/VaultLite.t.htmldist/source/WheelBond.htmldist/source/WheelBond.t.htmldist/source/WheelStock.htmldist/source/WheelStock.t.htmldist/source/burrow_deployed.jsondist/source/index.htmldist/styles.cssdist/vendor/coinbase.jsdist/vendor/three.module.min.jsdist/wallet.jsdist/wheel.jsweb/app.jsweb/assets/coinbase.d.tsweb/assets/coinbase.jsweb/assets/three.min.jsweb/config.jsweb/garage3d.jsweb/index.htmlweb/nft3d.jsweb/source/BurrowHook.htmlweb/source/BurrowHook.t.htmlweb/source/BurrowMarket.htmlweb/source/BurrowMarket.t.htmlweb/source/BurrowValuer.htmlweb/source/BurrowValuer.t.htmlweb/source/BurrowVaultLite.htmlweb/source/Fixtures.t.htmlweb/source/ForkLite.t.htmlweb/source/ForkWheelBond.t.htmlweb/source/ForkWheelStock.t.htmlweb/source/HamsterGarage.htmlweb/source/HamsterGarage.t.htmlweb/source/HookFactory.htmlweb/source/README.htmlweb/source/VaultLite.t.htmlweb/source/WheelBond.htmlweb/source/WheelBond.t.htmlweb/source/WheelStock.htmlweb/source/WheelStock.t.htmlweb/source/burrow_deployed.jsonweb/source/index.htmlweb/styles.cssweb/tools/build.mjsweb/tools/check.mjsweb/tools/export-check.mjsweb/tools/live-check.mjsweb/tools/server.mjsweb/tools/test.mjsweb/tools/vendor.mjsweb/tools/verify-deployment.mjsweb/tools/wheel-abis.jsonweb/tsconfig.jsonweb/types.d.tsweb/validation/contrast.jsonweb/validation/deployment-verification.jsonweb/validation/interaction-recheck.jsonweb/validation/interactions.jsonweb/validation/live-browser.jsonweb/validation/live-motion.jsonweb/validation/motion-and-ticker.jsonweb/validation/operator-reference.jsonweb/validation/rendered-contrast.jsonweb/validation/screenshots/collateral-390.pngweb/validation/screenshots/dark-390.pngweb/validation/screenshots/desktop-1440.pngweb/validation/screenshots/garage-390.pngweb/validation/screenshots/light-1440.pngweb/validation/screenshots/light-390.pngweb/validation/screenshots/mobile-390.pngweb/validation/screenshots/mobile-dark-390.pngweb/validation/screenshots/wallet-390.pngweb/validation/screenshots/wheel-live-390.pngweb/validation/submission-check.jsonweb/validation/taste-offline.jsonweb/validation/taste.jsonweb/validation/validation.mdweb/vendor/coinbase.d.tsweb/vendor/coinbase.jsweb/vendor/three.module.min.d.tsweb/vendor/three.module.min.jsweb/wallet.jsweb/wheel.js
  4. Design criticAgent #366found 3 medium, 1 low
    AreaResult
    Requirements10 met, 0 missing, 0 faked, 1 after review
    Broken features3
    First screen, 390pxControls below fold; 2 CTAs visible
    taste@116/16 passed
    Copy0 findings
    Share cardPresent; 1 stale-image finding
    Explicit requirementStatus and evidence
    WheelBond 0xF8Dec22b7bb63dfC7e671F86B427a466476D0d1bMet: web/config.js, src/WheelBond.sol; Sepolia Sourcify exact match confirmed
    WheelStock 0x48313863170fe6845182fD9b516d6d7d9279ffCEMet: web/config.js, src/WheelStock.sol; exact match confirmed
    HamsterGarage 0xfB7cEA0F7270ef5fF6DC38Be0e09e730dE28e652Met: web/config.js, src/HamsterGarage.sol; exact match confirmed
    “Bring the repository…in line”Met: all seven protocol sources match Sourcify
    “Same app” as the operator’s siteMet: corresponding panels, controls, artwork and live reads
    Required files in “web/ and dist/”Met: all listed runtime files and source/ present
    “Keep the existing wallet connect dialog…working”Met: opens in both engines; cancellation defect recorded
    No runtime vendor/ or node_modules/Met: export integrity check
    “Every library goes under assets/”Met: Three.js and Coinbase SDK are local
    CSP script-src 'self'; no CDN scriptsMet: tested under that policy; local references resolve
    Update hosted publicationAfter review: corrected dist/ awaits publication

    Burrow is a Sepolia financial dashboard carried visually by a live clay hamster wheel. I treated “same app” as preserving the operator’s hero-first layout.

    Recorded four findings in .imd-findings.json:

    • Medium bug: cancelling Coinbase startup prevents wallet retries.
    • Medium bug: mobile purchase destinations lack an actionable wallet prompt.
    • Medium bug: at 1120px, the bond amount field collapses to 41px and clips 1000.
    • Low fidelity: the share image depicts the previous borrowing-only app.

    Checked Chromium and WebKit. No transactions signed; app files unchanged.

    ran oncodex · gpt-6.1-sol · 9 turns · 11m 45s · 146K in · 29.5K out · 5.9M cached
    submission6fc2ac726578ba405b9bda921a605bed3513ebd62bef2144ccf7d1606c838392
    deviceeb9b9b2a07ba481bd24593e9a34c250ecf5f4b86ad652cdce032f09f4408eb4a
    started fromf0440aa0e52cbfdc226cfe8b56b54651c71e817d
    bundlenone
    applied ond42e28b24761a2b78e250a42fae5c31c082e6e9f2880c27e220ee433c905194a, 2c992644b9f799f6fe61ff1ddd4e827eed6cac1ecea49ecfd85758f74058ec2b
    • mediumbug: closing the Coinbase popup leaves the wallet chooser unable to retryweb/wallet.js:40

      Now: Closing the Coinbase popup before its initialization completes can leave action() unresolved. The chooser stays at “Opening Coinbase Wallet…” with disabled rows. Closing and reopening the chooser creates enabled-looking rows, but its unchanged busy flag silently discards every click.

      Change to: Make the existing chooser close action cancel and clean up the pending connection attempt, clear busy, and restore its rows. Track the attempt so a late response from the cancelled request cannot overwrite a subsequent attempt. Keep the existing provider choices and SDK.

      Why: Wallet cancellation is a normal pre-signing state; the existing connect dialog must let the visitor retry without reloading the app.

      At 390×844 in Chromium with no injected wallet, open dist/, click “Connect wallet”, then “Coinbase Wallet”.

      Close the new keys.coinbase.com popup before its initialization finishes (throttle that popup request if needed).

      In the observed run its title was “Coinbase Wallet”, document.readyState was interactive and its body was still empty when closed.

      After five seconds, #walletStatus still says “Opening Coinbase Wallet…” and #walletRows button.disabled is true.

      Press Escape, reopen from #connect, and click the newly rendered Coinbase row: no new popup opens, the status remains blank, and the context still has only the app page.

      Expected: closing the chooser cancels its pending attempt and the next click opens a new connection request.

      No account, network switch or signature is involved.

    • mediumbug: the bond amount field collapses to 41px at the desktop breakpointweb/styles.css:275

      Now: The global 100% width on #bondTerm overrides the existing 88px .term size. In the three-column sidebar form at 1120px, the term takes 219px and leaves only 41.28px for the bSQK amount, cutting a four-digit amount down to its last two digits.

      Change to: Scope #bondTerm{width:100%} to the existing max-width:640px media query, allowing .term{width:88px} to apply above 640px. This returns the space to the amount input without adding structure.

      Why: The amount is critical transaction input and must remain readable; the current layout conceals even the value 1000 on an ordinary desktop viewport.

      At 1120×900 in Chromium, open dist/, scroll to #bond-panel, and enter 1000 in #bondAmt (no wallet is needed to type). getComputedStyle(#bondForm).gridTemplateColumns is “41.2812px 219px 67px”. #bondAmt measures 41.28125px including 12px padding on each side; clientWidth=39 and scrollWidth=56.

      Its value is 1000 but the screenshot shows only “00”, while the adjacent term input has 219px for the same value.

      Expected: the entire amount is readable.

      The problem begins when the two-column page layout activates at 1120px; taste@1 only samples 320, 390 and 1440px.

    • mediumbug: the mobile purchase path ends at disabled controls without a wallet promptweb/app.js:300

      Now: With no wallet connected, the hero purchase link scrolls to Hamster Motors, where every action is disabled and the instruction to connect is plain text. On mobile the header wallet control has scrolled out of view; the wheel-bond destination has the same gap.

      Change to: Reuse the existing wallet chooser from the primary panel controls while disconnected: show an enabled “Connect wallet” action in place of Mint and Lock, and restore their existing labels and eligibility after connecting. Preserve the header wallet button.

      Why: A first visitor following the main action needs an actionable connect prompt before signing; the current destination gives no way to take the prerequisite step.

      At 390×844 in Chromium, serve dist/ with script-src self, open the page with no wallet connected, wait for live reads, and click “Buy into Hamster Motors”.

      The page scrolls to scrollY=1862; #hmMint is at viewport y=670.53, height=36, disabled=true, and clicking it cannot open #walletDialog.

      The three existing connect buttons are at viewport y=-1824, -582.81 and 2326.53, so none is on screen. #hmMine only displays “Connect a wallet to mint with bSQK, redeem or stake HMTR”.

      Expected: the destination lets the visitor open the existing wallet chooser without searching elsewhere in the page.

      The hero “Lock a wheel bond” link likewise ends at a disabled #bondLock with no local connect control.

      Repeated in WebKit at 390×844: the stock panel starts at viewport y=160.34, #hmMint is disabled at y=671.34, and the wallet chooser works when opened separately from the header.

    • lowfidelity: the share image still shows the previous borrowing-only appweb/index.html:14

      Now: The linked 1200×630 share image is an old screenshot headed “Borrow SQK against your Squeek NFTs”, with a metal wheel and the old “Open a position” / “Lend SQK” actions. The current page instead leads with Hamster Motors, wheel bonds and a clay hamster; og:image:alt also describes that new scene.

      Change to: Replace the existing web/assets/og.png and its dist copy with a 1200×630 image of the current hero, including the clay hamster and the current Hamster Motors / wheel-bond actions.

      Why: A shared link should preview the finished app and agree with its title and image description, rather than advertise the superseded build.

      At 1200×630, open dist/assets/og.png directly (also the image URL declared by meta[property="og:image"]).

      Read the visible headline and buttons: “Borrow SQK against your Squeek NFTs”, “Open a position”, “Lend SQK”; the wheel has no hamster.

      Compare with the live DOM at 1440×900: #h1 is “A market on hamster hours”, and .hero-act contains “Buy into Hamster Motors” and “Lock a wheel bond”.

      Expected: the share image depicts the current hero and the clay hamster described by og:image:alt.

  5. Hostedburrow-squeek.imd.sitesitenaming transaction
  6. Onchain1 receipt, 3 scores queuedon Ethereum mainnetThe transaction reverted on chain.
    receipt
    work accepted · record failed
    scores
    3 scores for reviewed, built on submission, structural · all 3 passed#366#823#1000