Files
Lumotia/docs/release/v0.2-garden-roadmap.md
Jake c5460a169c agent: lumotia — release-doc set + two pre-release audits (MCP + LLM failure)
Operationalises the ChatGPT/Jake roadmap-synthesis pass into four
release-boundary documents at docs/release/. Synthesis call:

  v0.1 = stable local capture product
  v0.2 = Garden Inbox / review cards
  v1.0 = PKM-complete + commercial track

Two factual audits ran first per Jake's explicit instruction — release
hardening only, no architecture refactors, no Garden Inbox work:

AUDIT 1 — MCP surface
=====================
Verdict: PASSES the v0.1 trust posture.
- Read-only by design (`//! No writes — Lumotia's Tauri app remains the only writer`)
- Stdio-only transport (newline-delimited JSON-RPC 2.0); no TCP/Unix
  listener, no bind, no network exposure
- Database opened via `lumotia_storage::init_readonly` — structurally
  enforced, not just convention
- 4 tools, all SELECT-only: list_transcripts, get_transcript,
  search_transcripts, list_tasks
- Zero matches for INSERT/UPDATE/DELETE/fs::write/fs::remove/
  create_dir/spawn_blocking in the crate
- Separate binary (`crates/mcp/src/main.rs`) — not part of the running
  Tauri app; user must explicitly launch and wire into client config
- Honest nuance flagged in known-limitations: a wired client gets read
  access to the entire transcript history + task list — no per-row
  permission boundary in v0.1

AUDIT 2 — LLM failure surface
=============================
Verdict: data-loss path PASSES; UX-wedge path PARTIAL (documented).
- post_process_segments (file + live pipeline): tracing::warn! on Err,
  segments stay at rule-based output. Raw transcript preserved.
- cleanup_transcript_text_cmd (DictationPage): frontend try/catch
  returns raw text unchanged on Err. Raw transcript preserved.
- extract_tasks_from_transcript_cmd (DictationPage): frontend falls
  back to rule-based extractTasks (regex + verb list) on Err.
- extract_content_tags_cmd (HistoryPage): per-row try/catch; toast on
  failure; transcript untouched.
- Hung llama.cpp: no tokio::time::timeout on the spawn_blocking call.
  Raw transcript preserved; rest of app functional; LLM status chip
  stays on "Cleaning up" until restart. Soft edge — documented in
  known-limitations as v0.2 hygiene candidate. Not implemented per
  "release hardening only" instruction.

THE FOUR DOCS
=============

docs/release/v0.1-checklist.md
  - 10-step tester acceptance test (install → capture → cleanup →
    task → MicroSteps → timer → history search)
  - Must-ship list per surface (product, onboarding, artefacts, docs,
    quality gates, trust+security, release-blockers, smoke-test
    matrix)
  - Activation metrics for private beta (3 min to first capture, 3
    captures in 24h, 7-day return, etc.) + v0.1 public launch
    (20 install, 15 first-capture, 10 return, 5 pay-£39)
  - Pre-tag verification sequence
  - Explicit out-of-scope list (Garden Inbox, Phases B-E/G/I/J, etc.)

docs/release/v0.1-known-limitations.md
  - User-facing rewrite, not engineer-speak
  - Power assertions per platform (Linux idle / macOS App Nap / Windows
    sleep) with practical workarounds
  - MCP read-only/local-only posture with the
    "all transcripts visible to your wired client" honest nuance
  - AI cleanup/extraction failure table — what fails, what you see,
    what's preserved
  - Settings page progressive-disclosure status
  - Internal engine refactor (orchestrator dormant) framed for users
  - Explicit "what's NOT in v0.1" call-outs
  - Reporting issues + crash-dump location

docs/release/v0.2-garden-roadmap.md
  - Headline: "review cards for turning messy dictations into notes,
    tasks, topics and links" — tangible, not PKM-overloaded
  - Garden Inbox scope (raw / cleaned / suggested title-type-folder-
    project / extracted tasks / suggested tags / possible links /
    confidence / Accept-Edit-Park-Archive)
  - Engine architecture Phases B-E pairing
  - Explicit "NOT in v0.2" list (no graph, no canvas, no PKM marketing,
    no cloud provider, no premium voices)
  - Open decisions for v0.2 scope freeze deferred until v0.1 ships +
    20 testers run

