@mcptoolshop/housekeeping 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.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">
@@ -21,20 +21,20 @@
21
21
  <a href="https://mcp-tool-shop-org.github.io/housekeeping/handbook/"><img src="https://img.shields.io/badge/Handbook-read-blue" alt="Handbook" /></a>
22
22
  </p>
23
23
 
24
- Uma única análise 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 branch, alertas de segurança,
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
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 com problemas e isso indica uma branch 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 as está bloqueando?
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
36
 
37
- É um instrumento de auditoria, não um corretor. Ele lê o GitHub e não altera nada.
37
+ É um instrumento de auditoria, não um corretor. Ele lê GitHub e não altera nada.
38
38
 
39
39
  ## Um agente em cada repositório
40
40
 
@@ -43,35 +43,35 @@ estado é armazenado. housekeeping é esse local, e seu servidor MCP, `hk-mcp`,
43
43
  a um agente de IA. Com ele, um único agente pode atuar como o coordenador para toda
44
44
  a organização:
45
45
 
46
- 1. **Análise.** `hk refresh` coleta um instantâneo de cada repositório.
46
+ 1. **Execução.** `hk refresh` captura um instantâneo de cada repositório.
47
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 branch principal com defeito de um histórico desatualizado, e
48
+ e obtém respostas que já distinguem uma linha principal com defeito de um histórico desatualizado e
49
49
  uma solicitação de pull travada de uma com conflitos.
50
50
  3. **Planejar uma onda.** Uma consulta `hk_sql` encontra todos os repositórios com a mesma
51
51
  estrutura, para que uma correção se torne uma única solicitação de pull por repositório, em vez de uma busca.
52
52
  4. **Realizar o trabalho.** housekeeping nunca grava. O agente abre solicitações de pull
53
53
  com suas próprias ferramentas, sob suas próprias permissões e com sua revisão.
54
- 5. **Verificar.** Analisar novamente. O problema desapareceu ou não, e a mudança
54
+ 5. **Verificar.** Executar novamente. A descoberta desapareceu ou não, e a mudança
55
55
  entre dois instantâneos é uma consulta.
56
56
 
57
57
  Perguntas que um agente responde em uma ou duas interações:
58
58
 
59
- - Quais branches padrão estão com problemas e qual tarefa e etapa causaram o problema?
59
+ - Quais são os ramos padrão que estão com problemas e qual tarefa e etapa causaram o problema?
60
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 o GitHub não exibe nenhum alerta?
61
+ - Quais repositórios contêm um aviso de produção para o qual GitHub não mostra nenhum alerta?
62
62
  - Quais fluxos de trabalho agendados violam as regras para agendamentos e como?
63
- - Quanto o Actions custou e qual tarefa gastou esse valor?
64
- - O que mudou desde a última análise?
63
+ - Quanto o Actions custou e qual tarefa consumiu esses recursos?
64
+ - O que mudou desde a última execução?
65
65
 
66
66
  | Ferramenta | O que ela responde |
67
67
  |---|---|
68
- | `hk_summary` | Totais da análise 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 branch principal com problemas indica a tarefa e a etapa que causaram o problema. |
70
- | `hk_ci` | Repositórios cuja branch padrão está com problemas e os fluxos de trabalho que falharam; também, agendamentos com falha, branches de solicitação de pull com falha e repositórios sem CI. |
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
71
  | `hk_repo` | Um repositório completo: descobertas, fluxos de trabalho, solicitações de pull e problemas abertos. |
72
72
  | `hk_backlog` | Solicitações de pull ou problemas abertos em toda a organização, da mais antiga para a mais recente. |
73
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, bruto e líquido, separados. |
74
+ | `hk_cost` | Gastos do Actions por repositório, fluxo de trabalho ou tarefa, separados em valores brutos e líquidos. |
75
75
  | `hk_sql` | Uma única instrução `SELECT` ou `WITH` somente leitura contra o armazém. |
76
76
  | `hk_schema` | As tabelas e colunas para gravar consultas `hk_sql`. |
77
77
 
@@ -89,7 +89,7 @@ retorna um erro estruturado, nunca um rastreamento de pilha.
89
89
  }
