Files
baya-monorepo/docs/roadmap/index.md
T
2026-08-02 18:33:43 +03:30

6.1 KiB

Roadmap — where it goes next

Last verified: 2026-08-02 against commit cd8144e. Populated by phase 5 of the documentation clean-up chain.

A proposal, not a commitment. The ordering is reasoned and can be overruled; what is not negotiable is that every item traces to a BL-### in status/backlog.md, so nothing here was invented — it was triaged first, in phase 4.

This page marks its own judgement calls. Two kinds of claim appear below: recorded (came from backlog.md, CLAUDE.md, DEPLOY.md, or a product/ decision — check the source, not this page's reasoning) and proposed (this phase's own synthesis — the ranking, the grouping into units, the sizing). Where the two could be confused, it's labeled.

The four documents

File Answers Ordered?
pre-launch.md What must be true before real money moves Yes — but it's a gate, not a priority list. Everything in it blocks launch; none of it is optional
next-up.md What to build next, and why that and not something else Yes — 5 units, sequenced by the principle below
deferred.md What's deliberately not being built, and what would change that No — a record, picked up by its own trigger, not a schedule
tech-debt.md What's getting more expensive the longer it waits No — each item has its own trigger; not a queue

The sequencing principle

Recorded — stated in the phase brief that produced this roadmap, not derived by this phase:

The product's own promise is trust-first and money-holding. So the order is (1) anything that makes a money or trust flow lie to a user, (2) anything that makes a built flow unusable, (3) anything that makes a mocked flow real, (4) new surface area.

This principle was given, not derived — it isn't this phase's invention. Applying it to the actual 262 open backlog items — which item is a "lie" versus merely "unusable," which five units to carve out of 86 major items, how to size each — is this phase's proposal, in next-up.md.

The proposed order — this phase's proposal

# Unit Category Closes (blockers) Size
1 Nurse verification stops lying about status 1 — trust lie BL-010 L
2 Checkout stops lying about money and time 1 — money lie BL-006 M
3 Admin RBAC: give seeded admins the claim the code checks for 2 — unusable BL-001, BL-002 M
4 De-mock refunds and BNPL 3 — mocked→real BL-007, BL-008, BL-009 L
5 De-mock nurse payouts 3 — mocked→real BL-012, BL-016 L

One tension, stated plainly rather than hidden: unit 3 (RBAC) has zero prerequisites and unlocks more downstream work than any other single item — 11 of 14 business areas, per implemented.md. A reader who weighs "unlocks the most" above "is technically a lie versus merely unusable" would be right to run it first. It's ranked third here because the stated principle was applied literally. This is exactly the kind of call this document exists to make visible and overridable — see next-up.md for the full reasoning per unit, including two strong candidates (patient/care records, partner-center) that didn't fit the 3-5 slot cap and are named as the next two in line.

Running in parallel with all five, on its own track: everything in pre-launch.md. None of it is feature work, so none of it competes with the units above for the same engineering time in the same way — but none of it is optional before real users arrive, regardless of which unit above ships first.

What we're not doing, and why — pointer

The standing answer to "what are we not doing" is deferred.md: 51 items (43 recorded as a themed group in backlog.md, 8 more filed by severity elsewhere but also carrying deferred status), each with the trigger that would pull it forward, plus the 8 unbuilt product tables named individually. None of them were re-decided here — phase 5's job was to record them faithfully, not re-litigate phase 4's or product/'s calls. The one exception: BL-245's own trigger named this phase directly ("phase 5 verification pass"), so it was executed rather than deferred again — see decisions.md for the finding.

One item already known for pre-launch.mdrecorded, from root CLAUDE.md and DEPLOY.md

The repo contains live credentials on purpose — a deliberate pre-launch trade for a demo deployment, documented in root CLAUDE.md §6 and DEPLOY.md. Before onboarding real users those values must be rotated and the secret half moved out of git.

One value is load-bearing and must never be rotated in place: Seams:FieldEncryption:Key and :HashKey decrypt every encrypted column and derive the PhoneHash every login looks up. Changing them without a migration locks every account out — pre-launch.md §1 spells out what that migration actually requires, since "never change it" and "never be able to change it" are different problems.

How to use this page

Pick the next piece of work from the table above, or from pre-launch.md if a launch date is what's driving the decision. If neither fits, tech-debt.md names what's quietly getting more expensive, and deferred.md names what's already been decided against — check there before proposing something new, since it might already have a recorded reason and a trigger.