diff --git a/docs/specs/2026-09-14-visione-stato-e-specifica.md b/docs/specs/2026-09-14-visione-stato-e-specifica.md index 750c9d8..a76417e 100644 --- a/docs/specs/2026-09-14-visione-stato-e-specifica.md +++ b/docs/specs/2026-09-14-visione-stato-e-specifica.md @@ -180,21 +180,30 @@ di algoritmo entra in questo repository. `POST /api/vision/preview` su un'immagine caricata, e restituisce le uscite attese. Senza camera, senza interfaccia. E `test_vision_boundary.py` continua a passare. -### V2 — L'authoring nel Maker +### V2 — L'authoring nel Maker — **in fiera** (decisa il 14/09) -La schermata che oggi non esiste. Il Maker, alla scrivania: +La schermata che oggi non esiste. Si compone con un **editor visuale a nodi** (decisione A, chiusa il +14/09). Il Maker, alla scrivania: - carica o sceglie un'**immagine di riferimento** per il task (l'API esiste già); -- compone il grafo — e qui va deciso *come*, vedi il capitolo 7, decisione A; +- compone il grafo collegando gli strumenti — l'immagine entra, `MatchPattern` dà la posa, da lì scendono + le quote e il `CompareDXF`; - preme **prova** e vede le uscite (`/preview` esiste già); - **aggancia** ciascuna uscita a una quota della ricetta, scrivendo `vision_output` sulla subtask (il campo esiste già), e su quella quota mette nominale e tolleranze come su qualunque altra; - **promuove le uscite della prova a `expected_json`**, che è ciò che accende la prova di non regressione (lacuna 4) e chiude una promessa che la spec di agosto ha fatto e non ha mantenuto. +**Il taglio per la fiera** (deciso il 14/09): ci va tutto **fino alla misura vera** — comporre, provare, +agganciare alle quote, e il ciclo dell'operatore che misura e riceve OK/warning/fail con le tolleranze +applicate. È la storia che vende: il confronto DXF **dentro il flusso di produzione**, non un tool a sé. +Restano fuori dalla fiera, e si fanno dopo, la promozione a `expected_json` e la prova di non regressione: +valgono per la robustezza, ma allo stand non si mostrano. + *Fatto quando:* una ricetta con un task di visione si compone interamente dall'interfaccia, senza scrivere -JSON a mano, e rieseguendo l'intero parco ricette su immagini di riferimento si vede quali quote si sono -mosse. +JSON a mano, e un operatore la esegue ottenendo un esito vero. La prova di non regressione — rieseguire +l'intero parco ricette su immagini di riferimento e vedere quali quote si sono mosse — è il criterio della +parte differita. ### V3 — L'agente di stazione, i device, la camera @@ -232,12 +241,25 @@ dal confronto (scarto massimo, numero di zone fuori tolleranza) trattate come mi Nessuna di queste si può dedurre dal codice: vanno chiuse da Adriano, alcune con il cliente. -**A. Come si compone un grafo.** L'editor visuale a nodi (TieWorkflow) è stato **revocato il 09/08** con -una motivazione che vale ancora: un editor ha senso solo se a comporre le pipeline è qualcuno che non -programma, e il cliente aveva chiesto misure, non un editor. Ma qualcosa deve pur esserci, perché scrivere -JSON a mano non è un prodotto. Le tre strade: un modulo per tipo di task con i soli parametri in chiaro -(il minimo che funziona); una libreria di grafi preconfezionati che il Maker sceglie e tara; l'editor, -che è la strada cara. **Questa decisione decide la fase V2 per intero.** +**A. Come si compone un grafo — chiusa il 14/09/2026: un editor visuale a nodi.** Adriano lo ha rimesso +nel perimetro, e la scelta **revoca la revoca del 09/08**. Allora TieWorkflow era uscito perché *«un editor +ha senso solo se a comporre le pipeline è qualcuno che non programma, e il cliente aveva chiesto misure, +non un editor»*: motivazione giusta quando il committente era Tràfilo, che vuole misurare profilati. +Adesso il modulo è un investimento per prendere lavori futuri (decisione F), e il pubblico dello stand non +è l'operatore di Tràfilo — è chi allo stand deve immaginarci il **proprio** pezzo, e a quello un form fisso +non parla. + +Le altre due strade restano scritte qui perché sono la via d'uscita, non perché siano state scelte: un +**modulo per tipo di task** con i parametri in chiaro (il minimo che funziona) e una **libreria di grafi +preconfezionati** che il Maker sceglie e tara. + +⚠️⚠️ **È la più cara delle tre, su un cammino critico già pieno.** Ad agosto l'editor era stimato **12-18 +ore su un perimetro più piccolo** — senza `MatchPattern`, senza `CompareDXF`, senza l'aggancio quota→uscita +— ed è l'ordine di grandezza che aveva fatto sfondare il budget del piano ferie. Quelle ore ora si sommano +alla V1, anch'essa obbligatoria per la fiera, dentro 43 giorni. **Il ripiego va deciso adesso, non il 20 +ottobre:** se a metà ottobre l'editor non regge, si espone il modulo per tipo di task, che mostra le stesse +misure con meno scena. + **B. La scala: pixel o millimetri.** Il 09/08 si era deciso che le quote potessero restare **in pixel**, e che per il DXF compare servisse un fattore di scala ricavato da una quota nota misurata col calibro. Va @@ -294,13 +316,16 @@ prodotto no. Deciderlo prima cambia l'ampiezza della V1. ## 9. Il calendario, per capire le priorità La catena è **Tielogic produce → Ricerca e Misure (Menoncin) rivende → Tràfilo usa**, venti postazioni. -Due scadenze esterne, entrambe vicine: +Due scadenze esterne, e dal 14/09 non pesano più allo stesso modo. -- **Installazione a Tràfilo**, attesa per settembre. La serve la fase V3, ed è la ragione per cui l'agente - di stazione non può aspettare la fiera. -- **Fiera del 27-29 ottobre**, banchetto Tielogic nella zona Opto Engineering. La serve la fase V1, perché - è lì che si mostrano il confronto DXF e il pattern matching, cioè le due cose che a Menoncin interessano - commercialmente. +- **Fiera del 27-29 ottobre**, banchetto Tielogic nella zona Opto Engineering. Le servono **V1 e V2 + insieme**, perché allo stand si mostra il prodotto e non una demo: comporre una ricetta di visione + dall'interfaccia, misurare un pezzo, vedere l'esito. È l'unica data del percorso visione, ed è il posto + dove l'investimento della decisione F si trasforma in lavori. +- **Installazione a Tràfilo**, attesa per settembre. Le serve la **V3**, ed è **ciò che è stato + fatturato**. ⚠️ Con V1 e V2 entrambe prima della fiera, la V3 resta indietro: è una scelta consapevole, + ma la tempistica dell'installazione era stata data a Menoncin, quindi va **detta a lui** invece di + scoperta da lui. -Se le due si contendono le stesse ore, la V1 è quella che non ha alternative: un'installazione può -slittare di due settimane, una fiera no. +⚠️ Il rischio non è che manchi una delle due: è che l'editor a nodi si prenda le ore della V1. Il ripiego +è scritto nella decisione A, e va guardato a **metà ottobre**, quando cambiare strada costa ancora poco.