docs: errors.md com 69 itens e comportamento de cada falha
Terceira rodada contra a origem recuperou 6 imagens de preservação (6433, 6520, 6656, 7529, 7939, 8396). Os 69 restantes estão classificados pelo que a origem faz: 500 na sequência da preservação, travamento cortado em ~300 s ou ~30 s, ou falha de rede. A forma canônica por nome também devolve 500, e Range não ajuda porque o servidor não envia nem os cabeçalhos. Contagens atualizadas no README, MANIFEST e TODO: 12.991 itens com preservação e 41.450 objetos no ledger.
This commit is contained in:
+59
-2
@@ -277,7 +277,7 @@ Mural no ar com **13.059 peças** (antes 12.552): commits `bba32f6`,
|
||||
| | |
|
||||
|---|--:|
|
||||
| itens no catálogo | 13.060 |
|
||||
| com imagem de preservação | 12.985 |
|
||||
| com imagem de preservação | 12.991 |
|
||||
| com thumbnail do DSpace | 13.059 |
|
||||
| com miniatura derivada (`derivados/thumb256/`) | 13.059 |
|
||||
| **no mural** | **13.059** |
|
||||
@@ -375,6 +375,59 @@ requisições simultâneas, `6545` e `6555` davam 500 enquanto `1014`, `8128`,
|
||||
crescente eles davam erros seguidos e disparavam o aborto automático — por
|
||||
isso o motor passou a **embaralhar** a lista.
|
||||
|
||||
### Achado 2.26 — nova rodada sobre os 75 (13/09 noite): o que recupera e a armadilha da sequência
|
||||
|
||||
**Recuperados (3):** `6433` e `6520` por curl — a origem serve a ~11 KB/s, e o
|
||||
"erro de rede" do navegador era estouro de tempo; `6656` no navegador na
|
||||
**sequência 3** (5,4 MB, 1604×2612) — o catálogo apontava a sequência 2, que é
|
||||
o texto de licença.
|
||||
|
||||
**Curl não escala:** depois dos 2 primeiros o Cloudflare devolveu `403`
|
||||
(5.484 bytes) para 23 seguidos. Parado para não piorar o bloqueio.
|
||||
|
||||
**Armadilha — não aceitar "qualquer imagem em qualquer sequência".** A 1ª
|
||||
versão do motor que varria as sequências 1–6 trouxe 8 "sucessos"; **7 eram o
|
||||
`thumbnail/thumb_3.jpg` que já estava no bucket** (sha256 idêntico, 27–170 KB,
|
||||
~800 px). Retidos antes de subir e descartados. A estrutura típica de um item
|
||||
DSpace deste acervo:
|
||||
|
||||
| sequência | conteúdo |
|
||||
|--:|---|
|
||||
| 1 | imagem de preservação (nos itens com defeito: `HTTP 500`) |
|
||||
| 2 | bitstream de licença (texto, 426–821 bytes) |
|
||||
| 3 | thumbnail gerado pelo DSpace |
|
||||
| 4–6 | inexistente |
|
||||
|
||||
A versão corrigida calcula SHA-256 no navegador e rejeita qualquer candidato
|
||||
cujo hash já esteja no ledger como `thumbnail` ou `legado`, e grava com prefixo
|
||||
`HOLD__` (o `subidor-paralelo.py` ignora) para conferência antes de subir.
|
||||
|
||||
### Achado 2.27 — os itens do IMS morrem num corte de 300 s; o `500` é o mesmo por sequência e por nome
|
||||
|
||||
Terceira rodada sobre os 75 (13/09, 21h), com um motor que registra o tempo de
|
||||
cada tentativa. Três comportamentos distintos, todos da origem:
|
||||
|
||||
- **Corte em ~300 s sem resposta** (`rede@301s`), em 12 itens do Instituto
|
||||
Moreira Salles (`8145`–`8316`). A requisição não recebe nem cabeçalho: um
|
||||
teste com `Range: bytes=0-1023` estourou 18 s sem resposta, então não é
|
||||
transferência lenta que cai no meio — o servidor trava antes de responder e
|
||||
algo no caminho corta em 5 min. Retomar em pedaços não ajuda.
|
||||
- **Corte em ~32 s** em 3 itens (`8271`, `8275`, `8277`): mesma família, limite
|
||||
diferente.
|
||||
- **`500` imediato** (0 s) em 11 itens (`8739`–`9148`). A forma canônica
|
||||
`/bitstream/handle/20.500.12156.1/<id>/<arquivo>` — que busca pelo nome em
|
||||
vez da sequência — **também devolve `500` em 0,2 s** (`8739`, `6545`). O
|
||||
defeito está no servidor localizar o bitstream, não no endereçamento.
|
||||
|
||||
Estrutura das sequências nos itens do IMS: **1 = preservação, 2 = thumbnail**
|
||||
(sem bitstream de licença, ao contrário dos do Museu Aeroespacial/Arquivo
|
||||
Nacional/Fiocruz, onde 2 é licença e 3 é thumbnail). Varrer 1–6 nesses itens só
|
||||
gasta tempo: 3–6 não existem.
|
||||
|
||||
Recuperado nesta rodada: `8396` (Biblioteca Nacional, sequência 3, 13,5 MB,
|
||||
3361×4453) — mesmo padrão de `6656` e `7939`, onde o catálogo aponta a
|
||||
sequência 2 (licença) e a imagem está na 3.
|
||||
|
||||
### Achado 2.22 — o gargalo do upload era o `subidor.py`, não o link; troca pelo paralelo
|
||||
|
||||
Eu tinha escrito aqui que o gargalo era o link de casa. **Errado.** Medido em
|
||||
@@ -563,7 +616,7 @@ handle.
|
||||
- [ ] **Rebaixar o que o `subidor.py` antigo apagou** (achado 2.19, correção): 8 itens sem preservação (`14358`–`14364`, `14368`) + ~20 `extra_seqN` em TIFF — lista com URL em `pipeline/apagados-pelo-subidor-antigo.jsonl`. Precisa da aba do navegador.
|
||||
- [x] ~~Recontar os faltantes de preservação (211)~~ — feito em 13/09: 136 baixaram, sobraram **75** com defeito de origem (achado 2.25), listados em `pipeline/falhas-500-2026-09-13.txt`. Script usado: `pipeline/baixar-faltantes-v3.js` (ou o motor `F5` colado direto na aba).
|
||||
- [ ] **`subidor.py` antigo: aposentar ou corrigir a regra de assinatura** antes de qualquer uso futuro — do jeito que está, apaga TIFF.
|
||||
- [ ] **Rebaixar os 75 do achado 2.25** quando a origem se recuperar — todos têm thumbnail, falta a preservação. Um `FALTA3.retomar()`/`F5.iniciar()` na aba basta; o que já baixou fica marcado no `localStorage` (`bras_faltantes_v3`).
|
||||
- [ ] **Rebaixar os 69 que sobraram** (achados 2.25–2.27; 6 recuperados em 13/09 à noite) quando a origem se recuperar — todos têm thumbnail, falta a preservação. Um `FALTA3.retomar()`/`F5.iniciar()` na aba basta; o que já baixou fica marcado no `localStorage` (`bras_faltantes_v3`).
|
||||
- [ ] **Handle `8396` sem imagem e sem diagnóstico** — não está em `pipeline/faltantes-preservacao.jsonl` nem nas exceções conhecidas do MANIFEST; apareceu ao cruzar catálogo × miniaturas. Precisa de uma tentativa avulsa pra saber se é recusa da origem (achado 2.18) ou outra coisa.
|
||||
- [ ] **`.git` do `rafapolo/xyz` está em 2,5 GB** e cada publicação do atlas soma ~51 MB permanentes (binário não faz delta). Se o mural for republicar atlas com frequência, tirar os `.webp` do git — LFS, ou servir do próprio bucket, que já tem os thumbs em `derivados/thumb256/`.
|
||||
- [ ] **Crawl da Fase 1 pode ter mais buracos** (achado 2.10 do PLANO.md): 2 itens reais (`1799`, `4798`) foram achados faltando no catálogo só porque o WordPress os citava — já corrigidos, mas não existe verificação exaustiva de que a enumeração por `browse?type=title` pegou 100% de cada comunidade. Sem ideia barata de auditar isso por completo agora.
|
||||
@@ -608,4 +661,8 @@ handle.
|
||||
- **Assinaturas aceitas como imagem** (`subidor-paralelo.py`): JPEG `FFD8`, PNG,
|
||||
TIFF `II*\0`/`MM\0*`, GIF, JP2, BMP `BM`, WebP. Content-Type sai do conteúdo,
|
||||
não da extensão (TIFF chega com nome `.jpg`).
|
||||
- **`vipsthumbnail --output` é relativo à pasta do arquivo de entrada**, não ao
|
||||
diretório corrente: `vipsthumbnail tmp/x.img --output out/y.webp` tenta
|
||||
gravar em `tmp/out/y.webp` e falha. Usar caminho absoluto na saída. (Custou
|
||||
uma miniatura "refeita" que não foi refeita, em 13/09.)
|
||||
- Scripts-fonte em `pipeline/`: `coletor.js` / `coletor-resume.js` (metadados), `baixador-navegador.js` (preservação, todos os itens), `baixador-thumb.js` (miniaturas), `baixador-extras.js` (2a+ imagem de itens multi-bitstream), `reparo-multibitstream.js` (enumera bitstreams reais de um item).
|
||||
|
||||
Reference in New Issue
Block a user