@mcptoolshop/housekeeping 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.it.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.md">English</a> | <a href="README.pt-BR.md">Português (BR)</a>
2
+ <a href="README.md">English</a> | <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
3
  </p>
4
4
 
5
5
  <p align="center">
@@ -21,51 +21,63 @@
21
21
  <a href="https://mcp-tool-shop-org.github.io/housekeeping/handbook/"><img src="https://img.shields.io/badge/Handbook-read-blue" alt="Handbook" /></a>
22
22
  </p>
23
23
 
24
- Un'unica scansione raccoglie lo stato del CI di ogni repository, le issue aperte e le richieste di pull, le release, i tag di versione, i file di workflow, la protezione dei branch, gli avvisi di sicurezza, i file di blocco e i dati di fatturazione di Actions in SQLite, quindi esegue un controllo completo rispetto alle regole definite.
24
+ Un'unica scansione raccoglie lo stato CI di ogni repository, le issue aperte e le richieste di pull,
25
+ le release, i tag di versione, i file di workflow, la protezione dei branch, gli avvisi di sicurezza,
26
+ i file di lock e la fatturazione di Actions in SQLite, quindi esegue un controllo su tutto questo rispetto alle
27
+ regole definite.
25
28
 
26
29
  Fornisce risposte, per l'intera organizzazione contemporaneamente:
27
30
 
28
- - Quali branch predefiniti sono contrassegnati come problematici e si tratta di una branch principale interrotta o di una cronologia obsoleta?
31
+ - Quali sono i branch predefiniti contrassegnati come problematici e si tratta di una branch principale interrotta o di una cronologia obsoleta?
29
32
  - Quali richieste di pull non possono mai essere unite, perché un controllo richiesto che non produce alcun risultato le sta bloccando?
30
- - Quali distribuzioni vengono rifiutate dalle impostazioni del repository?
33
+ - Quali deployment vengono rifiutati dalle impostazioni del repository?
31
34
  - Dove `package.json`, i tag Git e il registro npm si sono discostati?
32
35
  - Quali workflow violano le regole sui costi di Actions, quanto sono costati e quali job hanno consumato tali costi?
33
- - Quali repository contengono avvisi che il sistema di avvisi di GitHub non rileva?
36
+ - Quali repository contengono avvisi che il conteggio degli avvisi di GitHub non rileva?
34
37
 
35
- È uno strumento di audit, non uno strumento di correzione. Legge i dati di GitHub e non apporta alcuna modifica.
38
+ È uno strumento di audit, non uno strumento di correzione. Legge GitHub e non modifica nulla.
36
39
 
37
40
  ## Un agente per ogni repository
38
41
 
39
- Un'organizzazione con dozzine di repository non dispone di un unico punto in cui sono memorizzati i suoi dati. housekeeping è questo punto, e il suo server MCP, `hk-mcp`, li fornisce a un agente AI. Grazie a questo, un singolo agente può fungere da coordinatore per l'intera organizzazione:
40
-
41
- 1. **Scansione.** `hk refresh` esegue una singola scansione di ogni repository.
42
- 2. **Smistamento.** L'agente chiede quali elementi sono contrassegnati come problematici, quali sono bloccati e quali sono peggiorati, e riceve risposte che già distinguono una branch principale interrotta da una cronologia obsoleta e una richiesta di pull bloccata da una in conflitto.
43
- 3. **Pianificazione di un'azione.** Una singola query `hk_sql` individua tutti i repository con la stessa struttura, in modo che la correzione diventi una singola richiesta di pull per repository anziché una ricerca.
44
- 4. **Esecuzione del lavoro.** housekeeping non scrive mai. L'agente apre le richieste di pull con i propri strumenti, con le proprie autorizzazioni e previa approvazione.
45
- 5. **Verifica.** Esegue una nuova scansione. L'errore è stato risolto o meno, e la differenza tra due scansioni è una query.
42
+ Un'organizzazione con dozzine di repository non ha un unico punto in cui risiedono i suoi
43
+ dati. housekeeping è questo punto, e il suo server MCP, `hk-mcp`, li fornisce
44
+ a un agente AI. Con esso, un singolo agente può agire come coordinatore per l'intera
45
+ organizzazione:
46
+
47
+ 1. **Scansione.** `hk refresh` acquisisce un'istantanea di ogni repository.
48
+ 2. **Smistamento.** L'agente chiede quali elementi sono problematici, quali sono bloccati e quali sono peggiorati,
49
+ e riceve risposte che già distinguono una branch principale interrotta da una cronologia obsoleta e
50
+ una richiesta di pull bloccata da una in conflitto.
51
+ 3. **Pianificazione di un'ondata.** Una singola query `hk_sql` individua tutti i repository con la stessa
52
+ configurazione, in modo che una correzione diventi una singola richiesta di pull per repository invece di una ricerca.
53
+ 4. **Esecuzione del lavoro.** housekeeping non scrive mai. L'agente apre le richieste di pull
54
+ con i propri strumenti, con le proprie autorizzazioni e con la tua approvazione.
55
+ 5. **Verifica.** Esegui di nuovo la scansione. L'anomalia è stata risolta o meno, e la differenza
56
+ tra due istantanee è una query.
46
57
 
