Goal
Tool MCP whats_new() che restituisce cosa è cambiato nell'ecosistema dall'ultima build CI.
Così un agente all'inizio sessione non deve rileggere session_bootstrap.md (80+ righe) — vede solo il delta.
Come funziona
A ogni build, ACB:
- Fetcha il
workspace_triage.json precedente dal branch context
- Esegue diff con quello nuovo
- Produce
whats_new.json come artifact aggiuntivo
L'MCP tool lo serve come whats_new() — stesso pattern degli altri tool.
Output
{
"schema_version": 1,
"since": "2026-07-14T13:44:04Z",
"generated_at": "2026-07-14T19:04:34Z",
"new_prs": [{"number": 99, "repo": "eurostat", "title": "..."}],
"closed_prs": [],
"new_issues": [{"number": 640, "repo": "dataset-incubator", "title": "..."}],
"new_discussions": 76,
"dataset_catalog": {"changed": true, "new_datasets": ["..."]},
"pipeline": {"changed": false},
"radar": {"changed": false},
"has_changes": true
}
Implementazione
signals.py — aggiungere dataclass WhatsNew
triage.py — funzione compute_whats_new(old_triage, new_triage) → dict
cli.py — fetch old triage prima di buildare, chiama compute, scrive artifact
mcp_server.py — tool whats_new()
- Test su compute_whats_new con dati mock
Edge case
- Prima build assoluta →
since: null, has_changes: false
- Build saltata → diff cumulativo tra ultimo buono e nuovo
- Refresh manuale → next whats_new riflette il diff
- Zero cambiamenti →
has_changes: false
Note
Non tiene traccia di sessioni agente — solo delta tra build CI. Per V1 va bene.
Se serve delta per-sessione, si aggiunge parametro since: str opzionale.
Bloccante: #58 (config 10 repo + limit 100 discussion)
Goal
Tool MCP
whats_new()che restituisce cosa è cambiato nell'ecosistema dall'ultima build CI.Così un agente all'inizio sessione non deve rileggere
session_bootstrap.md(80+ righe) — vede solo il delta.Come funziona
A ogni build, ACB:
workspace_triage.jsonprecedente dal branchcontextwhats_new.jsoncome artifact aggiuntivoL'MCP tool lo serve come
whats_new()— stesso pattern degli altri tool.Output
{ "schema_version": 1, "since": "2026-07-14T13:44:04Z", "generated_at": "2026-07-14T19:04:34Z", "new_prs": [{"number": 99, "repo": "eurostat", "title": "..."}], "closed_prs": [], "new_issues": [{"number": 640, "repo": "dataset-incubator", "title": "..."}], "new_discussions": 76, "dataset_catalog": {"changed": true, "new_datasets": ["..."]}, "pipeline": {"changed": false}, "radar": {"changed": false}, "has_changes": true }Implementazione
signals.py— aggiungere dataclassWhatsNewtriage.py— funzionecompute_whats_new(old_triage, new_triage) → dictcli.py— fetch old triage prima di buildare, chiama compute, scrive artifactmcp_server.py— toolwhats_new()Edge case
since: null, has_changes: falsehas_changes: falseNote
Non tiene traccia di sessioni agente — solo delta tra build CI. Per V1 va bene.
Se serve delta per-sessione, si aggiunge parametro
since: stropzionale.Bloccante: #58 (config 10 repo + limit 100 discussion)