Files
Marlin/README.md
thePR0M3TH3AN f6f6899f97 Add MIT license
2025-05-20 23:14:50 -04:00

89 lines
13 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

# Marlin ― Delivery Roadmap **v3.2**
*Engineeringready revised 20250518*
> **Legend** engineering artefact uservisible deliverable
---
## 0 · Methodology primer  (what “Done” means)
| Theme | Project ruleofthumb |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| **Branching** | Trunkbased. Feature branch → PR → 2 reviews → squashmerge. |
| **Spec first** | Each epic begins with a **Design Proposal (DPxxx)** in `/docs/adr/` containing schema diffs, example CLI session, perf targets. |
| **Coverage** | Tarpaulin gate ≥ 85% **on lines touched this sprint** (checked in CI). |
| **Perf gate** | Coldstart P95  3 s on 100k files **unless overridden in DP**. Regressions fail CI. |
| **Docs** | CLI flags & examples land in `README.md` **same PR**. Docs tables (CLI cheatsheet, TUI keymap) are autogenerated during the build. |
| **Demo** | Closing each epic yields a ≤2min asciinema or GIF in `docs/demos/`. |
---
## 1 · Birdseye table (engineering details + deliverables)
| Phase / Sprint | Timeline | Focus & Rationale | ✦ Key UX Deliverables | △ Engineering artefacts / tasks | Definition of Done |
| ----------------------------------------------- | ----------------------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| **Sprint0 — Bootstrap & CI Baseline** | **2025Q2<br>(now  30 May)** | CI scaffolding, coverage, crate split | — | • Split repo into **`libmarlin` (core)** + **`cli-bin`** + **`tui-bin`** <br>• Tarpaulin coverage + Hyperfine perf jobs wired <br>`build.rs` renders CLI cheatsheet from `commands.yaml` <br>• Docs / cheatsheet autogen step in GitHub Actions | `cargo test --all` passes with coverage gate  85%; docs artefacts appear in build; crates compile. |
| **Sprintα — Bedrock & Metadata Domains** | **31 May  13 Jun 2025** | Lock schema v1.1, first metadata objects | • CLI stubs: `marlin link / coll / view` <br>`marlin demo` interactive tour | • **DP001 Schema v1.1** (ER + migration scripts) <br>• Unit tests (`escape_fts`, `determine_scan_root`) <br>• GitHub Action for SQL dryrun | 100% migrations green; demo prints ✅; logo badge shows schema version. |
| **Epic1 — LiveWatch Mode & Backup Prune** | **2025Q2** | Continuous indexing via FS events; backups never explode | • `marlin watch <dir>` (inotify / FSEvents) <br>`backup --prune N` (autoprune pre and postcommand) | • **DP002** filewatch lifecycle & debounce strategy <br>• Changetable schema storing dirty file IDs <br>• Nightly prune CI job | 8h stresswatch alters 10k files  <1% missed; backup dir size  N; watch CPU idle <3%. |
| **Epic2 — Dirtyscan optimisation** | **2025Q2** | Reindex only paths marked dirty by watch table | `scan --dirty` | Reuse changetable from watch; Hyperfine benchmark script committed | Dirtyscan runtime 15% full scan on 100k corpus; bench job passes. |
| **Phase3 — Content FTS + Annotations** | 2025Q3 | Grep snippets, inline notes | `search -C3` grepstyle context <br>`annotate add/list` | • **DP004** contentblob strategy (inline vs exttable) <br>`syntect` highlight PoC | Indexes 1GB corpus ≤30min; snippet CLI golden tests pass. |
| **Phase4 — Versioning & Deduplication** | 2025Q3 | Historic diffs, SHA256 dedupe | • `scan --rehash` <br>`version diff <file>` | • **DP005** hash column + Bloomdedupe research | Diff on 10MB file ≤500ms; duplicate sets emitted by CLI. |
| **Phase5 — Tag Aliases & Semantic Booster** | 2025Q3 | Tame tag sprawl; start AI hints | • `tag alias add/ls/rm` <br>`tag suggest`, `summary` | • **DP006** embeddings size & kNN search bench | 95% alias lookups resolved in one hop; suggest query ≤150ms. |
| **Phase6 — Search DSL v2 & Smart Views** | 2025Q4 | AND/OR, ranges, structured grammar; smart folders | • New `nom` grammar <br>• Legacy parser behind **`--legacy-search`** (warn on use) | • **DP007** BNF + 30acceptance strings <br>• Lexer fuzz tests (`cargofuzz`) | Old queries keep working; 0 panics in fuzz run 1M cases. |
| **Phase7 — Structured Workflows & Templates** | 2025Q4 | State graph, relationship templates | • `state set/log` <br>`template apply` | • **DP008** workflow tables & YAML template spec <br>• Sample template e2e tests | Create template, apply to 20 files → all attrs/link rows present; illegal transitions blocked. |
| **Phase8 — TUIv1 + Lightweight Integrations** | 2026Q1 | Keyboard UI, VS Code sidebar | • **`marlintui`** binary (tiling panes, keymap) <br>• Readonly VS Code sidebar | • **DP009** TUI redraw budget & keymap <br>• Crate split fully consumed | TUI binary ≤2MB; scroll redraw ≤4ms; VS Code extension loads index. |
| **Phase9 — Dolphin Sidebar (MVP)** | 2026Q1 | Peek metadata inline in KDE Dolphin | • Qt/KIO sidebar | • **DP010** DB/IP bridge (DBus vs UNIX socket) <br>• CMake packaging script | Sidebar opens ≤150ms; passes KDE lint. |
| **Phase10 — Full GUI & Multidevice Sync** | 2026Q2 | Visual editor + optional sync backend | • Electron/Qt hybrid explorer UI <br>• Select & integrate sync (LiteFS / Postgres) | • **DP011** sync backend tradestudy <br>• Busytimeout/retry strategy for multiwriter mode | CRUD roundtrip <2s between two nodes; 25 GUI e2e tests green. |
---
### 2 · Feature crossmatrix (quick lookups)
| Capability | Sprint / Phase | CLI / GUI element | Linked DP |
| -------------------------- | -------------- | ----------------------------------- | --------- |
| Crate split & docs autogen | S0 | | |
| Tarpaulin coverage gate | S0 | | |
| Watch mode (FS events) | Epic1 | `marlin watch .` | DP002 |
| Backup autoprune | Epic1 | `backup --prune N` | |
| Dirtyscan | Epic2 | `scan --dirty` | DP002 |
| Grep snippets | Phase3 | `search -C3 …` | DP004 |
| Hash / dedupe | Phase4 | `scan --rehash` | DP005 |
| Tag aliases | Phase5 | `tag alias` commands | DP006 |
| Search DSL v2 | Phase6 | new grammar, `--legacy-search` flag | DP007 |
| Relationship templates | Phase7 | `template new/apply` | DP008 |
| TUI v1 | Phase8 | `marlintui` | DP009 |
---
## 3 · Milestone acceptance checklist
Before a milestone is declared **shipped**:
* [ ] **Spec** DPxxx merged with schema diff, ASCIIcast demo
* [ ] **Tests** Tarpaulin 85% on changed lines; all suites green
* [ ] **Perf guard** script passes on CI matrix (Ubuntu 22, macOS 14)
* [ ] **Docs** autoregenerated; README & cheatsheet updated
* [ ] **Demo** asciinema/GIF committed and linked in release notes
* [ ] **Release tag** pushed; Cargo binary uploaded to GitHub Releases
---
## 4 · Next immediate actions
| # | Task | Owner | Due |
| - | ------------------------------ | ------ | ------------- |
| 1 | Crate split + CI baseline | @alice | **26May 25** |
| 2 | Tarpaulin + Hyperfine jobs | @bob | **26May 25** |
| 3 | **DP001 Schema v1.1** draft | @carol | **30May 25** |
| 4 | backup prune CLI + nightly job | @dave | **05Jun 25** |
## CLI Cheatsheet
The full command reference is generated during the build of the CLI. See
[docs/cli_cheatsheet.md](docs/cli_cheatsheet.md).
## License
Licensed under the [MIT License](LICENSE).