Aggiunge ADR-0003 (xUnit, Avalonia.Headless, coverlet, FakeClaude come doppio di claude, struttura src/tests) e docs/TESTING.md con la regola, le soglie di copertura e la matrice requisito-test. Ogni criterio di accettazione dell'MVP è collegato alle righe della matrice. La roadmap ha la Fase 6 e CLAUDE.md rende obbligatori i test nello stesso commit. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
4.6 KiB
4.6 KiB
Roadmap
Dettagli dell'MVP in MVP.md.
Fase 0 — Doc-first
- Scrivere MVP.md e ROADMAP.md
- Chiudere le domande aperte in MVP.md
Fase 1 — MVP
-
dotnet new console,Program.csunico -
Lancio di
claude -pnella cartella dell'exe, streaming, exit code -
Publish single-file win-x64 e verifica dei criteri di accettazione
-
GUI a chat: conversazione markdown in alto, input in basso, sessione con
--session-id/--resume
Fase 2 — Robustezza
- Input del prompt da stdin e da file
- Timeout e cancellazione (Ctrl+C propagato al figlio)
- GUI: scelta di modello (
--model) ed effort (--effort) - CLI: stesse opzioni; inoltre
--allowedTools,--output-format
Fase 3 — Oltre
- GUI: cronologia chat (salvataggio JSON, barra laterale, riapertura con
--resume, eliminazione) - GUI: streaming della risposta (
--output-format stream-json), stop, rinomina/ricerca chat - Config file accanto all'exe
- Test automatici e CI (vedi Fase 6)
Fase 4 — Più motori (Claude Code, Codex, Antigravity)
Decisione, tabella dei comandi e rischi: ADR-0002. Qui solo i passi. Va fatta dopo (o insieme a) la Fase 5, che estrae il punto unico di avvio processo.
- Verificare con
--helpi flag reali dicodexeagysu Windows e Linux (ADR-0002) e portare l'ADR a "Accettata" - Astrazione "motore" in C#:
RunClaudediventaRunEngine(engine, ...) - Rilevamento dei motori nel PATH; motori assenti disabilitati, messaggio chiaro
- Il JSON di ogni chat memorizza il motore; cambiare motore apre una nuova chat
- GUI: schermata Impostazioni (motore, modello, effort) persistita su disco; modelli ed effort in base al motore; motore della chat indicato nell'interfaccia
- Motore Codex: lettura dell'id di sessione dall'output per la ripresa
- Motore Antigravity: gestione del blocco con output rediretto (timeout, errore chiaro)
- Politica dei permessi: sola lettura di default, opzione esplicita per concedere di più
- CLI: opzione
--engine, coerente con la GUI
Fase 5 — Multipiattaforma (Windows + Linux), GUI in solo C#
Decisione e motivazioni: ADR-0001. Qui solo i passi.
- Chiudere le verifiche dell'ADR-0001 con un prototipo e portarlo a "Accettata" (restano due verifiche indicate nell'ADR)
- Nome dell'app in un solo punto:
AssemblyNamenel csproj, letto daCore/AppInfo.cs; la rinomina segue la checklist di docs/README.md - Rinomina in
agent-wiki-ui(csproj, namespace) e migrazione automatica della cartella datiLlmRun→agent-wiki-ui - Target
net10.0(non piùnet10.0-windows); rimossi WinForms e WebView2 - Estrarre in un solo punto la logica di avvio di
claude(Core/Claude.cs) (cartella dell'exe, stdin chiuso), oggi duplicata traProgram.cseGui.cs - Cronologia in
Environment.SpecialFolder.LocalApplicationData(stesso formato JSON, chat esistenti ancora leggibili) - GUI Avalonia: finestra, barra laterale delle chat, conversazione, composer con modello ed effort
- Rendering markdown in Avalonia (titoli, liste, tabelle, citazioni, codice), pulsante Copia, link nel browser di sistema
- Tema chiaro/scuro che segue il sistema, con i token di MVP.md → "Design (UI/UX)" (da provare su un desktop Linux reale)
- Eliminare
ui.htmle il protocolloWebMessage - Publish single-file self-contained
win-x64elinux-x64: compilano e partono (Linux: CLI e GUI su WSLg; Windows: solo CLI, via WSL); da provare la GUI su Windows nativo e su una distribuzione Linux pulita - Aggiornare README.md e CLAUDE.md (comandi, architettura, vincoli) a migrazione conclusa
Fase 6 — Test e copertura completa
Decisione: ADR-0003. Piano, soglie e matrice: TESTING.md. Da questa fase in poi vale la regola: ogni nuova funzione arriva con i suoi test.
- Verificare le compatibilità dell'ADR-0003 (xUnit, Avalonia.Headless, coverlet,
dotnet test) e portarlo ad "Accettata" - Ristrutturare in
src/etests/con soluzione unica eInternalsVisibleTo - Predisposizioni di testabilità:
ChatStorea istanza,IClaudeRunner FakeClaude: eseguibile finto per i test di processo- Test
Core/(CL, ST) eMainViewModel(VM) - Test del renderer markdown (MD) e della GUI headless (UI)
- Test end-to-end e smoke di publish per
win-x64elinux-x64(PUB) - Soglie di copertura che fanno fallire la build
- CI con matrice Windows + Linux (fornitore da scegliere)
- Batteria di contratto per ogni motore (EN), insieme alla Fase 4