90
90
  ```
91
91
 
92
- `HK_HOME` é o diretório do qual você realiza a análise. A partir de um clone, use
92
+ `HK_HOME` é o diretório do qual você executa. De um clone, use
93
93
  `"command": "node", "args": ["/path/to/housekeeping/src/mcp.mjs"]`. O segundo
94
94
  servidor é [Atlas](https://github.com/dogfood-lab/testing-os/tree/main/packages/atlas),
95
95
  que responde ao mesmo agente sobre um repositório por vez (veja abaixo). No
@@ -103,20 +103,20 @@ cada fluxo de trabalho com o que ele executa, publica e implanta. O mapa é conf
103
103
  como `atlas/` e verificado no CI. housekeeping é a visão da organização. Os dois
104
104
  são construídos para funcionar juntos.
105
105
 
106
- - **Cada mapa, analisado.** Uma análise lê o mapa confirmado de cada repositório, juntamente com
107
- tudo o mais, e relata quais repositórios não têm um, quais nunca
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
108
  executam `atlas check` e quais contêm um mecanismo diferente do que o restante da
109
109
  organização usa.
110
- - **Onde uma execução com problemas falhou.** Quando uma branch padrão está com problemas, a descoberta indica
110
+ - **Onde uma execução com problemas falhou.** Quando um ramo padrão está com problemas, a descoberta indica
111
111
  a tarefa e a etapa que falharam e, por meio do mapa, o comando que essa etapa
112
112
  executa, para que a correção comece no arquivo correto.
113
113
  - **Fatos de implantação do mapa.** O ambiente para o qual uma tarefa é implantada é obtido
114
- do mapa onde ele é registrado, para que ambas as ferramentas leiam um fluxo de trabalho da mesma forma.
114
+ do mapa, onde ele registra um, para que ambas as ferramentas leiam um fluxo de trabalho da mesma forma.
115
115
  - **Avisos em toda a frota.** Atlas sinaliza uma etapa do fluxo de trabalho que falhará
116
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
117
  instala. O relatório lista esses avisos para cada repositório de uma só vez.
118
118
 
119
- Um agente com ambos os servidores passa de "estes doze repositórios estão bloqueados"
119
+ Um agente com ambos os servidores passa de "esses doze repositórios estão bloqueados"
120
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
121
 
122
122
  ## Por que ele tem essa estrutura
@@ -126,23 +126,23 @@ Um agente com ambos os servidores passa de "estes doze repositórios estão bloq
126
126
  | Transporte | a CLI `gh` | Ela já contém seu token. A ferramenta nunca armazena ou solicita uma credencial. |
127
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
128
  | Execuções do Actions | REST | GraphQL não tem uma superfície do Actions. |
129
- | As ações têm um custo. | API de faturamento mais duração por tarefa. | A fatura indica qual repositório; apenas as tarefas indicam qual fluxo de trabalho. Os endpoints `/timing` do GitHub retornam zeros, portanto, o total por tarefa é recalculado e, em seguida, conciliado com a fatura. |
130
- | Tarifas de execução. | Lidas da fatura. | Uma tarifa faturada pode ser diferente do preço de tabela, e uma constante na origem distorceria todos os números. |
131
- | Armazenamento. | SQLite por meio do `node:sqlite` integrado. | Não há etapa de construção nativa. |
132
- | Fonte da verdade. | `data/snapshots/*.json` | Bruto, comparável e apenas para anexar. O banco de dados é derivado: `npm run rebuild` o reconstrói offline. |
133
- | Registro de varredura. | `data/sweeps.jsonl` | Uma linha por varredura, incluindo varreduras que falharam e varreduras que não encontraram nada de novo. |
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. |
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. |
133
+ | Registro de varredura | `data/sweeps.jsonl` | Uma linha por varredura, incluindo varreduras que falharam e varreduras que não encontraram nada de novo. |
134
134
 
135
135
  Os instantâneos são imutáveis e aditivos, portanto, a diferença entre duas datas é um `JOIN`.
136
136
 
137
137
  ## Requisitos
138
138
 
139
139
  - Node.js 22.5 ou posterior.
140
- - O [GitHub CLI](https://cli.github.com/), com sessão iniciada (`gh auth status`) como uma
141
- conta que pode ler a organização. A leitura do faturamento e dos alertas de segurança
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
142
  requer o acesso correspondente; uma varredura sem ele registra "não medido" e
143
143
  continua. Nunca registra uma permissão ausente como um resultado válido.
144
144
  - Windows ou Linux. É desenvolvido no Windows e seus testes são executados no Linux em
145
- CI. O macOS deve funcionar e não é testado.
145
+ CI. macOS deve funcionar e não é testado.
146
146
 
147
147
  ## Uso
148
148
 
@@ -175,6 +175,8 @@ hk findings # findings grouped by severity and code
175
175
  hk health # per-repository health score, worst first
176
176
  hk repo <name> # one repository in full
177
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
178
180
  hk versions # package.json against git tag against npm
179
181
  hk actions # every workflow and its rule flags
180
182
  hk cost # Actions cost, gross and net side by side
@@ -194,7 +196,7 @@ erro imprime um código e uma dica. Códigos de saída: 0 ok, 1 erro do usuário
194
196
 
195
197
  ## Configuração
196
198
 
197
- `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):
198
200
 
199
201
  ```json
200
202
  {
@@ -203,75 +205,88 @@ erro imprime um código e uma dica. Códigos de saída: 0 ok, 1 erro do usuário
203
205
  }
204
206
  ```
205
207
 
206
- - `org` é a organização a ser verificada. `hk refresh <org>` o substitui. Sem
208
+ - `org` é a organização a ser varrida. `hk refresh <org>` o substitui. Sem
207
209
  nenhum dos dois, uma varredura se recusará a iniciar.
208
- - `metaRepos` são os repositórios que contêm os padrões, ativos ou
209
- ferramentas da organização, e não um produto lançado. Eles estão isentos das descobertas que só
210
- fazem sentido para um produto: ausência de README, LICENSE e arquivos semelhantes, ausência
211
- de fluxos de trabalho e ausência de lançamentos.
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ó
212
+ fazem sentido para um produto: ausência de arquivos README, LICENSE e semelhantes, ausência de
213
+ fluxos de trabalho e ausência de lançamentos.
212
214
 
213
- Um arquivo malformado é um erro, nunca um padrão silencioso: uma chave desconhecida, um
214
- tipo incorreto ou um JSON corrompido interrompem a execução.
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.
215
216
 
216
- 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
217
218
  no clone. Execute como um pacote instalado, ele os mantém no diretório de onde
218
219
  você o executa ou em `HK_HOME` quando isso for definido.
219
220
 
220
221
  Ambiente: `HK_HOME` (onde os dados, relatórios e a configuração estão localizados),
221
222
  `HK_CONFIG` (caminho da configuração), `HK_DB` (caminho do banco de dados), `HK_LOG`
222
223
  (`silent`, `normal`, `verbose` ou `debug`), `HK_COST_REPOS` e
223
- `HK_COST_BUDGET` (limites para o custo por tarefa), `GH_PATH` (caminho para `gh`).
224
+ `HK_COST_BUDGET` (limites da passagem de custo por trabalho), `GH_PATH` (caminho para `gh`).
224
225
 
225
226
  ## Mantenha os dados privados
226
227
 
227
- **O que uma varredura 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
228
229
  repositório público.**
229
230
 
230
- Um instantâneo registra os nomes e as descrições dos repositórios privados, todos os
231
- 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
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
232
233
  todos, exceto seus mantenedores; um instantâneo publicado entregaria essa lista.
233
234
 
234
235
  O `.gitignore` deste repositório exclui `data/`, `reports/` e
235
236
  `housekeeping.config.json`. Para manter o histórico, que é o objetivo dos instantâneos,
236
- execute a ferramenta a partir de um **repositório privado** e inclua-os lá.
237
+ execute a ferramenta a partir de um **repositório privado** de sua propriedade e envie-os para lá.
237
238
 
238
239
  ## Descobertas
239
240
 
240
241
  As regras estão em `src/analyze.mjs`. Cada uma cita a regra escrita que ela aplica,
241
- portanto, uma descoberta pode 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
242
243
  que este repositório envia estão em [`rules/`](rules/):
243
244
 
244
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.
245
- - [`rules/shipcheck-product-standards.md`](rules/shipcheck-product-standards.md): o CI deve ser aprovado, os portões de lançamento, versões.
246
+ - [`rules/shipcheck-product-standards.md`](rules/shipcheck-product-standards.md): o CI deve ser aprovado, os portões de envio, versões.
246
247
  - [`rules/repo-first.md`](rules/repo-first.md): o branch padrão.
247
248
  - [`rules/atlas-map.md`](rules/atlas-map.md): um mapa comprometido de cada repositório, verificado no CI.
248
249
 
249
250
  São os padrões de uma organização. Se os seus forem diferentes, altere o arquivo de regra
250
251
  e a regra juntos.
251
252
 
252
- As regras têm o cuidado de manter separados os itens que parecem semelhantes, porque combiná-los
253
- produz ruído:
254
-
255
- - **Um ramo padrão vermelho não é um ramo de pedido de alteração vermelho.** Um ramo do Dependabot que falhou é um item pendente; uma execução `push` que falhou no ramo padrão é um problema. A execução determina qual é o caso.
256
- - **O histórico não é um problema.** Um fluxo de trabalho movido para apenas gatilhos 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.
257
- - **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.
258
- - **Um pedido de alteração que o gatilho ignorou não é um pedido de alteração com conflitos.** O GitHub não executa nenhum fluxo de trabalho de pedido de alteração em um pedido de alteração com conflitos, portanto, sua verificação ausente não diz nada sobre o gatilho. Esse precisa de uma nova base.
259
- - **Uma execução com falha não é uma execução cancelada.** `cancel-in-progress` existe para interromper execuções substituídas, portanto, os minutos cancelados geralmente são a regra de concorrência em funcionamento.
260
- - **O custo bruto não é o custo líquido.** O GitHub calcula os custos de repositórios públicos com o preço total e os reduz a zero. O custo bruto é o poder de computação real; o custo líquido é o dinheiro real. Eles nunca são somados.
261
- - **O que não é medido não é limpo.** Um repositório que o GitHub não está verificando relata zero alertas. Um repositório em que a verificação de custo não foi alcançada não tem linha de custo. Ambos são relatados como desconhecidos.
262
-
263
- A gravidade impulsiona uma pontuação de saúde: crítico 40, alto 15, médio 6, baixo 2, informativo 0, deduzido de 100. A pontuação classifica a atenção, não a qualidade.
264
-
265
- O [manual](https://mcp-tool-shop-org.github.io/housekeeping/handbook/) lista cada descoberta, comando, código de erro e tabela.
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.
266
278
 
267
279
  ## Segurança
268
280
 
269
- - **Somente leitura.** O coletor emite consultas GraphQL e solicitações REST `GET`. Ele nunca mescla, envia, lança, publica ou edita uma configuração.
270
- - **Sem credenciais.** A autenticação é o que `gh` já possui. Nada é gravado em disco sobre isso.
271
- - **Sem telemetria.** Os únicos hosts contatados são a API do GitHub, por meio de `gh`, e o registro npm, para pesquisa 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.
272
287
  - **O que ele armazena** é a parte sensível: veja "Mantenha os dados privados".
273
288
 
274
- Relate uma vulnerabilidade conforme descrito em [SECURITY.md](SECURITY.md).
289
+ Reporte uma vulnerabilidade conforme descrito em [SECURITY.md](SECURITY.md).
275
290
 
276
291
  ## Testes
277
292
 
@@ -279,7 +294,10 @@ Relate uma vulnerabilidade conforme descrito em [SECURITY.md](SECURITY.md).
279
294
  npm test
280
295
  ```
281
296
 
282
- Cada regra é testada em ambas as direções: a forma que deve ser acionada e a forma vizinha que não deve ser. Um verificador separado deriva novamente uma amostra de descobertas do GitHub ativo por meio de seu próprio transporte e ignora, de forma sonora, 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.
283
301
 
284
302
  ## Licença
285
303
 
package/README.zh.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <a href="README.ja.md">日本語</a> | <a href="README.md">English</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>
2
+ <a href="README.md">English</a> | <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
3
  </p>
4
4
 
5
5
  <p align="center">
@@ -21,51 +21,51 @@
21
21
  <a href="https://mcp-tool-shop-org.github.io/housekeeping/handbook/"><img src="https://img.shields.io/badge/Handbook-read-blue" alt="Handbook" /></a>
22
22
  </p>
23
23
 
24
- 一次扫描收集每个仓库的 CI 状态、未解决的问题和拉取请求、发布、版本标签、工作流文件、分支保护、安全警报、锁文件和 Actions 账单,并将所有内容存储到 SQLite 中,然后根据编写的规则对所有内容进行审核。
24
+ 一次扫描收集每个仓库的 CI 状态、未解决的问题和拉取请求、发布版本、版本标签、工作流文件、分支保护、安全警报、锁文件和 Actions 账单,并将所有这些信息汇总到 SQLite 中,然后根据编写的规则对其进行审核。
25
25
 
26
26
  它一次性回答整个组织的问题:
27
27
 
28
- - 哪些默认分支显示为红色,这是否表示主线已损坏或历史记录已过时?
28
+ - 哪些默认分支显示为红色,这是否表示主线出现问题或历史记录已过时?
29
29
  - 哪些拉取请求永远无法合并,因为一个必需的检查未发出,从而阻止了它们?
30
30
  - 哪些部署被仓库自身的设置拒绝?
31
31
  - `package.json`、Git 标签和 npm 注册表之间的差异在哪里?
32
32
  - 哪些工作流违反了 Actions 成本规则,它们花费了多少,哪些任务花费了这些成本?
33
33
  - 哪些仓库包含 GitHub 自身的警报计数未识别的建议?
34
34
 
35
- 它是一种审计工具,而不是修复工具。它读取 GitHub 数据,但不进行任何更改。
35
+ 它是一个审计工具,而不是一个修复工具。它读取 GitHub,但不进行任何更改。
36
36
 
37
37
  ## 每个仓库都有一个代理
38
38
 
39
39
  拥有数十个仓库的组织没有一个统一的地方来存储其状态。housekeeping 就是这个地方,它的 MCP 服务器 `hk-mcp` 将数据提供给一个 AI 代理。通过它,一个代理可以充当整个组织的协调器:
40
40
 
41
- 1. **扫描。** `hk refresh` 提取每个仓库的快照。
42
- 2. **分类。** 代理询问哪些内容显示为红色、哪些内容被阻止以及哪些内容变得更糟,并获得答案,这些答案可以区分已损坏的主线和过时的历史记录,以及区分停滞的拉取请求和冲突的拉取请求。
43
- 3. **规划一个批次。** 一个 `hk_sql` 查询找到具有相同结构的每个仓库,因此修复变成每个仓库一个拉取请求,而不是一次性查找。
41
+ 1. **扫描。** `hk refresh` 对每个仓库进行一次快照。
42
+ 2. **分类。** 代理询问哪些内容显示为红色、哪些内容被阻止以及哪些内容变得更糟,并获得答案,这些答案可以区分出现问题的主线和过时的历史记录,以及区分停滞的拉取请求和冲突的拉取请求。
43
+ 3. **规划一个批次。** 一个 `hk_sql` 查询找到所有具有相同特征的仓库,因此修复可以变成每个仓库的一个拉取请求,而不是进行搜索。
44
44
  4. **执行工作。** housekeeping 从不进行写入。代理使用自己的工具,在自己的权限下打开拉取请求,并由您进行审核。
45
- 5. **验证。** 再次扫描。如果发现的问题已解决,或者未解决,那么两次快照之间的差异就是一个查询。
45
+ 5. **验证。** 再次扫描。如果发现的问题已解决,或者没有解决,那么两次快照之间的差异就是一个查询。
46
46
 
47
47
  代理在一次或两次调用中回答的问题:
48
48
 
49
- - 哪些默认分支显示为红色,以及哪个任务和步骤导致了错误?
49
+ - 哪些默认分支显示为红色,以及哪个任务和步骤导致了问题?
50
50
  - 哪些拉取请求永远无法合并,是触发器还是冲突导致了问题?
51
- - 哪些仓库包含生产建议,而 GitHub 没有显示任何警报?
52
- - 哪些计划工作流违反了计划规则,以及如何违反?
53
- - Actions 花费了多少,哪些任务花费了这些成本?
51
+ - 哪些仓库包含一个生产建议,而 GitHub 没有显示任何警报?
52
+ - 哪些计划的工作流违反了计划规则,以及如何违反?
53
+ - Actions 花费了多少,哪个任务花费了这些成本?
54
54
  - 自上次扫描以来,发生了哪些变化?
55
55
 
56
56
  | 工具 | 它回答的问题 |
57
57
  |---|---|
58
58
  | `hk_summary` | 最新扫描的总计:仓库、问题、拉取请求、工作流、发现。 |
59
- | `hk_findings` | 按代码、严重程度、类别或仓库分类的发现;未筛选时,按代码计数。红色主线的发现会命名导致错误的作业和步骤。 |
59
+ | `hk_findings` | 按代码、严重程度、类别或仓库分类的发现;未筛选时,按代码进行计数。红色主线的发现会显示导致问题的任务和步骤。 |
60
60
  | `hk_ci` | 默认分支显示为红色的仓库以及失败的工作流;还包括失败的计划、失败的拉取请求分支以及没有 CI 的仓库。 |
61
61
  | `hk_repo` | 完整的单个仓库:发现、工作流、未解决的拉取请求和问题。 |
62
62
  | `hk_backlog` | 整个组织中未解决的拉取请求或问题,按时间顺序排列。 |
63
63
  | `hk_health` | 每个仓库的健康评分,按从好到坏的顺序排列。 |
64
- | `hk_cost` | Actions 按仓库、工作流或作业花费的成本,分别显示总成本和净成本。 |
65
- | `hk_sql` | 针对仓库执行的单个只读 `SELECT` 或 `WITH` 语句。 |
66
- | `hk_schema` | 表和列,用于编写 `hk_sql` 查询。 |
64
+ | `hk_cost` | 按仓库、工作流或任务分类的 Actions 支出,区分总支出和净支出。 |
65
+ | `hk_sql` | 一个只读 `SELECT` 或 `WITH` 语句,用于查询仓库。 |
66
+ | `hk_schema` | 用于编写 `hk_sql` 查询的表和列。 |
67
67
 
68
- 每个答案都来自最新的快照,并且以只读方式打开。如果调用失败,则返回结构化的错误,而不是堆栈跟踪。
68
+ 每个答案都来自最新的快照,并且以只读方式打开。如果调用失败,则返回一个结构化的错误,而不是堆栈跟踪。
69
69
 
70
70
  ### 连接它
71
71
 
@@ -78,43 +78,43 @@
78
78
  }
79
79
  ```
80
80
 
81
- `HK_HOME` 是您从中进行扫描的目录。从克隆版本开始,使用 `"command": "node", "args": ["/path/to/housekeeping/src/mcp.mjs"]`。第二个服务器是 [Atlas](https://github.com/dogfood-lab/testing-os/tree/main/packages/atlas),它回答关于单个仓库的相同代理的问题(参见下文)。在 Windows 上,通过 `cmd /c` 启动全局安装的命令。
81
+ `HK_HOME` 是您从中进行扫描的目录。从克隆副本开始,使用 `"command": "node", "args": ["/path/to/housekeeping/src/mcp.mjs"]`。第二个服务器是 [Atlas](https://github.com/dogfood-lab/testing-os/tree/main/packages/atlas),它回答关于单个仓库的相同代理的问题(请参见下文)。在 Windows 上,通过 `cmd /c` 启动全局安装的命令。
82
82
 
83
83
  ## housekeeping 和 Atlas
84
84
 
85
- [Atlas](https://github.com/dogfood-lab/testing-os/tree/main/packages/atlas) (`@dogfood-lab/atlas`) 映射一个仓库:它的各个部分以及它的入口,这意味着每个工作流及其运行、发布和部署的内容。该映射作为 `atlas/` 提交并检查到 CI 中。housekeeping 是组织视图。这两个工具是为协同工作而设计的。
85
+ [Atlas](https://github.com/dogfood-lab/testing-os/tree/main/packages/atlas)
86
+ (`@dogfood-lab/atlas`) 将一个仓库(包括其组成部分和入口)映射出来,即
87
+ 映射每个工作流程以及它所运行、发布和部署的内容。该映射会被提交
88
+ 为 `atlas/`,并在 CI 中进行检查。组织视图即为“家务管理”。两者
89
+ 的设计目的是协同工作。
86
90
 
87
- - **每个映射,都进行扫描。** 扫描读取每个仓库的已提交映射以及所有其他内容,并报告哪些仓库没有映射,哪些仓库从未运行 `atlas check`,以及哪些仓库包含与组织中其他仓库使用的引擎不同的引擎。
88
- - **红色运行失败的位置。** 当默认分支显示为红色时,该发现会命名失败的作业和步骤,并通过映射,命名该步骤运行的命令,因此修复从正确的文件开始。
89
- - **从映射中获取部署事实。** 作业部署到的环境是从映射中获取的,映射中记录了该环境,因此这两个工具以相同的方式读取工作流。
90
- - **整个组织中的警告。** Atlas 标记一个工作流步骤,该步骤将在运行之前失败,例如需要比作业安装的更新运行时环境的工具。该报告一次性列出所有仓库中的这些步骤。
91
+ - **每个映射,都进行扫描。** 扫描读取每个仓库的已提交映射以及所有其他内容,并报告哪些仓库没有映射,哪些仓库从未运行 `atlas check`,以及哪些仓库使用与组织中其他仓库使用的不同的引擎。
92
+ - **红色运行失败的位置。** 当默认分支显示为红色时,该发现会显示失败的任务和步骤,并通过映射显示该步骤运行的命令,因此修复从正确的文件开始。
93
+ - **从映射中获取部署事实。** 工作流部署到的环境是从映射中获取的,映射中记录了该环境,因此这两个工具以相同的方式读取工作流。
94
+ - **整个组织中的警告。** Atlas 标记一个工作流步骤,该步骤将在运行之前失败,例如需要比任务安装的更新运行时环境的工具。该报告一次性列出所有仓库中的这些步骤。
91
95
 
92
- 使用这两个服务器的代理从“这十二个仓库被阻止” (housekeeping) 变为“这是工作流、作业和更改将影响的文件” (Atlas),而无需手动打开每个仓库。
96
+ 使用这两个服务器的代理可以从“这十二个仓库被阻止” (housekeeping) 变为“这是工作流、任务和更改将影响的文件” (Atlas),而无需手动打开每个仓库。
93
97
 
94
98
  ## 为什么它具有这种结构
95
99
 
96
100
  | 层 | 选择 | 原因 |
97
101
  |---|---|---|
98
- | 传输 | `gh` CLI | 它已经持有您的令牌。该工具从不存储或请求任何凭据。 |
99
- | 收集 | GitHub GraphQL,分页 | 一个查询返回一个页面中仓库的元数据、未解决的问题、未解决的拉取请求、发布和文件树。如果一个页面持续超时,则将其减半并从相同的游标重新请求。 |
102
+ | 传输 | `gh` CLI | 它已经拥有您的令牌。该工具从不存储或请求任何凭据。 |
103
+ | 收集 | GitHub GraphQL,分页 | 一个查询返回元数据、未解决的问题、未解决的拉取请求、发布版本和文件树,用于一页仓库。如果一页的查询超时,则将其减半并从相同的游标重新查询。 |
100
104
  | Actions 运行 | REST | GraphQL 没有 Actions 接口。 |
101
- | 操作需要成本 | 计费 API 加上每个作业的持续时间 | 发票上会显示哪个仓库;只有作业会显示哪个工作流程。GitHub 的 `/timing` 端点返回零,因此会重新计算每个作业的总和,然后与发票进行核对。 |
102
- | 运行器费率 | 从发票中读取 | 已计费的费率可能与列表价格不同,并且源中的常量会错误地显示每个数字。 |
103
- | 存储 | 通过内置的 `node:sqlite` 使用 SQLite | 没有本地构建步骤。 |
104
- | 事实来源 | `data/snapshots/*.json` | 原始、可比较且仅可追加。数据库是派生的:`npm run rebuild` 在离线状态下重建它。 |
105
+ | Actions 成本 | 计费 API 加上每个任务的持续时间 | 发票上会显示哪个仓库;只有作业会显示哪个工作流程。GitHub的`/timing`端点返回零,因此会重新计算每个作业的总和,然后与发票进行核对。 |
106
+ | 运行器费率 | 从发票中读取 | 已结算的费率可能与定价表中的价格不同,并且源中的常量会错误地显示每个数字。 |
107
+ | 存储 | 通过内置的`node:sqlite`,使用SQLite | 没有本地构建步骤。 |
108
+ | 事实来源 | `data/snapshots/*.json` | 原始、可比较且仅追加。数据库是派生的:`npm run rebuild`会离线重建它。 |
105
109
  | 扫描日志 | `data/sweeps.jsonl` | 每条扫描记录一行,包括失败的扫描和未发现任何新内容的扫描。 |
106
110
 
107
- 快照是不可变的且具有累积性,因此两个日期之间的差异是 `JOIN`。
111
+ 快照是不可变的且具有累积性,因此两个日期之间的差异是`JOIN`。
108
112
 
109
113
  ## 要求
110
114
 
111
115
  - Node.js 22.5 或更高版本。
112
- - [GitHub CLI](https://cli.github.com/),已登录(`gh auth status`),并且是
113
- 可以读取组织的帐户。读取计费和安全警报
114
- 需要相应的权限;如果没有,扫描会记录“未测量”并
115
- 继续。它绝不会将缺少权限记录为干净的结果。
116
- - Windows 或 Linux。它在 Windows 上开发,其测试在 Linux 上运行
117
- CI。macOS 应该可以工作,但未进行测试。
116
+ - [GitHub CLI](https://cli.github.com/),已登录(作为可以读取组织的账户),登录账户为`gh auth status`。读取计费和安全警报需要相应的权限;如果没有这些权限,扫描会记录“未测量”,然后继续。它绝不会将缺少权限记录为干净的结果。
117
+ - Windows 或 Linux。它在 Windows 上开发,其测试在 CI 中在 Linux 上运行。macOS应该可以工作,但未进行测试。
118
118
 
119
119
  ## 使用方法
120
120
 
@@ -124,8 +124,7 @@ mkdir warehouse && cd warehouse # housekeeping keeps its data here
124
124
  hk refresh your-org # collect, load, analyze, write reports/AUDIT-<date>.md
125
125
  ```
126
126
 
127
- 为了在扫描之间保留设置,请在 `housekeeping.config.json` 目录中放置一个
128
- 文件(请参阅“配置”);然后 `hk refresh` 不需要任何参数。
127
+ 为了在扫描之间保留设置,请在该目录中放置一个`housekeeping.config.json`(参见“配置”);然后`hk refresh`不需要任何参数。
129
128
 
130
129
  或者从克隆运行,这样它的数据将保存在克隆中:
131
130
 
@@ -147,6 +146,8 @@ hk findings # findings grouped by severity and code
147
146
  hk health # per-repository health score, worst first
148
147
  hk repo <name> # one repository in full
149
148
  hk prs # every open pull request by age
149
+ hk branches # branches by state: merged, moved after merge, no PR
150
+ hk watch # open PRs, alerts and branches for a short watch list
150
151
  hk versions # package.json against git tag against npm
151
152
  hk actions # every workflow and its rule flags
152
153
  hk cost # Actions cost, gross and net side by side
@@ -154,20 +155,17 @@ hk sql "SELECT ..." # one read-only statement
154
155
  hk help # every command and flag
155
156
  ```
156
157
 
157
- 在没有 `npm link` 的克隆中,每次 `hk <command>` 都是 `node src/cli.mjs <command>`。
158
+ 在没有`npm link`的克隆中,每次`hk <command>`都是`node src/cli.mjs <command>`。
158
159
 
159
- `npm run rebuild` 会重新派生数据库和报告,这些报告来自已
160
- 存储在磁盘上的快照,无需网络访问。
160
+ `npm run rebuild`会重新从已在磁盘上的快照中派生数据库和报告,无需网络访问。
161
161
 
162
- 一次完整的扫描会进行数百次 API 调用。不要在循环中运行 `refresh`。
162
+ 一次完整的扫描会进行几百次 API 调用。请勿在循环中运行`refresh`。
163
163
 
164
- 结果输出到标准输出;进度和错误输出到标准错误。每个
165
- 错误都会打印一个代码和一个提示。退出代码:0 表示正常,1 表示用户错误,2 表示运行时
166
- 错误,3 表示部分(扫描已完成,但存在差距)。
164
+ 结果输出到标准输出;进度和错误输出到标准错误。每个错误都会打印一个代码和一个提示。退出代码:0 表示正常,1 表示用户错误,2 表示运行时错误,3 表示部分完成(扫描已完成,但存在差距)。
167
165
 
168
166
  ## 配置
169
167
 
170
- `housekeeping.config.json`,位于 housekeeping 运行的目录中(请参阅下文):
168
+ `housekeeping.config.json`,位于 housekeeping 运行的目录中(参见下文):
171
169
 
172
170
  ```json
173
171
  {
@@ -176,73 +174,58 @@ hk help # every command and flag
176
174
  }
177
175
  ```
178
176
 
179
- - `org` 是要扫描的组织。`hk refresh <org>` 会覆盖它。如果
180
- 两者都没有,扫描将拒绝启动。
181
- - `metaRepos` 是包含组织默认设置、资源或
182
- 工具的仓库,而不是已发布的最终产品。它们不适用于仅
183
- 对最终产品有意义的发现:缺少 README、LICENSE 和类似文件,没有
184
- 工作流程,以及没有发布。
177
+ - `org`是要扫描的组织。`hk refresh <org>`会覆盖它。如果两者都没有,扫描将拒绝启动。
178
+ - `metaRepos`是包含组织默认设置、资产或工具的仓库,而不是已发布的最终产品。它们不包括仅对最终产品有意义的发现:缺少 README、LICENSE 和类似文件,没有工作流程,没有发布。
185
179
 
186
- 格式不正确的文件是一个错误,绝不会是无声的默认值:未知的键、错误的
187
- 类型或损坏的 JSON 会停止运行。
180
+ 格式不正确的文件是一个错误,绝不会是无声的默认值:未知的键、错误的类型或损坏的 JSON 会停止运行。
188
181
 
189
- Run from a clone, housekeeping keeps `data/`, `reports/` and the config file
190
- in the clone. Run as an installed package, it keeps them in the directory you
191
- run it from, or in `HK_HOME` when that is set.
182
+ 从克隆运行,housekeeping 会将`data/`、`reports/`和配置文件保存在克隆中。作为已安装的软件包运行,它会将它们保存在您运行它的目录中,或者在设置了`HK_HOME`时保存在那里。
192
183
 
193
- 环境:`HK_HOME`(数据、报告和配置所在的位置)、
194
- `HK_CONFIG`(配置路径)、`HK_DB`(数据库路径)、`HK_LOG`
195
- (`silent`、`normal`、`verbose` 或 `debug`)、`HK_COST_REPOS` 和
196
- `HK_COST_BUDGET`(每个作业成本的上限)、`GH_PATH`(`gh` 的路径)。
184
+ 环境:`HK_HOME`(数据、报告和配置所在的位置)、`HK_CONFIG`(配置路径)、`HK_DB`(数据库路径)、`HK_LOG`(`silent`、`normal`、`verbose`或`debug`)、`HK_COST_REPOS`和`HK_COST_BUDGET`(每个作业成本限制)、`GH_PATH`(`gh`的路径)。
197
185
 
198
186
  ## 保护数据
199
187
 
200
- **扫描写入的内容是敏感信息。请勿将 `data/` 或 `reports/` 提交到
201
- 公共仓库。**
188
+ **扫描写入的内容是敏感信息。请勿将`data/`或`reports/`提交到公共仓库。**
202
189
 
203
- 快照会记录私有仓库的名称和描述、每个
204
- 公开的安全警报以及它引用的软件包、工作流程文件和 Actions
205
- 计费。GitHub 会故意将公共仓库的安全警报隐藏起来,只向其维护者显示;发布的快照会将该列表提供给所有人。
190
+ 快照会记录私有仓库的名称和描述、每个与该仓库关联的开放安全警报、工作流程文件和 Actions 计费。GitHub会故意将公共仓库的安全警报从所有人(包括其维护者)那里隐藏;发布的快照会将该列表提供给所有人。
206
191
 
207
- 此仓库的 `.gitignore` 排除 `data/`、`reports/` 和
208
- `housekeeping.config.json`。为了保留历史记录,这是快照的目的,
209
- 请从您自己的**私有**仓库运行该工具,并将它们提交到那里。
192
+ 此仓库的`.gitignore`不包括`data/`、`reports/`和`housekeeping.config.json`。为了保留历史记录(这是快照的目的),请从您自己的**私有**仓库运行该工具,并将它们提交到那里。
210
193
 
211
194
  ## 发现
212
195
 
213
- 规则位于 `src/analyze.mjs` 中。每个规则都引用了它所执行的书面规则,
214
- 因此可以针对标准而不是针对个人喜好来争论发现。此仓库提供的规则位于 [`rules/`](rules/) 中:
196
+ 规则位于`src/analyze.mjs`中。每个规则都引用了它所执行的书面规则,因此可以针对标准而不是针对个人喜好来争论发现结果。此仓库提供的规则位于[`rules/`](rules/)中:
215
197
 
216
198
  - [`rules/github-actions.md`](rules/github-actions.md):路径过滤器、运行器、矩阵大小、工作流程文件限制、并发。
217
199
  - [`rules/shipcheck-product-standards.md`](rules/shipcheck-product-standards.md):CI 必须通过、发布门控、版本。
218
200
  - [`rules/repo-first.md`](rules/repo-first.md):默认分支。
219
201
  - [`rules/atlas-map.md`](rules/atlas-map.md):每个仓库的已提交映射,在 CI 中进行检查。
220
202
 
221
- 这些是一个组织的标准。如果您的标准不同,请同时更改规则文件
222
- 和规则。
203
+ 这些是一个组织的标准。如果您的标准不同,请同时更改规则文件和规则。
223
204
 
224
205
  规则会注意区分看起来相似的事物,因为将它们合并会产生噪音:
225
206
 
226
- - **默认分支为红色的状态并不意味着拉取请求分支也为红色。** 如果 Dependabot 分支出现故障,则表示存在未处理的问题;如果在默认分支上出现 `push` 运行失败,则表示存在错误。运行的事件决定了是哪种情况。
227
- - **历史记录并不等同于错误。** 如果工作流程被移动到仅触发发布,则其最后一次在默认分支上的失败状态将永久保留。即使删除了工作流程,其运行记录也会保留。两者都不是当前存在的缺陷。
228
- - **如果某个必需的检查无法执行,这并不意味着该检查未在此处运行。** 一种情况是建议取消该要求;另一种情况是建议修复触发器。这两种修复方法相互矛盾。
229
- - **如果触发器跳过了一个拉取请求,这并不意味着该拉取请求存在冲突。** GitHub 不会对存在冲突的拉取请求运行任何拉取请求工作流程,因此,如果缺少检查,则说明该触发器没有问题。在这种情况下,需要重新进行基准测试。
230
- - **失败的运行并不等同于已取消的运行。** `cancel-in-progress` 的作用是终止过时的运行,因此,通常情况下,已取消的运行是并发规则在起作用。
231
- - **总成本不等于净成本。** GitHub 对公共仓库收取全部费用,然后将其折扣为零。总成本是实际的计算成本;净成本是实际的支出。两者不能简单地相加。
232
- - **未测量的数据并不意味着数据是干净的。** 如果 GitHub 未对某个仓库进行扫描,则报告的警报数量为零。如果成本评估未达到某个阈值,则该仓库不会显示任何成本行。两者都将报告为未知。
207
+ - **红色默认分支与红色拉取请求分支不同。** 失败的 Dependabot 分支是积压;在默认分支上失败的`push`运行是中断。事件决定了哪种情况。
208
+ - **历史记录不是中断。** 移动到仅发布触发器的工作流程会永久保留其上次默认分支的失败。删除的工作流程会保留其运行记录。两者都不是实时缺陷。
209
+ - **无法发出任何内容的必需检查不是未运行的检查。** 一个表示删除该要求;另一个表示修复触发器。这些修复相互矛盾。
210
+ - **触发器跳过的拉取请求不是冲突的请求。** GitHub不会在具有冲突的拉取请求上运行任何拉取请求工作流程,因此其缺失的检查不会说明触发器。后者需要重新提交。
211
+ - **失败的运行不是已取消的运行。** `cancel-in-progress`用于终止过时的运行,因此取消的分钟通常是并发规则在起作用。
212
+ - **总成本不是净成本。** GitHub以全价对公共仓库进行计量,然后将其折扣为零。总成本是实际的计算量;净成本是实际的支出。两者绝不会相加。
213
+ - **未测量不是干净。** 仓库GitHub不会扫描报告零个警报。成本通行证未到达的仓库没有成本行。两者都报告为未知。
233
214
 
234
- 严重程度决定了健康评分:严重 40,高 15,中 6,低 2,信息 0,从 100 中扣除。评分衡量的是需要关注的程度,而不是质量。
215
+ 严重程度会影响健康评分:严重 40,高 15,中等 6,低 2,信息 0,从 100 中扣除。评分衡量的是需要关注的程度,而不是质量。
235
216
 
236
- [手册](https://mcp-tool-shop-org.github.io/housekeeping/handbook/) 列出了所有发现、命令、错误代码和表格。
217
+ [手册](https://mcp-tool-shop-org.github.io/housekeeping/handbook/)
218
+ 列出了所有发现、命令、错误代码和表格。
237
219
 
238
220
  ## 安全性
239
221
 
240
- - **只读。** 收集器会发出 GraphQL 查询和 REST `GET` 请求。它绝不会合并、推送、发布、公开或编辑任何设置。
241
- - **不存储凭据。** 身份验证使用 `gh` 中已有的凭据。不会将任何凭据写入磁盘。
242
- - **不收集遥测数据。** 唯一联系的主机是 GitHub API(通过 `gh`)和 npm 注册表,用于查找版本和安全建议。
222
+ - **只读。** 收集器会发出 GraphQL 个查询和 REST `GET` 请求。它绝不会
223
+ 合并、推送、发布、公开或编辑任何设置。
224
+ - **无需凭据。** 身份验证使用 `gh` 中已有的凭据。不会将任何信息写入磁盘。
225
+ - **不收集遥测数据。** 唯一联系的主机是 GitHub API(通过 `gh`)以及 npm 注册表,用于版本和安全建议查询。
243
226
  - **它存储的内容** 是敏感部分:请参阅“保护数据”。
244
227
 
245
- 如 [SECURITY.md](SECURITY.md) 中所述,报告漏洞。
228
+ 请按照 [SECURITY.md](SECURITY.md) 中描述的方式报告漏洞。
246
229
 
247
230
  ## 测试
248
231
 
@@ -250,9 +233,9 @@ run it from, or in `HK_HOME` when that is set.
250
233
  npm test
251
234
  ```
252
235
 
253
- 每个规则都从两个方向进行测试:必须触发的模式,以及不应触发的相邻模式。一个单独的验证器会从实时 GitHub 中重新推导出样本发现,并通过其自身的传输方式进行验证,并在没有数据库或没有网络时发出明确的警告。
236
+ 每个规则都会进行双向测试:测试必须触发的模式,以及不应触发的相邻模式。一个独立的验证器会通过其自身的传输方式,从实时 GitHub 中重新推导出样本发现,并在没有数据库或没有网络时发出警告。
254
237
 
255
- ## 许可证
238
+ ## 许可
256
239
 
257
240
  MIT。请参阅 [LICENSE](LICENSE)。
258
241