Where this goes next. And what is in the way.
No quarters, no rockets, no dates we would quietly move later. Five chapters, every item carrying the state it is really in, including the ones that are still an open question and the ones we have decided not to do at all. Ordered by subject, not by date: the last chapter is the one that has to be true before any of the others ship.
It has to be an app. Android goes first, iOS comes soon.
The site already works in a phone browser, which is not the same as being on a phone. A web page has to beg for the motion sensor and can be handed zeroes by an in-app browser, the position only arrives when something asks for it, there is no icon on the home screen, and the wallet has to be woken up every time. One app builds for both stores out of one codebase, so neither one is waiting on the other to be written.
Signed, downloadable from this site, and installable today on Android 7 and up. Location is the only permission it ever asks you for, and never in the background: the catch happens with the screen open. Two more that its libraries wanted on the way in, for recording audio and for drawing over other apps, were cut from the manifest before the build. One stayed, and since the file is yours to open it gets named here rather than found: the sensors package declares physical activity for a pedometer this app never calls, so it sits in the manifest and nothing reads it. The Play listing follows. The app is not waiting for it.
iOS, very soon after.
buildingNot a second project waiting for its turn. One codebase produces both apps, so the iOS build already exists and already runs on a phone, with the same map, the same catch, the same wallet. What stands between it and the App Store is the paperwork around a listing rather than anything left to write, and it lands close behind Android.
One account, two screens.
buildingSigning in with the same email on a laptop and on a phone has to land in the same wallet, holding the same catches. It does today. The way to break it is to offer a login method on one side and not the other, and the failure is silent: no error, just a second person with an empty wallet and your name on it. There is no merge, in either direction, from either side. So the only strategy available is never creating the split.
Asia, for real. A rounding error is not a region.
The map carries 121 cities across 53 countries today, and 16 of those cities are in Asia. Five in Japan, three in India, two in Korea and one each in Hong Kong, Malaysia, Singapore, Taiwan, Thailand and the Philippines. Half the planet lives there. It is the largest single hole in the map, and it does not close by adding pins.
Doors that actually exist there.
nextThe spawn table assumes a company has a flagship store with its own name over the door. That is a Western assumption. Bangkok has Apple Stores; Hanoi has none, and it has authorised resellers instead: same product, same logo, different sign. Those become doors, under the same rule as everywhere else: a ticker with no door does not get listed, and a door has to be somewhere a person can actually stand.
Midnight, but whose midnight.
nextDrops refill at 00:00 UTC. That is nine in the morning in Tokyo, eight in Manila, half past five in Mumbai. The reset lands in the middle of a working day and everything is gone hours before anybody walks home. Refill moves to local midnight, per city. It is a small change to one scheduled job, and it is the entire difference between an evening walk and an empty map.
Seven languages, map included.
nextJapanese, Korean, Simplified Chinese, Thai, Vietnamese, Bahasa Indonesia, Hindi. The interface and the map labels both, because a map in Latin script over Bangkok is a tourist map, and this is a game about knowing your own street.
A till a shop owner in Osaka would use.
open questionThe shop owner who would sponsor a spot does not hold ETH and is not going to start. The Solana route already proves the shape of the answer: money lands on whatever rail the sponsor is already standing on, a dollar figure gets credited, and nothing bridges. Which rails, in which country, is the part still open.
Mainland China.
not plannedNot on this list, and saying so is more useful than a maybe. A wallet, a foreign chain and a share of a foreign company are three separate problems there, and translating the interface solves none of the three. Hong Kong and Taiwan are on the map already.
Where a fragment is worth a day. Go carefully, or do not go.
Three cities on the entire African continent today. The case for going is the best one this project has, and it is word for word the danger: two dollars of Apple is a coffee in Paris and half a day of work in Lagos. The arithmetic that makes this matter somewhere is the arithmetic that makes farming it rational. And a farm is not a walker with a different passport, it is the thing that empties the vault for everybody else.
Caps that know the local wage.
nextOne global cap per door is either generous enough to be farmed in Nairobi or mean enough to be pointless in Zurich. There is no single number that is both. Caps get banded by local purchasing power, per door, and end up boring in both places, which is the goal.
Lite mode.
nextThe map is 3D vector tiles and it quietly assumes a recent phone on wifi. A catch has to work on a four-year-old Android over a 3G connection: flat tiles or none at all, badge art deferred, under a megabyte between opening the app and tapping.
An attested lane.
open questionWhere an hour of walking is cheap, an honest walker and a farm look identical from a server. The lane through those cities would run on attestation from the operating system: the phone proving it is a phone, rather than our code asking it nicely. That is a strictly worse product for the person holding it, and it may be the only version we can responsibly open there. Not decided.
Selling this as an income.
not plannedSomebody will describe it that way regardless. We will not. A day of wages for a day of walking is not a product, it is a payroll with no employer and no floor, and the caps exist precisely so it cannot quietly turn into one.
Take the money where it already is. Nothing bridges.
A sponsorship is priced in dollars and paid out of the treasury, so the sponsor's coins and the walker's shares were never the same money to begin with. That is what turns a new payment rail into a week of work instead of a bridge, an audit and a wait. It also means that a chain with no connection to Robinhood Chain at all is still a chain we can take money on.
Multi-chain support for sponsors.
built, darkSolana is the first rail, and it is built, merged and switched off. Every spot gets a deposit address of its own, derived from a single secret so nothing has to be stored. Any token is accepted, and each arrival is priced by asking a router what that exact quantity would really sell for, which is the defence against a bag that displays at $2,000 and sells for $80. What has already been counted is recorded per token, so verifying twice cannot inflate a spot and a top-up prices only the new arrival. Base comes after it, then whatever sponsors actually turn out to hold. The pattern generalises to a new chain in a week precisely because it refuses to bridge: one derived address, one honest quote, one credit counted once.
in the wayThe switch, deliberately: three separate variables have to be true on purpose before a single lamport is taken. And sweeping a deposit into the treasury needs to be somebody's habit rather than somebody's plan.
Sweeping without a human.
nextMoving a deposit into the treasury, and refunding a token that could not be priced, are done by hand with a script. Nothing in the running app can spend from a deposit address, which is the right default and the reason this is manual. Correct for the first ten sponsors. Untenable at the hundredth.
The shop, in $GRASS.
nextTen items, every one paid in $GRASS with half of it burned on the way through. The rule the whole shop obeys: $GRASS buys memory, identity, constraint and the world, never a catch. Nothing on sale can change an amount, a radius, a cooldown or a cap, because a walker's history is the one thing that has to stay unbuyable.
in the wayA gas faucet. $GRASS can be burned straight out of a wallet but has no permit(), so a gasless approve is impossible and a new walker holding zero ETH cannot spend a token they own. An endpoint has to widen before anything can be sold at all.
The split is already a contract.
liveFee revenue is cut in two by a contract nobody can redirect: one share to the treasury that buys the stock hidden on the map, the other to the wallet that buys $GRASS back and burns it. Both destinations are immutable, the ratio between them is a number you can read off the contract rather than off this page, and no key of ours can send that money anywhere else. What is still a key rather than a contract is the treasury sitting at the end of it, and that is the piece that comes next.
Scale the structure first. Then everything standing on it.
Listed last because it is the least fun to read, and built first because every chapter above it rests on this one. Going from a hundred cities to a thousand is not a bigger map, it is the same machine asked to carry ten times the weight, and the work is making that boring rather than exciting.
Bounds that hold at any size.
buildingEverything that spends (the vault, the keeper, a sponsor's daily budget) gets a ceiling it cannot cross and an alarm that reaches a person rather than a log file. A limit is cheap to add before the growth and expensive to add during it, which is the whole reason this chapter comes first.
Numbers we can watch.
buildingCatches, refills, spend per city, per door, per hour. Growth you cannot see is growth you cannot steer, and at a thousand cities the first sign that something is off has to be a chart somebody is already looking at.
One source of truth for the rules.
nextRadius, caps, cooldowns: one place that decides them, readable by the site and applied by the server, so the number a walker is shown and the number enforced on the walk cannot drift apart. The endpoint that changes them can only ever tighten them.
A walk is never wasted.
nextCatch first, worry about gas afterwards: a redemption relayed for a walker with no ETH, a key that survives the page, and standing counted at redemption rather than at the tap. Somebody who walked to the right place and tapped has done their part of this.
Where it works, region by region.
nextThe map is global and the rules are not. Eligibility gets stated country by country rather than left to the reader to work out. And where the answer is genuinely unsettled, saying so is the answer.
Live, today. Countable, today.
A roadmap with no past is a wishlist. Everything below is running right now, and most of it can be checked on a public chain without asking us anything.
Tokens sit in a public contract and only move against a signed voucher.
Every balance behind the map is countable on-chain, by you, right now.
Travel plausibility, plus the tells a mock GPS provider cannot help leaving.
Anyone can put a budget on their own address and pay per arrival.
A sponsor can hand out their token instead of a share of a company.
An hourly job that buys stock and refills whatever ran dry overnight.
One whole share, one place, one hour, one winner, one code stuck on site.
A handle, a catch history, and a page worth sending to somebody.
The whole protocol is written up on the docs page, and the vault is countable on proof of reserves.

