Skip to content

fix(votes): aggancia all'atto i voti a codice secco via seduta monotematica#71

Merged
aborruso merged 5 commits into
mainfrom
fix/votes-bill-uri-seduta-monotematica
Jul 20, 2026
Merged

fix(votes): aggancia all'atto i voti a codice secco via seduta monotematica#71
aborruso merged 5 commits into
mainfrom
fix/votes-bill-uri-seduta-monotematica

Conversation

@aborruso

Copy link
Copy Markdown
Member

Il problema

Sulla seduta s19_689 (14/7/2026, prima lettura della legge elettorale) il grafo OCD non ha nessuna tripla ocd:rif_attoCamera, e solo 2 votazioni su 12 citano "PDL 2822-A" nella descrizione. Le altre dieci hanno dc:description a codice secco — "EM 1.1077", "SUBEM 0.1.1077.4" — e restavano senza bill_uri.

Tra queste c'è il voto sull'emendamento preferenze, 188 contrari / 187 favorevoli: il voto che ha deciso la vicenda. Chi filtrava i voti per numero di atto lo perdeva.

Non è un caso isolato: circa metà delle votazioni Camera è priva di rif_attoCamera in tutte e tre le legislature nel grafo.

La soluzione

Terzo livello di fallback in cascata dopo rif_attoCamera e il numero citato nel testo: quando l'intera seduta verte su un solo atto, quello è l'atto anche dei voti muti.

Due cautele nel calcolo della monotematicità:

  • si calcola con una query dedicata sulla seduta completa, mai sulle righe già in memoria: un --date-from o un LIMIT stretto possono mostrare un solo atto mentre la seduta ne tratta quattro;
  • l'insieme degli atti unisce rif_attoCamera e i numeri citati nelle descrizioni delle altre votazioni — su s19_689 il primo insieme è vuoto.

Mozioni e risoluzioni sono escluse: sono AIC a sé stanti, ereditare l'atto della seduta le legherebbe a un provvedimento che non le riguarda.

La cache numero → URI è chiavata anche sulla legislatura: i numeri d'atto si ripetono tra la 18 e la 19, e una finestra a cavallo delle due avrebbe attribuito a un voto della 18 un URI ac19_*.

Numeri

  • Solo il 37% delle sedute leg. 19 è monotematico (149 su 408): il resto resta deliberatamente senza aggancio invece di rischiare attribuzioni sbagliate.
  • Sui 1000 voti del 2026 almeno 178 righe guadagnano il collegamento all'atto (copertura 369 → 547).
  • Nessun URI fabbricato: il numero base è sempre verificato via dc:identifier.

Test

+4 test: aggancio del voto 188-187, non-regressione su seduta multi-atto (25/6/2025, quattro atti), guardia mozioni/risoluzioni, coerenza legislatura↔atto su finestra cross-legislatura. Tutti e 10 i test votes verdi.

I test senato-votes falliscono con 403 dell'endpoint Senato (WAF), come già nelle release precedenti: non toccano questo percorso di codice, che è solo Camera.

Residuo noto

--bill-code filtra dc:description lato server, quindi a monte dell'ereditarietà: i voti a codice secco restano fuori da quel percorso e vanno raggiunti per intervallo di date filtrando poi su bill_number. Renderlo consapevole della seduta significherebbe selezionare l'intera seduta e filtrare a valle, con il LIMIT che non varrebbe più sulle righe restituite — tenuto fuori deliberatamente da questa PR.

Documentazione

Nuova nota wiki OKF docs/lod-wiki/camera/votazioni-atto-collegato.md: conteggi del buco per legislatura, le tre famiglie di dc:description (ODG ~58%, codice secco ~19%, AIC ~20%), distribuzione degli atti per seduta.

Emerso dal report news-agent 2026-07-20_19-49.md.

🤖 Generated with Claude Code

aborruso and others added 2 commits July 20, 2026 20:06
…matica

Sulla seduta s19_689 (legge elettorale, 14/7/2026) manca del tutto
ocd:rif_attoCamera e solo 2 voti su 12 citano l'atto nel testo: il voto
sull'emendamento preferenze (188-187) restava senza bill_uri, invisibile
a chi filtra per numero di atto.

Terzo livello di fallback: se l'intera seduta verte su un solo atto,
quello e' l'atto anche dei voti muti. Monotematicita' calcolata con query
dedicata sulla seduta completa (mai sulle righe filtrate in memoria),
unendo rif_attoCamera e i numeri citati nelle altre descrizioni.
Mozioni e risoluzioni escluse: sono AIC a se' stanti.

+3 test, nota wiki OKF, helper resolveActUris condiviso.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Il numero d'atto si ripete tra legislature: senza chiavare la cache
numero→URI anche sulla legislatura, una finestra a cavallo di 18 e 19
poteva agganciare un voto della 18 a un atto ac19_*.

Documentato in LOG il residuo su --bill-code (filtra dc:description lato
server, a monte dell'ereditarieta').

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 20, 2026 18:14
@greptile-apps

greptile-apps Bot commented Jul 20, 2026

Copy link
Copy Markdown

