@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/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">English</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">
@@ -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 todos os repositórios, problemas abertos e solicitações de pull,
24
- lançamentos, tags de versão, arquivos de fluxo de trabalho, proteção de branch, alertas de segurança,
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 branches padrão estão marcadas em vermelho e isso indica uma branch principal com problemas ou um histórico desatualizado?
31
- - Quais solicitações de pull nunca podem ser mescladas, porque uma verificação obrigatória que não emite nada está bloqueando-as?
32
- - Quais implantações as configurações do próprio repositório rejeitam?
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 gastaram esse valor?
35
- - Quais repositórios contêm avisos que o próprio contador de alertas do GitHub não detecta?
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
- É um instrumento de auditoria, não um corretor. Ele lê o GitHub e não altera nada.
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
- ## Por que ele tem essa estrutura:
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` | Ele já contém seu token. A ferramenta nunca armazena ou solicita uma credencial. |
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 excedendo o tempo limite é dividida ao meio e a solicitação é repetida a partir do mesmo cursor. |
45
- | Execuções do Actions | REST | O GraphQL não tem uma interface para o Actions. |
46
- | Custo do Actions | API de faturamento mais durações por tarefa | A fatura indica qual repositório; apenas as tarefas indicam qual fluxo de trabalho. Os endpoints `/timing` do GitHub retornam zeros, portanto, a soma por tarefa é reconstruída e, em seguida, reconciliada com a fatura. |
47
- | Taxas do Runner | lidas da fatura | Uma taxa faturada pode diferir do preço de tabela, e uma constante na fonte distorceria todos os números. |
48
- | Armazenamento | SQLite por meio do `node:sqlite` integrado | Sem etapa de construção nativa. |
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 da execução | `data/sweeps.jsonl` | Uma linha por execução, incluindo execuções que falharam e execuções que não encontraram nada de novo. |
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 snapshots são imutáveis e aditivos, portanto, a diferença entre duas datas é um `JOIN`.
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
- - O [GitHub CLI](https://cli.github.com/), conectado (`gh auth status`) como uma
58
- conta que pode ler a organização. A leitura do faturamento e dos alertas de segurança
59
- requer o acesso correspondente; uma execução sem ele registra "não medido" e
60
- continua. Ele nunca registra uma permissão ausente como um resultado válido.
61
- - Windows ou Linux. Ele é desenvolvido no Windows e seus testes são executados no Linux em
62
- CI. O macOS deve funcionar e não é testado.
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 execuções, coloque um `housekeeping.config.json` nesse diretório (veja a seção Configuração); então, `hk refresh` não precisa de nenhum argumento.
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 uma cópia, que mantém os seus dados na cópia:
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 uma cópia sem `npm link`, cada `hk <command>` é `node src/cli.mjs <command>`.
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 snapshots já
104
- armazenados no disco, sem acesso à rede.
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 execução completa faz algumas centenas de chamadas de API. Não execute `refresh` em um loop.
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 execução foi concluída, com lacunas).
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 organização funciona (veja abaixo):
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 executada. `hk refresh <org>` o substitui. Sem
123
- nenhum dos dois, uma execução se recusará a iniciar.
124
- - `metaRepos` são os repositórios que contêm as configurações, ativos ou
125
- ferramentas padrão da organização, e não um produto lançado. Eles são isentos das descobertas que só
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 organização mantém `data/`, `reports/` e o arquivo de configuração
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 estiver definido.
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 para a passagem do custo por tarefa), `GH_PATH` (caminho para `gh`).
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 execução grava é confidencial. Não inclua `data/` ou `reports/` em um
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 snapshot registra os nomes e as descrições dos repositórios privados, todos os
146
- alertas de segurança abertos com o pacote que ele nomeia, arquivos de fluxo de trabalho e faturamento do Actions. O GitHub oculta deliberadamente os alertas de segurança de um repositório público de
147
- todos, exceto seus mantenedores; um snapshot publicado entregaria essa lista.
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 snapshots,
151
- execute a ferramenta a partir de um repositório **privado** de sua propriedade e inclua-os lá.
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
- para que uma descoberta possa ser contestada em relação a um padrão e não em relação ao gosto pessoal. As regras
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 caminhos, executores, tamanho da matriz, limite do arquivo de fluxo de trabalho, concorrência.
180
- - [`rules/shipcheck-product-standards.md`](rules/shipcheck-product-standards.md): o CI deve ser aprovado, os critérios de lançamento, versões.
181
- - [`rules/repo-first.md`](rules/repo-first.md): o ramo padrão.
182
- - [`rules/atlas-map.md`](rules/atlas-map.md): um mapa registrado de cada repositório, verificado no CI.
183
-
184
- São os padrões de uma organização. Se os seus forem diferentes, altere o arquivo de regra e a regra em conjunto.
185
-
186
- As regras têm o cuidado de manter separados os elementos que parecem semelhantes, porque agrupá-los gera ruído:
187
-
188
- - **Um ramo padrão vermelho não é um ramo de solicitação de pull vermelho.** Um ramo do Dependabot com falha é um acúmulo; uma execução `push` com falha no ramo padrão é uma falha. O evento da execução decide qual é.
189
- - **O histórico não é uma falha.** Um fluxo de trabalho movido para gatilhos apenas de lançamento mantém sua última falha no ramo padrão para sempre. Um fluxo de trabalho excluído mantém suas execuções. Nenhum dos dois é um defeito ativo.
190
- - **Uma verificação obrigatória que nada pode emitir não é uma verificação que não foi executada aqui.** Uma diz para remover o requisito; a outra diz para corrigir o gatilho. As correções contradizem-se.
191
- - **Uma execução com falha não é uma execução cancelada.** `cancel-in-progress` existe para encerrar execuções substituídas, portanto, os minutos cancelados geralmente são a regra de concorrência em funcionamento.
192
- - **O custo bruto não é o custo líquido.** O GitHub mede os repositórios públicos com o preço total e os reduz a zero. O bruto é o poder de computação real; o líquido é o dinheiro real. Eles nunca são somados.
193
- - **O que não é medido não é limpo.** Um repositório do GitHub que não está sendo verificado relata zero alertas. Um repositório cujo limite de custo não foi atingido não tem linha de custo. Ambos são relatados como desconhecidos.
194
-
195
- A gravidade impulsiona uma pontuação de saúde: crítica 40, alta 15, média 6, baixa 2, informativa 0, deduzida de 100. A pontuação classifica a atenção, não a qualidade.
196
-
197
- O [manual](https://mcp-tool-shop-org.github.io/housekeeping/handbook/) lista cada descoberta, comando, código de erro e tabela.
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
- - **Somente leitura.** O coletor emite consultas GraphQL e solicitações REST `GET`. Ele nunca mescla, envia, lança, publica ou edita uma configuração.
202
- - **Sem credenciais.** A autenticação é o que `gh` já possui. Nada é gravado em disco sobre isso.
203
- - **Sem telemetria.** Os únicos hosts contatados são a API do GitHub, por meio de `gh`, e o registro npm, para pesquisas de versão e avisos.
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
- Relate uma vulnerabilidade conforme descrito em [SECURITY.md](SECURITY.md).
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 forma vizinha que não deve ser. Um verificador separado deriva novamente uma amostra de descobertas do GitHub em tempo real por meio de seu próprio transporte e ignora, em voz alta, quando não há banco de dados ou rede.
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