Files
gnoma/docs/essentials/risks.md
vikingowl efcb5a2901 docs: add project essentials (12/12 complete)
Vision, domain model, architecture, patterns, process flows,
UML diagrams, API contracts, tech stack, constraints, milestones
(M1-M11), decision log (6 ADRs), and risk register.

Key decisions: single binary, pull-based streaming, Mistral as M1
reference provider, discriminated unions, multi-provider collaboration
as core identity.
2026-04-02 18:09:07 +02:00

2.4 KiB

essential, status, last_updated, project, depends_on
essential status last_updated project depends_on
risks complete 2026-04-02 gnoma

Risk / Unknowns

ID Risk Severity Mitigation Status
R-001 SDK breaking changes — provider SDKs are pre-1.0 and may change APIs Medium Pin versions, integration tests per provider, adapter layer absorbs changes Open
R-002 Google range-to-pull bridge goroutine leak — context cancellation edge cases Medium Thorough testing with testing/synctest, always select on ctx.Done() Open
R-003 Thinking block round-trip fidelity — Anthropic signatures must survive serialization Medium Unit tests with real signature values, golden file tests Open
R-004 Tool call ID generation inconsistency — Google/Ollama may return empty IDs Low Generate UUID if provider returns empty, documented in provider adapter Open
R-005 Mistral SDK 2.2.0 stability — user-maintained SDK, recently updated Low User maintains it, can fix bugs directly. Integration tests catch regressions. Accepted
R-006 Bubble Tea v2 maturity — v2 is relatively new Low Pin version, fallback to v1 if blockers. TUI is last milestone item. Open
R-007 Multi-provider routing complexity — coordinating elfs on different providers with different capabilities High Design routing interface early (M4), start simple (manual provider assignment), add rules incrementally Open
R-008 Context compaction coherence — summarization may lose critical details Medium Truncation as safe default, summarization opt-in, compact boundaries for recovery Open
R-009 Permission prompt UX in pipe mode — no TUI for interactive prompts Low Default to allow or deny in pipe mode, require explicit flag Open

Open Questions

  • How should routing rules be expressed in config? Per-task rules, model capability tags, cost-based? — needs research before M5
  • Which local tokenizer library to use? (tiktoken port, sentencepiece, or provider-specific)
  • Serve mode protocol — choose what fits best when implementing M7
  • Should gnoma embed a tokenizer? → Yes, include local tokenizer (M4)
  • Session persistence format? → SQLite (M7)
  • Mistral SDK as long-term reference? → Yes for now, revisit after M2

Changelog

  • 2026-04-02: Initial version