Installazione da sorgente senza vision-engine-version.txt: il worker rifiuta i job (Prova del wizard DXF) #109
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
COSA: TMF avviato da sorgente da un git archive (senza .git, senza git sul PC) rifiuta ogni job di visione: engine_version() non trova VISION_ENGINE_VERSION e git rev-parse fallisce (WinError 2).
FILE: packaging/windows/avvio.py:222 — legge /vision-engine-version.txt, che da sorgente scrive solo build.ps1 (pacchetto Nuitka); il git archive usato per il PC fiera il 25/10 non lo contiene.
FILE: src/vision/runner.py:92 — engine_version(): ordine env → git, nessun ripiego (voluto, R8).
CASO: PC fiera DESKTOP-RABEHJJ, sorgente
b2e3867(lavoro/daitarn-tmf-dxfcal) in C:\Tielogic\TieMeasureFlow-src; «Prova» del wizard ricetta da DXF in errore il 27/10.PROVA: 28/10 scritto a mano C:\Tielogic\TieMeasureFlow-src\vision-engine-version.txt (ASCII, senza BOM, 40 byte) = 06b549a25d0bff7504a0e8bbbd233fd5fc05652a, riavvio → GET 127.0.0.1:8100/health → {"status":"ok","engine_version":"06b549a2…"}.
VERIFICATO: genicam.py del submodule sul PC ha sha256 (senza CR) f582060e… = 06b549a, diverso dal padre 7d57ff1.
CORREZIONE: lo script che prepara l'archivio per un PC (o sviluppo.ps1) scrive vision-engine-version.txt = git -C vendor/visionsuite rev-parse HEAD, in ASCII senza BOM (strip() non toglie il BOM).
TEST: archivio prodotto contiene il file con l'hash del submodule; avvio da sorgente senza .git → /health risponde con quell'hash.
ESITO: richiesta (passo 1, analisi Opus claude-opus-5-5)
RIF: gitea:Adriano/TieMeasureFlow#109
COSA: un'installazione da sorgente ha sempre vision-engine-version.txt con l'hash del submodule: lo scrive lo script che prepara l'archivio per un PC; sviluppo.ps1 lo aggiorna quando git c'è e si ferma con un errore chiaro quando mancano sia git sia il file.
BASE: origin/V3.0.0
8c361c1(ramo di lavoro di TMF). Ramo lavoro/daitarn-tmf-109, worktree daitarn C:/Users/Adriano/lavoro/TieMeasureFlow-109 (repo D:/Sorgenti/lavoro/TieMeasureFlow).FATTI (VERIFICATO leggendo
8c361c1):cartella_programma()/vision-engine-version.txt→ VISION_ENGINE_VERSION (.strip(), che NON toglie un BOM); da sorgente cartella_programma() = radice del repo (avvio.py:94-98).git -C vendor/visionsuite rev-parse HEAD, UTF8 senza BOM.git archivea mano, che non include il submodule né il file.MODIFICHE
uv run python scripts/archivio_sorgente.py --out <file.zip> [--ref HEAD]ref(git ls-tree <ref> vendor/visionsuite, modo 160000), NON la HEAD del checkout del submodule.git archive --format=zip <ref>del repo +git -C vendor/visionsuite archive --format=zip --prefix=vendor/visionsuite/ <sha>+vision-engine-version.txt= sha (40 caratteri ASCII, senza BOM e senza a capo) nella radice dello zip.crea_archivio(repo: Path, out: Path, ref="HEAD") -> str(ritorna lo sha), usata dalla CLI e dai test.git -C vendor/visionsuite rev-parse HEADriesce → scrive/aggiorna<radice>\vision-engine-version.txt([System.IO.File]::WriteAllText(..., (New-Object System.Text.UTF8Encoding $false)), come build.ps1:212);throwcon un messaggio che dice cosa manca e come rimediare (archivio fatto con scripts/archivio_sorgente.py, oppure il file scritto a mano in ASCII senza BOM).Commento #109 accanto. Header dello script aggiornato.
/vision-engine-version.txt(altrimenti ogni checkout di sviluppo resta sporco dopo sviluppo.ps1).TEST
git -c protocol.file.allow=always submodule add <repo locale> vendor/visionsuite, commit),-c core.autocrlf=false:a. crea_archivio → lo zip contiene un file del repo, un file del submodule sotto vendor/visionsuite/ e vision-engine-version.txt = sha registrato, 40 byte, senza BOM, senza a capo.
b. dopo un commit nuovo nel submodule NON registrato nel padre → lo sha nello zip resta quello registrato.
c. submodule non inizializzato → errore, nessun zip lasciato.
uv run --python 3.13 --extra dev pytest -q scripts/tests/test_archivio_sorgente.py packaging/windows/tests/test_avvio.py(se servono altri extra, dirlo nel rapporto), più la suitescripts/testsinvariata.uv run python scripts/archivio_sorgente.py --out <tmp>/tmf.zipnel worktree con il submodule inizializzato → hash nel file ==git ls-tree HEAD vendor/visionsuite.NON TOCCARE: src/**, vendor/visionsuite, build.ps1, avvio.py (salvo il test), TieMeasureFlow.iss.
🔵 daitarn — preso in carico 2026-11-06T10:49:00Z
ramo:
lavoro/daitarn· capacità: build-windows, gpuSoluzione
ESITO: fatto
RIF: gitea:Adriano/TieMeasureFlow#109; analisi nel commento del 06/11/2026
COSA: un'installazione da sorgente ha sempre vision-engine-version.txt. Lo scrive lo script che prepara l'archivio per un PC senza git; sviluppo.ps1 lo aggiorna quando git e il submodule ci sono e si ferma con un errore chiaro quando mancano sia lo sha sia il file.
FILE:
uv run python scripts/archivio_sorgente.py --out <file.zip> [--ref HEAD]. Zip =git archivedel repo + submodule vendor/visionsuite (prefisso vendor/visionsuite/) + vision-engine-version.txt nella radice: lo sha REGISTRATO nel commit (ls-tree, modo 160000), 40 byte ASCII, senza BOM e senza a capo. Submodule non inizializzato o senza il commit → uscita 1, nessuno zip (scrittura su temporaneo e poi rename).git -Crisalga al repo padre e scriva lo sha di TMF.COMMIT:
6441a92,999f470,452862e, 5738920; V3.0.0 portato in avanti senza merge 8c361c1..5738920 il 06/11. ⚠️999f470da solo ha\vnei percorsi di sviluppo.ps1 (tabulazione verticale), corretto in452862e: non fare checkout di999f470.PROVA:
uv run --no-project --python 3.13 --with pytest pytest -q scripts/tests/test_archivio_sorgente.py→ 4 passed su5738920.UV_PROJECT_ENVIRONMENT=build/venv313 uv run --python 3.13 --frozen --extra server --extra client --extra vision-worker --group windows --with pytest pytest packaging/windows/tests/test_avvio.py -q); scripts/tests interi → exit 0, nessun F, riepilogo non letto.git ls-tree HEAD vendor/visionsuite, 1537 voci.NON FATTO: la suite scripts/tests rilanciata da Opus è stata fermata per memoria bassa su daitarn. Il diff non tocca codice esistente fuori da sviluppo.ps1.
NOTA: senza submodule inizializzato il messaggio dice «git non disponibile: uso …» anche se git c'è. È cosmetico ed è stato lasciato così.
USO per un PC senza git: dal clone con il submodule inizializzato
uv run python scripts/archivio_sorgente.py --out tmf.zip, poi copiare lo zip ed estrarlo.