Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/autofix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,7 @@ jobs:
fi
git diff --cached --quiet || git commit -m "chore(docs): regenera bloco derivado (autofix)" \
-m "Rodado pelo autofix: só arquivo gerado, conferido pela lista de permissão." \
-m "Agent: csbrasil-bot (autofix)" \
-m "Signed-off-by: csbrasil-bot <csbrasil-bot@users.noreply.github.com>"
git push origin "HEAD:$HEAD_REF"
gh pr comment "$PR_NUMBER" --repo "$REPO" --body \
Expand Down
5 changes: 0 additions & 5 deletions .github/workflows/preview-bot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,6 @@ jobs:
# O job `preview` abaixo só dispara em `labeled` com esta etiqueta. Ela nunca foi
# criada no repositório, então o caminho inteiro era código morto: o bot pedia um
# rótulo que ninguém tinha como aplicar. Criar aqui é o que liga o mecanismo.
- name: garante a etiqueta que autoriza o preview
env:
GH_TOKEN: ${{ github.token }}
run: python3 scripts/ci/ensure_labels.py preview-autorizado

- name: classifica o diff sem executar código do fork
env:
GH_TOKEN: ${{ github.token }}
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/colaborar.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ O número abaixo não é retórica, e não é escrito à mão: sai de `git short

{/* BEGIN:GERADO:pessoas — não edite à mão, rode `npm run docs` */}

**11 identidades de autoria humana** assinam commit no histórico **desta branch**: `ruben-cytonic`, `Emerson Garrido`, `Ruben`, `rubenmarcus`, `Ruben Marcus`, `William Oliveira`, `Juan Versolato Lopes`, `daeeseD`, `matheusgb`, `Maná Soares`, `daltonfontes`. O resto dos commits é assinado por agentes de IA. Branch não é repositório: quem contribuiu num ramo que esta branch não contém **não aparece aqui**.
**11 identidades de autoria humana** assinam commit no histórico **desta branch**: `ruben-cytonic`, `Ruben`, `Emerson Garrido`, `rubenmarcus`, `Ruben Marcus`, `William Oliveira`, `Juan Versolato Lopes`, `daeeseD`, `matheusgb`, `Maná Soares`, `daltonfontes`. O resto dos commits é assinado por agentes de IA. Branch não é repositório: quem contribuiu num ramo que esta branch não contém **não aparece aqui**.

> Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `git shortlog -sn --no-merges (descontando autores que são agentes)`

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ The number below is not rhetoric, and it is not hand-written: it comes from `git

{/* BEGIN:GERADO:pessoas — não edite à mão, rode `npm run docs` */}

**11 human author identities** sign commits in this branch: `ruben-cytonic`, `Emerson Garrido`, `Ruben`, `rubenmarcus`, `Ruben Marcus`, `William Oliveira`, `Juan Versolato Lopes`, `daeeseD`, `matheusgb`, `Maná Soares`, `daltonfontes`. Automated identities are excluded. A Git author name is not necessarily one unique person.
**11 human author identities** sign commits in this branch: `ruben-cytonic`, `Ruben`, `Emerson Garrido`, `rubenmarcus`, `Ruben Marcus`, `William Oliveira`, `Juan Versolato Lopes`, `daeeseD`, `matheusgb`, `Maná Soares`, `daltonfontes`. Automated identities are excluded. A Git author name is not necessarily one unique person.

> Block generated by `node tools/gen-docs.mjs`. Source: `git shortlog -sn --no-merges (descontando autores que são agentes)`

Expand Down
13 changes: 13 additions & 0 deletions tools/eval/autofix-check.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@
workflow pode chamar `gh pr merge`. O `csbrasil-bot-automerge` chamava, e
era a única coisa que um bot daqui fazia sozinho — justamente a que não
devia. Ele agora aplica `pronto-pra-merge` e o botão continua humano.
AF7 · todo commit que o bot faz carrega os trailers que o CI cobra de humano:
`Agent:` (agente_check) e `Signed-off-by:` (dco_check). Sem eles o bot conserta
o PR e reprova o mesmo PR no passo seguinte - foi o que aconteceu no primeiro
disparo real, em 22/08.
AF6 · o autofix acorda quando a MAIN anda, não só quando o PR se mexe. Foram 9
releases em 20 horas e cada um reabre conflito em todo PR aberto; sem o
gatilho de push o bot só conserta quem empurra commit — ou seja, nunca
Expand All @@ -40,6 +44,7 @@ const MUTANTES = {
'automerge-volta': 'AF4',
'resolve-conflito-de-codigo': 'AF5',
'sem-varredura-pos-release': 'AF6',
'commit-sem-trailer': 'AF7',
};
if (MUT && !MUTANTES[MUT]) { console.error(`mutante desconhecido: ${MUT}`); process.exit(2); }

Expand Down Expand Up @@ -109,6 +114,14 @@ if (resolveConflito) {
}
}

/* ---- AF7: os commits do bot levam os trailers que o CI cobra ---- */
if (MUT === 'commit-sem-trailer') wf = wf.replace(/\n\s*-m "Agent: csbrasil-bot \(autofix\)" \\/g, '');
const commits = [...wf.matchAll(/git commit[\s\S]{0,600}?(?=\n\s{0,10}[a-z-]+:|\n\s*$)/g)].map((m) => m[0]);
for (const c of commits) {
if (!/Agent:/.test(c)) falhas.push('AF7 um `git commit` do bot não leva o trailer `Agent:` — o agente_check reprova o PR que ele acabou de consertar');
if (!/Signed-off-by:/.test(c)) falhas.push('AF7 um `git commit` do bot não leva `Signed-off-by:` — o dco reprova o PR que ele acabou de consertar');
}

/* ---- AF6: a varredura pós-release existe e enxerga quem ficou para trás ---- */
if (MUT === 'sem-varredura-pos-release') wf = wf.replace(/\n push:\n branches: \[main\]/, '');
const temPush = /^\s{2}push:\n\s{4}branches: \[main\]/m.test(wf);
Expand Down
Loading