47
58
  Domande a cui un agente risponde in una o due chiamate:
48
59
 
49
- - Quali branch predefiniti sono contrassegnati come problematici e quale job e quale passaggio hanno causato il problema?
50
- - Quali richieste di pull non possono mai essere unite e il problema è dovuto al trigger o a un conflitto?
60
+ - Quali sono i branch predefiniti contrassegnati come problematici e quale job e quale passaggio hanno causato il problema?
61
+ - Quali richieste di pull non possono mai essere unite e la causa è il trigger o un conflitto?
51
62
  - Quali repository contengono un avviso di produzione per il quale GitHub non mostra alcun avviso?
52
- - Quali workflow pianificati violano le regole per le pianificazioni e in che modo?
63
+ - Quali workflow pianificati violano le regole per le pianificazioni e come?
53
64
  - Quanto sono costati Actions e quale job ha consumato tali costi?
54
65
  - Cosa è cambiato dall'ultima scansione?
55
66
 
56
67
  | Strumento | A cosa risponde |
57
68
  |---|---|
58
- | `hk_summary` | Totali per la scansione più recente: repository, issue, richieste di pull, workflow, risultati. |
59
- | `hk_findings` | Risultati per codice, gravità, categoria o repository; conteggi per codice quando non filtrati. Il risultato di una branch principale contrassegnata come problematica indica il job e il passaggio che hanno causato il problema. |
60
- | `hk_ci` | Repository la cui branch predefinita è contrassegnata come problematica e i workflow che hanno fallito; anche le pianificazioni non riuscite, le branch delle richieste di pull non riuscite e i repository senza CI. |
61
- | `hk_repo` | Un singolo repository nel dettaglio: risultati, workflow, richieste di pull e issue aperte. |
69
+ | `hk_summary` | Totali per la scansione più recente: repository, issue, richieste di pull, workflow, anomalie. |
70
+ | `hk_findings` | Anomalie per codice, gravità, categoria o repository; conteggi per codice quando non filtrati. L'anomalia di una branch principale problematica indica il job e il passaggio che hanno causato il problema. |
71
+ | `hk_ci` | Repository il cui branch predefinito è problematico e i workflow che non sono riusciti; anche le pianificazioni non riuscite, i branch delle richieste di pull non riuscite e i repository senza CI. |
72
+ | `hk_repo` | Un singolo repository nel dettaglio: anomalie, workflow, richieste di pull e issue aperte. |
62
73
  | `hk_backlog` | Richieste di pull o issue aperte in tutta l'organizzazione, ordinate dalla più vecchia alla più recente. |
63
74
  | `hk_health` | Un punteggio di salute per repository, ordinato dal peggiore al migliore. |
64
- | `hk_cost` | Spese di Actions per repository, workflow o job, separate in costi lordi e netti. |
75
+ | `hk_cost` | Spese di Actions per repository, workflow o job, separate tra costi lordi e netti. |
65
76
  | `hk_sql` | Una singola istruzione `SELECT` o `WITH` in sola lettura rispetto al data warehouse. |
