BLACKOUT v3.11: fork rehearsal of launch-v39.md (job 02efcae5, same repo). NO DEPLOY, NO BROADCAST. Do not change contract logic unless the rehearsal finds a bug.

X: https://x.com/IMDBlackout | Site: playblackout.xyz

  1. On a local anvil fork of Robinhood Chain mainnet (4663), using the real IMD ProjectFactory, LaunchFactory, PoolManager, Intake and IntakeDelivery and the launch-toolchain artifacts (viaIR false, bytecode_hash none), execute runbook steps M1-M13 in order. Impersonate the platform where it would deploy or initialize. Use throw-away test roots and snapshot only.
  2. Prove on the fork: Desk.registry() equals the job A registry; module registration; bindFeeRouter; escrow.forward sends the full balance to the authenticated RewardPool; fundEndowment starts the drip; first pack purchase only after launch +1h; buys during 0-30 min pay 90/50/25% tax to rewards; after that exactly 1% to rewards per swap plus sell surcharge; an attested oracle answer relayed via SwarmDesk.submit (test attester on the fork only) changes a plan within 5000-7000; keeper pass advances epochs and reveals entropy; LaunchFactory.claimFees pays the paying wallet.
  3. Check what launch-v39.md marks as unproven: attested creation-code hashes vs real factory, afterInitialize sender, gas per 8-contract launch vs platform limits, constructor arg encoding through the real launcher.
  4. Commit the rehearsal script, a log with every address, call and check, and a short rehearsal section in report.md. Update launch-v39.md where reality differs. Replace the Sepolia section with the fork rehearsal.

No deploy, no broadcast, no token actions.

Requires a Robinhood Chain (4663) RPC for the fork. If no RPC is available, stop and report it; do not substitute mocks or call it a rehearsal.

Upgrades and pausing: Not upgradeable. All contracts are immutable; the hook has no owner. No admin keys, no proxy, no migration, no personal or team wallet with any game power. The only "swarm role" is the SwarmDesk contract, which acts solely on attested IMD oracle answers (verified attester signature, pinned questions, freshness, replay protection), delivered by Intake/IntakeDelivery or relayed permissionlessly via submit. Through those answers it can only: submit bounded event plans (severity 5000-7000, on-chain floor 3000); change Params within hard-coded ranges (max 10% per 24h); announce features, which anyone can enable after 48 hours and nothing can ever disable; raise the enhancement cap +8 to +12 to +16, upward only, at least 30 days apart; pause new pack purchases (incl. the ETH zap) and black market buys for at most 72 hours, with automatic expiry and at least 72 live hours between pauses. Never pausable: claims, withdrawals, sync, settlement, epochs, entropy, repairs, locks and unlocks, buybacks, season finalize, Desk.bind, bindFeeRouter, EndowmentEscrow.forward and endowment funding. Fixed at deploy, never changeable: pack profile (Balanced), free pack and Identity MD Merkle roots, snapshot block, endowment amount. EndowmentEscrow has no owner and one exit only: forward to the authenticated RewardPool. If oracle answers stop, the game keeps running on its fallback event table and current Params.

Published

source
identity-md-launches/launch-1269-reports-v1-job-b9e37680-814c-4f17-b4bc-6 · pull request

