Spec brokerage-account-upcoming-events приведена в соответствие с поведением backend после решения владельца (WealthLedger/backend#53): MOEX-ответ без запрошенного блока — сбой источника, а не «нет данных».
Сценарий «MOEX отвечает без запрошенного блока»: отсутствие блока, некорректный блок или курсор = неуспех источника. Календарь не заменяется, сохраняются последний полный календарь и прогноз, meta обозначает неуспех последней попытки.
Новый сценарий «MOEX подтверждает отсутствие данных»: корректный блок без строк либо «инструмент не найден» = успешное отсутствие данных, без строк и без ошибки.
Остальные требования не менялись.
Причина: при часовом перечитывании календарей (backend#53) трактовка «нет блока → пусто» позволила бы урезанному ответу MOEX успешно затереть сохранённый полный календарь. Это соответствует MoexClient и существующим тестам moex.client.spec.ts (missing block — сбой, confirmed empty blocks и 404 — пустой успех).
lychee --offline --include-fragments: 0 errors. git diff --check: OK.
Ограничения: глобальный openspec 1.15.0 не проходит check:openspec (ожидается 1.13.1), поэтому npm run validate целиком локально не запускал, а прогнал его составные команды с 1.13.1. Provider semantics MOEX на live не проверялась (запрещено).
Breaking Changes (если есть)
Нет. Behavioral spec, API-контракт не меняется.
## Summary
Spec `brokerage-account-upcoming-events` приведена в соответствие с поведением backend после решения владельца (WealthLedger/backend#53): MOEX-ответ без запрошенного блока — сбой источника, а не «нет данных».
## Linked Issue
Refs WealthLedger/specs#76; WealthLedger/backend#53 (AC 5), audit 2026-10-11: BE-003, BE-014.
## Changes
- Сценарий «MOEX отвечает без запрошенного блока»: отсутствие блока, некорректный блок или курсор = неуспех источника. Календарь не заменяется, сохраняются последний полный календарь и прогноз, `meta` обозначает неуспех последней попытки.
- Новый сценарий «MOEX подтверждает отсутствие данных»: корректный блок без строк либо «инструмент не найден» = успешное отсутствие данных, без строк и без ошибки.
- Остальные требования не менялись.
Причина: при часовом перечитывании календарей (backend#53) трактовка «нет блока → пусто» позволила бы урезанному ответу MOEX успешно затереть сохранённый полный календарь. Это соответствует `MoexClient` и существующим тестам `moex.client.spec.ts` (`missing block` — сбой, `confirmed empty blocks` и 404 — пустой успех).
## Verification
- `openspec validate --all --strict --no-interactive --store wealth-ledger-specs` с закреплённой версией 1.13.1: 28 passed, 0 failed.
- `lychee --offline --include-fragments`: 0 errors. `git diff --check`: OK.
- Ограничения: глобальный openspec 1.15.0 не проходит `check:openspec` (ожидается 1.13.1), поэтому `npm run validate` целиком локально не запускал, а прогнал его составные команды с 1.13.1. Provider semantics MOEX на live не проверялась (запрещено).
## Breaking Changes (если есть)
Нет. Behavioral spec, API-контракт не меняется.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Spec
brokerage-account-upcoming-eventsприведена в соответствие с поведением backend после решения владельца (WealthLedger/backend#53): MOEX-ответ без запрошенного блока — сбой источника, а не «нет данных».Linked Issue
Refs WealthLedger/specs#76; WealthLedger/backend#53 (AC 5), audit 2026-10-11: BE-003, BE-014.
Changes
metaобозначает неуспех последней попытки.Причина: при часовом перечитывании календарей (backend#53) трактовка «нет блока → пусто» позволила бы урезанному ответу MOEX успешно затереть сохранённый полный календарь. Это соответствует
MoexClientи существующим тестамmoex.client.spec.ts(missing block— сбой,confirmed empty blocksи 404 — пустой успех).Verification
openspec validate --all --strict --no-interactive --store wealth-ledger-specsс закреплённой версией 1.13.1: 28 passed, 0 failed.lychee --offline --include-fragments: 0 errors.git diff --check: OK.check:openspec(ожидается 1.13.1), поэтомуnpm run validateцеликом локально не запускал, а прогнал его составные команды с 1.13.1. Provider semantics MOEX на live не проверялась (запрещено).Breaking Changes (если есть)
Нет. Behavioral spec, API-контракт не меняется.