@mcptoolshop/housekeeping 1.3.0 → 1.4.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 +49 -0
- package/README.es.md +113 -70
- package/README.fr.md +145 -65
- package/README.hi.md +125 -65
- package/README.it.md +126 -65
- package/README.ja.md +111 -70
- package/README.md +89 -23
- package/README.pt-BR.md +144 -76
- package/README.zh.md +130 -66
- package/housekeeping.config.example.json +2 -1
- package/package.json +1 -1
- package/rules/atlas-map.md +6 -1
- package/rules/github-actions.md +7 -3
- package/src/analyze.mjs +201 -44
- package/src/cli.mjs +2 -2
- package/src/collect.mjs +5 -2
- package/src/config.mjs +13 -4
- package/src/load.mjs +7 -3
- package/src/mcp.mjs +2 -1
- package/src/report.mjs +14 -10
- package/src/schema.sql +9 -1
- package/src/workflow-risks.mjs +125 -0
package/README.fr.md
CHANGED
|
@@ -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,101 @@
|
|
|
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
|
-
Une seule analyse collecte l’état
|
|
24
|
+
Une seule analyse collecte l’état des CI de chaque dépôt, les problèmes ouverts et les demandes de fusion, les versions, les étiquettes de version, les fichiers de flux de travail, la protection des branches, les alertes de sécurité, les fichiers de verrouillage et la facturation d’Actions dans SQLite, puis effectue un audit complet en fonction des règles définies.
|
|
24
25
|
|
|
25
|
-
Il répond, pour l’ensemble de l’organisation :
|
|
26
|
+
Il répond, pour l’ensemble de l’organisation, aux questions suivantes :
|
|
26
27
|
|
|
27
28
|
- Quelles sont les branches par défaut qui présentent des problèmes, et s’agit-il d’une branche principale défectueuse ou d’un historique obsolète ?
|
|
28
|
-
- Quelles demandes de fusion ne
|
|
29
|
-
- Quels déploiements les paramètres
|
|
29
|
+
- Quelles sont les demandes de fusion qui ne pourront jamais être fusionnées, car une vérification requise qui ne renvoie aucune donnée les bloque-t-elle ?
|
|
30
|
+
- Quels sont les déploiements que les paramètres du dépôt refusent ?
|
|
30
31
|
- Où `package.json`, les étiquettes Git et le registre npm ont-ils divergé ?
|
|
31
|
-
- Quels flux de travail enfreignent les règles de coût d’Actions, quel a été leur coût et quelles tâches ont
|
|
32
|
-
- Quels dépôts contiennent des avis que le propre système d’alerte de GitHub ne détecte pas ?
|
|
32
|
+
- Quels sont les flux de travail qui enfreignent les règles de coût d’Actions, quel a été leur coût et quelles tâches ont généré ces coûts ?
|
|
33
|
+
- Quels sont les dépôts qui contiennent des avis que le propre système d’alerte de GitHub ne détecte pas ?
|
|
33
34
|
|
|
34
35
|
Il s’agit d’un outil d’audit, et non d’un correcteur. Il lit les données de GitHub et ne modifie rien.
|
|
35
36
|
|
|
36
|
-
##
|
|
37
|
+
## Un agent pour chaque dépôt
|
|
38
|
+
|
|
39
|
+
Une organisation comptant des dizaines de dépôts n’a pas d’emplacement unique où sont stockées ses données. housekeeping est cet emplacement, et son serveur MCP, `hk-mcp`, transmet ces données à un agent d’IA. Grâce à cela, un seul agent peut agir comme coordinateur pour l’ensemble de l’organisation :
|
|
40
|
+
|
|
41
|
+
1. **Analyse.** `hk refresh` effectue une analyse de chaque dépôt.
|
|
42
|
+
2. **Tri.** L’agent demande quelles sont les données problématiques, ce qui est bloqué et ce qui s’est aggravé, et obtient des réponses qui permettent déjà de distinguer une branche principale défectueuse d’un historique obsolète, et une demande de fusion bloquée d’une demande en conflit.
|
|
43
|
+
3. **Planification d’une vague.** Une seule requête `hk_sql` trouve tous les dépôts qui présentent la même configuration, de sorte qu’une correction devient une seule demande de fusion par dépôt au lieu d’une recherche fastidieuse.
|
|
44
|
+
4. **Réalisation des tâches.** housekeeping n’écrit jamais. L’agent ouvre des demandes de fusion avec ses propres outils, en utilisant ses propres autorisations et sous votre contrôle.
|
|
45
|
+
5. **Vérification.** Nouvelle analyse. Soit le problème est résolu, soit il ne l’est pas, et la différence entre deux analyses est une requête.
|
|
46
|
+
|
|
47
|
+
Questions auxquelles un agent répond en une ou deux étapes :
|
|
48
|
+
|
|
49
|
+
- Quelles sont les branches par défaut qui présentent des problèmes, et quelle tâche et quelle étape sont à l’origine du problème ?
|
|
50
|
+
- Quelles sont les demandes de fusion qui ne pourront jamais être fusionnées, et est-ce le déclencheur ou un conflit qui en est la cause ?
|
|
51
|
+
- Quels sont les dépôts qui contiennent un avis de production pour lequel GitHub n’affiche aucune alerte ?
|
|
52
|
+
- Quels sont les flux de travail planifiés qui enfreignent les règles relatives aux plannings, et comment ?
|
|
53
|
+
- Quel a été le coût d’Actions, et quelle tâche a généré ces coûts ?
|
|
54
|
+
- Qu’est-ce qui a changé depuis la dernière analyse ?
|
|
55
|
+
|
|
56
|
+
| Outil | Ce à quoi il répond |
|
|
57
|
+
|---|---|
|
|
58
|
+
| `hk_summary` | Totaux pour la dernière analyse : dépôts, problèmes, demandes de fusion, flux de travail, résultats. |
|
|
59
|
+
| `hk_findings` | Résultats par code, gravité, catégorie ou dépôt ; nombre par code lorsque les résultats ne sont pas filtrés. Le résultat d’une branche principale problématique indique la tâche et l’étape qui ont causé le problème. |
|
|
60
|
+
| `hk_ci` | Dépôts dont la branche par défaut présente des problèmes et flux de travail qui ont échoué ; également, plannings ayant échoué, branches de demandes de fusion ayant échoué et dépôts sans CI. |
|
|
61
|
+
| `hk_repo` | Un dépôt en détail : résultats, flux de travail, demandes de fusion et problèmes ouverts. |
|
|
62
|
+
| `hk_backlog` | Demandes de fusion ou problèmes ouverts dans l’ensemble de l’organisation, du plus ancien au plus récent. |
|
|
63
|
+
| `hk_health` | Un score de santé par dépôt, du moins bon au meilleur. |
|
|
64
|
+
| `hk_cost` | Dépenses d’Actions par dépôt, flux de travail ou tâche, brutes et nettes. |
|
|
65
|
+
| `hk_sql` | Une seule instruction `SELECT` ou `WITH` en lecture seule par rapport à l’entrepôt de données. |
|
|
66
|
+
| `hk_schema` | Les tables et les colonnes, pour écrire des requêtes `hk_sql`. |
|
|
67
|
+
|
|
68
|
+
Toute réponse provient de la dernière analyse, ouverte en lecture seule. Une requête ayant échoué renvoie une erreur structurée, et non une trace de pile.
|
|
69
|
+
|
|
70
|
+
### Connectez-le
|
|
71
|
+
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"mcpServers": {
|
|
75
|
+
"housekeeping": { "command": "hk-mcp", "env": { "HK_HOME": "/path/to/warehouse" } },
|
|
76
|
+
"atlas": { "command": "atlas", "args": ["mcp"] }
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
`HK_HOME` est le répertoire à partir duquel vous effectuez l’analyse. À partir d’un clone, utilisez `"command": "node", "args": ["/path/to/housekeeping/src/mcp.mjs"]`. Le deuxième serveur est [Atlas](https://github.com/dogfood-lab/testing-os/tree/main/packages/atlas), qui répond aux mêmes questions concernant un seul dépôt à la fois (voir ci-dessous). Sous Windows, démarrez une commande installée globalement via `cmd /c`.
|
|
82
|
+
|
|
83
|
+
## housekeeping et Atlas
|
|
84
|
+
|
|
85
|
+
[Atlas](https://github.com/dogfood-lab/testing-os/tree/main/packages/atlas) (`@dogfood-lab/atlas`) mappe un dépôt : ses composants et ses portes, ce qui signifie chaque flux de travail avec ce qu’il exécute, publie et déploie. La carte est validée en tant que `atlas/` et vérifiée dans CI. housekeeping est la vue de l’organisation. Les deux sont conçus pour fonctionner ensemble.
|
|
86
|
+
|
|
87
|
+
- **Chaque carte, analysée.** Une analyse lit la carte validée de chaque dépôt ainsi que tous les autres éléments, et signale quels sont les dépôts qui n’en ont pas, lesquels n’exécutent jamais `atlas check` et lesquels contiennent un moteur différent de celui que le reste de l’organisation utilise.
|
|
88
|
+
- **Où une exécution problématique a échoué.** Lorsqu’une branche par défaut présente des problèmes, le résultat indique la tâche et l’étape qui ont échoué et, grâce à la carte, la commande que cette étape exécute, de sorte que la correction commence dans le bon fichier.
|
|
89
|
+
- **Informations sur le déploiement à partir de la carte.** L’environnement vers lequel une tâche se déploie est extrait de la carte où il est enregistré, de sorte que les deux outils lisent un flux de travail de la même manière.
|
|
90
|
+
- **Avertissements dans l’ensemble du parc.** Atlas signale une étape de flux de travail qui échouera avant son exécution, comme un outil qui nécessite une version d’exécution plus récente que celle installée par la tâche. Le rapport répertorie ces éléments pour tous les dépôts à la fois.
|
|
91
|
+
|
|
92
|
+
Un agent utilisant les deux serveurs passe de « ces douze dépôts sont bloqués » (housekeeping) à « il s’agit du flux de travail, de la tâche et des fichiers qu’une modification affectera » (Atlas), sans avoir à ouvrir chaque dépôt manuellement.
|
|
93
|
+
|
|
94
|
+
## Pourquoi il est structuré de cette manière
|
|
37
95
|
|
|
38
96
|
| Couche | Choix | Raison |
|
|
39
97
|
|---|---|---|
|
|
40
|
-
| Transport |
|
|
41
|
-
| Collecte | GitHub GraphQL,
|
|
42
|
-
| Exécutions d’Actions | REST | GraphQL ne dispose pas d’interface Actions. |
|
|
43
|
-
|
|
|
44
|
-
| Tarifs des exécuteurs |
|
|
45
|
-
| Stockage | SQLite via
|
|
46
|
-
| Source de
|
|
47
|
-
| Journal
|
|
98
|
+
| Transport | L’interface de ligne de commande `gh` | Elle contient déjà votre jeton. L’outil ne stocke ni ne demande jamais d’informations d’identification. |
|
|
99
|
+
| Collecte | GitHub GraphQL, paginée | Une requête renvoie les métadonnées, les problèmes ouverts, les demandes de fusion ouvertes, les versions et les arborescences de fichiers pour une page de dépôts. Une page qui continue de dépasser le délai d’attente est divisée par deux et la requête est renvoyée à partir du même curseur. |
|
|
100
|
+
| Exécutions d’Actions | REST | GraphQL ne dispose pas d’une interface Actions. |
|
|
101
|
+
| Les actions ont un coût. | API de facturation plus durée par tâche. | La facture indique de quel dépôt il s’agit ; seules les tâches indiquent de quel flux de travail il s’agit. Les points de terminaison `/timing` de GitHub renvoient des zéros, de sorte que la somme par tâche est reconstruite, puis rapprochée de la facture. |
|
|
102
|
+
| Tarifs des exécuteurs. | Lus dans la facture. | Un tarif facturé peut différer du prix catalogue, et une constante dans la source fausserait tous les chiffres. |
|
|
103
|
+
| Stockage. | SQLite via le `node:sqlite` intégré. | Aucune étape de compilation native. |
|
|
104
|
+
| Source de vérité. | `data/snapshots/*.json` | Brut, diffusable et en ajout uniquement. La base de données est dérivée : `npm run rebuild` la reconstruit hors ligne. |
|
|
105
|
+
| Journal de balayage. | `data/sweeps.jsonl` | Une ligne par balayage, y compris les balayages ayant échoué et les balayages n’ayant rien trouvé de nouveau. |
|
|
48
106
|
|
|
49
107
|
Les instantanés sont immuables et additifs, de sorte que la dérive entre deux dates est un `JOIN`.
|
|
50
108
|
|
|
51
109
|
## Exigences
|
|
52
110
|
|
|
53
111
|
- Node.js 22.5 ou version ultérieure.
|
|
54
|
-
-
|
|
55
|
-
|
|
112
|
+
- [GitHub CLI](https://cli.github.com/), connecté en tant que compte
|
|
113
|
+
pouvant lire l’organisation (`gh auth status`). La lecture des informations de facturation
|
|
114
|
+
et des alertes de sécurité nécessite les autorisations correspondantes ; un
|
|
115
|
+
balayage sans celles-ci enregistre « non mesuré » et continue. Il n’enregistre
|
|
116
|
+
jamais une autorisation manquante comme un résultat valide.
|
|
117
|
+
- Windows ou Linux. Il est développé sous Windows et ses tests sont exécutés
|
|
118
|
+
sous Linux en CI. macOS devrait fonctionner et n’est pas testé.
|
|
56
119
|
|
|
57
120
|
## Utilisation
|
|
58
121
|
|
|
@@ -62,7 +125,8 @@ mkdir warehouse && cd warehouse # housekeeping keeps its data here
|
|
|
62
125
|
hk refresh your-org # collect, load, analyze, write reports/AUDIT-<date>.md
|
|
63
126
|
```
|
|
64
127
|
|
|
65
|
-
Pour conserver les paramètres entre les
|
|
128
|
+
Pour conserver les paramètres entre les balayages, placez un `housekeeping.config.json` dans ce
|
|
129
|
+
répertoire (voir Configuration) ; ensuite, `hk refresh` n’a besoin d’aucun argument.
|
|
66
130
|
|
|
67
131
|
Ou exécutez-le à partir d’une copie, ce qui conserve ses données dans la copie :
|
|
68
132
|
|
|
@@ -75,7 +139,7 @@ cp housekeeping.config.example.json housekeeping.config.json # then set "org"
|
|
|
75
139
|
hk refresh
|
|
76
140
|
```
|
|
77
141
|
|
|
78
|
-
Ensuite, interrogez-
|
|
142
|
+
Ensuite, interrogez-le :
|
|
79
143
|
|
|
80
144
|
```bash
|
|
81
145
|
hk summary # portfolio totals
|
|
@@ -91,17 +155,23 @@ hk sql "SELECT ..." # one read-only statement
|
|
|
91
155
|
hk help # every command and flag
|
|
92
156
|
```
|
|
93
157
|
|
|
94
|
-
Dans une copie sans
|
|
158
|
+
Dans une copie sans `npm link`, chaque `hk <command>` est `node src/cli.mjs <command>`.
|
|
95
159
|
|
|
96
|
-
`npm run rebuild` redérive la base de données et le rapport à partir des instantanés déjà
|
|
160
|
+
`npm run rebuild` redérive la base de données et le rapport à partir des instantanés déjà
|
|
161
|
+
présents sur le disque, sans accès au réseau.
|
|
97
162
|
|
|
98
|
-
|
|
163
|
+
Un balayage complet effectue quelques centaines d’appels d’API. N’exécutez pas
|
|
164
|
+
`refresh` en boucle.
|
|
99
165
|
|
|
100
|
-
Les résultats sont envoyés vers la sortie standard ; les progrès et les erreurs
|
|
166
|
+
Les résultats sont envoyés vers la sortie standard ; les progrès et les erreurs
|
|
167
|
+
sont envoyés vers la sortie d’erreur standard. Chaque erreur affiche un code
|
|
168
|
+
et un indice. Codes de sortie : 0 (ok), 1 (erreur utilisateur), 2 (erreur
|
|
169
|
+
d’exécution), 3 (partiel, le balayage s’est terminé, avec des lacunes).
|
|
101
170
|
|
|
102
171
|
## Configuration
|
|
103
172
|
|
|
104
|
-
`housekeeping.config.json`, dans le répertoire dans lequel l’outil de maintenance fonctionne (voir
|
|
173
|
+
`housekeeping.config.json`, dans le répertoire dans lequel l’outil de maintenance fonctionne (voir
|
|
174
|
+
ci-dessous) :
|
|
105
175
|
|
|
106
176
|
```json
|
|
107
177
|
{
|
|
@@ -110,60 +180,70 @@ Les résultats sont envoyés vers la sortie standard ; les progrès et les erre
|
|
|
110
180
|
}
|
|
111
181
|
```
|
|
112
182
|
|
|
113
|
-
- `org` est l’organisation à analyser. `hk refresh <org>` le remplace. En l’absence des
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
Environnement : `HK_HOME` (où les données, les rapports et la configuration sont stockés), `HK_CONFIG` (chemin du fichier de configuration), `HK_DB` (chemin de la base de données), `HK_LOG` (`silent`, `normal`, `verbose` ou `debug`), `HK_COST_REPOS` et `HK_COST_BUDGET` (limites du coût par tâche), `GH_PATH` (chemin vers `gh`).
|
|
121
|
-
|
|
122
|
-
## Gardez les données privées
|
|
183
|
+
- `org` est l’organisation à analyser. `hk refresh <org>` le remplace. En l’absence des
|
|
184
|
+
deux, un balayage refuse de démarrer.
|
|
185
|
+
- `metaRepos` sont les dépôts qui contiennent les paramètres par défaut, les
|
|
186
|
+
ressources ou les outils de l’organisation, et non un produit commercialisé.
|
|
187
|
+
Ils sont exemptés des résultats qui n’ont de sens que pour un produit :
|
|
188
|
+
absence de fichiers README, LICENSE et similaires, absence de flux de travail
|
|
189
|
+
et absence de versions.
|
|
123
190
|
|
|
124
|
-
|
|
191
|
+
Un fichier malformé est une erreur, jamais une valeur par défaut silencieuse :
|
|
192
|
+
une clé inconnue, un type incorrect ou un JSON corrompu interrompent l’exécution.
|
|
125
193
|
|
|
126
|
-
|
|
194
|
+
Exécution à partir d’une copie, l’outil de maintenance conserve `data/`, `reports/` et le
|
|
195
|
+
fichier de configuration dans la copie. Exécution en tant que package installé,
|
|
196
|
+
il les conserve dans le répertoire à partir duquel vous l’exécutez, ou dans
|
|
197
|
+
`HK_HOME` lorsque cela est défini.
|
|
127
198
|
|
|
128
|
-
|
|
199
|
+
Environnement : `HK_HOME` (où les données, les rapports et la configuration sont
|
|
200
|
+
stockés), `HK_CONFIG` (chemin de configuration), `HK_DB` (chemin de la base de données),
|
|
201
|
+
`HK_LOG` (`silent`, `normal`, `verbose` ou `debug`), `HK_COST_REPOS` et `HK_COST_BUDGET` (limites du coût par tâche), `GH_PATH`
|
|
202
|
+
(chemin vers `gh`).
|
|
129
203
|
|
|
130
|
-
##
|
|
204
|
+
## Conserver les données en privé
|
|
131
205
|
|
|
132
|
-
|
|
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
|
-
```
|
|
206
|
+
**Ce qu’un balayage écrit est sensible. Ne committez pas `data/` ou `reports/` dans un
|
|
207
|
+
dépôt public.**
|
|
143
208
|
|
|
144
|
-
|
|
209
|
+
Un instantané enregistre les noms et les descriptions des dépôts privés, toutes
|
|
210
|
+
les alertes de sécurité ouvertes avec le package qu’il nomme, les fichiers de
|
|
211
|
+
flux de travail et la facturation d’Actions. GitHub masque délibérément les
|
|
212
|
+
alertes de sécurité d’un dépôt public à tous, sauf à ses mainteneurs ; un
|
|
213
|
+
instantané publié diffuserait cette liste.
|
|
145
214
|
|
|
146
|
-
`
|
|
215
|
+
Le `.gitignore` de ce dépôt exclut `data/`, `reports/` et `housekeeping.config.json`. Pour conserver l’historique, ce qui
|
|
216
|
+
est l’objectif des instantanés, exécutez l’outil à partir d’un **dépôt privé**
|
|
217
|
+
qui vous appartient et committez-les là.
|
|
147
218
|
|
|
148
219
|
## Résultats
|
|
149
220
|
|
|
150
|
-
Les règles sont stockées dans `src/analyze.mjs`. Chacune d’entre elles
|
|
221
|
+
Les règles sont stockées dans `src/analyze.mjs`. Chacune d’entre elles cite la règle écrite
|
|
222
|
+
qu’elle applique, de sorte qu’un résultat peut être contesté par rapport à une
|
|
223
|
+
norme et non par rapport au goût. Les règles que ce dépôt contient sont
|
|
224
|
+
disponibles dans [`rules/`](rules/) :
|
|
151
225
|
|
|
152
|
-
- [`rules/github-actions.md`](rules/github-actions.md) : filtres de chemins, exécuteurs, taille de
|
|
153
|
-
|
|
226
|
+
- [`rules/github-actions.md`](rules/github-actions.md) : filtres de chemins, exécuteurs, taille de
|
|
227
|
+
la matrice, limite du fichier de flux de travail, concurrence.
|
|
228
|
+
- [`rules/shipcheck-product-standards.md`](rules/shipcheck-product-standards.md) : la CI doit réussir, les
|
|
229
|
+
portes de publication, les versions.
|
|
154
230
|
- [`rules/repo-first.md`](rules/repo-first.md) : la branche par défaut.
|
|
155
|
-
- [`rules/atlas-map.md`](rules/atlas-map.md) : une carte validée de chaque dépôt, vérifiée
|
|
231
|
+
- [`rules/atlas-map.md`](rules/atlas-map.md) : une carte validée de chaque dépôt, vérifiée en
|
|
232
|
+
CI.
|
|
156
233
|
|
|
157
|
-
Ce sont les normes d’une organisation. Si les vôtres sont différentes,
|
|
234
|
+
Ce sont les normes d’une organisation. Si les vôtres sont différentes,
|
|
235
|
+
modifiez le fichier de règle et la règle en même temps.
|
|
158
236
|
|
|
159
|
-
Les règles veillent à
|
|
237
|
+
Les règles veillent à distinguer les éléments qui se ressemblent, car leur
|
|
238
|
+
regroupement produit du bruit.
|
|
160
239
|
|
|
161
|
-
- **Une branche par défaut rouge n’est pas une branche de
|
|
162
|
-
- **L’historique n’est pas une erreur.** Un flux de travail déplacé vers
|
|
163
|
-
- **Une vérification
|
|
164
|
-
- **Une
|
|
240
|
+
- **Une branche par défaut rouge n’est pas une branche de requête d’extraction rouge.** Une branche Dependabot qui échoue est une tâche en attente ; une exécution `push` qui échoue sur la branche par défaut est une erreur. L’événement de l’exécution détermine laquelle.
|
|
241
|
+
- **L’historique n’est pas une erreur.** Un flux de travail déplacé vers un déclencheur de publication uniquement conserve son dernier échec de branche par défaut pour toujours. Un flux de travail supprimé conserve ses exécutions. Aucun des deux n’est un défaut actif.
|
|
242
|
+
- **Une vérification obligatoire qui ne peut rien produire n’est pas une vérification qui n’a pas été exécutée ici.** L’une dit de supprimer l’exigence ; l’autre dit de corriger le déclencheur. Les corrections se contredisent.
|
|
243
|
+
- **Une requête d’extraction que le déclencheur a ignorée n’est pas une requête en conflit.** GitHub n’exécute aucun flux de travail de requête d’extraction sur une requête d’extraction contenant des conflits, de sorte que sa vérification manquante n’indique rien sur le déclencheur. Celle-ci nécessite une réinitialisation.
|
|
244
|
+
- **Une exécution ayant échoué n’est pas une exécution annulée.** `cancel-in-progress` sert à interrompre les exécutions obsolètes, de sorte que les minutes annulées correspondent généralement au fonctionnement de la règle de concurrence.
|
|
165
245
|
- **Le coût brut n’est pas le coût net.** GitHub facture les dépôts publics au prix fort et les réduit à zéro. Le coût brut est la puissance de calcul réelle ; le coût net est l’argent réel. Ils ne sont jamais additionnés.
|
|
166
|
-
- **Ce qui n’est pas mesuré n’est pas propre.** Un dépôt GitHub
|
|
246
|
+
- **Ce qui n’est pas mesuré n’est pas propre.** Un dépôt que GitHub n’analyse pas signale zéro alerte. Un dépôt pour lequel le processus de calcul des coûts n’a pas abouti n’a pas de ligne de coûts. Les deux sont signalés comme inconnus.
|
|
167
247
|
|
|
168
248
|
La gravité détermine un score de santé : critique 40, élevé 15, moyen 6, faible 2, information 0, déduit de 100. Le score classe l’attention, et non la qualité.
|
|
169
249
|
|
|
@@ -171,9 +251,9 @@ Le [manuel](https://mcp-tool-shop-org.github.io/housekeeping/handbook/) réperto
|
|
|
171
251
|
|
|
172
252
|
## Sécurité
|
|
173
253
|
|
|
174
|
-
- **Lecture seule.** Le collecteur effectue des requêtes GraphQL et des requêtes REST `GET`. Il ne fusionne, ne pousse, ne publie, ne
|
|
254
|
+
- **Lecture seule.** Le collecteur effectue des requêtes GraphQL et des requêtes REST `GET`. Il ne fusionne, ne pousse, ne publie, ne modifie jamais un paramètre.
|
|
175
255
|
- **Aucun identifiant.** L’authentification est ce que `gh` contient déjà. Rien n’est écrit sur le disque à ce sujet.
|
|
176
|
-
- **Aucune télémétrie.** Les seuls hôtes contactés sont l’API GitHub, via `gh`, et le registre npm, pour les recherches de
|
|
256
|
+
- **Aucune télémétrie.** Les seuls hôtes contactés sont l’API GitHub, via `gh`, et le registre npm, pour les recherches de version et de conseils.
|
|
177
257
|
- **Ce qu’il stocke** est la partie sensible : voir « Conserver les données en privé ».
|
|
178
258
|
|
|
179
259
|
Signalez une vulnérabilité comme décrit dans [SECURITY.md](SECURITY.md).
|