spec: reconcile quiet-user-feedback with source-state requirements (#50) #51

Merged
codex-bot merged 1 commits from spec/50-complete-quiet-user-feedback into develop 2026-10-17 21:46:59 +03:00
Owner

Summary

Переносит change quiet-user-feedback в develop и приводит его delta-блоки в соответствие с текущими canonical specs. Change был реализован во frontend коммитом 5b30bb8 (2026-10-06), но его спецификации в develop не попали — ветка codex/quiet-user-feedback осталась локальной.

Linked Issue

#50

Почему потребовалось согласование

Delta писались против редакции canonical specs до часовой синхронизации. ## MODIFIED Requirements заменяет требование целиком, поэтому блоки удаляли бы 10 принятых сценариев при archive — валидатор это блокировал:

$ npx openspec validate quiet-user-feedback --strict
Change 'quiet-user-feedback' has issues
✗ 5 ERROR

Нормативное поведение

Зафиксировано по фактической реализации в develop, а не по текстам specs. Два изменения прошли независимо и совместимы:

Коммит Дата Что сделал
5b30bb8 (frontend) 2026-10-06 убрал кнопки «Обновить»/«Повторить», Progress animated, предупреждение investment.syncFailed, показ portfolio.lastSuccessfulAt
3c226f8 (frontend, WealthLedger/main#22) 2026-10-09 добавил SourceSyncStatus: время успеха источника, stale, исход lastAttempt, partial

Итог: тихое чтение клиента + видимое состояние источника.

Запрет change относится к индикации собственного чтения клиента и ручному повтору. Он не распространяется на состояние источника из meta — время последнего успеха, устаревание, исход часовой попытки и неполноту. Это разные вещи: первое — техника получения данных, второе — свойство самих данных.

Проверено по коду:

$ git grep -nE 'investment\.refresh|events\.retry|accounts\.retry' origin/develop -- 'src/pages/**' | wc -l
0                                    # ручного повтора на экранах просмотра нет
$ grep -cE 'Button|onClick' SourceSyncStatus.tsx
0                                    # состояние источника не требует действия
$ grep -cE 'sourceTime|attempt\.' SourceSyncStatus.tsx
3                                    # время и исход попытки показываются

InvestmentRefreshState (кнопка «Обновить») остался в дереве, но не используется ни на одной странице — только в stories.

Changes

4 delta-файла, +79/−19. Canonical specs не затронуты — их обновит native sync при archive.

  • portfolio-view — уточнено, что запрет касается индикации собственного чтения; возвращён сценарий «Неуспешная последняя попытка сохраняет Portfolio»; «Показ устаревшего Portfolio» согласован с показом устаревания.
  • frontend-data-resilience — добавлен абзац про представление состояния источника (владелец этого языка); возвращён сценарий «Resource сохраняется после неуспешной часовой попытки».
  • brokerage-accounts — возвращены «Открытый экран перечитывает список», «Последняя попытка неуспешна после полного списка», «Первая загрузка списка выполняется или неуспешна».
  • brokerage-account-upcoming-events — возвращены 5 сценариев; требование ручного повтора заменено на обозначение неуспеха обновления источника, так как реализация повтор не предоставляет с 2026-10-06.

Остальные 10 файлов change (proposal, design, tasks, 6 delta, frontend-user-feedback) перенесены из ed9025f без изменений.

Verification

Команда Результат
npx openspec validate quiet-user-feedback --strict Change 'quiet-user-feedback' is valid
npx openspec list --changes quiet-user-feedback ✓ Complete
npm run verify pass (git diff --check)
npm run check:openspec openspec 1.13.1 on Node 24.21.0: toolchain matches
npx commitlint --from HEAD~1 --to HEAD pass
git diff --cached --name-only -- openspec/specs/ пусто — canonical specs не изменены

Ограничения: frontend gates не запускались — реализация уже принята в develop и этим PR не меняется. Изменение затрагивает только specs-репозиторий.

Breaking Changes

Нет. Поведение приложения не меняется — specs приводятся в соответствие с уже реализованным.

## Summary Переносит change `quiet-user-feedback` в `develop` и приводит его delta-блоки в соответствие с текущими canonical specs. Change был реализован во `frontend` коммитом `5b30bb8` (2026-10-06), но его спецификации в `develop` не попали — ветка `codex/quiet-user-feedback` осталась локальной. ## Linked Issue #50 ## Почему потребовалось согласование Delta писались против редакции canonical specs до часовой синхронизации. `## MODIFIED Requirements` заменяет требование целиком, поэтому блоки удаляли бы **10 принятых сценариев** при archive — валидатор это блокировал: ``` $ npx openspec validate quiet-user-feedback --strict Change 'quiet-user-feedback' has issues ✗ 5 ERROR ``` ## Нормативное поведение Зафиксировано по фактической реализации в `develop`, а не по текстам specs. Два изменения прошли независимо и **совместимы**: | Коммит | Дата | Что сделал | | --- | --- | --- | | `5b30bb8` (frontend) | 2026-10-06 | убрал кнопки «Обновить»/«Повторить», `Progress animated`, предупреждение `investment.syncFailed`, показ `portfolio.lastSuccessfulAt` | | `3c226f8` (frontend, `WealthLedger/main#22`) | 2026-10-09 | добавил `SourceSyncStatus`: время успеха источника, `stale`, исход `lastAttempt`, `partial` | Итог: **тихое чтение клиента + видимое состояние источника**. Запрет change относится к индикации *собственного чтения* клиента и ручному повтору. Он не распространяется на состояние *источника* из `meta` — время последнего успеха, устаревание, исход часовой попытки и неполноту. Это разные вещи: первое — техника получения данных, второе — свойство самих данных. Проверено по коду: ``` $ git grep -nE 'investment\.refresh|events\.retry|accounts\.retry' origin/develop -- 'src/pages/**' | wc -l 0 # ручного повтора на экранах просмотра нет $ grep -cE 'Button|onClick' SourceSyncStatus.tsx 0 # состояние источника не требует действия $ grep -cE 'sourceTime|attempt\.' SourceSyncStatus.tsx 3 # время и исход попытки показываются ``` `InvestmentRefreshState` (кнопка «Обновить») остался в дереве, но не используется ни на одной странице — только в stories. ## Changes 4 delta-файла, +79/−19. Canonical specs не затронуты — их обновит native sync при archive. - `portfolio-view` — уточнено, что запрет касается индикации собственного чтения; возвращён сценарий «Неуспешная последняя попытка сохраняет Portfolio»; «Показ устаревшего Portfolio» согласован с показом устаревания. - `frontend-data-resilience` — добавлен абзац про представление состояния источника (владелец этого языка); возвращён сценарий «Resource сохраняется после неуспешной часовой попытки». - `brokerage-accounts` — возвращены «Открытый экран перечитывает список», «Последняя попытка неуспешна после полного списка», «Первая загрузка списка выполняется или неуспешна». - `brokerage-account-upcoming-events` — возвращены 5 сценариев; требование ручного повтора заменено на обозначение неуспеха обновления источника, так как реализация повтор не предоставляет с 2026-10-06. Остальные 10 файлов change (`proposal`, `design`, `tasks`, 6 delta, `frontend-user-feedback`) перенесены из `ed9025f` без изменений. ## Verification | Команда | Результат | | --- | --- | | `npx openspec validate quiet-user-feedback --strict` | `Change 'quiet-user-feedback' is valid` | | `npx openspec list --changes` | `quiet-user-feedback ✓ Complete` | | `npm run verify` | pass (`git diff --check`) | | `npm run check:openspec` | `openspec 1.13.1 on Node 24.21.0: toolchain matches` | | `npx commitlint --from HEAD~1 --to HEAD` | pass | | `git diff --cached --name-only -- openspec/specs/` | пусто — canonical specs не изменены | Ограничения: `frontend` gates не запускались — реализация уже принята в `develop` и этим PR не меняется. Изменение затрагивает только specs-репозиторий. ## Breaking Changes Нет. Поведение приложения не меняется — specs приводятся в соответствие с уже реализованным.
codex-bot added 1 commit 2026-10-17 21:45:28 +03:00
spec: reconcile quiet-user-feedback with source-state requirements (#50)
Conventional commits / commits (pull_request) Successful in 12s
Specs security / security (pull_request) Successful in 7s
Specs verify / verify (pull_request) Successful in 11s
6682f0c9b6
Delta-блоки писались против редакции canonical specs до часовой
синхронизации. MODIFIED заменяет требование целиком, поэтому они
удаляли бы 10 принятых сценариев при archive.

Нормативное поведение зафиксировано по реализации в develop:
тихое чтение клиента (frontend 5b30bb8) и видимое состояние источника
из meta (frontend 3c226f8, WealthLedger/main#22) совместимы.
Запрет относится к индикации собственного чтения и ручному повтору,
а не к показу времени, устаревания и исхода часовой попытки.
codex-bot added the Kind/Feature
Priority
Medium
3
labels 2026-10-17 21:45:45 +03:00
hermes-agent was assigned by codex-bot 2026-10-17 21:45:46 +03:00
codex-bot merged commit 5a7e319caf into develop 2026-10-17 21:46:59 +03:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WealthLedger/specs#51