Project Management
How Kimosabe.AI is built, tracked, released, and reviewed. Lightweight on purpose — the team is small and the product is security-critical, so process exists to prevent silent regressions, not to generate paperwork.
Operating model
- Single trunk.
mainis always deployable. No long-lived branches. - Slice-then-ship. Every change is the smallest atomic increment that keeps
maindeployable. - Docs are first-class. Code without an updated requirement ID, ADR (when material), and CHANGELOG entry is not done.
Cadence
| Beat | Frequency | Output |
|---|---|---|
| Daily build | Every push to main |
Auto-deploy to preview; smoke test |
| Weekly review | Friday | CHANGELOG cut, requirement-coverage report, dependency scan |
| Release | Every 2 weeks | Tagged release, release notes, security checklist signed |
| Phase review | End of each phase in ROADMAP.md |
Retro, ADR backfill, next-phase scope freeze |
| Quarterly | Every 3 months | Threat-model review, pricing review, dependency audit |
| Annual | Every 12 months | Third-party security audit (Phase 3+), SOC 2 controls review (Phase 5+) |
Phases (single source of truth = ROADMAP.md)
Phase 1 — MVP (now) ████████████████░ ≈ 95%
Phase 2 — Groups + verified ░░░░░░░░░░░░░░░░░ 0%
Phase 3 — Metadata reduction ░░░░░░░░░░░░░░░░░ 0%
Phase 4 — Off-grid (native) ░░░░░░░░░░░░░░░░░ 0%
Phase 5 — Super-app surfaces ░░░░░░░░░░░░░░░░░ 0%
Phase 6 — AI agents ░░░░░░░░░░░░░░░░░ 0%
Each phase has:
- a scope (locked at phase start, only changeable via ADR)
- an exit criterion (concrete, testable — see
REQUIREMENTS.md) - a risk register (see below)
Definition of Ready (DoR)
Before work starts on a slice:
- Linked to one or more requirement IDs (
FR-NN/NFR-NN/SR-NN) - Scope written in 1–3 sentences
- If touching crypto, auth, or data residency → ADR drafted
- If touching the schema → migration outlined
- If user-visible → mobile (430px) layout sketched
Definition of Done (DoD)
Before a slice merges to main:
- All linked requirement IDs satisfied (manual or automated check)
- No new
axe-coreviolations (NFR-08) - No new dependency vulnerabilities (
bun auditclean for high/critical) - No
console.errorin happy-path manual run - Updated CHANGELOG entry (Keep-a-Changelog format)
- If schema changed → migration applied; types regenerated
- If brand or pricing changed → memory updated (
mem://)
RACI (current team)
| Activity | R | A | C | I |
|---|---|---|---|---|
| Product direction | Founder | Founder | — | All |
| Architecture | Founder | Founder | Lovable Agent | All |
| Crypto changes | Founder | Founder | External reviewer (Phase 3+) | All |
| Brand & copy | Founder | Founder | — | All |
| Security disclosure response | Founder | Founder | Legal counsel | Reporter |
Roles expand at Phase 2 (first hire likely a senior platform engineer) and Phase 4 (native lead).
Risk register
| ID | Risk | Likelihood | Impact | Owner | Mitigation |
|---|---|---|---|---|---|
| R-01 | E2EE-hostile US legislation | Medium | Critical | Founder | Public sunset commitment; legal counsel; jurisdictional contingency |
| R-02 | Crypto primitive break (e.g. P-256, AES-GCM) | Low | Critical | Founder | Standard primitives only; rotation playbook in SECURITY.md |
| R-03 | Recovery-key UX failure (mass support load) | Medium | High | Founder | Onboarding flow, /trust page, in-app reminders before destructive ops |
| R-04 | PWA hostility from Apple/Google | Medium | Medium | Founder | Native client (Phase 4) shares identity keys |
| R-05 | Spam / abuse on metadata-blind network | High | Medium | Founder | Rate limits, recipient allow-lists, reportable handles |
| R-06 | Lovable / Cloudflare lock-in | Low | Medium | Founder | Standard Postgres + Workers; export tooling validated each release |
| R-07 | Founder bus-factor | Medium | Critical | Founder | All decisions in this repo; mem://; ADRs |
Reviewed at every phase review. New risks added by anyone, retired only by ADR.
Tooling
| Concern | Tool |
|---|---|
| Source + sync | GitHub ↔ Lovable bidirectional |
| Build + edge deploy | Lovable → Cloudflare Workers |
| Backend | Lovable Cloud (Supabase) — DB, Auth, Storage, Edge Functions, Realtime |
| Migrations | Lovable migration tool (DO NOT hand-edit) |
| Issue tracking | GitHub Issues with phase/N, req/FR-NN, risk/R-NN labels |
| Decision records | docs/adr/NNNN-title.md (MADR template) |
| Changelog | CHANGELOG.md (Keep a Changelog 1.1) |
| Versioning | Semantic Versioning 2.0 for public artifacts |
| Commit style | Conventional Commits 1.0 |
Communications & memory
- Project memory (
mem://) records sticky rules: brand, recovery posture, prohibited patterns. The Lovable Agent reads this every turn. Update when decisions change. /trustis the public threat model. Update with every shipped change that affects user-visible privacy posture.README.mdis the entry point. Every new phase or top-level doc is linked from there.
Definition of "shipped"
A change is shipped when:
- It is on
main. - It is deployed to
kimosabe.ai. - The CHANGELOG names it.
- If user-visible, the
/trustpage reflects any new privacy implications. - If a requirement is satisfied, that ID flips ✅ in
REQUIREMENTS.md.
Anything less is "in progress."