Greptile Summary

This PR improves Camera vote-to-bill linking and bill text cleanup. The main changes are:

  • Adds session-level fallback for votes without rif_attoCamera.
  • Excludes AIC-style votes from session bill inheritance.
  • Resolves bill numbers to act URIs per legislature.
  • Cleans bill show text fields with the existing HTML decoder.
  • Adds vote-linking tests and documentation for the Camera LOD gap.

Important Files Changed

Filename Overview
src/tools/votes.ts Adds monothematic-session bill inheritance, legislature-scoped act resolution, and AIC exclusions for Camera votes.
src/tools/bill.ts Applies the existing HTML cleanup helper to bill show label, title, and description fields.
src/tools/tools.test.ts Adds integration coverage for vote inheritance, AIC exclusion, cross-legislature URI matching, and bill text cleanup.
docs/lod-wiki/camera/votazioni-atto-collegato.md Documents the missing Camera vote-to-act link patterns and the monothematic-session fallback.

Reviews (4): Last reviewed commit: "fix(votes): guardia AIC estesa a interro..." | Re-trigger Greptile

Comment thread src/tools/votes.ts Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Questo PR migliora votes (Camera) per ridurre i falsi “senza atto” quando ocd:rif_attoCamera è assente e dc:description contiene solo un codice emendamento: se la seduta è monotematica, l’atto viene ereditato anche dai voti “muti”, evitando buchi rilevanti per chi filtra per numero atto.

Changes:

  • Aggiunto un terzo livello di fallback (inheritBillFromSession) che eredita l’atto dalla seduta solo quando la seduta risulta monotematica, escludendo mozioni/risoluzioni (AIC).
  • Estratto l’helper resolveActUris per risolvere numero atto base → URI verificando via dc:identifier, con cache chiavata anche per legislatura.
  • Aggiunti test di integrazione e documentazione wiki (nuova nota + link nell’indice) e aggiornato LOG.md.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/tools/votes.ts Introduce inheritBillFromSession come fallback monotematico + helper resolveActUris per risoluzione URI atti per legislatura.
src/tools/tools.test.ts Aggiunge test su seduta monotematica (EM 1.1077 / 188-187), non-regressione su seduta multi-atto, finestra cross-legislatura, e guardia AIC.
LOG.md Aggiunge la voce di rilascio/nota per il fix votes (Camera).
docs/lod-wiki/camera/votazioni-atto-collegato.md Nuova nota wiki sulla “trappola” rif_attoCamera mancante e strategia di ricostruzione/ereditarietà.
docs/lod-wiki/camera/index.md Collega la nuova nota wiki nell’indice Camera.

Comment thread LOG.md Outdated
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Comment thread src/tools/votes.ts Outdated
…o xsd

bill show restituiva i campi di testo grezzi: entita non decodificate e,
su ~6.500 atti, il suffisso ^^http://...#string incollato dentro al
valore del literal alla fonte (es. ac19_2316, legge IA). bills list
applicava gia' decodeHtml, bill show no.

+1 test.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@aborruso

Copy link
Copy Markdown
Member Author

Aggiunto in questa PR anche il gap 2 dello stesso report news-agent (d5d56e4), stessa classe di bug già chiusa per votes in v0.26.1.

bill show restituiva label, title e description grezzi dal grafo: entità non decodificate (&quot;, &lt;em&gt;, &nbsp;) e il suffisso ^^http://www.w3.org/2001/XMLSchema#string in coda. Il suffisso è dentro al valore del literal alla fonte — verificato sul JSON crudo dell'endpoint, non è un artefatto del nostro parsing — e riguarda circa 6.500 atti su 269.816 (9.516 hanno entità non decodificate).

Caso concreto, ac19_2316 (legge sull'intelligenza artificiale), prima:

S. 1146. - &quot;Disposizioni e deleghe al Governo in materia di intelligenza artificiale&quot; &lt;em&gt;(approvato dal Senato)&nbsp;&lt;/em&gt;(2316) ^^http://www.w3.org/2001/XMLSchema#string

dopo:

S. 1146. - "Disposizioni e deleghe al Governo in materia di intelligenza artificiale" (approvato dal Senato) (2316)

bills list applicava già l'helper decodeHtml (verificato: il suo output era pulito), bill show era rimasto indietro. Nessun codice nuovo, solo l'helper esistente sui tre campi di testo. +1 test.

Nota sulla suite: i test Camera sono tutti verdi, i fallimenti Senato sono 403 del WAF dopo le molte query di verifica di stasera — endpoint, non codice; questa PR non tocca percorsi Senato.

… Greptile PR #71)

Difesa in profondita': sul grafo non esiste una sola dc:description che
inizi per quei prefissi (0 su 257.751 votazioni), ma il modo di sbagliare
di questa guardia e' attribuire un provvedimento a un voto che non lo
riguarda, quindi l'elenco viene chiuso comunque.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@aborruso
aborruso merged commit 3090638 into main Jul 20, 2026
2 checks passed
@aborruso
aborruso deleted the fix/votes-bill-uri-seduta-monotematica branch July 20, 2026 19:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants