Previsione: una corsa sola, e nessun bersaglio nel passato - #148
Conversation
Il popolamento della 057 aveva preso due corse, quella del 29 e quella del 30. Il vecchio writer cancellava le righe solo delle celle che riscriveva, quindi una cella prevista Moderata il 29 e scesa sotto soglia il 30 restava nello storico — ed è finita nello stato previsionale. Misurato: l'80 % delle righe era della corsa vecchia. Da ~105.000 celle per orizzonte a ~21.000-23.000. L'effetto non era cosmetico. L'ordinamento «fra 72 ore» mostrava un gruppo compatto di comuni liguri in salita — Spotorno, Zoagli, Genova, Bogliasco, Recco, 0,42 → 0,47 — ed era **tutto** la corsa di ieri. Con una corsa sola Genova oggi non ha nessuna cella prevista sopra Moderato. Sarebbe stata un'allerta inventata in una regione precisa, con l'aria di un segnale vero. La 058 tiene l'ultima corsa per pericolo. E le tre letture ora escludono i bersagli già passati: se una notte la corsa salta, il +24 h di ieri scade e non deve comparire come futuro. Da qui in avanti non si riaccumula: il writer cancella tutte le celle valutate da ogni corsa, non solo quelle che tornano sopra soglia. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 807747c610
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
|
||
| DELETE FROM latest_forecast lf | ||
| USING ( | ||
| SELECT hazard_type, max(run_at) AS ultima |
There was a problem hiding this comment.
Handle an empty latest sweep during cleanup
If the newest sweep for a hazard produced no cells at or above Moderate, it left no rows in the history used by migration 057, so max(run_at) still identifies the preceding sweep as ultima. This cleanup consequently retains that entire stale sweep; its +48/+72 targets can still pass the new target_at > now() filters and continue presenting obsolete alerts. Determine the latest completed sweep independently of the sparse above-threshold rows, or explicitly expire rows when no current sweep rows exist.
Useful? React with 👍 / 👎.
Il popolamento della 057 aveva preso due corse di previsione, quella del 29 e quella del 30. Il vecchio writer cancellava le righe solo delle celle che riscriveva: una cella prevista Moderata il 29 e scesa sotto soglia il 30 restava nello storico, ed è finita nello stato previsionale.
Misurato: l'80 % delle righe era della corsa vecchia. Da ~105.000 celle per orizzonte a ~21.000-23.000.
Perché conta
L'ordinamento «fra 72 ore» mostrava un gruppo compatto di comuni liguri in salita — Spotorno, Zoagli, Genova, Bogliasco, Recco, 0,42 → 0,47 — ed era tutto la corsa di ieri. Con una corsa sola Genova oggi non ha nessuna cella prevista sopra Moderato. Sarebbe stata un'allerta inventata in una regione precisa, con l'aria di un segnale vero.
Cosa cambia
Non si riaccumula: il writer della #147 cancella tutte le celle valutate da ogni corsa, non solo quelle che tornano sopra soglia.
🤖 Generated with Claude Code