From 57b88fe39ef3399b5d84ca2c7a11be88dfba0b95 Mon Sep 17 00:00:00 2001 From: Dmitry Kokorin Date: Thu, 24 Sep 2026 23:09:25 +0300 Subject: [PATCH] =?UTF-8?q?AGENTS.md:=20Workflow=20v3=20=E2=80=94=20Phase?= =?UTF-8?q?=201.5=20(batch=20catalog=20sweep=20=D0=B4=D0=BE=20=D0=BA=D0=B0?= =?UTF-8?q?=D1=80=D1=82=D0=BE=D1=87=D0=B5=D0=BA):=20=D0=BA=D1=80=D0=BE?= =?UTF-8?q?=D1=81=D1=81-=D1=81=D0=B2=D0=B8=D0=BF=20=D0=BF=D0=BE=20=D0=BE?= =?UTF-8?q?=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=BD=D0=BD=D1=8B?= =?UTF-8?q?=D0=BC=20=D1=81=D0=B5=D0=BA=D1=86=D0=B8=D1=8F=D0=BC=20(PRIORITY?= =?UTF-8?q?=201),=20rutitles=20=D0=BF=D0=BE=20=D0=B2=D1=81=D0=B5=D0=BC=20i?= =?UTF-8?q?tem,=20=D0=BA=D0=B0=D1=82=D0=B0=D0=BB=D0=BE=D0=B3=D0=B8=20?= =?UTF-8?q?=D0=B8=D0=B7=D0=B4=D0=B0=D1=82=D0=B5=D0=BB=D1=8C=D1=81=D1=82?= =?UTF-8?q?=D0=B2,=20EN-=D1=81=D0=B2=D0=B8=D0=BF=20batch;=20=D0=BA=D0=B0?= =?UTF-8?q?=D0=BD=D0=BE=D0=BD=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=BE=D0=B5=20?= =?UTF-8?q?RU=20=D0=B8=D0=BC=D1=8F=20(rulabel)=20=E2=80=94=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B2=D1=8B=D0=B9=20=D0=B2=D0=B0=D1=80=D0=B8=D0=B0=D0=BD?= =?UTF-8?q?=D1=82=20=D0=B2=D1=81=D0=B5=D1=85=20=D0=B7=D0=B0=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D1=81=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 3d17392..a94d8e9 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -555,7 +555,7 @@ Examples: `cogito-yungianskaya-series-2026-07-17.md` (30 pp. CRW crawl, 518 titl 5. **Homonym rejection:** different first name / field / era → reject or mark ambiguous (trap found: Верена Каст ≠ Вернер Каст; «Каст» search returns Verena Kast books). -## Workflow (per section) — v2 (2026-07-09) +## Workflow (per section) — v3 (2026-09-24: +Phase 1.5 batch catalog sweep, +канон. RU имя) **Phase 0 — Full names + identity** (`authors/`): 1. Resolve every initial-only author to a full EN name: `tools/ol.py 'title:"EN Title"'` @@ -565,12 +565,36 @@ Examples: `cogito-yungianskaya-series-2026-07-17.md` (30 pp. CRW crawl, 518 titl index `sections//AUTHORS-EN.md` linking to it. If the dossier already exists from another section, just append the new list item + link it. 2. For big names: `wd.py` gives life dates + the OFFICIAL RU label (best RSL spelling). + **`tools/rulabel.py ` = каноническая кириллица (ru label + aliases)** — всегда брать + до свипов: Циммер ≠ Зиммер, Корбен ≠ Корбин, Шолем ≠ Шулем, Клюгер ≠ КлуGER. 3. Build the transliteration matrix per author (2–3 variants: Нойманн/Нойман, Кох/Коч, - Калфф/Кальфф, Ферс/Фёрт) — run every query with ALL variants. + Калфф/Кальфф, Ферс/Фёрт) — run every query with ALL variants. **Каноническое RU имя + (rulabel/досье) — ПЕРВЫЙ вариант матрицы; стандартная транслитерация — только запасная.** -**Phase 1 — Author sweep (EN→RU):** per author: `rsl.py " "` → `lg.py ""` -→ `cogito q=` → `flibusta ?ask=` → livelib/chitai-gorod author page. Apply identity -check. Fill author dossier. +**Phase 1 — Author sweep (EN→RU):** per author: `rsl.py " "` (ВСЕГДА с +каноническим RU именем из досье/rulabel, не с транслитерацией наугад) → `lg.py ""` +→ `cogito q=` → `flibusta authors ""` → livelib/chitai-gorod author page. +Apply identity check. Fill author dossier. + +**Phase 1.5 — Batch catalog sweep (2026-09-24, после Phase 0–1, ПЕРЕД карточками):** +один проход по ВСЕМ item секции — до написания карточек. Определяет «карту покрытия»: +какие книги точно в RU/EN каталогах (✅-кандидаты), какие нет. (Опыт sec06: #08 Никлаус +из Флюэ пойман именно здесь, а не per-card.) Шаги: +1. **Кросс-свип по обработанным секциям (PRIORITY 1):** grep всех карточек `sections/0N-*/ + *.md` (H1 + filename) по каждому item — книги из прошлых секций не ищем заново, а делаем + cross-ref-карточку (механика: python-скрипт по списку ключевых слов item; пример sec06: + 6 кросс-рефов 01/02/03/05/06/11 за один проход). Досье авторов тоже: «Verified RU works» + может уже содержать ответ. +2. **`tools/rutitles.py both ""` по каждому item** (DB = Касталия-1285 + Когито-518 + + ЛитРес + ОПП/МИСП + flib-авторские списки); подозрительные ✅-кандидаты — открыть продукт + (castalia/esxatos/cogito) и взять изд/год/ISBN. +3. **Каталоги издательств:** castalia-full-catalog (rule выше) + flib **authorall** по авторам + с >5 RU-книгами (фон Франц a/57639, Элиаде a/2943, …). +4. **EN-свип:** `oa.py` по EN-названиям (OpenAlex/Crossref — ISBN/полные имена; фаза 0,5); + soft libgen queries (` <1–2 title words>`, см. «EN original sweep» ниже) + + `ia.py search` — batch, до даунлоуд-фазы, не после. +Результат фиксируется в INDEX.md (статусы до Phase 2). Затем Phase 2 добирает конкретные +книги, gate v3 — только финальная галочка. **Phase 2 — Title-gap sweep** for still-unmatched books: `rsl.py ""` (check author field!), `lg.py` 2–3 whole-word title combos, cogito, flibusta by RU title, GBS SPb via