Skip to main content

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

MarkerMeans
DecideA question, not a build. Costs an afternoon, unblocks weeks — see decisions we owe
BuildActual 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".

#ItemKindWhy it is here
1Identity — supersede ADR-0007 🔑DecideSix phases wait on it and it is the hardest thing to retrofit
2Accounts and identity, with device-id migrationBuild
3Image storage and delivery — bucket, sizes, CDNDecideNothing visual works until this is settled
4Image storage and deliveryBuild
5Crag view — sectors in walking order, parking, approachBuildThe screen the whole app is an excuse for
6Access restrictions, prominent and datedBuildSafety, cheap, and belongs with the crag view rather than after it
7Sector view — topo viewer, pinch, pan, route linesBuildTopoOverlay already draws lines
8Tap a line to select a route; tap a route to light its lineBuildThe core interaction. Everything else is navigation to reach it
9Route detail — description, grade, gear, first ascentBuild
10Download this crag, manually, with size and progressBuildManual 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

#ItemKindWhy it is here
11Multi-pitch and alpine data model 🔑DecideFree to decide now, a migration to decide later. Build is in Then
12Route tag vocabularyDecideFree text fragments within a week and cannot be un-fragmented
13Route tags and pillsBuildSafety tags as their own class
14Real data for at least two cragsBuildA licensing question, not a technical one — start it early, it has lead time
15Filter by grade band, type, stars and tagBuildgradeBand is already stored for exactly this
16Offline search across everything downloadedBuildSQLite FTS5. No network path at all
17Approximate grade conversion beside the published oneBuildADR-0010
18Log an ascent, offline, through the outboxBuildSchema and sync already support it
19Logbook screen — history, filters, totalsBuild
20Tab structureDecideCheap, and it gets more expensive with every screen built against the old one
21The five tabs — Nearby, Map, Plan, Logbook, FeedBuildFeed tab can land empty; the slot is the point

Then — the things a book cannot do

#ItemKindWhy it is here
22Offline map tilesDecideMostly a licensing question wearing a technical hat
23Approach — parking pin, walk-in, offline tilesBuild"Where do I park" comes before "which route"
24Pitches as first-class recordsBuildAgainst the model decided at #11
25Descent and retreat as their own recordsBuildMore days go wrong on the way down
26Schematic pitch toposBuildA 300 m route does not fit a photograph
27Dated condition reports that visibly ageBuildAlpine facts decay; the record has to say when it was last true
28Storage tiers and evictionDecideCross-cutting to sync
29Three-tier auto-download with an LRU budgetBuildThe crag you looked at on Thursday is there on Saturday
30Partner tagging and mutual ticksBuildNeeds a consent model — an unaccepted tag must not create a tick
31Wishlist, ticklist and trip planningBuildAlso 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.

#ItemKindWhy it is here
32Contribution licence 🔑DecideCannot be applied retrospectively. Must land before contribution one
33Add a crag from the crag, fully offlineBuildThe keystone — everything downstream consumes what it produces
34Draw a route line onto a photo, in-appBuildThe hard, valuable one
35Corrections as field-level proposals, with reasonsBuild
36Route and crag change history, visible in the appBuildThe best argument that we are more trustworthy than the book
37One-tap problem reports and immediate safety bannersBuildNo review latency on this path
38Trust and moderation modelDecideThe other one where the failure mode is somebody getting hurt
39Moderation queue and reviewer toolingBuildProbably a small web app
40Maintainer roles, attribution, crag adoptionBuild
41Revenue modelDecideDetermines what the community is incentivised to document
42Contributor splits and what counts as useDecideWhatever is chosen becomes what people optimise for
43Attribution ledger, payouts, contributor dashboardBuildKYC and tax are a real cost, not a footnote

Later — reach

#ItemKindWhy it is here
44Follow, feed, sessions, reactionsBuildADR-0009
45Crag conditions posts, expiring after 48 hoursBuildThe most useful post on any climbing feed
46Sharing, redistribution and quiet cragsDecideA share is redistribution under somebody else's licence terms
47Share cards, Instagram Stories, sticker packBuildThe cheapest growth the product has
48Live camera, stage A — which topo am I looking atBuildUseful on its own, and needs nothing new in the model
49Live camera, stages B and C — homography, anchoringBuildWhere it becomes magic
503D asset pipelineDecideConstrains the #33 capture flow, which is much earlier
51Sector geometry, bolts, gear placements, betaBuild
52External references and UKCDecideStart with a conversation, not a scraper
53UKC import, route matching, full exportBuildThe 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.