Backlog
The roadmap says what belongs together and why. This page says what order.
Everything starts in the pool at the bottom and works its way up. The bands are not sprints and they are not dates — they are a rough answer to "what would we pick up next", so that nobody has to re-derive it from twelve phases every time something finishes.
:::note The order is loose, and expected to move
Nothing on this page is a commitment to sequence. It is one defensible ordering, written down so there is something to argue with — moving an item up because it turned out to matter more, or down because it turned out to be harder, is the page working rather than the page being wrong.
What is not loose: the dependency arrows in the roadmap. An item cannot jump above something it structurally needs, however much we want it. :::
How to read it
| Marker | Means |
|---|---|
| Decide | A question, not a build. Costs an afternoon, unblocks weeks — see decisions we owe |
| Build | Actual work |
| 🔑 | On the critical path. Something expensive is waiting behind it |
Status lives on the roadmap, not here. That page's tables are the record of what has shipped; this page is only the running order. Two places tracking "done" is two places to get it wrong.
Now — the core
The bit you cannot ship without. Deliberately short: if this band grows past about ten items it has stopped being "now" and started being "everything".
| # | Item | Kind | Why it is here |
|---|---|---|---|
| 1 | Identity — supersede ADR-0007 🔑 | Decide | Six phases wait on it and it is the hardest thing to retrofit |
| 2 | Accounts and identity, with device-id migration | Build | |
| 3 | Image storage and delivery — bucket, sizes, CDN | Decide | Nothing visual works until this is settled |
| 4 | Image storage and delivery | Build | |
| 5 | Crag view — sectors in walking order, parking, approach | Build | The screen the whole app is an excuse for |
| 6 | Access restrictions, prominent and dated | Build | Safety, cheap, and belongs with the crag view rather than after it |
| 7 | Sector view — topo viewer, pinch, pan, route lines | Build | TopoOverlay already draws lines |
| 8 | Tap a line to select a route; tap a route to light its line | Build | The core interaction. Everything else is navigation to reach it |
| 9 | Route detail — description, grade, gear, first ascent | Build | |
| 10 | Download this crag, manually, with size and progress | Build | Manual first; automatic is a later problem |
This band is done when you can log in, pick a crag, look at a sector, tap a line, read the route, download the lot, and do all of it again in airplane mode.
Next — a guidebook you would actually take
| # | Item | Kind | Why it is here |
|---|---|---|---|
| 11 | Multi-pitch and alpine data model 🔑 | Decide | Free to decide now, a migration to decide later. Build is in Then |
| 12 | Route tag vocabulary | Decide | Free text fragments within a week and cannot be un-fragmented |
| 13 | Route tags and pills | Build | Safety tags as their own class |
| 14 | Real data for at least two crags | Build | A licensing question, not a technical one — start it early, it has lead time |
| 15 | Filter by grade band, type, stars and tag | Build | gradeBand is already stored for exactly this |
| 16 | Offline search across everything downloaded | Build | SQLite FTS5. No network path at all |
| 17 | Approximate grade conversion beside the published one | Build | ADR-0010 |
| 18 | Log an ascent, offline, through the outbox | Build | Schema and sync already support it |
| 19 | Logbook screen — history, filters, totals | Build | |
| 20 | Tab structure | Decide | Cheap, and it gets more expensive with every screen built against the old one |
| 21 | The five tabs — Nearby, Map, Plan, Logbook, Feed | Build | Feed tab can land empty; the slot is the point |
Then — the things a book cannot do
| # | Item | Kind | Why it is here |
|---|---|---|---|
| 22 | Offline map tiles | Decide | Mostly a licensing question wearing a technical hat |
| 23 | Approach — parking pin, walk-in, offline tiles | Build | "Where do I park" comes before "which route" |
| 24 | Pitches as first-class records | Build | Against the model decided at #11 |
| 25 | Descent and retreat as their own records | Build | More days go wrong on the way down |
| 26 | Schematic pitch topos | Build | A 300 m route does not fit a photograph |
| 27 | Dated condition reports that visibly age | Build | Alpine facts decay; the record has to say when it was last true |
| 28 | Storage tiers and eviction | Decide | Cross-cutting to sync |
| 29 | Three-tier auto-download with an LRU budget | Build | The crag you looked at on Thursday is there on Saturday |
| 30 | Partner tagging and mutual ticks | Build | Needs a consent model — an unaccepted tag must not create a tick |
| 31 | Wishlist, ticklist and trip planning | Build | Also what makes pre-emptive download worth having |
After that — the community, and paying for it
Everything in this band waits on identity, and most of it waits on a licence.
| # | Item | Kind | Why it is here |
|---|---|---|---|
| 32 | Contribution licence 🔑 | Decide | Cannot be applied retrospectively. Must land before contribution one |
| 33 | Add a crag from the crag, fully offline | Build | The keystone — everything downstream consumes what it produces |
| 34 | Draw a route line onto a photo, in-app | Build | The hard, valuable one |
| 35 | Corrections as field-level proposals, with reasons | Build | |
| 36 | Route and crag change history, visible in the app | Build | The best argument that we are more trustworthy than the book |
| 37 | One-tap problem reports and immediate safety banners | Build | No review latency on this path |
| 38 | Trust and moderation model | Decide | The other one where the failure mode is somebody getting hurt |
| 39 | Moderation queue and reviewer tooling | Build | Probably a small web app |
| 40 | Maintainer roles, attribution, crag adoption | Build | |
| 41 | Revenue model | Decide | Determines what the community is incentivised to document |
| 42 | Contributor splits and what counts as use | Decide | Whatever is chosen becomes what people optimise for |
| 43 | Attribution ledger, payouts, contributor dashboard | Build | KYC and tax are a real cost, not a footnote |
Later — reach
| # | Item | Kind | Why it is here |
|---|---|---|---|
| 44 | Follow, feed, sessions, reactions | Build | ADR-0009 |
| 45 | Crag conditions posts, expiring after 48 hours | Build | The most useful post on any climbing feed |
| 46 | Sharing, redistribution and quiet crags | Decide | A share is redistribution under somebody else's licence terms |
| 47 | Share cards, Instagram Stories, sticker pack | Build | The cheapest growth the product has |
| 48 | Live camera, stage A — which topo am I looking at | Build | Useful on its own, and needs nothing new in the model |
| 49 | Live camera, stages B and C — homography, anchoring | Build | Where it becomes magic |
| 50 | 3D asset pipeline | Decide | Constrains the #33 capture flow, which is much earlier |
| 51 | Sector geometry, bolts, gear placements, beta | Build | |
| 52 | External references and UKC | Decide | Start with a conversation, not a scraper |
| 53 | UKC import, route matching, full export | Build | The cost of entry for anyone with fifteen years of ticks |
The pool
Everything else, and where everything starts.
The wishlist is the pool: ideas nobody has committed to, captured so the architecture does not rule them out by accident. It is deliberately unordered, because ranking things nobody has committed to produces an argument about the ranking.
An item leaves the pool by being promoted into a band on this page, which is also the moment it gets a phase on the roadmap and, if it carries a technical commitment, an ADR.
Currently in the pool: bolt condition history, goal-driven training, the conditions answer, access alerts, offline crag sharing between phones, a web contributor tool, crag ethics and etiquette, first-ascent stories, partner finding, publisher licensing, Apple platform extras, and everywhere that is not the UK.
Keeping this page honest
- Order changes freely. Moving an item is not a decision and does not need an ADR.
- Status does not live here. Shipping something means updating the
roadmap table, per
CLAUDE.md. - Adding something new means adding it to the pool, not to Now. Things earn their way up.
- If "Now" has more than about ten items, it is not Now. Push something down rather than widening the band.