Files
Inboxintel/docs/discovery/10-git-plan.md
T
cesnimda 2b6a0ea3f0
CI / backend (pull_request) Successful in 58s
CI / frontend (pull_request) Successful in 17s
Security / secrets (pull_request) Successful in 5s
Security / dependencies (pull_request) Successful in 54s
docs(discovery): add product blueprint + multi-provider platform design
World-class discovery specification (design phase, no code):
- Executive summary, architecture review, competitor + user research
- UX/UI redesign + design system + themes, flagship search redesign
- AI strategy (local Ollama, RTX 3080) + feature catalogue
- Technical architecture, roadmap (MVP->v3), git plan, risks
- Multi-provider platform: IEmailProvider abstraction, OAuth-as-login,
  unified DB schema, settings + feature flags, admin/RBAC, security model,
  6-phase implementation plan, migration guide

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 19:41:40 +02:00

61 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 10 — Git Implementation Plan (Phase 10)
Turns the [roadmap](09-roadmap.md) into executable Git work, on the workflow already in
place ([../WORKFLOW.md](../WORKFLOW.md)): trunked `develop`/`main`, Conventional Commits,
PR-gated CI/Security, auto-deploy to staging, tag-gated production.
## Structure: Epics → Features → Tasks
- **Epic** = a roadmap theme → a milestone + a long-lived integration effort.
- **Feature** = one shippable slice → one `feature/*` branch → one PR into `develop`.
- **Task** = one atomic commit (conventional) within a feature branch.
## Epics (mapped to releases)
| Milestone | Epic | Example feature branches |
|-----------|------|--------------------------|
| **v1.0.0** | `epic/design-system` | `feature/design-tokens` · `feature/app-shell` · `feature/themes-dark-light` |
| **v1.0.0** | `epic/search-core` | `feature/search-ranking` · `feature/fts-multifield` · `feature/search-fuzzy-trgm` · `feature/search-chips` · `feature/saved-recent-searches` · `feature/search-why-matched` · `feature/keyset-pagination` |
| **v1.0.0** | `epic/perf-and-debt` | `feature/trgm-indexes` · `feature/virtualised-list` · `feature/code-splitting` · `fix/ef-queryfilter-warning` · `feature/language-aware-fts` |
| **v1.0.0** | `epic/ai-foundation` | `feature/ai-abstraction` · `feature/embedding-provider` · `feature/ai-vram-guard` · `feature/ai-thread-summary` · `feature/ai-followup-detect` · `feature/ai-reply-suggest` |
| **v1.1.0** | `epic/assisted-search` | `feature/nl-search-parse` · `feature/people-search` · `feature/attachment-filename-search` · `feature/search-bulk-actions` |
| **v1.1.0** | `epic/ai-productivity` | `feature/inbox-brief` · `feature/task-calendar-extract` · `feature/categorise-tail` · `feature/priority-v1` |
| **v1.2.0** | `epic/semantic` | `feature/pgvector-schema` · `feature/embedding-backfill` · `feature/semantic-search` · `feature/find-similar` · `feature/near-dup` · `feature/thread-insights` |
| **v2.0.0** | `epic/ambitious-ai` | `feature/ask-your-inbox-rag` · `feature/entity-facets` · `feature/attachment-ocr` · `feature/phishing-reasoning` · `feature/knowledge-graph` |
| **v3.0.0** | `epic/platform` | `feature/rules-engine` · `feature/collaboration` · `feature/multi-account` · `feature/plugin-api` · `feature/mobile` |
## Branch naming
- `feature/<kebab-scope>` · `fix/<kebab>` · `hotfix/<kebab>` (off `main`) · optional
`release/x.y.0` for stabilisation. Epics tracked via milestone/label, not a long branch
(avoid merge hell); features integrate continuously into `develop`.
## Commit strategy
- **Conventional Commits** (already used): `type(scope): summary`. Types drive SemVer:
`feat`→minor, `fix`→patch, `feat!`/`BREAKING CHANGE`→major.
- One logical change per commit; **docs updated in the same commit/PR** as the behaviour
they describe (enforced by review checklist — see below).
## PR strategy
- `feature/* → develop`, **squash-merge**; `develop → main`, **merge commit** (release boundary).
- **Required checks** (already enforced): `CI/backend`, `CI/frontend`, `Security/secrets`,
`Security/dependencies`. Merge to `develop` auto-deploys **staging**.
- **PR checklist:** tests added (unit + integration for API changes) · docs updated ·
AI features have a **Null/AI-off path** · no secret committed · perf-sensitive paths have
an index/plan note.
## Release milestones (tags on `main`)
| Tag | Contents | Gate |
|-----|----------|------|
| `v1.0.0` | Redesign + deterministic search + AI foundation & first wins | Redesign parity + search benchmarks green |
| `v1.1.0` | Assisted search + AI productivity | NL parse accuracy + extraction quality bar |
| `v1.2.0` | Semantic tier | Backfill complete + hybrid-rank quality bar |
| `v2.0.0` | Ambitious AI (RAG, vision, graph) | RAG citation accuracy + VRAM stability |
| `v3.0.0` | Platform (collab, rules, plugins, mobile) | — |
- Cutting a tag = the production-promotion action (see [../WORKFLOW.md](../WORKFLOW.md) §56);
`deploy-prod.yml` fires on `v*` once the Linux server + its runner exist.
- Interim work ships as `0.x`/pre-release increments on `develop`; `v1.0.0` is the first
"world-class" cut.
## Docs-alongside-code (hard rule)
Every feature PR updates the relevant doc: `docs/discovery/*` decisions graduate into
`docs/` living docs (architecture, search, AI, API reference) as they're implemented, and
`CHANGELOG.md` gains an entry. Discovery docs are the *source*; implementation keeps them true.