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` - `✅ RU edition(s) found`
- `🔶 partial` (e.g. only an essay/chapter available in RU) - `🔶 partial` (e.g. only an essay/chapter available in RU)
- `❌ no RU edition found (verified)` - `❌ no RU edition found (verified)`
- **Book file contents:** human-readable editions table + raw **RSL JSON** block + - **Book card CANON v3 (agreed 2026-09-21; mandatory for new cards, sec05+ from day one):**
libgen edition URLs (`https://libgen.vg/edition.php?id=...` — contains download links; ```markdown
direct file links rotate, don't store them) + notes (identity check, RU↔EN title pairing source). # <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 - **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 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 PERSON, slug `<lastname>-<firstname>` (lowercase, hyphens). Hold: dates, RU name candidates