{
 "misure": [],
 "nota": "I conteggi della landing: ognuno con la data, la versione del codice e da dove viene. Li scrive landing/strumenti/conteggi.py, che controlla anche che ogni numero delle pagine abbia qui il suo riscontro. «esempi» sono i numeri del lavoro di esempio, che illustrano e non misurano.",
 "conteggi": [
  {
   "chiave": "fasi_del_lavoro",
   "valore": 4,
   "fonte": "api/nowforge/orchestrator/fasi.py, FASI",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "gate_umani",
   "valore": 3,
   "fonte": "api/nowforge/orchestrator/fasi.py, gli stadi promote_test, promote_uat, promote_prod",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "analisi_registrate",
   "valore": 63,
   "fonte": "api/nowforge/analysis/registry.py, all_recipes()",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "agenti",
   "valore": 10,
   "fonte": "api/nowforge/api/routes/meta.py, AGENTS",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "agenti_che_scrivono",
   "valore": 2,
   "fonte": "api/nowforge/api/routes/meta.py, can_write_instance",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "agenti_che_non_scrivono",
   "valore": 8,
   "fonte": "api/nowforge/api/routes/meta.py, can_write_instance",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "ruoli",
   "valore": 5,
   "fonte": "api/nowforge/auth/__init__.py, ROLES",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "tentativi_architetto",
   "valore": 3,
   "fonte": "api/nowforge/orchestrator/nodes_m3.py, MAX_GROUNDING_ATTEMPTS",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "tipi_di_artefatto",
   "valore": 41,
   "fonte": "api/nowforge/snow/kinds.py, KIND_SPECS",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "tipi_di_artefatto_non_elencati",
   "valore": 31,
   "fonte": "api/nowforge/snow/kinds.py, KIND_SPECS meno i 10 nominati nella pagina",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "regole_del_validatore",
   "valore": 37,
   "fonte": "api/nowforge/review/static.py, i codici NF distinti",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "tipi_mascherati",
   "valore": 18,
   "fonte": "api/nowforge/core/anonimizzazione.py e core/pii.py, i tipi di segnaposto",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "tipi_mascherati_sempre",
   "valore": 13,
   "fonte": "gli stessi, tolti quelli del livello rafforzato",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "tipi_mascherati_rafforzati",
   "valore": 5,
   "fonte": "anonimizzazione.py, i rilevatori accesi solo con rafforzato",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "tabelle_dello_schema",
   "valore": 6,
   "fonte": "api/nowforge/grounding/sync.py, le tabelle della testata",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "porte_d_ingresso",
   "valore": 5,
   "fonte": "routes/chat.py, routes/knowledge.py (i documenti), snow/ponte.py, routes/hooks.py, mcp_server.py: i file che esistono",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_core_analisi",
   "valore": 1,
   "fonte": "api/nowforge/packs/catalog.py, core.contents.recipes",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_sorgenti_dati_analisi",
   "valore": 2,
   "fonte": "api/nowforge/packs/catalog.py, sorgenti_dati.contents.recipes",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_sorgenti_dati_procedure",
   "valore": 7,
   "fonte": "api/nowforge/packs/knowledge/, le procedure di sorgenti_dati",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_platform_admin_analisi",
   "valore": 18,
   "fonte": "api/nowforge/packs/catalog.py, platform_admin.contents.recipes",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_platform_admin_procedure",
   "valore": 9,
   "fonte": "api/nowforge/packs/knowledge/, le procedure di platform_admin",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_cmdb_analisi",
   "valore": 11,
   "fonte": "api/nowforge/packs/catalog.py, cmdb.contents.recipes",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_cmdb_procedure",
   "valore": 9,
   "fonte": "api/nowforge/packs/knowledge/, le procedure di cmdb",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_cmdb_fasi_cmdb_health",
   "valore": 4,
   "fonte": "api/nowforge/playbooks/, cmdb_health",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_cmdb_fasi_csdm_adozione",
   "valore": 7,
   "fonte": "api/nowforge/playbooks/, csdm_adozione",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_itsm_analisi",
   "valore": 7,
   "fonte": "api/nowforge/packs/catalog.py, itsm.contents.recipes",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_itsm_procedure",
   "valore": 9,
   "fonte": "api/nowforge/packs/knowledge/, le procedure di itsm",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_itsm_fasi_itsm",
   "valore": 7,
   "fonte": "api/nowforge/playbooks/, itsm",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_licensing_servicenow_analisi",
   "valore": 8,
   "fonte": "api/nowforge/packs/catalog.py, licensing_servicenow.contents.recipes",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_licensing_servicenow_procedure",
   "valore": 4,
   "fonte": "api/nowforge/packs/knowledge/, le procedure di licensing_servicenow",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_sam_pro_analisi",
   "valore": 13,
   "fonte": "api/nowforge/packs/catalog.py, sam_pro.contents.recipes",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_sam_pro_procedure",
   "valore": 9,
   "fonte": "api/nowforge/packs/knowledge/, le procedure di sam_pro",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_sam_pro_fasi_sam_pro",
   "valore": 9,
   "fonte": "api/nowforge/playbooks/, sam_pro",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_itam_ham_analisi",
   "valore": 2,
   "fonte": "api/nowforge/packs/catalog.py, itam_ham.contents.recipes",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_itam_ham_procedure",
   "valore": 4,
   "fonte": "api/nowforge/packs/knowledge/, le procedure di itam_ham",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_itam_ham_fasi_itam_ham",
   "valore": 4,
   "fonte": "api/nowforge/playbooks/, itam_ham",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_itom_analisi",
   "valore": 0,
   "fonte": "api/nowforge/packs/catalog.py, itom.contents.recipes",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetto_itom_procedure",
   "valore": 11,
   "fonte": "api/nowforge/packs/knowledge/, le procedure di itom",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "publisher",
   "valore": 7,
   "fonte": "api/nowforge/packs/catalog.py, i pacchetti vendor_*",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "publisher_procedure",
   "valore": 36,
   "fonte": "api/nowforge/packs/knowledge/vendor_*",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "publisher_analisi",
   "valore": 2,
   "fonte": "api/nowforge/packs/catalog.py, le analisi distinte dei pacchetti vendor_*",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "famiglia_itam",
   "valore": 3,
   "fonte": "api/nowforge/packs/catalog.py, le schede della famiglia nella pagina",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "famiglia_itsm",
   "valore": 1,
   "fonte": "api/nowforge/packs/catalog.py, le schede della famiglia nella pagina",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "famiglia_operations",
   "valore": 3,
   "fonte": "api/nowforge/packs/catalog.py, le schede della famiglia nella pagina",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "famiglia_piattaforma",
   "valore": 3,
   "fonte": "api/nowforge/packs/catalog.py, le schede della famiglia nella pagina",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "pacchetti",
   "valore": 16,
   "fonte": "api/nowforge/packs/catalog.py, all_packs()",
   "data": "2026-10-02",
   "versione": "1.5.2"
  },
  {
   "chiave": "test_python",
   "valore": 3249,
   "fonte": "pytest, l'ultima suite completa del 2026-10-02 sulla versione in preparazione dopo la 1.5.2 (sessione di integrazione)",
   "data": "2026-10-02",
   "versione": "1.5.2 e seguenti, in preparazione"
  },
  {
   "chiave": "test_frontend",
   "valore": 938,
   "fonte": "vitest (npm test), la stessa suite del 2026-10-02",
   "data": "2026-10-02",
   "versione": "1.5.2 e seguenti, in preparazione"
  },
  {
   "chiave": "test_totale",
   "valore": 4187,
   "fonte": "la somma dei due qui sopra",
   "data": "2026-10-02",
   "versione": "1.5.2 e seguenti, in preparazione"
  }
 ],
 "esempi": [
  {
   "valore": 8,
   "dove": "il lavoro di esempio: le modifiche dell'update set SNForge/LAV-142"
  },
  {
   "valore": 3,
   "dove": "il lavoro di esempio: i test ATF, 3 su 3"
  },
  {
   "valore": 4,
   "dove": "«Progettare»: i simboli controllati nell'esempio"
  },
  {
   "valore": 0,
   "dove": "«Progettare»: i simboli inesistenti nell'esempio"
  },
  {
   "valore": 2,
   "dove": "i rilievi bloccanti del frammento scritto a memoria"
  },
  {
   "valore": 1,
   "dove": "la priorità 1 (P1) del requisito di esempio"
  },
  {
   "valore": 6,
   "dove": "la conversazione vera: i passi da 0 a 6 della risposta (testo alternativo)"
  }
 ]
}
