AGENTS.md: book card CANON v3 (language-symmetric Editions—<lang> + Downloads + Catalog records, compact ❌ gate, placeholder bans); TODO liart OPAC tool; pending .md unification markers

This commit is contained in:
Dmitry Kokorin 2026-09-21 10:47:15 +03:00
parent f15de21272
commit 7189a219f3

View file

@ -30,9 +30,62 @@ sections/0N-<name>/ # one .md per BOOK (chapter-level list items are merged int
- `✅ RU edition(s) found`
- `🔶 partial` (e.g. only an essay/chapter available in RU)
- `❌ no RU edition found (verified)`
- **Book file contents:** human-readable editions table + raw **RSL JSON** block +
libgen edition URLs (`https://libgen.vg/edition.php?id=...` — contains download links;
direct file links rotate, don't store them) + notes (identity check, RU↔EN title pairing source).
- **Book card CANON v3 (agreed 2026-09-21; mandatory for new cards, sec05+ from day one):**
```markdown
# <listed title> (<listed edition: publisher, year>)
**Author(s):** <Last, First> [dates]
**Shelf mark:** <ISAP or —>
**Section:** <NN name / subgroup>
**Original:** <язык оригинала, изд., год — только если ≠ языка списка (ES/DE/…)>
**Status:** <✅ | 🔶 | ❌> — <одна фраза: «RU 4 изд.» / «essay only» / «no RU (verified <date>)»>
## Editions — EN ← язык списка; несколько строк = несколько изданий
| Title / edition | Publisher | Year | Pages | ISBN | Notes |
|-----------------|-----------|------|-------|------|-------|
## Editions — RU ← тот же формат + колонка Translator
| RU title | Publisher | Year | Pages | Translator | ISBN |
|----------|-----------|------|-------|------------|------|
*(нет: одна строка `— нет (verified <date>, gate: MISSING.md §NN)`)*
## Editions — ES ← только если есть изд./оригинал на 3-м языке
## Downloads ← только если есть файлы; симметрично по языкам
| lang | file | size | source |
|------|------|------|--------|
| EN | NN-…-en-<edition>.pdf | 64 MB | lg f/… | ← source: lg f/ | flib b/ | ia <item>
| RU | NN-…-ru-<edition>.fb2 | 4.4 MB | flib b/… |
## Catalog records
РГБ: rsl.py "<query>": [id] <GOST-строка>; [id2] …
РНБ: ✓ 3 (только если sweep трогал; добавления — с данными)
МГУ: ✓ 1 / GBS: ✗ 0 / flib: a/<id> (N книг)
EN refs: OL (N ed., ISBNs ✓ isbnval) · Google Books 200 · ia: <item>
*(❌-карточка — ОДИН compact gate: `РГБ 0 · НРБ 0 · МГУ 0 · flib 0 (verified <date>, gate: MISSING.md §NN)`)*
## Notes
- <идентичность, identity-check, cross-refs на досье/секции; датированные append: «2026-09-20: …»>
```
Rules: (a) Editions-секции симметричны по языкам, порядок: язык списка → RU → прочие;
(b) ISBN только в таблицах (из шапки убрано поле EN ISBN); (c) пустые секции не пишутся;
(d) ЗАПРЕЩЕНЫ плейсхолдеры: `// not searched yet`, `(empty)`, дубли `## Notes`;
(e) `## Libgen` более нет (был асимметричным); файлы ≠ издания (3 файла одного изд. = 3 строки);
(f) EN-каталогами: полные записи не ведутся (WorldCat мёртв) — строка `EN refs` по данным
isbnval/OL/ia; (g) ✅-карточка: РГБ обязателен + ≥1 второй каталог если sweep его трогал;
(h) старое поле Status-формулировок: единая «маркер + одна фраза».
Migration of 219 legacy cards + linter `tools/check-md.py` — PLANNED (после секций 05–07 стартуют
на v3; legacy мигрируется скриптом ~80%).
- **UNIFIED FORMAT — PENDING DISCUSSION (after cards):** SUMMARY (4 layouts), INDEX (3),
MANIFEST (3), MISSING (4), dossiers (10+ header variants, «Round N» append logs).
- **TODO (later, after 4 sections in order):** `tools/liart.py` — search for opac.liart.ru (РГБИ):
platform «Библика» (api.bibliosearch.ru/bs.min.js), search goes via JS `simpleSearch()`,
endpoint not yet probed; until then — SearXNG `site:opac.liart.ru <author>` only.
- **Author dossiers** (`authors/<lastname>-<firstname>.md`) are the **CANONICAL** home for
identity, shared across ALL sections (same author can appear in 01, 04, …). One dossier per
PERSON, slug `<lastname>-<firstname>` (lowercase, hyphens). Hold: dates, RU name candidates