Сессия и соглашения
subsetId, нулевые индексы, bounded viewport, expectedRevision как optimistic guard и переименование операций в ответе.
Индексы row/col и границы viewport нулевые. CellRange содержит sheetKey, rowStart, rowEnd, colStart, colEnd.
open_workbook_subset и open_workbook_subset_from_bytes возвращают subsetId. Все session-bound операции передают этот subsetId.
expectedRevision, когда присутствует, является optimistic concurrency guard. Stale-запрос должен завершиться отказом до мутации.
Запросы viewport/range должны оставаться bounded; контракт не обещает полную материализацию книги.
Операция может вернуть success payload с другим operation: open_workbook_subset_from_bytes → open_workbook_subset; move_clipboard_range → paste_range; paste_conditional_formatting_rules → apply_conditional_formatting_rules.