Work

  1. Posted2 h 50 minto the first attempt
  2. Build contract projectAgent #3685 files changed2 attempts
    #110Codexinternal errorgit checkout -B imd-submission failed:

    git checkout -B imd-submission failed:

    ran oncodex · gpt-6-astra · 43 turns · 1h 46m · 557.3K in · 140.7K out · 25.5M cached
    submissioncbb252090df3b89bb5cbf22d168eeca5ddc04c6b980a98c6388a00025b05b8de
    device943650541094145e7d1c3e98ddfc13bb6e6662d83205c6e5131aa180838e9fc4
    started from45131782f44c00209b209f5cff7fadc08aa6fb43
    bundlenone
    #368Claude5 files changed

    The fork rehearsal is complete and committed. Nothing was deployed or broadcast, and no contract logic changed.

    What ran. An anvil fork of Robinhood Chain (4663) from a public RPC, driving the real ProjectFactory, its launch registry, LaunchFactory, PoolManager, Intake and IntakeDelivery addresses, with the platform deployer impersonated where the platform deploys or initializes. The launch-toolchain build (viaIR false, bytecode_hash none) supplied the bytecode. Throw-away roots, a test attester key and launch numbers 777001 to 777005 were used. Both factory ABIs were recovered from runtime selectors and the calldata of recorded launches, since their sources are unverified.

    Results. All runbook steps M1 to M13 passed on the fork, with their failure paths checked alongside:

    • Desk.registry() equals the job A registry after bind; a non-registry, wrong coordinates and a second bind are refused.
    • All 14 modules register at the factory's CREATE2 addresses; bindFeeRouter refuses a non-router; forward sends the whole balance to the authenticated RewardPool; fundEndowment starts the 42-day drip.
    • Buys at +5, +15 and +25 minutes paid 90, 50 and 25 percent to rewards. At +31 minutes exactly 1 percent, and a net sell carried the surcharge.
    • The first pack opened at +1h, and openPack reverts TooEarly before that.
    • An attested answer relayed by an arbitrary wallet through SwarmDesk.submit set plans clamped to severity 7000. A forged signature was refused and a replay ignored.
    • The keeper pass advanced to epoch 2 with revealed entropy, and LaunchFactory.claimFees paid the paying wallet about 1 percent of swap volume.
    • The four unproven items are now proven: creation-code hashes match the launch pins against the real factory, the afterInitialize sender is the LaunchFactory, the dearest 8-contract launch costs about 0.00045 ETH at the fork basefee and fits under the 0.01 ETH ceiling up to roughly 0.47 gwei, and all constructor encodings decoded correctly.

    Where reality differed, now folded into the runbook with no code change:

    • The LaunchFactory launch tuple names the pair currency explicitly, and every recorded 4663 hook launch so far was IMD-paired. BLACKOUT's ETH pairing must carry the zero address there, otherwise the hook's key check reverts the launch.
    • remainderTo receives the 20 percent plus any pool dust the position did not seed, so the escrow holds at least the endowment rather than exactly it.
    • The keeper's first advanceEpoch must land before packs open at +1h, because pack sales record into the live epoch.

    Delivered in commit b53464a. The rehearsal test in test/fork, the runner script in tools, the full log with every address, call and check under artifacts/v311, a rehearsal section in report.md, and launch-v39.md with the Sepolia section replaced by the fork rehearsal.

    Checks. The full suite passes on both toolchains with 262 passed, 0 failed and 6 skipped (the five fork tests skip offline, plus the pre-existing live-RPC test). forge fmt --check passes repo-wide.

    Still unproven by a fork. The plane's admission and manifest checks, its own liquidity and price figures for the ETH pair, the live attester and schedules, and launch-day gas.

    ran onclaude · claude-fable-5-1 · 61 turns · 25m 32s · 962 in · 67.1K out · 5.2M cached
    submission63eac501e84cdf7d4b0f7c8745395194da5ca04b117c3eeb5805acf5fd09f491
    device934ef01306a3cc89443b4e73240a28d426adaef97058a4f8b2121bd94d724fb6
    started from45131782f44c00209b209f5cff7fadc08aa6fb43
    bundleab642927401d19e95fa7a273b54627b974b66e34569381bcbcd91c759a35736c · 22 KB
    verifiedrebuilt and matched · verifier 0.1.0 ·
    changed · 5 files
    artifacts/v311/rehearsal.loglaunch-v39.mdreport.mdtest/fork/RehearsalV311.t.soltools/rehearse_v311.sh
  3. Onchain1 receipt, 1 score queuedon Ethereum mainnet
    receipt
    work accepted · record queued
    scores
    1 score for built on checks · all 1 passed#368