Skip to content

fix(committees): al Senato mancavano le Giunte e 16 organi attivi su 27#83

Merged
aborruso merged 2 commits into
mainfrom
fix/82-committees-senato-giunte
Jul 26, 2026
Merged

fix(committees): al Senato mancavano le Giunte e 16 organi attivi su 27#83
aborruso merged 2 commits into
mainfrom
fix/82-committees-senato-giunte

Conversation

@aborruso

Copy link
Copy Markdown
Member

Closes #82

Il problema

committees list --chamber senato --legislature 19 restituiva 12 righe. Nella legislatura 19 il LOD Senato ha 27 organi con sedute, più le 4 Giunte. Mancava quindi più della metà dell'attività di commissione, senza alcun segnale.

Due cause opposte, nella stessa query (src/tools/committees.ts):

  1. Filtro per legislatura via sedute → le Giunte spariscono. Nessuna delle 4 (0-20 Regolamento, 0-21 Elezioni e immunità, 0-22 Biblioteca, 0-24 Verifica poteri) ha osr:SedutaCommissione nel LOD, in nessuna legislatura. Sono però descritte e attive: 0-21 ha 11 triple, categoria Giunte, sottotitolo "(Art. 19 del Regolamento)". Ed è l'organo delle autorizzazioni a procedere: quello che si cerca quando una vicenda giudiziaria tocca un parlamentare.
  2. osr:titoloBreve come pattern obbligatorio → spariscono gli organi che nel grafo non esistono. commissione/2-1 ha 647 sedute in leg. 19, secondo organo più attivo del Senato, e zero triple come soggetto. Su 279 osr:Commissione descritte, nessuna ha un URI commissione/2-*, mentre le sedute ne referenziano 16 nella sola leg. 19.

Cosa fa questa PR

  • Il ramo --legislature unisce due insiemi: gli organi con sedute (con il conteggio) e quelli con osr:denominazione valida nel periodo della legislatura (session_count 0). Nessuno dei due basta da solo. L'intervallo della legislatura si ricava dal grafo stesso (MIN/MAX di osr:dataSeduta sulle sedute di quella legislatura), senza dipendenze esterne; il filtro temporale su osr:inizio/osr:fine è lo stesso pattern già usato per i gruppi in senator-group-members e senato-vote-detail.
  • osr:titoloBreve diventa OPTIONAL: gli organi privi di anagrafica compaiono con uri e session_count, campi di testo vuoti.
  • mergeSenatoCommittees estratta come funzione pura e testata.
  • Descrizione del tool aggiornata con l'avvertenza esplicita: le righe senza nome sono un limite della fonte, e il nome dell'organo non va dedotto dall'URI o dal numero di sedute.

I nomi mancanti restano vuoti. Inventarli — anche solo con un segnaposto tipo "organo non descritto" — significherebbe scrivere in un campo dati qualcosa che nel grafo non c'è.

Verifica

$ committees list --chamber senato --legislature 19 --format jsonl | wc -l
73                                    # prima: 12

$ ... | jq -r 'select(.category=="Giunte") | "\(.session_count)\t\(.short_title)"'
0   Giunta delle elezioni e delle immunita' parlamentari
0   Giunta per il Regolamento
0   Commissione per la biblioteca e l'archivio storico
0   Giunta provvisoria per la verifica dei poteri

$ ... | jq -r '"\(.session_count)\t\(.short_title)\t\(.uri)"' | head -3
742 Affari Costituzionali   .../commissione/0-1
647                         .../commissione/2-1     # prima invisibile
592 Bilancio                .../commissione/0-5

Non-regressione: --chamber senato senza legislatura 300 righe (invariato), --chamber camera --legislature 19 84, --chamber both 157 = 84 + 73, --limit 20 rispettato.

Test: 5 unitari sul merge (src/tools/committees.test.ts) + 2 live sui due sintomi. Suite completa verde, 218 test.

Documentazione della trappola

docs/lod-wiki/senato/sedute-commissione.md: due righe nella tabella Trappole (URI di commissione mai descritti; il filtro per legislatura via sedute che esclude le Giunte), una voce in Assenti (sedute delle Giunte, mancanti in ogni legislatura) e le query di verifica nelle citation.

Da fare a parte: portare al gestore del dato Senato i due punti della fonte. È lo stesso pattern degli URI di gruppo orfani della Camera (gr4212), già scritto nel punto 9 della nota Camera.

