@mcptoolshop/housekeeping 1.3.1 → 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/CHANGELOG.md +69 -0
- package/README.es.md +171 -81
- package/README.fr.md +161 -76
- package/README.hi.md +123 -67
- package/README.it.md +184 -81
- package/README.ja.md +116 -72
- package/README.md +91 -23
- package/README.pt-BR.md +179 -93
- package/README.zh.md +122 -75
- package/housekeeping.config.example.json +3 -1
- package/package.json +1 -1
- package/rules/atlas-map.md +6 -1
- package/rules/github-actions.md +7 -3
- package/src/analyze.mjs +148 -41
- package/src/cli.mjs +85 -2
- package/src/collect.mjs +78 -5
- package/src/config.mjs +22 -4
- package/src/load.mjs +62 -6
- package/src/report.mjs +13 -9
- package/src/schema.sql +35 -1
- package/src/workflow-risks.mjs +160 -2
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">
|
|
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">
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
12
12
|
An operational-health warehouse for a GitHub organization.<br>
|
|
13
|
-
One sweep, one SQLite database, findings you can argue with
|
|
13
|
+
One sweep, one SQLite database, findings you can argue with,<br>
|
|
14
|
+
and the whole-organization view an AI agent needs to coordinate every repository.
|
|
14
15
|
</p>
|
|
15
16
|
|
|
16
17
|
<p align="center">
|
|
@@ -20,39 +21,129 @@
|
|
|
20
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>
|
|
21
22
|
</p>
|
|
22
23
|
|
|
23
|
-
Un
|
|
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.
|
|
24
28
|
|
|
25
29
|
Fornisce risposte, per l'intera organizzazione contemporaneamente:
|
|
26
30
|
|
|
27
31
|
- Quali sono i branch predefiniti contrassegnati come problematici e si tratta di una branch principale interrotta o di una cronologia obsoleta?
|
|
28
|
-
- Quali richieste di pull non possono essere unite, perché un controllo richiesto che non produce alcun risultato le sta bloccando?
|
|
29
|
-
- Quali
|
|
30
|
-
- Dove
|
|
32
|
+
- Quali richieste di pull non possono mai essere unite, perché un controllo richiesto che non produce alcun risultato le sta bloccando?
|
|
33
|
+
- Quali deployment vengono rifiutati dalle impostazioni del repository?
|
|
34
|
+
- Dove `package.json`, i tag Git e il registro npm si sono discostati?
|
|
31
35
|
- Quali workflow violano le regole sui costi di Actions, quanto sono costati e quali job hanno consumato tali costi?
|
|
32
|
-
- Quali repository contengono avvisi che il
|
|
36
|
+
- Quali repository contengono avvisi che il conteggio degli avvisi di GitHub non rileva?
|
|
37
|
+
|
|
38
|
+
È uno strumento di audit, non uno strumento di correzione. Legge GitHub e non modifica nulla.
|
|
39
|
+
|
|
40
|
+
## Un agente per ogni repository
|
|
41
|
+
|
|
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.
|
|
57
|
+
|
|
58
|
+
Domande a cui un agente risponde in una o due chiamate:
|
|
59
|
+
|
|
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?
|
|
62
|
+
- Quali repository contengono un avviso di produzione per il quale GitHub non mostra alcun avviso?
|
|
63
|
+
- Quali workflow pianificati violano le regole per le pianificazioni e come?
|
|
64
|
+
- Quanto sono costati Actions e quale job ha consumato tali costi?
|
|
65
|
+
- Cosa è cambiato dall'ultima scansione?
|
|
66
|
+
|
|
67
|
+
| Strumento | A cosa risponde |
|
|
68
|
+
|---|---|
|
|
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. |
|
|
73
|
+
| `hk_backlog` | Richieste di pull o issue aperte in tutta l'organizzazione, ordinate dalla più vecchia alla più recente. |
|
|
74
|
+
| `hk_health` | Un punteggio di salute per repository, ordinato dal peggiore al migliore. |
|
|
75
|
+
| `hk_cost` | Spese di Actions per repository, workflow o job, separate tra costi lordi e netti. |
|
|
76
|
+
| `hk_sql` | Una singola istruzione `SELECT` o `WITH` in sola lettura rispetto al data warehouse. |
|
|
77
|
+
| `hk_schema` | Le tabelle e le colonne, per scrivere query `hk_sql`. |
|
|
78
|
+
|
|
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.
|
|
81
|
+
|
|
82
|
+
### Come connetterlo
|
|
33
83
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"mcpServers": {
|
|
87
|
+
"housekeeping": { "command": "hk-mcp", "env": { "HK_HOME": "/path/to/warehouse" } },
|
|
88
|
+
"atlas": { "command": "atlas", "args": ["mcp"] }
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
```
|
|
37
92
|
|
|
38
|
-
|
|
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`.
|
|
98
|
+
|
|
99
|
+
## housekeeping e Atlas
|
|
100
|
+
|
|
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
|
|
124
|
+
|
|
125
|
+
| Livello | Scelta | Motivo |
|
|
39
126
|
|---|---|---|
|
|
40
|
-
| Trasporto |
|
|
41
|
-
| Raccolta | GitHub GraphQL,
|
|
42
|
-
| Esecuzioni di Actions | REST | GraphQL non
|
|
43
|
-
| Costi di Actions | API di fatturazione più durate per
|
|
44
|
-
| Tariffe
|
|
45
|
-
| Archiviazione | SQLite tramite
|
|
46
|
-
| Fonte di verità | `data/snapshots/*.json` | Dati grezzi, modificabili e con
|
|
47
|
-
|
|
|
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. |
|
|
48
135
|
|
|
49
136
|
Gli snapshot sono immutabili e additivi, quindi la differenza tra due date è un `JOIN`.
|
|
50
137
|
|
|
51
138
|
## Requisiti
|
|
52
139
|
|
|
53
140
|
- Node.js 22.5 o successivo.
|
|
54
|
-
-
|
|
55
|
-
|
|
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
|
|
143
|
+
sono necessari i permessi corrispondenti; in caso contrario, la scansione registra "non misurato" e
|
|
144
|
+
prosegue. Non registra mai un permesso mancante come risultato valido.
|
|
145
|
+
- Windows o Linux. È sviluppato su Windows e i suoi test vengono eseguiti su Linux in
|
|
146
|
+
CI. macOS dovrebbe funzionare, ma non è stato testato.
|
|
56
147
|
|
|
57
148
|
## Utilizzo
|
|
58
149
|
|
|
@@ -62,9 +153,10 @@ mkdir warehouse && cd warehouse # housekeeping keeps its data here
|
|
|
62
153
|
hk refresh your-org # collect, load, analyze, write reports/AUDIT-<date>.md
|
|
63
154
|
```
|
|
64
155
|
|
|
65
|
-
Per
|
|
156
|
+
Per mantenere le impostazioni tra le scansioni, inserire un `housekeeping.config.json` in quella
|
|
157
|
+
directory (vedere Configurazione); quindi `hk refresh` non richiede alcun argomento.
|
|
66
158
|
|
|
67
|
-
Oppure eseguirlo da una copia, che
|
|
159
|
+
Oppure eseguirlo da una copia, che mantiene i suoi dati nella copia:
|
|
68
160
|
|
|
69
161
|
```bash
|
|
70
162
|
git clone https://github.com/mcp-tool-shop-org/housekeeping.git
|
|
@@ -75,7 +167,7 @@ cp housekeeping.config.example.json housekeeping.config.json # then set "org"
|
|
|
75
167
|
hk refresh
|
|
76
168
|
```
|
|
77
169
|
|
|
78
|
-
Quindi,
|
|
170
|
+
Quindi, eseguite una query:
|
|
79
171
|
|
|
80
172
|
```bash
|
|
81
173
|
hk summary # portfolio totals
|
|
@@ -84,6 +176,8 @@ hk findings # findings grouped by severity and code
|
|
|
84
176
|
hk health # per-repository health score, worst first
|
|
85
177
|
hk repo <name> # one repository in full
|
|
86
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
|
|
87
181
|
hk versions # package.json against git tag against npm
|
|
88
182
|
hk actions # every workflow and its rule flags
|
|
89
183
|
hk cost # Actions cost, gross and net side by side
|
|
@@ -91,13 +185,15 @@ hk sql "SELECT ..." # one read-only statement
|
|
|
91
185
|
hk help # every command and flag
|
|
92
186
|
```
|
|
93
187
|
|
|
94
|
-
In una copia senza
|
|
188
|
+
In una copia senza `npm link`, ogni `hk <command>` è `node src/cli.mjs <command>`.
|
|
95
189
|
|
|
96
|
-
`npm run rebuild`
|
|
190
|
+
`npm run rebuild` deriva nuovamente il database e il report dagli snapshot già
|
|
191
|
+
sul disco, senza accesso alla rete.
|
|
97
192
|
|
|
98
193
|
Una scansione completa effettua alcune centinaia di chiamate API. Non eseguire `refresh` in un ciclo.
|
|
99
194
|
|
|
100
|
-
I risultati vengono inviati all'output standard; i progressi e gli errori vengono inviati all'
|
|
195
|
+
I risultati vengono inviati all'output standard; i progressi e gli errori vengono inviati all'errore standard. Ogni
|
|
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).
|
|
101
197
|
|
|
102
198
|
## Configurazione
|
|
103
199
|
|
|
@@ -110,73 +206,80 @@ I risultati vengono inviati all'output standard; i progressi e gli errori vengon
|
|
|
110
206
|
}
|
|
111
207
|
```
|
|
112
208
|
|
|
113
|
-
- `org` è l'organizzazione da
|
|
114
|
-
|
|
209
|
+
- `org` è l'organizzazione da scansionare. `hk refresh <org>` lo sovrascrive. In
|
|
210
|
+
caso contrario, la scansione si rifiuta di avviarsi.
|
|
211
|
+
- `metaRepos` sono i repository che contengono le impostazioni predefinite dell'organizzazione, le risorse o
|
|
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.
|
|
115
213
|
|
|
116
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.
|
|
117
215
|
|
|
118
|
-
|
|
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
|
|
218
|
+
lo si esegue o in `HK_HOME` quando è impostato.
|
|
119
219
|
|
|
120
|
-
Ambiente: `HK_HOME` (dove risiedono i dati, i report e la configurazione),
|
|
220
|
+
Ambiente: `HK_HOME` (dove risiedono i dati, i report e la configurazione),
|
|
221
|
+
`HK_CONFIG` (percorso della configurazione), `HK_DB` (percorso del database), `HK_LOG`
|
|
222
|
+
(`silent`, `normal`, `verbose` o `debug`), `HK_COST_REPOS` e
|
|
223
|
+
`HK_COST_BUDGET` (limiti per il costo per job), `GH_PATH` (percorso di `gh`).
|
|
121
224
|
|
|
122
|
-
##
|
|
225
|
+
## Mantenere i dati privati
|
|
123
226
|
|
|
124
|
-
**
|
|
227
|
+
**Ciò che una scansione scrive è sensibile. Non inserire `data/` o `reports/` in un
|
|
228
|
+
repository pubblico.**
|
|
125
229
|
|
|
126
|
-
Uno snapshot registra i nomi e le descrizioni dei repository privati, ogni
|
|
230
|
+
Uno snapshot registra i nomi e le descrizioni dei repository privati, ogni
|
|
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.
|
|
127
232
|
|
|
128
|
-
Il `.gitignore` di questo repository esclude `data/`, `reports/` e
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
Il file `hk-mcp` (o `npm run mcp` in una copia) gestisce l’accesso al database tramite stdio, quindi un assistente può porre domande senza dover leggere un file di diversi megabyte:
|
|
133
|
-
|
|
134
|
-
`hk_summary` · `hk_findings` · `hk_ci` · `hk_repo` · `hk_backlog` · `hk_health` · `hk_cost` · `hk_sql` · `hk_schema`
|
|
135
|
-
|
|
136
|
-
```json
|
|
137
|
-
{
|
|
138
|
-
"mcpServers": {
|
|
139
|
-
"housekeeping": { "command": "hk-mcp", "env": { "HK_HOME": "/path/to/warehouse" } }
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
`HK_HOME` è la directory da cui si avvia l’esecuzione. In caso di copia, utilizzare invece `"command": "node", "args": ["/path/to/housekeeping/src/mcp.mjs"]`.
|
|
145
|
-
|
|
146
|
-
`hk_sql` accetta una singola istruzione `SELECT` o `WITH` e apre il database in sola lettura. Una chiamata non riuscita restituisce un errore strutturato, mai una traccia dello stack.
|
|
233
|
+
Il `.gitignore` di questo repository esclude `data/`, `reports/` e
|
|
234
|
+
`housekeeping.config.json`. Per mantenere la cronologia, che è lo scopo degli snapshot,
|
|
235
|
+
eseguire lo strumento da un **repository privato** di proprietà e inserirli lì.
|
|
147
236
|
|
|
148
237
|
## Risultati
|
|
149
238
|
|
|
150
|
-
Le regole sono contenute in `src/analyze.mjs`. Ognuna di esse
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
- [`rules/
|
|
155
|
-
- [`rules/
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
- **
|
|
165
|
-
- **
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
239
|
+
Le regole sono contenute in `src/analyze.mjs`. Ognuna di esse cita la regola scritta che applica,
|
|
240
|
+
quindi un risultato può essere contestato rispetto a uno standard e non al gusto personale. Le regole
|
|
241
|
+
che questo repository distribuisce sono in [`rules/`](rules/):
|
|
242
|
+
|
|
243
|
+
- [`rules/github-actions.md`](rules/github-actions.md): filtri dei percorsi, esecutori, dimensione della matrice, limite del file del flusso di lavoro, concorrenza.
|
|
244
|
+
- [`rules/shipcheck-product-standards.md`](rules/shipcheck-product-standards.md): il CI deve essere superato, i gate di rilascio, le versioni.
|
|
245
|
+
- [`rules/repo-first.md`](rules/repo-first.md): la branch predefinita.
|
|
246
|
+
- [`rules/atlas-map.md`](rules/atlas-map.md): una mappa impegnata di ciascun repository, controllata nel CI.
|
|
247
|
+
|
|
248
|
+
Sono gli standard di un'organizzazione. Se i vostri sono diversi, modificate il file delle regole
|
|
249
|
+
e la regola insieme.
|
|
250
|
+
|
|
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.
|
|
171
274
|
|
|
172
275
|
## Sicurezza
|
|
173
276
|
|
|
174
|
-
- **Solo lettura.** Il raccoglitore
|
|
175
|
-
- **Nessuna credenziale.** L'autenticazione
|
|
176
|
-
- **Nessuna telemetria.** Gli unici host contattati sono l'API
|
|
177
|
-
- **
|
|
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".
|
|
178
281
|
|
|
179
|
-
|
|
282
|
+
Segnalare una vulnerabilità come descritto in [SECURITY.md](SECURITY.md).
|
|
180
283
|
|
|
181
284
|
## Test
|
|
182
285
|
|
|
@@ -184,7 +287,7 @@ Segnala una vulnerabilità come descritto in [SECURITY.md](SECURITY.md).
|
|
|
184
287
|
npm test
|
|
185
288
|
```
|
|
186
289
|
|
|
187
|
-
Ogni regola viene testata in entrambe le direzioni: la
|
|
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.
|
|
188
291
|
|
|
189
292
|
## Licenza
|
|
190
293
|
|
|
@@ -192,4 +295,4 @@ MIT. Vedere [LICENSE](LICENSE).
|
|
|
192
295
|
|
|
193
296
|
---
|
|
194
297
|
|
|
195
|
-
|
|
298
|
+
Realizzato da <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
|