Record that the chapter number field promises a null the seam rejects, and that the implemented half is dense one-based numbering

This commit is contained in:
heaven 2026-09-05 20:47:55 +03:00
parent 08219395d7
commit a49e0f392f

View file

@ -1834,6 +1834,21 @@ components:
Displayed ordinal, or `null` when the book has no numbering — a legal book.
**Not a key:** numbering is dense, so editing the source shifts every later chapter.
⚠ **ЭРРАТА 05.09 — КОНТРАКТ ПРОТИВОРЕЧИТ СЕБЕ, И ШОВ РЕАЛИЗУЕТ ДРУГУЮ ПОЛОВИНУ.**
`null` объявлен здесь ЗАКОННЫМ, но платформа его ОТВЕРГАЕТ: `Whole()` в
`platform/internal/ingest/manifest.go` проверяет `c.Number < 1` и возвращает ошибку
«chapter numbering is 1-based», а JSON-овый `null` декодируется в ноль. То есть
книга, которую этот абзац называет законной, через шов не проходит вовсе.
Противоречие — ВНУТРИ поля: «нумерация плотная, номер не ключ» и «`null` законен»
несовместимы, и реализована первая половина.
⇒ До структурного пака **считать законной только плотную 1-based нумерацию**;
ненумерованная книга сегодня НЕ поддерживается ни одним концом, и обещание обратного
здесь — единственный её носитель. Пак, который научит движок резать книги без
нумерации, обязан снять это противоречие ЯВНО: либо шов принимает `null`, либо
контракт перестаёт его обещать. Версия контракта здесь НЕ двинута намеренно —
поведение провода не изменилось, изменилась только честность его описания.
heading:
type: [string, 'null']
maxLength: 200