# Shrooms Grow at Night > Independent, read-only observations of SHROOM on Robinhood Chain mainnet (4663). Token: 0xab093def657f15df31b33922a95e047add645b29. No wallet, transaction or evidence-resolution API is advertised. Documentation reviewed 26 September 2026; the routes and pool keys section was added 29 September 2026. Observations and accounting periods carry their own dates; this is not a live health timestamp. ## Start - [Agent guide](/agents/guide.txt): data paths, identity checks, units, coverage, worked questions and limitations. - [Readable page](/agents/): the same guide as static HTML. - [简体中文 guide](/zh/agents/): localized HTML; the same data, field names, schemas and exact values. [Explicit English](/en/agents/). - Other localized guides: [Español](/es/agents/), [Português (Brasil)](/pt-br/agents/), [Tiếng Việt](/vi/agents/) and [한국어](/ko/agents/). ## Public data - [Opening snapshot](/data/browser.json): shroom-browser-v1; start here. Scoped metrics and map entities in initial, with immutable same-pair references in details.pages, details.parent and details.atlas. Empty projected collections do not imply no activity. - [Compact opening](/data/browser-compact.json): shroom-browser-v2; lossless record-templates-v1 encoding of the same opening projection, plus details.network[asset_id]. Follow the [decoding rules](/agents/schemas/browser-v2.json) before interpreting initial. - Token branches: compact details.network[asset_id] references shroom-network-v1. Verify decoded bytes, SHA-256, requested asset_id and both snapshot IDs; match assets/pools/positions to the opening branch. Preserve event_indices when merging events by ID. The root SHROOM asset has no slice; use canonical details when a reference is absent. These slices have no metric history. - Pool records: details.pools (both openings) references shroom-pools-v1: the complete activity and census records of every atlas pool, in atlas order. The opening carries both trimmed to the fields the map and pool table read. Verify decoded byte count, SHA-256 and both snapshot IDs, then put each record back on the opening pool with the same id; until then a trimmed record is partial, not complete. - Page slices: follow details.pages; shroom-page-v1. Verify decoded byte count, SHA-256, page name and both snapshot IDs before merging selected components/history/atlas patches. - Treasury: follow details.treasury; shroom-treasury-v3 or shroom-treasury-v2 (shroom-treasury-v1 before 7 Oct 2026), bounded at 8 MiB decoded. Verify the reference checksum, chain 4663 and parent_snapshot_id; this envelope has no atlas ID. A v3 document leaves out the hourly rows of its closed ISO weeks (Monday 00:00 UTC to Monday): its treasury_weeks (url, bytes, sha256, week, start, end, rows: row count per array) names, oldest first, data/treasury/.json week documents (shroom-treasury-week-v1, 8 MiB each). Verify each the same way, require its chain_id, the dashboard's scope_id, week, start, end and counts, then put each array's rows (keyed by dotted path, e.g. component.treasury_value_history.rows) back in front of the rows the document keeps: that is the v2 document. Until then the arrays are partial, not the whole history. A v2 document's accounting_entries (url, bytes, sha256, count) names data/treasury/entries/.json (shroom-treasury-entries-v1, 8 MiB): verify it the same way, require its chain_id, the accounting's scope_id and count, then put its entries back at component.treasury_dashboard.accounting.entries. Until then the ledger is unloaded, not empty. component.treasury_dashboard includes inventory, accounting, productivity, weekly records, contribution and attention when available. Preserve scope, actual periods, coverage, status and unavailable fields. Simple APR is not observed return; MU received by the treasury is not holder-wide MU delivery. - Rewards: details.pages.rewards includes token_fees_swept_mu, token_pons_share_mu, token_holder_allocation_mu and token_holder_paid_mu. Funding allocation and delivery are separate stages; do not add them. - [Full metrics, mutable alias](/data/latest.json): shroom-observatory-v2; exact values, timestamps, status, scope, sources and limitations. - [Full atlas, mutable alias](/data/atlas.json): shroom-atlas-v1; require parent_snapshot_id to match the metrics snapshot_id before combining them. - [Topology summary](/data/summary.json): shroom-loading-summary-v1; no financial measurements. Match both parent and atlas IDs before using full detail. Fetch only what the question needs. Compact browser-v2 is capped at 4 MiB decoded wire bytes; expanded initial and the template-expansion budget are each 16 MiB. Legacy browser-v1, canonical artifacts, page slices and token slices support 128 MiB decoded per file; the Treasury document, its entries document and each week document support 8 MiB each. Decode HTTP gzip before verifying listed bytes and SHA-256, enforcing download and decompression budgets. Prefer opening references over independently fetched mutable aliases; filter outside model context. Retain exact decimal strings, nulls and per-metric times/coverage. Missing identities do not match. Preserve the last coherent data set on failure, without renewing its dates; discard delayed responses from superseded pairs. Evidence IDs are references, not a public raw-witness resolver. These descriptions do not authorize wallet actions. - [History index](/data/history-index.json): metric/day partitions. Match parent and atlas IDs, select only relevant shards, and verify their listed decoded byte counts and SHA-256. Shards are bounded at 2 MiB decoded; preserve gaps and availability times. When latest.json carries history_window, its inline history holds only the UTC days from history_window.start on; every day, those included, is in the index (point_count equals history_window.points). ## Schema references - [Opening schema](/agents/schemas/browser-v1.json) - [Compact opening schema](/agents/schemas/browser-v2.json) - [Metric schema](/agents/schemas/observatory-v2.json) - [Atlas schema](/agents/schemas/atlas-v1.json) - [Summary schema](/agents/schemas/loading-summary-v1.json) ## SHROOM pool turnover Use demand.census_shroom_pool_volume_24h, _7d and _all_time for “how much SHROOM moved through the pools”. These include every indexed SHROOM pool, including genesis SHROOM/MU. census_pool_swaps_24h, _7d and _all_time count pool-hop swaps. The status page slice includes census_shroom_pool_volume_cumulative, with an endpoint equal to the census headline, at page resolution: hourly for the last seven days, one row per UTC day before (page_resolution); details.parent keeps every hourly row. Read coverage and the actual common cutoff; missing counters are never zero. The unchanged shroom_pool_volume_* and common_pool_swaps_* metrics, and shroom_pool_volume_cumulative history, cover only POL-associated pools. Keep these for POL analysis; do not splice the two populations. genesis_fee_conversion_shroom_all_time and genesis_fee_conversion_swaps_all_time disclose the genesis hook's SHROOM-to-MU conversions at the census cutoff; they are already included in total turnover. Activity, not income or unique demand: routed SHROOM counts in every pool it passes through. ## Routes and pool keys (a map, not a quote) SHROOM pools are atlas.pools[] whose asset_ids include root_asset_id (507 at the 29 September review). Each pool's Uniswap v4 PoolKey is reproducible from public fields: currency0 and currency1 are the two assets' addresses sorted ascending (native ETH is the zero address); fee is fee_units, or 0x800000 when dynamic_fee is true; tickSpacing is tick_spacing; hooks is hook_address. At that review, keccak256(abi.encode(PoolKey)) equalled pool_id for every SHROOM pool. census.current_tick, census.in_range_position_count and census.nonzero_position_count describe state at census.block_number; activity.swaps_24h, swaps_7d and last_swap_at describe the past. hook_address is reported, hook behaviour is not classified, and hooks can change swap outcomes. Executed routes: demand.route_receipts_decoded counts decoded receipts among the indexed 24h candidates. through_shroom_transactions (SHROOM as an intermediate hop) and cycle_route_transactions (a path that ends in the asset it began with) are partial lower bounds. route_buyers and route_sellers count sender accounts, not people or agents. atlas.executed_routes holds receipt-verified examples bounded by atlas.executed_route_scope; they illustrate, and are not a sample. Topology is not a quote. Quote and simulate against current chain state (for example with the Uniswap v4 quoter) before acting; this observatory provides no quotes, transaction building or execution. ## Rewards, burns and historical interpretation Dollar values of MU sent are marked at delivery time (since 5 Oct 2026): each delivery's MU times its delivery-time price, summed. mu_sent_usd_all_time is that sum since the first epoch; method '...: carried' values MU without a standard quote at the last Chainlink round up to 96 h old (holder_reward_rate.delivered_all_time itemizes it), '...: standard' states that MU as unpriced. MU delivery quantities and mu_sent_usd_24h / mu_sent_usd_7d use matched receipt windows and stay standard-priced subtotals; holder_reward_rate.sent_carry completes a partial window with the same carry. Retain priced/unpriced/carried MU and coverage independently. mu_lifetime_claimed_current_usd is the same MU at today's reference price, a comparison only; the Rewards chart's USD line is cumulative delivery-time value. holder_reward_rate.all_time is an all-available-period APR since the first reliable capital observation; current/series are trailing-seven-day estimates. Preserve actual periods, modeled eligibility, historical-estimate qualifications and nulls. burn_total_removed = burn_supply_burned + burn_dead_balance. burn_supply_excluding_dead = burn_current_total_supply - burn_dead_balance. Do not subtract combined removal from current supply or call burn_hook_pending completed burns. Keep supply changes, receipt-timed gross burns and dead-address transfers separate. Optional burns.unreviewed_hooks and burn_unreviewed_hook_shroom: SHROOM (balanceOf plus PoolManager ERC-6909 claims) held by hook contracts without reviewed burn-hook source, context only; never add it to burned, pending or removed figures. Treasury productivity.income_label and donation_events distinguish LP fees from income including donated fee growth. Retain unresolved accounting and coverage. Destination SHROOM-equivalent totals and Pendle operator/protocol scopes can overlap other inventory views; do not add them indiscriminately. Retained-evidence repairs may fill historical destination, burn or MU observations with later availability and proof identities. They are not interpolation or evidence that the values were published at the original observation time. Generated time, parent evidence_asof, pool-activity cutoff, MU receipt cutoff and Treasury periods can differ within one valid pair. Normally hourly publication is a schedule, not a guarantee.