docs/release/how-lumotia-is-built.md
  - Public-facing trust page; honest disclosure that AI-assisted
    human-directed, then evidence
  - The real silent-data-loss bug the drill caught (Phase A.7 fix
    ff8dda0) framed as proof the process works
  - Phase B atomiser audit: 9 surgical fixes including the FIFO hang,
    LlmEngine unload race, purge-vs-restore SELECT-then-DELETE race
  - Supply-chain pre-flight (npm audit signatures + --ignore-scripts +
    pinned dev deps + pinned rust toolchain)
  - MCP read-only audit + LLM failure audit cross-referenced
  - Anti-patterns explicitly avoided (no telemetry exfiltration, no
    silent AI dependency, no "audit log later", etc.)
  - Calibrated to "AI use is survivable; sloppy undisclosed untested
    AI use is not" — RPCS3 framing cited

Verification:
- cargo fmt --check: clean (no Rust changed)
- All four docs are user-readable, not commit-log-derivative
- Cross-references resolve (every internal path quoted exists)
2026-05-14 21:49:54 +01:00

6.9 KiB
Raw Permalink Blame History

name, type, tags, description
name type tags description
v0.2-garden-roadmap roadmap
release
v0.2
garden-inbox
review-cards
pkm-bridge
captured-not-implemented
v0.2 roadmap. The second act of Lumotia: review cards for turning messy dictations into notes, tasks, topics and links. Distinct from v0.1 which ships the stable local capture product. Sources: outputs/lumotia/2026-05-14-roadmap-update.md (Garden Inbox direction signal) + docs/roadmap/2026-04-23-magnotia-feature-complete-roadmap.md (engine architecture phases BG).

Lumotia v0.2 — the Garden release

Status: roadmap, not specced. Each item below needs its own design pass before implementation begins. This doc fixes the scope boundary for v0.2 so v0.1 can ship without scope-creep negotiation, and so v0.2 doesn't expand into a full PKM build.

v0.1 ships: stable local capture product (transcription, cleanup, tasks, MicroSteps, timer, history, export). v0.2 ships: the review-card layer that turns messy dictations into notes you can find, link, and act on. v1.0: PKM-complete + commercial track (see roadmap notes).

The headline

Lumotia v0.2 — review cards for turning messy dictations into notes, tasks, topics and links.

Not "voice-first PKM". Not "AI second brain". A specific, tangible thing: a review-card flow.

What v0.2 includes

Garden Inbox / review cards (the marquee)

Each new capture surfaces as a review card. The card shows:

  • Raw transcript (always preserved, can collapse)
  • Cleaned note (LLM cleanup output, editable)
  • Suggested title (LLM, editable)
  • Suggested type (Note / Task / Idea / Journal / Meeting — closed set, configurable later)
  • Suggested folder / project / area / person / topic (LLM-suggested from a user-defined ontology, editable)
  • Extracted tasks (already shipped in v0.1, surfaced inline)
  • Suggested LLM tags (already shipped in v0.1, promote-to-manual on click)
  • Possible links to existing transcripts (similarity-based, deferred from "related notes" item below if needed)
  • Confidence score per suggestion (so the user knows when to second-guess)
  • Action: Accept / Edit / Park / Archive

The card is the bridge. Accept routes the capture into the ontology with all suggestions applied. Edit lets the user fix anything. Park sends it back to inbox for later. Archive removes it without routing.

Suggested routing (extends v0.1 LLM content tags)

The shipped extract_content_tags_cmd returns topic:* and intent:*. v0.2 extends this to folder / project / person / area suggestions drawn from a user-defined ontology stored in SQLite. Users seed the ontology themselves; Lumotia learns from accept/edit signals (reusing the existing feedback loop from Phase 2).

