Capitalise la mémoire projet accumulée pendant les chantiers B7/B8 (tâches de fond first-class), le système de tickets V1 et le ticket #1 : design, cadrages d'archi, checkpoints d'avancement et verdicts QA/frontend. Mise à jour de l'index MEMORY.md. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.0 KiB
name, description, metadata
| name | description | metadata | ||
|---|---|---|---|---|
| tickets-v1-e2e-validated-qa | Verdict QA du système de tickets V1 sans attachments sur feature/issue-ticket-system — vert de bout en bout, avec la seule réserve du typage de conflit côté UI. |
|
Validation QA de bout en bout du système de tickets V1 (sans attachments) sur feature/issue-ticket-system (backend commité 8de7be0, frontend non commité). Verdict : OK.
Preuves réelles :
cargo build --workspaceOK. Tests verts sur domain/application ; infrastructure et app-tauri verts sauf la dette pré-existante déclarée (orchestrator_watcher::ask_request_surfaces_reply_alongside_detail+app-tauri state::mcp_e2e_loopback_tests::*, tousElapsed(())du rendez-vous, sans rapport avec les tickets). Aucun échec imputable aux tickets.- Frontend :
npm run buildOK (tsc+vite),npm test= 459 passed / 49 files.
Invariants prouvés par tests : #N séquentiel jamais réutilisé (allocator_never_reuses_numbers) ; create→read round-trip ; carnet remplaçable & scoped .ideai/tickets/N/carnet.md ; pas de self-link (IssueError::SelfLink, domain/issue.rs) ; assignation agent connu seulement (create_issue_rejects_unknown_assignee) ; concurrence optimiste (update_issue_maps_version_conflict, IssueStoreError::VersionConflict) ; énums fermés statut/priorité.
Réserve non bloquante (dette technique) : le conflit de version est détecté côté front par fragment de message (message.includes("version conflict"), frontend/src/adapters/ticket.ts, useTicketDetail.ts), s'appuyant sur domain/ports.rs #[error("issue version conflict: …")]. Un code typé "versionConflict" existe DÉJÀ mais uniquement sur la surface MCP (app-tauri/src/tickets.rs:942) ; le chemin Tauri command renvoie INVALID. Recommandation : propager le code typé dans l'enveloppe d'erreur des ticket_* commands et brancher l'UI sur error.code. Comportement actuel correct et testé, donc non bloquant.