Skip to content

release: 0.10.2 — footgun 429 accionable + upsert masivo (dev→main)#227

Merged
complexluise merged 5 commits into
mainfrom
dev
Jun 30, 2026
Merged

release: 0.10.2 — footgun 429 accionable + upsert masivo (dev→main)#227
complexluise merged 5 commits into
mainfrom
dev

Conversation

@complexluise

Copy link
Copy Markdown
Owner

Release 0.10.2 (dev → main)

Corte de versión limpia para promocionar la librería. Junta los fixes acumulados en dev desde 0.10.1. Solo fix/perf → release-please cortará un patch 0.10.2.

Incluye

Tras mergear este PR

release-please abrirá el PR de release 0.10.2 (tag + CHANGELOG + GitHub Release + publish). Ese PR lo mergeás vos.

🤖 Generated with Claude Code

complexluise and others added 5 commits June 29, 2026 19:33
… CI) (#219)

`test_comunidades_identicas_entre_dos_runs_pipeline` llamaba a `run_build`
sin inyectar `transport`. Como el slice del corpus de ejemplo tiene seeds
aceptadas, `run_build` dispara la pasada `cited_by` (ADR 0038 §enrich) contra
OpenAlex en vivo → `httpx.ReadTimeout` intermitente en CI, pese a que el
módulo se declara "Sin red".

Se inyecta un `httpx.MockTransport` vacío (0 citantes) vía el seam `transport`
que `run_build` ya expone para tests. La pasada queda no-op determinista y el
test, hermético.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chore: back-merge release v0.10.1 a dev
#210)

Un 429 de OpenAlex subía como httpx.HTTPStatusError pelado, sin pista de
causa ni remedio. Ahora seed() y el chaining (fetch_citing, al agotar los
reintentos) levantan NetworkError (exit 4) con un mensaje accionable que
nombra el email/polite-pool como remedio primario (ADR 0012) y la api_key
como opcional. Los demás status y los retryables (5xx) conservan su
conducta anterior.

- Tests: 429 accionable en seed y en chaining (MockTransport, sin red);
  contrato de chaining actualizado a NetworkError.
- Docs: API.md §2 (OpenAlexSource + fetch_citing) y enmienda datada al
  ADR 0012.

Closes #210

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…able

fix(sources): error accionable ante 429 de OpenAlex en seed y chaining (#210)
persist() hacía un execute por fila (O(n) round-trips): 52k filas se
colgaban (>150 s). Ahora ingiere la tabla Arrow y hace el upsert en dos
sentencias —UPDATE de las filas existentes (UDFs de merge solo en
conflictos reales) e INSERT de las nuevas (Arrow vectorizado)—, llevando
el fresh insert de 50k de ~minutos a ~0.3 s.

Preserva la semántica de merge intacta (provenance append-only, curación
"más reciente gana", _seq de ADR 0013/0024): el lote entrante se
deduplica-mergeando por id antes del upsert (reusa _merge_rows, misma
semántica que el ON CONFLICT viejo), y el _seq de filas nuevas se asigna
con ROW_NUMBER() OVER (ORDER BY _row_idx) para orden D3 determinista por
primera aparición.

- Tests: dedup-merge en lote (provenance acumulada) en persist y
  overwrite_corpus; orden _seq determinista multi-fila; idempotencia y
  merge solapado siguen verdes.
- El benchmark de escala (50k) queda como @slow, excluido del gate.

Closes #211

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
@complexluise
complexluise merged commit b7ecd12 into main Jun 30, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant