Приводит документацию к фактическому поведению: автоматическое чтение клиента не сообщает о себе, а состояние источника из meta остаётся видимым. Решение реализовано во frontend коммитами 5b30bb8 и 3c226f8, спецификации приняты в WealthLedger/specs#51.
Новый adr/021-quiet-reading-and-rare-confirmations.md — Accepted, заменяет manual-refresh часть ADR 019 на стороне интерфейса и уточняет клиентскую часть ADR 007. Context, Decision (6 пунктов), Consequences. Внесён в adr/README.md.
Приведены к AS-IS:
Файл
Что исправлено
architecture/cross-cutting/ui-resilience.md
фоновое чтение без индикации и предупреждения; нет ручного обновления и повтора; видимое состояние источника; ограниченное первичное ожидание; navigation actions сохранены
domains/accounts/overview.md
503 и неизвестная ошибка — спокойное состояние без действия повтора
domains/income/overview.md
ошибка даёт локальную недоступность без повтора; фоновое обновление без индикатора и предупреждения
domains/instruments/bonds.md
разделы показывают спокойное состояние без повторной попытки
domains/instruments/stocks.md
нет действия «Обновить»; ошибка поиска сообщается, повтор — обычным «Найти»; неполнота вместо предупреждения
domains/portfolio/overview.md
клиентская ошибка о себе не сообщает; видимо состояние источника
расхождение проверяется по состоянию источника, а не по результату ручного обновления
adr/017-local-tbank-reads-and-background-sync.mdне правился: он помечен историческим и заменён ADR 019/021, его описание кнопки «Обновить» корректно для своего периода.
architecture/cross-cutting/data-freshness.md не правился: он описывает семантику meta и серверную сторону, устаревших утверждений о клиентском UI не содержит.
Основание
Проверено по frontend/origin/develop, а не по текстам:
AccountsPageError.view.tsx для 503 и неизвестной ошибки отдаёт StateView без action; AccountIncomePageError.view.tsx — без кнопок; на страницах stock и bond кнопок нет вовсе. Сохранившиеся Alert относятся к неполноте данных и устареванию позиции, а не к процессу чтения.
Verification
Команда
Результат
npm run verify
exit 0 — markdownlint с relative-links и якорями, затем git diff --check; новый файл охвачен
npx commitlint --from HEAD~1 --to HEAD
exit 0
Ручная проверка ссылок ADR 021
4/4 существуют; обратная ссылка из ui-resilience.md существует
Маршрут «разработчик → вопрос → объяснение → требование»
ADR 021 → ui-resilience.md → спецификации
Ограничения: Mermaid-рендер в gate не входит, диаграммы этим PR не добавлялись. Внешние URL правилом не проверяются. Gates соседних репозиториев не запускались — изменение только в docs.
Breaking Changes
Нет. Поведение приложения не меняется, документация приводится к уже реализованному.
## Summary
Приводит документацию к фактическому поведению: автоматическое чтение клиента не сообщает о себе, а состояние источника из `meta` остаётся видимым. Решение реализовано во `frontend` коммитами `5b30bb8` и `3c226f8`, спецификации приняты в `WealthLedger/specs#51`.
## Linked Issue
#51
## Changes
**Новый `adr/021-quiet-reading-and-rare-confirmations.md`** — Accepted, заменяет manual-refresh часть ADR 019 на стороне интерфейса и уточняет клиентскую часть ADR 007. Context, Decision (6 пунктов), Consequences. Внесён в `adr/README.md`.
Приведены к AS-IS:
| Файл | Что исправлено |
| --- | --- |
| `architecture/cross-cutting/ui-resilience.md` | фоновое чтение без индикации и предупреждения; нет ручного обновления и повтора; видимое состояние источника; ограниченное первичное ожидание; navigation actions сохранены |
| `domains/accounts/overview.md` | `503` и неизвестная ошибка — спокойное состояние без действия повтора |
| `domains/income/overview.md` | ошибка даёт локальную недоступность без повтора; фоновое обновление без индикатора и предупреждения |
| `domains/instruments/bonds.md` | разделы показывают спокойное состояние без повторной попытки |
| `domains/instruments/stocks.md` | нет действия «Обновить»; ошибка поиска сообщается, повтор — обычным «Найти»; неполнота вместо предупреждения |
| `domains/portfolio/overview.md` | клиентская ошибка о себе не сообщает; видимо состояние источника |
| `domains/portfolio/how-to/investigate-discrepancy.md` | расхождение проверяется по состоянию источника, а не по результату ручного обновления |
`adr/017-local-tbank-reads-and-background-sync.md` **не правился**: он помечен историческим и заменён ADR 019/021, его описание кнопки «Обновить» корректно для своего периода.
`architecture/cross-cutting/data-freshness.md` не правился: он описывает семантику `meta` и серверную сторону, устаревших утверждений о клиентском UI не содержит.
## Основание
Проверено по `frontend/origin/develop`, а не по текстам:
```
$ git grep -nE 'investment\.refresh|events\.retry|accounts\.retry' -- 'src/pages/**' | wc -l
0
$ grep -cE 'Button|onClick' src/shared/ui/SourceSyncStatus/SourceSyncStatus.tsx
0
$ grep -cE 'sourceTime|attempt\.' src/shared/ui/SourceSyncStatus/SourceSyncStatus.tsx
3
$ grep -nE 'GET_DEADLINE_MS|RETRY_DELAYS_MS' src/shared/api/client.ts
15:const GET_DEADLINE_MS = 15_000;
18:const RETRY_DELAYS_MS = [FIRST_RETRY_DELAY_MS, SECOND_RETRY_DELAY_MS] as const;
$ grep -n 'INITIAL_WAIT_BUDGET_MS' src/shared/lib/initial-availability.ts
3:const INITIAL_WAIT_BUDGET_MS = 10_000;
```
`AccountsPageError.view.tsx` для `503` и неизвестной ошибки отдаёт `StateView` без `action`; `AccountIncomePageError.view.tsx` — без кнопок; на страницах stock и bond кнопок нет вовсе. Сохранившиеся `Alert` относятся к неполноте данных и устареванию позиции, а не к процессу чтения.
## Verification
| Команда | Результат |
| --- | --- |
| `npm run verify` | exit 0 — markdownlint с relative-links и якорями, затем `git diff --check`; новый файл охвачен |
| `npx commitlint --from HEAD~1 --to HEAD` | exit 0 |
| Ручная проверка ссылок ADR 021 | 4/4 существуют; обратная ссылка из `ui-resilience.md` существует |
| Маршрут «разработчик → вопрос → объяснение → требование» | ADR 021 → `ui-resilience.md` → спецификации |
Ограничения: Mermaid-рендер в gate не входит, диаграммы этим PR не добавлялись. Внешние URL правилом не проверяются. Gates соседних репозиториев не запускались — изменение только в `docs`.
## Breaking Changes
Нет. Поведение приложения не меняется, документация приводится к уже реализованному.
ADR 021 фиксирует решение: автоматическое чтение клиента не сообщает
о себе, состояние источника из meta остаётся видимым, ошибки явных
действий пользователя сохраняются.
Приведены к AS-IS: ui-resilience, accounts, income, bonds, stocks,
portfolio overview и how-to. ADR 017 не правился — он помечен
историческим и заменён ADR 019/021.
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
Приводит документацию к фактическому поведению: автоматическое чтение клиента не сообщает о себе, а состояние источника из
metaостаётся видимым. Решение реализовано воfrontendкоммитами5b30bb8и3c226f8, спецификации приняты вWealthLedger/specs#51.Linked Issue
#51
Changes
Новый
adr/021-quiet-reading-and-rare-confirmations.md— Accepted, заменяет manual-refresh часть ADR 019 на стороне интерфейса и уточняет клиентскую часть ADR 007. Context, Decision (6 пунктов), Consequences. Внесён вadr/README.md.Приведены к AS-IS:
architecture/cross-cutting/ui-resilience.mddomains/accounts/overview.md503и неизвестная ошибка — спокойное состояние без действия повтораdomains/income/overview.mddomains/instruments/bonds.mddomains/instruments/stocks.mddomains/portfolio/overview.mddomains/portfolio/how-to/investigate-discrepancy.mdadr/017-local-tbank-reads-and-background-sync.mdне правился: он помечен историческим и заменён ADR 019/021, его описание кнопки «Обновить» корректно для своего периода.architecture/cross-cutting/data-freshness.mdне правился: он описывает семантикуmetaи серверную сторону, устаревших утверждений о клиентском UI не содержит.Основание
Проверено по
frontend/origin/develop, а не по текстам:AccountsPageError.view.tsxдля503и неизвестной ошибки отдаётStateViewбезaction;AccountIncomePageError.view.tsx— без кнопок; на страницах stock и bond кнопок нет вовсе. СохранившиесяAlertотносятся к неполноте данных и устареванию позиции, а не к процессу чтения.Verification
npm run verifygit diff --check; новый файл охваченnpx commitlint --from HEAD~1 --to HEADui-resilience.mdсуществуетui-resilience.md→ спецификацииОграничения: Mermaid-рендер в gate не входит, диаграммы этим PR не добавлялись. Внешние URL правилом не проверяются. Gates соседних репозиториев не запускались — изменение только в
docs.Breaking Changes
Нет. Поведение приложения не меняется, документация приводится к уже реализованному.