@fontdata/ai-harness 3.3.0 → 3.3.1
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.
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fontdata",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.1",
|
|
4
4
|
"mcpServers": {
|
|
5
|
-
"banco_dados": { "command": "npx", "args": ["-y", "@fontdata/ai-harness@3.3.
|
|
5
|
+
"banco_dados": { "command": "npx", "args": ["-y", "@fontdata/ai-harness@3.3.1", "banco-dados-mcp"] }
|
|
6
6
|
},
|
|
7
7
|
"description": "Harness de engenharia com IA da Fontdata para Claude Code",
|
|
8
8
|
"author": { "name": "Fontdata" },
|
package/dist/doctor/checks.js
CHANGED
|
@@ -325,9 +325,17 @@ function checkStaleDraftPlans(root, now) {
|
|
|
325
325
|
}
|
|
326
326
|
return findings;
|
|
327
327
|
}
|
|
328
|
+
/** Script SQL entregável do trabalho: `<id>.sql` ou `<id>-<sufixo>.sql`, só na raiz da pasta. */
|
|
329
|
+
function isWorkScript(rel, work) {
|
|
330
|
+
if (rel === `${work}.sql`)
|
|
331
|
+
return true;
|
|
332
|
+
if (!rel.startsWith(`${work}-`) || !rel.endsWith('.sql'))
|
|
333
|
+
return false;
|
|
334
|
+
return /^[a-z0-9]+(-[a-z0-9]+)*$/.test(rel.slice(work.length + 1, -'.sql'.length));
|
|
335
|
+
}
|
|
328
336
|
/** Nome que só difere de um artefato pela caixa já é apontado por `contrato-nome-fora-do-padrao`. */
|
|
329
|
-
function isOutsideContract(rel) {
|
|
330
|
-
if (rel in ARTIFACT_TYPES || rel.startsWith('anexos/'))
|
|
337
|
+
function isOutsideContract(rel, work) {
|
|
338
|
+
if (rel in ARTIFACT_TYPES || rel.startsWith('anexos/') || isWorkScript(rel, work))
|
|
331
339
|
return false;
|
|
332
340
|
if (rel.split('/').at(-1)?.startsWith('.'))
|
|
333
341
|
return false;
|
|
@@ -335,15 +343,18 @@ function isOutsideContract(rel) {
|
|
|
335
343
|
}
|
|
336
344
|
function checkFilesOutsideContract(root) {
|
|
337
345
|
return activeWorkFolders(root).flatMap((work) => {
|
|
338
|
-
const extras = listWorkFiles(join(root, WORKS_DIR, work)).filter(isOutsideContract);
|
|
346
|
+
const extras = listWorkFiles(join(root, WORKS_DIR, work)).filter((rel) => isOutsideContract(rel, work));
|
|
339
347
|
if (!extras.length)
|
|
340
348
|
return [];
|
|
349
|
+
const renomear = extras.some((rel) => rel.toLowerCase().endsWith('.sql'))
|
|
350
|
+
? ` Se é o script SQL do trabalho, renomeie para ${work}.sql (ou ${work}-<sufixo>.sql) na raiz da pasta.`
|
|
351
|
+
: '';
|
|
341
352
|
return [
|
|
342
353
|
{
|
|
343
354
|
id: 'arquivo-fora-do-contrato',
|
|
344
355
|
severidade: 'aviso',
|
|
345
356
|
mensagem: `docs/trabalhos/${work}/ tem arquivo(s) fora do contrato de artefatos: ${extras.join(', ')}.`,
|
|
346
|
-
correcao: `Se é relatório, mova o conteúdo para relatorios/TECNICO.md ou o arquivo para anexos
|
|
357
|
+
correcao: `Se é relatório, mova o conteúdo para relatorios/TECNICO.md ou o arquivo para anexos/.${renomear} Contrato: ${CONTRACT_URL}`,
|
|
347
358
|
},
|
|
348
359
|
];
|
|
349
360
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fontdata/ai-harness",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.1",
|
|
4
4
|
"description": "Harness de engenharia com IA da Fontdata para Claude Code: roda os slash commands direto na pasta do projeto via npx, sem instalar nada — ou instala-os em .claude/commands.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/templates/CLAUDE.md
CHANGED
|
@@ -27,6 +27,7 @@ Comece por `/harness`, que conduz o setup em etapas.
|
|
|
27
27
|
| `docs/trabalhos/<id>/DECISOES.md` | Decisões tomadas no planejamento e na execução |
|
|
28
28
|
| `docs/trabalhos/<id>/BLOQUEIOS.md` | Dúvidas que pararam uma task |
|
|
29
29
|
| `docs/trabalhos/<id>/relatorios/TECNICO.md` e `relatorios/CLIENTE.md` | Relatório para engenharia e para cliente e suporte (sem jargão) |
|
|
30
|
+
| `docs/trabalhos/<id>/<id>.sql` | Script SQL entregável do trabalho, opcional (`<id>-<sufixo>.sql` se houver mais de um); apoio vai em `anexos/` |
|
|
30
31
|
| `docs/eventos/<id>.jsonl` | Rastro de eventos (não versionado por padrão) |
|
|
31
32
|
| `.ai-harness/` | Lock da instalação e configuração dos hooks (versionar) |
|
|
32
33
|
|
|
@@ -47,6 +47,7 @@ Se o porquê não cabe em 3 linhas, **ele não pertence ao código**.
|
|
|
47
47
|
| Task / fase / plano / spec | `PLAN.md` e `SPEC.md` do trabalho em `docs/trabalhos/<id>/` | comentário |
|
|
48
48
|
| Diagnóstico e correção de um defeito | trabalho do tipo `bug` em `docs/trabalhos/<id>/` | comentário |
|
|
49
49
|
| Investigação, medição, auditoria, paridade, comparação | `relatorios/TECNICO.md` do trabalho em `docs/trabalhos/<id>/` | comentário |
|
|
50
|
+
| Script SQL entregável do trabalho (DDL/DML) | raiz do trabalho, `docs/trabalhos/<id>/<id>.sql` | comentário |
|
|
50
51
|
| Documento de apoio do trabalho (imagem, planilha, export, contrato de API) | `anexos/` do trabalho em `docs/trabalhos/<id>/` | comentário |
|
|
51
52
|
| Achado de review | resposta do review, commit | comentário |
|
|
52
53
|
| Decisão de arquitetura | `SPEC.md` | comentário |
|
|
@@ -59,7 +60,8 @@ auditoria, paridade com legado, medição, comparação, levantamento, handoff o
|
|
|
59
60
|
|
|
60
61
|
Convenção: uma pasta por trabalho, `docs/trabalhos/<yyyy-mm-dd>-<slug>/`. Relatório não ganha nome livre em
|
|
61
62
|
`relatorios/`: o conteúdo vai para `relatorios/TECNICO.md` e o arquivo de apoio para `anexos/`, senão o `doctor`
|
|
62
|
-
avisa `arquivo-fora-do-contrato`.
|
|
63
|
+
avisa `arquivo-fora-do-contrato`. O script SQL do trabalho é entregável, não apoio: fica na raiz como `<id>.sql`
|
|
64
|
+
(ou `<id>-<sufixo>.sql`).
|
|
63
65
|
|
|
64
66
|
## Antes e depois
|
|
65
67
|
|