@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.pt-BR.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.it.md">Italiano</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,46 +21,128 @@
|
|
|
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
|
-
Uma execução coleta o status de CI de
|
|
24
|
-
lançamentos, tags de versão, arquivos de fluxo de trabalho, proteção de
|
|
25
|
-
arquivos de bloqueio e faturamento do Actions em SQLite, e, em seguida, verifica tudo em relação às
|
|
26
|
-
regras definidas.
|
|
24
|
+
Uma única execução coleta o status de CI de cada repositório, problemas abertos e solicitações de pull,
|
|
25
|
+
lançamentos, tags de versão, arquivos de fluxo de trabalho, proteção de ramificação, alertas de segurança,
|
|
26
|
+
arquivos de bloqueio e faturamento do Actions em SQLite, e, em seguida, verifica tudo em relação às regras definidas.
|
|
27
27
|
|
|
28
28
|
Ele responde, para toda a organização de uma só vez:
|
|
29
29
|
|
|
30
|
-
- Quais
|
|
31
|
-
- Quais solicitações de pull nunca podem ser mescladas, porque uma verificação obrigatória
|
|
32
|
-
- Quais implantações
|
|
30
|
+
- Quais são os ramos padrão que estão com problemas e isso indica uma linha principal com defeito ou um histórico desatualizado?
|
|
31
|
+
- Quais solicitações de pull nunca podem ser mescladas, porque uma verificação obrigatória não está sendo executada e está bloqueando-as?
|
|
32
|
+
- Quais implantações são rejeitadas pelas próprias configurações do repositório?
|
|
33
33
|
- Onde `package.json`, as tags Git e o registro npm divergiram?
|
|
34
|
-
- Quais fluxos de trabalho violam as regras de custo do Actions, quanto custaram e quais tarefas
|
|
35
|
-
- Quais repositórios contêm avisos que o
|
|
34
|
+
- Quais fluxos de trabalho violam as regras de custo do Actions, quanto custaram e quais tarefas consumiram esses recursos?
|
|
35
|
+
- Quais repositórios contêm avisos que o número de alertas do GitHub não detecta?
|
|
36
|
+
|
|
37
|
+
É um instrumento de auditoria, não um corretor. Ele lê GitHub e não altera nada.
|
|
38
|
+
|
|
39
|
+
## Um agente em cada repositório
|
|
40
|
+
|
|
41
|
+
Uma organização com dezenas de repositórios não tem um único local onde seu
|
|
42
|
+
estado é armazenado. housekeeping é esse local, e seu servidor MCP, `hk-mcp`, o fornece
|
|
43
|
+
a um agente de IA. Com ele, um único agente pode atuar como o coordenador para toda
|
|
44
|
+
a organização:
|
|
45
|
+
|
|
46
|
+
1. **Execução.** `hk refresh` captura um instantâneo de cada repositório.
|
|
47
|
+
2. **Triagem.** O agente pergunta o que está com problemas, o que está bloqueado e o que piorou,
|
|
48
|
+
e obtém respostas que já distinguem uma linha principal com defeito de um histórico desatualizado e
|
|
49
|
+
uma solicitação de pull travada de uma com conflitos.
|
|
50
|
+
3. **Planejar uma onda.** Uma consulta `hk_sql` encontra todos os repositórios com a mesma
|
|
51
|
+
estrutura, para que uma correção se torne uma única solicitação de pull por repositório, em vez de uma busca.
|
|
52
|
+
4. **Realizar o trabalho.** housekeeping nunca grava. O agente abre solicitações de pull
|
|
53
|
+
com suas próprias ferramentas, sob suas próprias permissões e com sua revisão.
|
|
54
|
+
5. **Verificar.** Executar novamente. A descoberta desapareceu ou não, e a mudança
|
|
55
|
+
entre dois instantâneos é uma consulta.
|
|
56
|
+
|
|
57
|
+
Perguntas que um agente responde em uma ou duas interações:
|
|
58
|
+
|
|
59
|
+
- Quais são os ramos padrão que estão com problemas e qual tarefa e etapa causaram o problema?
|
|
60
|
+
- Quais solicitações de pull nunca podem ser mescladas e o gatilho ou um conflito são os culpados?
|
|
61
|
+
- Quais repositórios contêm um aviso de produção para o qual GitHub não mostra nenhum alerta?
|
|
62
|
+
- Quais fluxos de trabalho agendados violam as regras para agendamentos e como?
|
|
63
|
+
- Quanto o Actions custou e qual tarefa consumiu esses recursos?
|
|
64
|
+
- O que mudou desde a última execução?
|
|
65
|
+
|
|
66
|
+
| Ferramenta | O que ela responde |
|
|
67
|
+
|---|---|
|
|
68
|
+
| `hk_summary` | Totais da execução mais recente: repositórios, problemas, solicitações de pull, fluxos de trabalho, descobertas. |
|
|
69
|
+
| `hk_findings` | Descobertas por código, gravidade, categoria ou repositório; contagens por código quando não filtrado. A descoberta de uma linha principal com problemas indica a tarefa e a etapa que causaram o problema. |
|
|
70
|
+
| `hk_ci` | Repositórios cujo ramo padrão está com problemas e os fluxos de trabalho que falharam; também, agendamentos com falha, ramos de solicitação de pull com falha e repositórios sem CI. |
|
|
71
|
+
| `hk_repo` | Um repositório completo: descobertas, fluxos de trabalho, solicitações de pull e problemas abertos. |
|
|
72
|
+
| `hk_backlog` | Solicitações de pull ou problemas abertos em toda a organização, da mais antiga para a mais recente. |
|
|
73
|
+
| `hk_health` | Uma pontuação de saúde por repositório, da pior para a melhor. |
|
|
74
|
+
| `hk_cost` | Gastos do Actions por repositório, fluxo de trabalho ou tarefa, separados em valores brutos e líquidos. |
|
|
75
|
+
| `hk_sql` | Uma única instrução `SELECT` ou `WITH` somente leitura contra o armazém. |
|
|
76
|
+
| `hk_schema` | As tabelas e colunas para gravar consultas `hk_sql`. |
|
|
77
|
+
|
|
78
|
+
Cada resposta vem do instantâneo mais recente, aberto em modo somente leitura. Uma interação com falha
|
|
79
|
+
retorna um erro estruturado, nunca um rastreamento de pilha.
|
|
80
|
+
|
|
81
|
+
### Conecte-o
|
|
36
82
|
|
|
37
|
-
|
|
83
|
+
```json
|
|
84
|
+
{
|
|
85
|
+
"mcpServers": {
|
|
86
|
+
"housekeeping": { "command": "hk-mcp", "env": { "HK_HOME": "/path/to/warehouse" } },
|
|
87
|
+
"atlas": { "command": "atlas", "args": ["mcp"] }
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
```
|
|
38
91
|
|
|
39
|
-
|
|
92
|
+
`HK_HOME` é o diretório do qual você executa. De um clone, use
|
|
93
|
+
`"command": "node", "args": ["/path/to/housekeeping/src/mcp.mjs"]`. O segundo
|
|
94
|
+
servidor é [Atlas](https://github.com/dogfood-lab/testing-os/tree/main/packages/atlas),
|
|
95
|
+
que responde ao mesmo agente sobre um repositório por vez (veja abaixo). No
|
|
96
|
+
Windows, inicie um comando instalado globalmente por meio de `cmd /c`.
|
|
97
|
+
|
|
98
|
+
## housekeeping e Atlas
|
|
99
|
+
|
|
100
|
+
[Atlas](https://github.com/dogfood-lab/testing-os/tree/main/packages/atlas)
|
|
101
|
+
(`@dogfood-lab/atlas`) mapeia um repositório: suas partes e suas portas, o que significa
|
|
102
|
+
cada fluxo de trabalho com o que ele executa, publica e implanta. O mapa é confirmado
|
|
103
|
+
como `atlas/` e verificado no CI. housekeeping é a visão da organização. Os dois
|
|
104
|
+
são construídos para funcionar juntos.
|
|
105
|
+
|
|
106
|
+
- **Cada mapa, executado.** Uma execução lê o mapa confirmado de cada repositório, juntamente
|
|
107
|
+
com tudo o mais, e relata quais repositórios não têm um, quais nunca
|
|
108
|
+
executam `atlas check` e quais contêm um mecanismo diferente do que o restante da
|
|
109
|
+
organização usa.
|
|
110
|
+
- **Onde uma execução com problemas falhou.** Quando um ramo padrão está com problemas, a descoberta indica
|
|
111
|
+
a tarefa e a etapa que falharam e, por meio do mapa, o comando que essa etapa
|
|
112
|
+
executa, para que a correção comece no arquivo correto.
|
|
113
|
+
- **Fatos de implantação do mapa.** O ambiente para o qual uma tarefa é implantada é obtido
|
|
114
|
+
do mapa, onde ele registra um, para que ambas as ferramentas leiam um fluxo de trabalho da mesma forma.
|
|
115
|
+
- **Avisos em toda a frota.** Atlas sinaliza uma etapa do fluxo de trabalho que falhará
|
|
116
|
+
antes de ser executada, como uma ferramenta que precisa de uma versão mais recente do tempo de execução do que a tarefa
|
|
117
|
+
instala. O relatório lista esses avisos para cada repositório de uma só vez.
|
|
118
|
+
|
|
119
|
+
Um agente com ambos os servidores passa de "esses doze repositórios estão bloqueados"
|
|
120
|
+
(housekeeping) para "este é o fluxo de trabalho, a tarefa e os arquivos que uma alteração alcançará" (Atlas), sem abrir cada repositório manualmente.
|
|
121
|
+
|
|
122
|
+
## Por que ele tem essa estrutura
|
|
40
123
|
|
|
41
124
|
| Camada | Escolha | Razão |
|
|
42
125
|
|---|---|---|
|
|
43
|
-
| Transporte | a CLI `gh` |
|
|
44
|
-
| Coleta | GitHub GraphQL, paginado | Uma consulta retorna metadados, problemas abertos, solicitações de pull abertas, lançamentos e árvores de arquivos para uma página de repositórios. Uma página que continua
|
|
45
|
-
| Execuções do Actions | REST |
|
|
46
|
-
| Custo do Actions | API de faturamento mais durações por tarefa | A fatura indica qual repositório; apenas
|
|
47
|
-
| Taxas
|
|
48
|
-
| Armazenamento | SQLite
|
|
126
|
+
| Transporte | a CLI `gh` | Ela já contém seu token. A ferramenta nunca armazena ou solicita uma credencial. |
|
|
127
|
+
| Coleta | GitHub GraphQL, paginado | Uma consulta retorna metadados, problemas abertos, solicitações de pull abertas, lançamentos e árvores de arquivos para uma página de repositórios. Uma página que continua a atingir o tempo limite é dividida ao meio e solicitada novamente a partir do mesmo cursor. |
|
|
128
|
+
| Execuções do Actions | REST | GraphQL não tem uma superfície do Actions. |
|
|
129
|
+
| Custo do Actions | API de faturamento mais durações por tarefa | A fatura indica qual repositório; apenas os trabalhos indicam qual fluxo de trabalho. Os pontos finais de GitHub's `/timing` retornam zeros, portanto, a soma por trabalho é reconstruída e, em seguida, reconciliada com a fatura. |
|
|
130
|
+
| Taxas de execução | lidas da fatura | Uma taxa cobrada pode diferir do preço de tabela, e uma constante na fonte distorceria todos os números. |
|
|
131
|
+
| Armazenamento | SQLite através do `node:sqlite` integrado | Sem etapa de construção nativa. |
|
|
49
132
|
| Fonte da verdade | `data/snapshots/*.json` | Bruta, comparável e apenas para anexar. O banco de dados é derivado: `npm run rebuild` o reconstrói offline. |
|
|
50
|
-
| Registro
|
|
133
|
+
| Registro de varredura | `data/sweeps.jsonl` | Uma linha por varredura, incluindo varreduras que falharam e varreduras que não encontraram nada de novo. |
|
|
51
134
|
|
|
52
|
-
Os
|
|
135
|
+
Os instantâneos são imutáveis e aditivos, portanto, a diferença entre duas datas é um `JOIN`.
|
|
53
136
|
|
|
54
137
|
## Requisitos
|
|
55
138
|
|
|
56
139
|
- Node.js 22.5 ou posterior.
|
|
57
|
-
-
|
|
58
|
-
conta que pode ler a organização. A leitura
|
|
59
|
-
requer o acesso correspondente; uma
|
|
60
|
-
continua.
|
|
61
|
-
- Windows ou Linux.
|
|
62
|
-
CI.
|
|
140
|
+
- A [CLI GitHub](https://cli.github.com/), conectado (`gh auth status`) como uma
|
|
141
|
+
conta que pode ler a organização. A leitura de faturas e alertas de segurança
|
|
142
|
+
requer o acesso correspondente; uma varredura sem ele registra "não medido" e
|
|
143
|
+
continua. Nunca registra uma permissão ausente como um resultado válido.
|
|
144
|
+
- Windows ou Linux. É desenvolvido no Windows e seus testes são executados no Linux em
|
|
145
|
+
CI. macOS deve funcionar e não é testado.
|
|
63
146
|
|
|
64
147
|
## Uso
|
|
65
148
|
|
|
@@ -69,9 +152,10 @@ mkdir warehouse && cd warehouse # housekeeping keeps its data here
|
|
|
69
152
|
hk refresh your-org # collect, load, analyze, write reports/AUDIT-<date>.md
|
|
70
153
|
```
|
|
71
154
|
|
|
72
|
-
Para manter as configurações entre as
|
|
155
|
+
Para manter as configurações entre as varreduras, coloque um `housekeeping.config.json` nesse
|
|
156
|
+
diretório (veja Configuração); então, `hk refresh` não precisa de nenhum argumento.
|
|
73
157
|
|
|
74
|
-
Ou execute-o a partir de
|
|
158
|
+
Ou execute-o a partir de um clone, o que mantém seus dados no clone:
|
|
75
159
|
|
|
76
160
|
```bash
|
|
77
161
|
git clone https://github.com/mcp-tool-shop-org/housekeeping.git
|
|
@@ -91,6 +175,8 @@ hk findings # findings grouped by severity and code
|
|
|
91
175
|
hk health # per-repository health score, worst first
|
|
92
176
|
hk repo <name> # one repository in full
|
|
93
177
|
hk prs # every open pull request by age
|
|
178
|
+
hk branches # branches by state: merged, moved after merge, no PR
|
|
179
|
+
hk watch # open PRs, alerts and branches for a short watch list
|
|
94
180
|
hk versions # package.json against git tag against npm
|
|
95
181
|
hk actions # every workflow and its rule flags
|
|
96
182
|
hk cost # Actions cost, gross and net side by side
|
|
@@ -98,19 +184,19 @@ hk sql "SELECT ..." # one read-only statement
|
|
|
98
184
|
hk help # every command and flag
|
|
99
185
|
```
|
|
100
186
|
|
|
101
|
-
Em
|
|
187
|
+
Em um clone sem `npm link`, cada `hk <command>` é `node src/cli.mjs <command>`.
|
|
102
188
|
|
|
103
|
-
`npm run rebuild` rederiva o banco de dados e o relatório a partir de
|
|
104
|
-
armazenados
|
|
189
|
+
`npm run rebuild` rederiva o banco de dados e o relatório a partir de instantâneos já
|
|
190
|
+
armazenados em disco, sem acesso à rede.
|
|
105
191
|
|
|
106
|
-
Uma
|
|
192
|
+
Uma varredura completa faz algumas centenas de chamadas de API. Não execute `refresh` em um loop.
|
|
107
193
|
|
|
108
194
|
Os resultados são enviados para a saída padrão; o progresso e os erros são enviados para a saída de erro padrão. Cada
|
|
109
|
-
erro imprime um código e uma dica. Códigos de saída: 0 ok, 1 erro do usuário, 2 erro de tempo de execução, 3 parcial (a
|
|
195
|
+
erro imprime um código e uma dica. Códigos de saída: 0 ok, 1 erro do usuário, 2 erro de tempo de execução, 3 parcial (a varredura foi concluída, com lacunas).
|
|
110
196
|
|
|
111
197
|
## Configuração
|
|
112
198
|
|
|
113
|
-
`housekeeping.config.json`, no diretório em que a ferramenta de
|
|
199
|
+
`housekeeping.config.json`, no diretório em que a ferramenta de limpeza funciona (veja abaixo):
|
|
114
200
|
|
|
115
201
|
```json
|
|
116
202
|
{
|
|
@@ -119,91 +205,88 @@ erro imprime um código e uma dica. Códigos de saída: 0 ok, 1 erro do usuário
|
|
|
119
205
|
}
|
|
120
206
|
```
|
|
121
207
|
|
|
122
|
-
- `org` é a organização a ser
|
|
123
|
-
nenhum dos dois, uma
|
|
124
|
-
- `metaRepos` são
|
|
125
|
-
ferramentas padrão da organização,
|
|
208
|
+
- `org` é a organização a ser varrida. `hk refresh <org>` o substitui. Sem
|
|
209
|
+
nenhum dos dois, uma varredura se recusará a iniciar.
|
|
210
|
+
- `metaRepos` são repositórios que contêm configurações, ativos ou
|
|
211
|
+
ferramentas padrão da organização, não um produto lançado. Eles estão isentos das descobertas que só
|
|
126
212
|
fazem sentido para um produto: ausência de arquivos README, LICENSE e semelhantes, ausência de
|
|
127
213
|
fluxos de trabalho e ausência de lançamentos.
|
|
128
214
|
|
|
129
215
|
Um arquivo malformado é um erro, nunca um padrão silencioso: uma chave desconhecida, um tipo incorreto ou um JSON corrompido interrompe a execução.
|
|
130
216
|
|
|
131
|
-
Execute a partir de um clone, a ferramenta de
|
|
217
|
+
Execute a partir de um clone, a ferramenta de limpeza mantém `data/`, `reports/` e o arquivo de configuração
|
|
132
218
|
no clone. Execute como um pacote instalado, ele os mantém no diretório de onde
|
|
133
|
-
você o executa ou em `HK_HOME` quando isso
|
|
219
|
+
você o executa ou em `HK_HOME` quando isso for definido.
|
|
134
220
|
|
|
135
221
|
Ambiente: `HK_HOME` (onde os dados, relatórios e a configuração estão localizados),
|
|
136
222
|
`HK_CONFIG` (caminho da configuração), `HK_DB` (caminho do banco de dados), `HK_LOG`
|
|
137
223
|
(`silent`, `normal`, `verbose` ou `debug`), `HK_COST_REPOS` e
|
|
138
|
-
`HK_COST_BUDGET` (limites
|
|
224
|
+
`HK_COST_BUDGET` (limites da passagem de custo por trabalho), `GH_PATH` (caminho para `gh`).
|
|
139
225
|
|
|
140
226
|
## Mantenha os dados privados
|
|
141
227
|
|
|
142
|
-
**O que uma
|
|
228
|
+
**O que uma varredura grava é confidencial. Não envie `data/` ou `reports/` para um
|
|
143
229
|
repositório público.**
|
|
144
230
|
|
|
145
|
-
Um
|
|
146
|
-
alertas de segurança abertos com o pacote que ele nomeia, arquivos de fluxo de trabalho e faturamento do Actions.
|
|
147
|
-
todos, exceto seus mantenedores; um
|
|
231
|
+
Um instantâneo registra os nomes e as descrições de repositórios privados, todos os
|
|
232
|
+
alertas de segurança abertos com o pacote que ele nomeia, arquivos de fluxo de trabalho e faturamento do Actions. GitHub oculta deliberadamente os alertas de segurança de um repositório público de
|
|
233
|
+
todos, exceto seus mantenedores; um instantâneo publicado entregaria essa lista.
|
|
148
234
|
|
|
149
235
|
O `.gitignore` deste repositório exclui `data/`, `reports/` e
|
|
150
|
-
`housekeeping.config.json`. Para manter o histórico, que é o objetivo dos
|
|
151
|
-
execute a ferramenta a partir de um repositório
|
|
152
|
-
|
|
153
|
-
## Servidor MCP
|
|
154
|
-
|
|
155
|
-
`hk-mcp` (ou `npm run mcp` em uma cópia) serve os dados ao programa através do stdio, para que um assistente possa fazer perguntas sem precisar ler um arquivo de vários megabytes:
|
|
156
|
-
|
|
157
|
-
`hk_summary` · `hk_findings` · `hk_ci` · `hk_repo` · `hk_backlog` ·
|
|
158
|
-
`hk_health` · `hk_cost` · `hk_sql` · `hk_schema`
|
|
159
|
-
|
|
160
|
-
```json
|
|
161
|
-
{
|
|
162
|
-
"mcpServers": {
|
|
163
|
-
"housekeeping": { "command": "hk-mcp", "env": { "HK_HOME": "/path/to/warehouse" } }
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
`HK_HOME` é o diretório a partir do qual você executa o programa. Em uma cópia, use `"command": "node", "args": ["/path/to/housekeeping/src/mcp.mjs"]` em vez disso.
|
|
169
|
-
|
|
170
|
-
`hk_sql` aceita uma única instrução `SELECT` ou `WITH` e abre o banco de dados
|
|
171
|
-
em modo somente leitura. Uma chamada com falha retorna um erro estruturado, nunca um rastreamento de pilha.
|
|
236
|
+
`housekeeping.config.json`. Para manter o histórico, que é o objetivo dos instantâneos,
|
|
237
|
+
execute a ferramenta a partir de um **repositório privado** de sua propriedade e envie-os para lá.
|
|
172
238
|
|
|
173
239
|
## Descobertas
|
|
174
240
|
|
|
175
241
|
As regras estão em `src/analyze.mjs`. Cada uma cita a regra escrita que ela aplica,
|
|
176
|
-
|
|
242
|
+
portanto, uma descoberta pode ser contestada em relação a um padrão e não em relação ao gosto. As regras
|
|
177
243
|
que este repositório envia estão em [`rules/`](rules/):
|
|
178
244
|
|
|
179
|
-
- [`rules/github-actions.md`](rules/github-actions.md): filtros de
|
|
180
|
-
- [`rules/shipcheck-product-standards.md`](rules/shipcheck-product-standards.md): o CI deve ser aprovado, os
|
|
181
|
-
- [`rules/repo-first.md`](rules/repo-first.md): o
|
|
182
|
-
- [`rules/atlas-map.md`](rules/atlas-map.md): um mapa
|
|
183
|
-
|
|
184
|
-
São os padrões de uma organização. Se os seus forem diferentes, altere o arquivo de regra
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
- **
|
|
190
|
-
|
|
191
|
-
- **
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
245
|
+
- [`rules/github-actions.md`](rules/github-actions.md): filtros de caminho, executores, tamanho da matriz, limite do arquivo de fluxo de trabalho, concorrência.
|
|
246
|
+
- [`rules/shipcheck-product-standards.md`](rules/shipcheck-product-standards.md): o CI deve ser aprovado, os portões de envio, versões.
|
|
247
|
+
- [`rules/repo-first.md`](rules/repo-first.md): o branch padrão.
|
|
248
|
+
- [`rules/atlas-map.md`](rules/atlas-map.md): um mapa comprometido de cada repositório, verificado no CI.
|
|
249
|
+
|
|
250
|
+
São os padrões de uma organização. Se os seus forem diferentes, altere o arquivo de regra
|
|
251
|
+
e a regra juntos.
|
|
252
|
+
|
|
253
|
+
As regras têm o cuidado de manter separados os itens que parecem semelhantes, porque combiná-los produz ruído:
|
|
254
|
+
|
|
255
|
+
- **Um branch padrão vermelho não é um branch de solicitação de pull vermelho.** Um branch Dependabot com falha é um backlog; uma execução `push` com falha no branch padrão é
|
|
256
|
+
uma falha. O evento da execução decide qual é.
|
|
257
|
+
- **O histórico não é uma falha.** Um fluxo de trabalho movido para gatilhos apenas de lançamento mantém
|
|
258
|
+
sua última falha no branch padrão para sempre. Um fluxo de trabalho excluído mantém suas execuções.
|
|
259
|
+
Nenhum deles é um defeito ativo.
|
|
260
|
+
- **Uma verificação obrigatória que nada pode emitir não é uma verificação que não foi executada aqui.**
|
|
261
|
+
Uma diz para remover o requisito; a outra diz para corrigir o gatilho. As correções
|
|
262
|
+
se contradizem.
|
|
263
|
+
- **Uma solicitação de pull que o gatilho ignorou não é uma solicitação de pull com conflitos.** GitHub não executa
|
|
264
|
+
nenhum fluxo de trabalho de solicitação de pull em uma solicitação de pull com conflitos, portanto, sua verificação ausente não diz nada sobre o gatilho. Essa precisa de uma rebase.
|
|
265
|
+
- **Uma execução com falha não é uma execução cancelada.** `cancel-in-progress` existe para matar
|
|
266
|
+
execuções substituídas, portanto, os minutos cancelados geralmente são a regra de concorrência em funcionamento.
|
|
267
|
+
- **O custo bruto não é o custo líquido.** GitHub mede repositórios públicos com o preço total
|
|
268
|
+
e os desconta para zero. O bruto é a computação real; o líquido é o dinheiro real.
|
|
269
|
+
Eles nunca são somados.
|
|
270
|
+
- **Não medido não é limpo.** Um repositório GitHub não está digitalizando relatórios
|
|
271
|
+
zero alertas. Um repositório que a passagem de custo não alcançou não tem linha de custo. Ambos
|
|
272
|
+
são relatados como desconhecidos.
|
|
273
|
+
|
|
274
|
+
A gravidade impulsiona uma pontuação de integridade: crítico 40, alto 15, médio 6, baixo 2, informativo 0,
|
|
275
|
+
deduzido de 100. A pontuação classifica a atenção, não a qualidade.
|
|
276
|
+
|
|
277
|
+
O [manual](https://mcp-tool-shop-org.github.io/housekeeping/handbook/) lista todos os resultados, comandos, códigos de erro e tabelas.
|
|
198
278
|
|
|
199
279
|
## Segurança
|
|
200
280
|
|
|
201
|
-
- **
|
|
202
|
-
|
|
203
|
-
- **Sem
|
|
281
|
+
- **Apenas leitura.** O coletor emite GraphQL consultas e solicitações REST `GET`. Ele nunca
|
|
282
|
+
combina, envia, lança, publica ou edita uma configuração.
|
|
283
|
+
- **Sem credenciais.** A autenticação é o que `gh` já possui. Nada é
|
|
284
|
+
gravado em disco a respeito.
|
|
285
|
+
- **Sem telemetria.** Os únicos servidores contactados são a API GitHub, através de `gh`,
|
|
286
|
+
e o registo npm, para verificar versões e avisos.
|
|
204
287
|
- **O que ele armazena** é a parte sensível: veja "Mantenha os dados privados".
|
|
205
288
|
|
|
206
|
-
|
|
289
|
+
Reporte uma vulnerabilidade conforme descrito em [SECURITY.md](SECURITY.md).
|
|
207
290
|
|
|
208
291
|
## Testes
|
|
209
292
|
|
|
@@ -211,7 +294,10 @@ Relate uma vulnerabilidade conforme descrito em [SECURITY.md](SECURITY.md).
|
|
|
211
294
|
npm test
|
|
212
295
|
```
|
|
213
296
|
|
|
214
|
-
Cada regra é testada em ambas as direções: a forma que deve ser ativada e a
|
|
297
|
+
Cada regra é testada em ambas as direções: a forma que deve ser ativada e a
|
|
298
|
+
forma vizinha que não deve ser. Um verificador separado deriva novamente uma amostra de
|
|
299
|
+
resultados a partir de GitHub em tempo real, através do seu próprio transporte, e ignora, de forma evidente, quando
|
|
300
|
+
não há banco de dados ou rede.
|
|
215
301
|
|
|
216
302
|
## Licença
|
|
217
303
|
|