66
77
  | `hk_schema` | Le tabelle e le colonne, per scrivere query `hk_sql`. |
67
78
 
68
- Ogni risposta proviene dalla scansione più recente, aperta in sola lettura. Una chiamata non riuscita restituisce un errore strutturato, mai una traccia dello stack.
79
+ Ogni risposta proviene dall'istantanea più recente, aperta in sola lettura. Una chiamata non riuscita
80
+ restituisce un errore strutturato, mai una traccia dello stack.
69
81
 
70
82
  ### Come connetterlo
71
83
 
@@ -78,43 +90,60 @@ Ogni risposta proviene dalla scansione più recente, aperta in sola lettura. Una
78
90
  }
79
91
  ```
80
92
 
81
- `HK_HOME` è la directory da cui si esegue la scansione. Da una copia clonata, utilizzare `"command": "node", "args": ["/path/to/housekeeping/src/mcp.mjs"]`. Il secondo server è [Atlas](https://github.com/dogfood-lab/testing-os/tree/main/packages/atlas), che risponde allo stesso agente su un singolo repository alla volta (vedere di seguito). Su Windows, avviare un comando installato a livello globale tramite `cmd /c`.
93
+ `HK_HOME` è la directory da cui si esegue la scansione. Da un clone, utilizzare
94
+ `"command": "node", "args": ["/path/to/housekeeping/src/mcp.mjs"]`. Il secondo
95
+ server è [Atlas](https://github.com/dogfood-lab/testing-os/tree/main/packages/atlas),
96
+ che risponde allo stesso agente su un singolo repository alla volta (vedi sotto). Su
97
+ Windows, avvia un comando installato a livello globale tramite `cmd /c`.
82
98
 
83
99
  ## housekeeping e Atlas
84
100
 
85
- [Atlas](https://github.com/dogfood-lab/testing-os/tree/main/packages/atlas) (`@dogfood-lab/atlas`) mappa un singolo repository: le sue parti e le sue "porte", ovvero ogni workflow con ciò che esegue, pubblica e distribuisce. La mappa viene salvata come `atlas/` e verificata nel CI. housekeeping è la vista dell'organizzazione. I due strumenti sono progettati per funzionare insieme.
86
-
87
- - **Ogni mappa, sottoposta a scansione.** Una scansione legge la mappa salvata di ciascun repository insieme a tutti gli altri dati e segnala quali repository non ne hanno, quali non eseguono mai `atlas check` e quali contengono un motore diverso da quello utilizzato dal resto dell'organizzazione.
88
- - **Dove un'esecuzione contrassegnata come problematica ha causato un errore.** Quando una branch predefinita è contrassegnata come problematica, il risultato indica il job e il passaggio che hanno causato l'errore e, tramite la mappa, il comando che quel passaggio esegue, in modo che la correzione inizi nel file corretto.
89
- - **Informazioni sulla distribuzione dalla mappa.** L'ambiente in cui un job distribuisce è tratto dalla mappa in cui è registrato, in modo che entrambi gli strumenti leggano un workflow nello stesso modo.
90
- - **Avvisi in tutta l'organizzazione.** Atlas segnala un passaggio del workflow che causerà un errore prima che venga eseguito, ad esempio uno strumento che richiede una versione di runtime più recente di quella installata dal job. Il report elenca questi elementi per tutti i repository contemporaneamente.
91
-
92
- Un agente che utilizza entrambi i server passa da "questi dodici repository sono bloccati" (housekeeping) a "questo è il workflow, il job e i file che una modifica raggiungerà" (Atlas), senza dover aprire ogni repository manualmente.
93
-
94
- ## Perché ha questa struttura
101
+ [Atlas](https://github.com/dogfood-lab/testing-os/tree/main/packages/atlas)
102
+ (`@dogfood-lab/atlas`) mappa un singolo repository: le sue parti e le sue porte, ovvero
103
+ ogni workflow con ciò che esegue, pubblica e distribuisce. La mappa viene salvata
104
+ come `atlas/` e controllata in CI. housekeeping è la vista dell'organizzazione. I due
105
+ sono progettati per funzionare insieme.
106
+
107
+ - **Ogni mappa, acquisita.** Una scansione legge la mappa salvata di ciascun repository insieme
108
+ a tutto il resto e segnala quali repository non ne hanno, quali non eseguono mai `atlas check` e quali
109
+ contengono un motore diverso da quello a cui il resto dell'
110
+ organizzazione fa riferimento.
111
+ - **Dove un'esecuzione problematica si è verificata.** Quando un branch predefinito è problematico, l'anomalia indica
112
+ il job e il passaggio che non sono riusciti e, tramite la mappa, il comando che quel passaggio
113
+ esegue, in modo che la correzione inizi nel file corretto.
114
+ - **Fatti sul deployment dalla mappa.** L'ambiente in cui un job esegue il deployment viene preso dalla
115
+ mappa in cui lo registra, in modo che entrambi gli strumenti leggano un workflow nello stesso modo.
116
+ - **Avvisi in tutta la flotta.** Atlas segnala un passaggio del workflow che fallirà
117
+ prima di essere eseguito, come uno strumento che richiede una versione runtime più recente di quella installata dal job.
118
+ Il report elenca questi elementi per tutti i repository contemporaneamente.
119
+
120
+ Un agente con entrambi i server passa da "questi dodici repository sono bloccati"
121
+ (housekeeping) a "questo è il workflow, il job e i file che una modifica raggiungerà" (Atlas), senza aprire ogni repository manualmente.
122
+
123
+ ## Perché ha questa forma
95
124
 
96
125
  | Livello | Scelta | Motivo |
97
126
  |---|---|---|
98
- | Trasporto | L'interfaccia a riga di comando `gh` | Già contiene il token. Lo strumento non memorizza né richiede mai una credenziale. |
99
- | Raccolta | GitHub GraphQL, a pagine | Una singola query restituisce metadati, issue aperte, richieste di pull aperte, release e alberi di file per una pagina di repository. Una pagina che continua a superare il timeout viene dimezzata e richiesta nuovamente dallo stesso cursore. |
100
- | Esecuzioni di Actions | REST | GraphQL non dispone di un'interfaccia per Actions. |
101
- | Le azioni comportano un costo. | API di fatturazione più durata per ogni attività. | Nella fattura è indicato il repository; solo nelle attività è indicato il workflow. Gli endpoint `/timing` di GitHub restituiscono zeri, quindi il totale per ogni attività viene ricostruito e quindi riconciliato con la fattura. |
102
- | Tariffe per i runner. | Letto dalla fattura. | Una tariffa fatturata può differire dal prezzo di listino e una costante nel codice sorgente falsificherebbe ogni numero. |
103
- | Archiviazione. | SQLite tramite il `node:sqlite` integrato. | Nessuna fase di compilazione nativa. |
104
- | Fonte di verità. | `data/snapshots/*.json` | Dati grezzi, modificabili e con possibilità di aggiungere solo dati. Il database viene derivato: `npm run rebuild` lo ricostruisce offline. |
105
- | Registro delle scansioni. | `data/sweeps.jsonl` | Una riga per ogni scansione, comprese le scansioni non riuscite e le scansioni che non hanno trovato nulla di nuovo. |
127
+ | Trasporto | la CLI `gh` | Già contiene il tuo token. Lo strumento non memorizza né richiede mai una credenziale. |
128
+ | Raccolta | GitHub GraphQL, a pagine | Una singola query restituisce metadati, issue aperte, richieste di pull aperte, release e alberi di file per una pagina di repository. Una pagina che continua a superare il tempo limite viene dimezzata e richiesta di nuovo dallo stesso cursore. |
129
+ | Esecuzioni di Actions | REST | GraphQL non ha un'interfaccia Actions. |
130
+ | Costi di Actions | API di fatturazione più durate per job | La fattura indica il repository; solo i job indicano quale flusso di lavoro. Gli endpoint GitHub di `/timing` restituiscono zeri, quindi la somma per ogni job viene ricostruita e quindi confrontata con la fattura. |
131
+ | Tariffe per l'esecuzione | lettura dalla fattura | Una tariffa fatturata può differire dal prezzo di listino e una costante nel codice sorgente falsificherebbe ogni numero. |
132
+ | Archiviazione | SQLite tramite il `node:sqlite` integrato | Nessuna fase di compilazione nativa. |
133
+ | Fonte di verità | `data/snapshots/*.json` | Dati grezzi, modificabili e con possibilità di aggiungere solo dati. Il database viene derivato: `npm run rebuild` lo ricostruisce offline. |
134
+ | Registro delle scansioni | `data/sweeps.jsonl` | Una riga per ogni scansione, comprese le scansioni che hanno avuto esito negativo e le scansioni che non hanno trovato nulla di nuovo. |
106
135
 
107
136
  Gli snapshot sono immutabili e additivi, quindi la differenza tra due date è un `JOIN`.
108
137
 
109
138
  ## Requisiti
110
139
 
111
140
  - Node.js 22.5 o successivo.
112
- - [GitHub CLI](https://cli.github.com/), con accesso effettuato (`gh auth status`) con un
113
- account che può leggere l'organizzazione. Per leggere le fatture e gli avvisi di sicurezza
141
+ - La [CLI GitHub](https://cli.github.com/), con accesso (`gh auth status`) come
142
+ account in grado di leggere l'organizzazione. Per leggere le fatture e gli avvisi di sicurezza
114
143
  sono necessari i permessi corrispondenti; in caso contrario, la scansione registra "non misurato" e
115
144
  prosegue. Non registra mai un permesso mancante come risultato valido.
116
145
  - Windows o Linux. È sviluppato su Windows e i suoi test vengono eseguiti su Linux in
117
- CI. macOS dovrebbe funzionare e non è testato.
146
+ CI. macOS dovrebbe funzionare, ma non è stato testato.
118
147
 
119
148
  ## Utilizzo
120
149
 
@@ -147,6 +176,8 @@ hk findings # findings grouped by severity and code
147
176
  hk health # per-repository health score, worst first
148
177
  hk repo <name> # one repository in full
149
178
  hk prs # every open pull request by age
179
+ hk branches # branches by state: merged, moved after merge, no PR
180
+ hk watch # open PRs, alerts and branches for a short watch list
150
181
  hk versions # package.json against git tag against npm
151
182
  hk actions # every workflow and its rule flags
152
183
  hk cost # Actions cost, gross and net side by side
@@ -157,11 +188,11 @@ hk help # every command and flag
157
188
  In una copia senza `npm link`, ogni `hk <command>` è `node src/cli.mjs <command>`.
158
189
 
159
190
  `npm run rebuild` deriva nuovamente il database e il report dagli snapshot già
160
- presenti sul disco, senza accesso alla rete.
191
+ sul disco, senza accesso alla rete.
161
192
 
162
193
  Una scansione completa effettua alcune centinaia di chiamate API. Non eseguire `refresh` in un ciclo.
163
194
 
164
- I risultati vengono inviati all'output standard; i progressi e gli errori vengono inviati all'output degli errori standard. Ogni
195
+ I risultati vengono inviati all'output standard; i progressi e gli errori vengono inviati all'errore standard. Ogni
165
196
  errore stampa un codice e un suggerimento. Codici di uscita: 0 ok, 1 errore utente, 2 errore di runtime, 3 parziale (la scansione è terminata, con delle lacune).
166
197
 
167
198
  ## Configurazione
@@ -175,20 +206,21 @@ errore stampa un codice e un suggerimento. Codici di uscita: 0 ok, 1 errore uten
175
206
  }
176
207
  ```
177
208
 
178
- - `org` è l'organizzazione da scansionare. `hk refresh <org>` lo sovrascrive. In caso contrario, una scansione si rifiuta di avviarsi.
209
+ - `org` è l'organizzazione da scansionare. `hk refresh <org>` lo sovrascrive. In
210
+ caso contrario, la scansione si rifiuta di avviarsi.
179
211
  - `metaRepos` sono i repository che contengono le impostazioni predefinite dell'organizzazione, le risorse o
180
- gli strumenti, non un prodotto distribuito. Sono esenti dai risultati che hanno senso solo per un prodotto: mancanza di README, LICENSE e file simili, assenza di workflow e assenza di release.
212
+ gli strumenti, non un prodotto distribuito. Sono esenti dai risultati che hanno senso solo per un prodotto: mancanza di file README, LICENSE e simili, assenza di flussi di lavoro e assenza di versioni.
181
213
 
182
214
  Un file non valido è un errore, mai un valore predefinito silenzioso: una chiave sconosciuta, un tipo errato o un JSON non valido interrompono l'esecuzione.
183
215
 
184
- Eseguito da una copia, housekeeping mantiene `data/`, `reports/` e il file di configurazione
185
- nella copia. Eseguito come pacchetto installato, li mantiene nella directory da cui
216
+ Eseguire da una copia, housekeeping mantiene `data/`, `reports/` e il file di configurazione
217
+ nella copia. Eseguire come pacchetto installato, li mantiene nella directory da cui
186
218
  lo si esegue o in `HK_HOME` quando è impostato.
187
219
 
188
220
  Ambiente: `HK_HOME` (dove risiedono i dati, i report e la configurazione),
189
221
  `HK_CONFIG` (percorso della configurazione), `HK_DB` (percorso del database), `HK_LOG`
190
222
  (`silent`, `normal`, `verbose` o `debug`), `HK_COST_REPOS` e
191
- `HK_COST_BUDGET` (limiti per il costo per ogni attività), `GH_PATH` (percorso di `gh`).
223
+ `HK_COST_BUDGET` (limiti per il costo per job), `GH_PATH` (percorso di `gh`).
192
224
 
193
225
  ## Mantenere i dati privati
194
226
 
@@ -196,7 +228,7 @@ Ambiente: `HK_HOME` (dove risiedono i dati, i report e la configurazione),
196
228
  repository pubblico.**
197
229
 
198
230
  Uno snapshot registra i nomi e le descrizioni dei repository privati, ogni
199
- avviso di sicurezza aperto con il pacchetto a cui si riferisce, i file di workflow e la fatturazione di Actions. GitHub nasconde deliberatamente gli avvisi di sicurezza di un repository pubblico a tutti tranne che ai suoi manutentori; uno snapshot pubblicato fornirebbe tale elenco.
231
+ avviso di sicurezza aperto con il pacchetto a cui si riferisce, i file del flusso di lavoro e la fatturazione di Actions. GitHub nasconde deliberatamente gli avvisi di sicurezza di un repository pubblico a tutti tranne che ai suoi manutentori; uno snapshot pubblicato fornirebbe tale elenco.
200
232
 
201
233
  Il `.gitignore` di questo repository esclude `data/`, `reports/` e
202
234
  `housekeeping.config.json`. Per mantenere la cronologia, che è lo scopo degli snapshot,
@@ -208,36 +240,46 @@ Le regole sono contenute in `src/analyze.mjs`. Ognuna di esse cita la regola scr
208
240
  quindi un risultato può essere contestato rispetto a uno standard e non al gusto personale. Le regole
209
241
  che questo repository distribuisce sono in [`rules/`](rules/):
210
242
 
211
- - [`rules/github-actions.md`](rules/github-actions.md): filtri dei percorsi, runner, dimensione della matrice, limite del file di workflow, concorrenza.
243
+ - [`rules/github-actions.md`](rules/github-actions.md): filtri dei percorsi, esecutori, dimensione della matrice, limite del file del flusso di lavoro, concorrenza.
212
244
  - [`rules/shipcheck-product-standards.md`](rules/shipcheck-product-standards.md): il CI deve essere superato, i gate di rilascio, le versioni.
213
245
  - [`rules/repo-first.md`](rules/repo-first.md): la branch predefinita.
214
- - [`rules/atlas-map.md`](rules/atlas-map.md): una mappa impegnata di ogni repository, controllata nel CI.
246
+ - [`rules/atlas-map.md`](rules/atlas-map.md): una mappa impegnata di ciascun repository, controllata nel CI.
215
247
 
216
- Sono gli standard di un'organizzazione. Se i vostri sono diversi, modificate il file della regola
248
+ Sono gli standard di un'organizzazione. Se i vostri sono diversi, modificate il file delle regole
217
249
  e la regola insieme.
218
250
 
219
- Le regole si prendono cura di separare le cose che sembrano simili, perché combinarle produce rumore:
220
-
221
- - **Un ramo predefinito rosso non è un ramo di richiesta di pull rosso.** Un ramo di Dependabot che non funziona rappresenta un elemento in sospeso; un'esecuzione `push` non riuscita sul ramo predefinito rappresenta un problema. L'evento dell'esecuzione determina quale sia il caso.
222
- - **La cronologia non è un problema.** Un flusso di lavoro spostato in una modalità di esecuzione solo per le release mantiene il suo ultimo errore sul ramo predefinito per sempre. Un flusso di lavoro eliminato mantiene le sue esecuzioni. Nessuno dei due rappresenta un difetto attivo.
223
- - **Un controllo obbligatorio che non può generare alcun risultato non è un controllo che non è stato eseguito qui.** Uno suggerisce di eliminare il requisito; l'altro suggerisce di correggere il trigger. Le correzioni si contraddicono a vicenda.
224
- - **Una richiesta di pull che il trigger ha saltato non è una richiesta in conflitto.** GitHub non esegue alcun flusso di lavoro per le richieste di pull su una richiesta di pull con conflitti, quindi la sua mancanza di controllo non dice nulla sul trigger. Quest'ultima richiede un rebase.
225
- - **Un'esecuzione non riuscita non è un'esecuzione annullata.** `cancel-in-progress` esiste per interrompere le esecuzioni obsolete, quindi i minuti annullati rappresentano solitamente la regola di concorrenza in funzione.
226
- - **Il costo lordo non è il costo netto.** GitHub calcola il costo dei repository pubblici al prezzo pieno e li riduce a zero. Il costo lordo è la potenza di calcolo reale; il costo netto è il denaro reale. Non vengono mai sommati.
227
- - **Se non viene misurato, non è corretto.** Un repository che GitHub non sta analizzando segnala zero avvisi. Un repository per il quale il controllo dei costi non è stato raggiunto non ha una riga di costo. Entrambi vengono segnalati come sconosciuti.
228
-
229
- La gravità determina un punteggio di salute: critico 40, alto 15, medio 6, basso 2, informativo 0, dedotto da 100. Il punteggio classifica l'attenzione, non la qualità.
230
-
231
- Il [manuale](https://mcp-tool-shop-org.github.io/housekeeping/handbook/) elenca ogni riscontro, comando, codice di errore e tabella.
251
+ Le regole si assicurano di mantenere separate le cose che sembrano simili, perché combinarle produce rumore:
252
+
253
+ - **Una branch predefinita rossa non è una branch di richiesta di pull rossa.** Una branch Dependabot non riuscita è un backlog; un'esecuzione `push` non riuscita sulla branch predefinita è un errore. L'evento dell'esecuzione decide quale.
254
+ - **La cronologia non è un errore.** Un flusso di lavoro spostato in release-only mantiene
255
+ il suo ultimo errore sulla branch predefinita per sempre. Un flusso di lavoro eliminato mantiene le sue esecuzioni.
256
+ Nessuno dei due è un difetto attivo.
257
+ - **Un controllo richiesto che nulla può emettere non è un controllo che non è stato eseguito qui.**
258
+ Uno dice di eliminare il requisito; l'altro dice di correggere il trigger. Le correzioni
259
+ si contraddicono a vicenda.
260
+ - **Una richiesta di pull saltata dal trigger non è una richiesta di pull in conflitto.** GitHub non esegue
261
+ nessun flusso di lavoro di richiesta di pull su una richiesta di pull con conflitti, quindi il suo controllo mancante non dice nulla sul trigger. Quello richiede un rebase.
262
+ - **Un'esecuzione non riuscita non è un'esecuzione annullata.** `cancel-in-progress` esiste per interrompere
263
+ le esecuzioni obsolete, quindi i minuti annullati sono in genere la regola di concorrenza in funzione.
264
+ - **Il costo lordo non è il costo netto.** GitHub misura i repository pubblici a prezzo pieno e li sconta a zero. Il costo lordo è la potenza di calcolo reale; il costo netto è il denaro reale.
265
+ Non vengono mai sommati.
266
+ - **Non misurato non è pulito.** Un repository GitHub che non esegue la scansione dei report
267
+ non segnala alcun avviso. Un repository a cui il passaggio dei costi non è arrivato non ha una riga dei costi. Entrambi
268
+ vengono segnalati come sconosciuti.
269
+
270
+ La gravità determina un punteggio di integrità: critico 40, alto 15, medio 6, basso 2, informativo 0,
271
+ dedotto da 100. Il punteggio classifica l'attenzione, non la qualità.
272
+
273
+ Il [manuale](https://mcp-tool-shop-org.github.io/housekeeping/handbook/) elenca tutti i risultati, i comandi, i codici di errore e le tabelle.
232
274
 
233
275
  ## Sicurezza
234
276
 
235
- - **Solo lettura.** Il raccoglitore invia query GraphQL e richieste REST `GET`. Non esegue mai operazioni di merge, push, release, pubblicazione o modifica di un'impostazione.
236
- - **Nessuna credenziale.** L'autenticazione è quella che `gh` già possiede. Nulla viene scritto su disco al riguardo.
237
- - **Nessuna telemetria.** Gli unici host contattati sono l'API di GitHub, tramite `gh`, e il registro npm, per la ricerca di versioni e avvisi.
238
- - **Ciò che memorizza** è la parte sensibile: vedere "Mantenere i dati privati".
277
+ - **Solo lettura.** Il raccoglitore esegue GraphQL query e richieste REST `GET`. Non esegue mai operazioni di unione, invio, rilascio, pubblicazione o modifica delle impostazioni.
278
+ - **Nessuna credenziale.** L'autenticazione utilizza le credenziali già presenti in `gh`. Nessun dato viene scritto su disco al riguardo.
279
+ - **Nessuna telemetria.** Gli unici host contattati sono l'API GitHub, tramite `gh`, e il registro npm, per la verifica della versione e degli avvisi.
280
+ - **Cosa memorizza** è la parte sensibile: vedere "Mantenere i dati privati".
239
281
 
240
- Segnala una vulnerabilità come descritto in [SECURITY.md](SECURITY.md).
282
+ Segnalare una vulnerabilità come descritto in [SECURITY.md](SECURITY.md).
241
283
 
242
284
  ## Test
243
285
 
@@ -245,7 +287,7 @@ Segnala una vulnerabilità come descritto in [SECURITY.md](SECURITY.md).
245
287
  npm test
246
288
  ```
247
289
 
248
- Ogni regola viene testata in entrambe le direzioni: la forma che deve essere attivata e la forma adiacente che non deve esserlo. Un verificatore separato deriva nuovamente un campione di risultati da GitHub in tempo reale tramite il proprio canale di comunicazione e, in caso di assenza di database o di rete, lo segnala in modo evidente.
290
+ Ogni regola viene testata in entrambe le direzioni: la configurazione che deve attivarsi e la configurazione adiacente che non deve attivarsi. Un verificatore separato ricava un campione di risultati dai dati GitHub in tempo reale tramite il proprio canale di comunicazione e, in caso di assenza del database o della rete, segnala l'errore in modo evidente.
249
291
 
250
292
  ## Licenza
251
293
 
@@ -253,4 +295,4 @@ MIT. Vedere [LICENSE](LICENSE).
253
295
 
254
296
  ---
255
297
 
256
- Creato da <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
298
+ Realizzato da <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>