# FORGE 3.1 — corte source-bound de APIs, cobertura, harness e publicação

> **Corte executado:** 2026-08-04T03:27:53Z
> **Executor:** `forge.public-evidence-fetch/v1` em
> [`trustyu-ai-env@26ffec5e1956b05181581460dee298b742b687f1`](https://github.com/needyuai/trustyu-ai-env/commit/26ffec5e1956b05181581460dee298b742b687f1)
> **Issue:** [`trustyu-docs#370`](https://github.com/needyuai/trustyu-docs/issues/370)
> **Estado editorial:** `draft-source-bound`; revisão e publicação humanas ainda obrigatórias

## Resultado mensurável

| Medida | Resultado |
|---|---:|
| fontes públicas aprovadas | **20/20** |
| grupos independentes | **12** |
| fontes normativas | **0** |
| fontes oficiais primárias | **17** |
| fontes empíricas primárias | **2** |
| vocabulários oficiais | **1** |
| pesquisas reproduzíveis | **3** |
| claims delimitados | **9** |
| receipts locais de trusted-fetch | **20/20** |
| bytes recebidos | **2.180.694** |
| chamadas HTTP | **20** |
| tempo medido somado | **8.918 ms** |
| chamadas de modelo / tokens | **0 / 0** |
| custo direto de modelo | **US$ 0** |
| conteúdo externo bruto persistido | **nenhum** |

Cada receipt liga o manifest revisado ao URL de aquisição, snapshot, SHA-256, publisher, licença ou
base de uso, DNS, MIME, tamanho, DLP, prompt-injection scan e custo reportado. Segundo esses receipts,
o conteúdo recebido existiu somente em memória no trusted fetcher; o repositório guarda metadados,
hashes e síntese humana.

Os receipts v1 são **auto-declarados, self-digested e não assinados**. O commit exato do executor e o
manifesto integral de artefatos fixam o código revisado e tornam o corte tamper-evident após review e
merge, mas não autenticam criptograficamente cada execução nem substituem attestation independente.

## O que este corte sustenta

### APIs e cobertura

- descrição versionada, diff de compatibilidade e request spec executado são controles diferentes;
- `oasdiff` é adequado para detectar as mudanças do rule set, mas não garante compatibilidade de negócio;
- `rswag 2.17.0` é um adaptador opcional do perfil Ruby: une request specs e geração/validação de
  artefatos, porém o material consultado demonstra OpenAPI 3.0.x e JSON Schema Draft 4, não OpenAPI 3.1;
- a evidência de cobertura da FORGE deve ser tool-neutral e normalizar ao menos linha, branch, escopo,
  delta e thresholds;
- SimpleCov é recomendado para produtos Ruby, `coverage.py` para Python e Cobertura XML pode ser
  formato pragmático de intercâmbio. Nenhum deles, isoladamente, prova qualidade ou suficiência dos testes.

O intake positivo inclui o overview e o JSON Schema oficiais do AsyncAPI 3.1.0 como fontes primárias.
Eles não substituem `spec/asyncapi.md`, que o projeto identifica como source of truth. Esse documento e
a OpenAPI Specification 3.1.2 continuam candidatos normativos não admitidos por este executor v1;
portanto, o pack não declara conformidade AsyncAPI 3.1.0 nem OpenAPI 3.1.2.

### Engineering harness

- QM `v0.1.4` possui implementação verificável de setup, administração, portal, Slack, web e adapters;
- essas superfícies são **inspiração verificada**, não baseline normativo nem prova de produção;
- sessão, loop do harness, política e sandbox devem permanecer fronteiras explícitas fora da decisão do modelo;
- novas camadas planner/generator/evaluator exigem eval e ablation por tarefa, com custo e latência
  observados antes de enforcement.

### Publicação e Articles

O corte positivo fixa Schema.org `v30.0` como vocabulário compartilhado. Isso permite validar termos
como `Article` e `BreadcrumbList`, mas não prova a veracidade do texto, elegibilidade em buscadores,
ranking, rich results ou citação por IA.

As páginas vivas do Google Search Central variaram bytes entre requisições idênticas e falharam
corretamente em `content-hash-mismatch`. Por isso, claims específicos sobre canonical, sitemap,
Google-Extended, AI Overviews ou `llms.txt` continuam pendentes de snapshot oficial estável e não foram
projetados neste bundle. O menu e a publicação de Articles permanecem bloqueados.

## Fontes e artefatos

| Artefato | Função |
|---|---|
| [`source-catalog-v1.json`](source-catalog-v1.json) | classe, URL canônica e de aquisição, versão/commit, datas, licença, claims suportados, limitações, hash e allowlist |
| [`manifests/`](manifests/) | 20 solicitações fechadas `forge.evidence-intake/v1` |
| [`receipts/`](receipts/) | 20 receipts `trusted-public-fetch`, sem texto externo |
| [`research-pack-v1.json`](research-pack-v1.json) | 3 pesquisas e 9 claims `source-description` ou `synthesis` |
| [`claim-projection-v2.json`](claim-projection-v2.json) | projeção determinística v2 de source → claim → asset |
| [`artifact-manifest-v1.json`](artifact-manifest-v1.json) | hashes do corte completo e do validator dedicado, pinado pelo registry |
| [`forge31_source_research.py`](../../../../../../scripts/canon/forge31_source_research.py) | validator dedicado deste corte |
| [`claim_projection.py`](../../../../../../scripts/canon/claim_projection.py) | dispatch e projeção append-only por bundle |

`source-description` fica restrito ao que o publisher oficial afirma sobre sua própria implementação.
`synthesis` exige pelo menos duas fontes com suporte direto em dois grupos independentes. Qualificadores
e contradições não substituem suporte direto.

## Candidatos recusados ou pendentes

| Fonte candidata | Resultado | Consequência |
|---|---|---|
| OpenAPI Specification 3.1.2, texto integral | preflight `dlp-denied` por metadados públicos de contato | não relaxar DLP; fonte normativa permanece pendente |
| OpenAPI schema oficial 3.1 | MIME seguro ainda não suportado pelo fetcher v1 | avaliar extractor JSON Schema versionado em mudança separada |
| RFC 6596 e RFC 9309 | preflight `dlp-denied` por metadados públicos de contato | não projetar claims normativos neste corte |
| QM README principal | preflight `dlp-denied`; documentos pinados menores passaram | usar somente as superfícies efetivamente receipted |
| Anthropic Building Effective Agents e long-running harnesses | preflight `prompt-injection-denied` | não criar exceção sem revisão de policy |
| LangChain runtime e LangGraph persistence | preflight `dlp-denied` | framework continua referência candidata, não fonte aprovada |
| 8 páginas do Google Search Central | trusted fetch `content-hash-mismatch` em páginas dinâmicas | SEO específico do Google permanece fora da projeção |

Uma recusa é evidência de funcionamento fail-closed, não um defeito a ser contornado. Não existe
receipt positivo nem claim projetado para uma fonte recusada.

## Reproduzir

No repositório `trustyu-docs`:

```bash
python3 scripts/canon/forge31_source_research.py validate
python3 -m unittest scripts/canon/tests/test_forge31_source_research.py -v
python3 scripts/canon/claim_projection.py validate --base-ref origin/main
```

O gate `verify-publication` é fail-closed e recusará este asset enquanto ele permanecer `draft`.
Alterar copy pública, site ou Articles exige revisão humana, promoção explícita do publication asset e
novo PR.

## Fronteira de claim

Permitido: **o corpus contém 20 receipts locais auto-declarados, vinculados a snapshots e hashes, e o
mapeamento estrutural de nove claims é reproduzível para este corte.**

Não permitido: FORGE ou produtos “completos”, conformidade OpenAPI 3.1.2, cobertura suficiente,
superioridade do QM ou de multi-agent, enforcement universal, resultado de produto, ranking,
indexação, rich result, citação por IA ou attestation independente.