For an accepted capture, surface "transcripts that look similar" via local embedding similarity. No graph view. No canvas. Just: "you mentioned this topic in 3 other captures — here they are." Click navigates to the linked transcript in History.

This is not a full backlink graph in v0.2. It's a "you've talked about this before" surface.

People / project / topic detection

Reuses the LLM suggestion pipeline from routing. Surfaces detected entities in the review card so the user can confirm or correct. Detected entities update the ontology (with explicit user consent on first surface).

Obsidian-ready Markdown export

v0.1 already ships Markdown export with frontmatter union (auto + manual + LLM tags). v0.2 hardens this for Obsidian compatibility specifically:

  • [[wiki-link]] syntax in the body for detected entity references
  • Frontmatter fields Obsidian's Dataview plugin can query
  • Vault-folder-aware export (pick a vault root, mirror the user's folder structure)
  • Optional: an Obsidian plugin (later sub-item, may slip to v0.3)

Engine architecture work landing alongside v0.2

These were ROADMAPPED items in the engine architecture spec that pair naturally with the Garden release:

  • Phase B — Filter chain refactor (Filter trait, stage 1/2/3 cleanup pipeline) — needed for vocabulary work below
  • Phase C — Vocabulary crate (crates/vocabulary, FTS5 + regex cache, vocabulary_proposals table, edit-diff extract_corrections) — user dictionary
  • Phase D — Model warmup coordinator (warmup state machine, synthetic audio, EngineStatusPill.svelte) — perceived speed improvement
  • Phase E — Dictionary quick-add (Ctrl+Alt+D panel, settings vocabulary section)

These four engine phases are not strictly required for the review-card UX but they unlock a noticeably better v0.2 experience.

What v0.2 does NOT include

To stop v0.2 from sprawling, these are pinned out:

  • No graph view. Backlinks surface as a list, not a force-directed graph.
  • No canvas. No spatial / freeform layout.
  • No multi-user / sync. Still single-device.
  • No mobile companion. Still desktop-only.
  • No full PKM "second brain" marketing pitch. Lumotia is a voice-first gardener with a review-card flow. We are not Obsidian.
  • No cloud transcription provider. Engine Phase G stays out by default; if it lands in v0.2 it's BYOK + off-by-default + clearly labelled + never required.
  • No premium voices / paid expansion. Still single £39 Founding tier on the licensing side (see project_lumotia_licensing_strategy memory).
  • No commercial / OEM track. Engine Phase I stays v1.0.

Sources

  • outputs/lumotia/2026-05-14-roadmap-update.md — Garden Inbox direction signal distilled from three 2026/05/14 captures (Wispr Flow / Superwhisper / AudioPen / Granola landscape + "voice-first gardener" positioning)
  • docs/roadmap/2026-04-23-magnotia-feature-complete-roadmap.md — Phase 110 plan + post-v0.1 ideas section
  • outputs/lumotia/2026-05-10-engine-architecture-spec.md — engine architecture Phases AJ
  • project_lumotia_licensing_strategy memory — locked pricing / dual-licence / OEM exception

Open decisions for v0.2 scope freeze

These will be decided when v0.1 ships, not before:

  1. Ontology bootstrapping — do users define their ontology by hand, or does Lumotia seed it from the first 10 captures?
  2. Confidence-score surfacing — numeric (0.01.0), banded (high/medium/low), or implicit (only show suggestions above threshold)?
  3. Park vs Archive semantics — Park goes back to inbox for later, Archive removes from inbox but keeps in History? Or another shape?
  4. Obsidian plugin scope — full plugin with two-way sync, or one-way export only?

None of these block v0.1.

How v0.2 lifts out of v0.1

The path:

  1. v0.1 ships and gets 20+ testers
  2. Watch what testers actually do with their captures (what they accept, edit, retry, abandon)
  3. Lock the review-card scope based on tester behaviour, not on this doc's speculation
  4. Ship v0.2 incrementally: Garden Inbox first, suggested routing second, related notes third
  5. Each sub-feature gets its own design pass before code is written

The shape above is the boundary, not the spec.