🤖 Generated with Claude Code

…27 (#82)

`--chamber senato --legislature 19` restituiva 12 organi su 27 con sedute,
più nessuna delle 4 Giunte. Due cause opposte nella stessa query:

- il filtro per legislatura passava dalle sedute, e le Giunte nel LOD non ne
  hanno nessuna: ora si aggiungono gli organi con osr:denominazione valida
  nel periodo della legislatura (intervallo ricavato dal grafo con MIN/MAX
  di osr:dataSeduta), stesso pattern temporale già usato per i gruppi;
- osr:titoloBreve era un pattern obbligatorio, così i 16 URI commissione/2-*
  referenziati dalle sedute ma mai descritti nel grafo sparivano in silenzio,
  incluso quello con 647 sedute, secondo organo più attivo della legislatura.
  Ora è OPTIONAL: compaiono con uri e conteggio, campi di testo vuoti.

I nomi mancanti restano vuoti: sono un buco della fonte, non qualcosa da
riempire a valle. Il fenomeno è documentato in docs/lod-wiki e va segnalato
al gestore del dato.

Closes #82

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

greptile-apps Bot commented Jul 26, 2026

Copy link
Copy Markdown

Greptile Summary

The PR restores omitted Senato committees when filtering by legislature.

  • Combines committees referenced by sessions with committees whose descriptions overlap the legislature period.
  • Preserves session-backed committees without registry metadata and adds active bodies without recorded sessions.
  • Applies the user limit after deterministic merging and final ranking.
  • Adds unit and live regression tests plus documentation of the source-data gaps.

Important Files Changed

Filename Overview
src/tools/committees.ts Implements deterministic intermediate queries, URI-based merging, final session-count ordering, and post-merge limiting; the previously reported truncation issue is resolved.
src/tools/committees.test.ts Covers enrichment, zero-session additions, missing metadata, deduplication, and merged ordering.
src/tools/tools.test.ts Adds live regressions for Giunte, orphan committee URIs, and post-merge limiting.
docs/lod-wiki/senato/sedute-commissione.md Documents missing committee resources and the absence of Giunte sessions in the Senato LOD source.

Reviews (2): Last reviewed commit: "fix(committees): applica --limit dopo il..." | Re-trigger Greptile

Comment thread src/tools/committees.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

Corregge il tool committees per il Senato quando si usa --legislature, evitando vuoti silenziosi dovuti a limiti strutturali del LOD (Giunte senza sedute esposte e URI di commissione referenziati dalle sedute ma non descritti come risorse). L’obiettivo è ripristinare una vista affidabile dell’attività di commissione senza “inventare” metadati mancanti.

Changes:

  • Per Senato con legislature: unione di (1) organi con sedute (conteggio) e (2) organi con osr:denominazione valida nel periodo della legislatura (conteggio 0), con merge dedicato.
  • osr:titoloBreve reso OPTIONAL nella query basata sulle sedute; estratta e testata la funzione pura mergeSenatoCommittees.
  • Aggiunti test live di non-regressione (#82) e documentate le “trappole” del dataset nel wiki LOD.

Reviewed changes

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

File Description
src/tools/committees.ts Aggiorna la logica Senato con merge tra insiemi “sedute” e “anagrafica attiva” + avvertenze anti-confabulazione.
src/tools/committees.test.ts Introduce unit test per la funzione di merge mergeSenatoCommittees.
src/tools/tools.test.ts Aggiunge test live per verificare presenza Giunte e visibilità degli URI “orfani” con molte sedute.
docs/lod-wiki/senato/sedute-commissione.md Documenta i buchi del grafo (commissioni 2-* non descritte, Giunte senza sedute) e query di verifica.

Comment thread src/tools/committees.ts
Da review PR #83: la query sugli organi descritti aveva LIMIT senza ORDER BY,
quindi con un limite stretto il troncamento era arbitrario e poteva far
sparire proprio le Giunte. Ora entrambe le query hanno un ordinamento
deterministico e un tetto interno fisso; il limite dell'utente si applica
alla classifica finale. Con il default il difetto costava già 2 organi.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@aborruso
aborruso merged commit 01517b7 into main Jul 26, 2026
2 checks passed
@aborruso
aborruso deleted the fix/82-committees-senato-giunte branch July 26, 2026 09:14
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.

committees (Senato): con --legislature mancano le Giunte e 16 organi attivi su 27

2 participants